This commit is contained in:
dapan1121 2022-04-21 10:16:43 +08:00
parent dff638c377
commit 3ae9769887
3 changed files with 34 additions and 28 deletions

View File

@ -725,7 +725,8 @@ static int32_t doConvertUCS4(SReqResultInfo* pResultInfo, int32_t numOfRows, int
int32_t len = taosUcs4ToMbs((TdUcs4*)varDataVal(pStart), varDataLen(pStart), varDataVal(p)); int32_t len = taosUcs4ToMbs((TdUcs4*)varDataVal(pStart), varDataLen(pStart), varDataVal(p));
ASSERT(len <= bytes); ASSERT(len <= bytes);
ASSERT((p + len) < (pResultInfo->convertBuf[i] + colLength[i]));
varDataSetLen(p, len); varDataSetLen(p, len);
pCol->offset[j] = (p - pResultInfo->convertBuf[i]); pCol->offset[j] = (p - pResultInfo->convertBuf[i]);
p += (len + VARSTR_HEADER_SIZE); p += (len + VARSTR_HEADER_SIZE);

View File

@ -108,6 +108,10 @@ int32_t stmtParseSql(STscStmt* pStmt) {
.setExecInfoFn = stmtSetExecInfo, .setExecInfoFn = stmtSetExecInfo,
.getExecInfoFn = stmtGetExecInfo, .getExecInfoFn = stmtGetExecInfo,
}; };
if (NULL == pStmt->exec.pRequest) {
STMT_ERR_RET(buildRequest(pStmt->taos, pStmt->sql.sqlStr, pStmt->sql.sqlLen, &pStmt->exec.pRequest));
}
STMT_ERR_RET(parseSql(pStmt->exec.pRequest, false, &pStmt->sql.pQuery, &stmtCb)); STMT_ERR_RET(parseSql(pStmt->exec.pRequest, false, &pStmt->sql.pQuery, &stmtCb));

View File

@ -11,7 +11,7 @@
int32_t shortColList[] = {TSDB_DATA_TYPE_TIMESTAMP, TSDB_DATA_TYPE_INT}; int32_t shortColList[] = {TSDB_DATA_TYPE_TIMESTAMP, TSDB_DATA_TYPE_INT};
int32_t fullColList[] = {TSDB_DATA_TYPE_TIMESTAMP, TSDB_DATA_TYPE_BOOL, TSDB_DATA_TYPE_TINYINT, TSDB_DATA_TYPE_UTINYINT, TSDB_DATA_TYPE_SMALLINT, TSDB_DATA_TYPE_USMALLINT, TSDB_DATA_TYPE_INT, TSDB_DATA_TYPE_UINT, TSDB_DATA_TYPE_BIGINT, TSDB_DATA_TYPE_UBIGINT, TSDB_DATA_TYPE_FLOAT, TSDB_DATA_TYPE_DOUBLE, TSDB_DATA_TYPE_BINARY, TSDB_DATA_TYPE_NCHAR}; int32_t fullColList[] = {TSDB_DATA_TYPE_TIMESTAMP, TSDB_DATA_TYPE_BOOL, TSDB_DATA_TYPE_TINYINT, TSDB_DATA_TYPE_UTINYINT, TSDB_DATA_TYPE_SMALLINT, TSDB_DATA_TYPE_USMALLINT, TSDB_DATA_TYPE_INT, TSDB_DATA_TYPE_UINT, TSDB_DATA_TYPE_BIGINT, TSDB_DATA_TYPE_UBIGINT, TSDB_DATA_TYPE_FLOAT, TSDB_DATA_TYPE_DOUBLE, TSDB_DATA_TYPE_BINARY, TSDB_DATA_TYPE_NCHAR};
int32_t bindColTypeList[] = {TSDB_DATA_TYPE_TIMESTAMP, TSDB_DATA_TYPE_FLOAT}; int32_t bindColTypeList[] = {TSDB_DATA_TYPE_TIMESTAMP, TSDB_DATA_TYPE_NCHAR};
#define tListLen(x) (sizeof(x) / sizeof((x)[0])) #define tListLen(x) (sizeof(x) / sizeof((x)[0]))
@ -70,7 +70,6 @@ typedef struct {
} CaseCfg; } CaseCfg;
CaseCfg gCase[] = { CaseCfg gCase[] = {
#if 0
{"insert:MBSE1-FULL", tListLen(shortColList), shortColList, false, true, insertMBSETest1, 1, 10, 10, 0, 0, 1}, {"insert:MBSE1-FULL", tListLen(shortColList), shortColList, false, true, insertMBSETest1, 1, 10, 10, 0, 0, 1},
{"insert:MBSE1-FULL", tListLen(shortColList), shortColList, false, true, insertMBSETest1, 10, 100, 10, 0, 0, 1}, {"insert:MBSE1-FULL", tListLen(shortColList), shortColList, false, true, insertMBSETest1, 10, 100, 10, 0, 0, 1},
@ -97,10 +96,10 @@ CaseCfg gCase[] = {
{"insert:MBME4-FULL", tListLen(fullColList), fullColList, false, true, insertMBMETest4, 10, 10, 2, 0, 0, 1}, {"insert:MBME4-FULL", tListLen(fullColList), fullColList, false, true, insertMBMETest4, 10, 10, 2, 0, 0, 1},
{"insert:MBME4-C012", tListLen(fullColList), fullColList, false, false, insertMBMETest4, 10, 10, 2, 12, 0, 1}, {"insert:MBME4-C012", tListLen(fullColList), fullColList, false, false, insertMBMETest4, 10, 10, 2, 12, 0, 1},
{"insert:MBME4-C002", tListLen(fullColList), fullColList, false, false, insertMBMETest4, 10, 10, 2, 2, 0, 1}, {"insert:MBME4-C002", tListLen(fullColList), fullColList, false, false, insertMBMETest4, 10, 10, 2, 2, 0, 1},
#endif
{"insert:MPME1-FULL", tListLen(fullColList), fullColList, false, true, insertMPMETest1, 10, 10, 2, 0, 0, 1}, {"insert:MPME1-FULL", tListLen(fullColList), fullColList, false, true, insertMPMETest1, 10, 10, 2, 0, 0, 1},
// {"insert:MPME1-C012", tListLen(fullColList), fullColList, false, false, insertMPMETest1, 10, 10, 2, 12, 0, 1}, {"insert:MPME1-C012", tListLen(fullColList), fullColList, false, false, insertMPMETest1, 10, 10, 2, 12, 0, 1},
}; };
@ -111,6 +110,8 @@ typedef struct {
bool autoCreate; bool autoCreate;
bool checkParamNum; bool checkParamNum;
bool printRes; bool printRes;
bool printCreateTblSql;
bool printInsertSql;
int32_t rowNum; //row num for one table int32_t rowNum; //row num for one table
int32_t bindColNum; int32_t bindColNum;
int32_t bindRowNum; //row num for once bind int32_t bindRowNum; //row num for once bind
@ -122,6 +123,8 @@ typedef struct {
CaseCtrl gCaseCtrl = { CaseCtrl gCaseCtrl = {
.bindNullNum = 0, .bindNullNum = 0,
.autoCreate = false, .autoCreate = false,
.printCreateTblSql = false,
.printInsertSql = true,
.rowNum = 0, .rowNum = 0,
.bindColNum = 0, .bindColNum = 0,
.bindRowNum = 0, .bindRowNum = 0,
@ -243,7 +246,10 @@ void generateInsertSQL(BindData *data) {
len += sprintf(data->sql + len, "?"); len += sprintf(data->sql + len, "?");
} }
len += sprintf(data->sql + len, ")"); len += sprintf(data->sql + len, ")");
if (gCaseCtrl.printInsertSql) {
printf("SQL: %s\n", data->sql);
}
} }
void generateDataType(BindData *data, int32_t bindIdx, int32_t colIdx, int32_t *dataType) { void generateDataType(BindData *data, int32_t bindIdx, int32_t colIdx, int32_t *dataType) {
@ -525,8 +531,6 @@ int insertMBSETest1(TAOS_STMT *stmt) {
BindData data = {0}; BindData data = {0};
prepareData(&data); prepareData(&data);
printf("SQL: %s\n", data.sql);
int code = taos_stmt_prepare(stmt, data.sql, 0); int code = taos_stmt_prepare(stmt, data.sql, 0);
if (code != 0){ if (code != 0){
printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt)); printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt));
@ -582,8 +586,6 @@ int insertMBSETest2(TAOS_STMT *stmt) {
BindData data = {0}; BindData data = {0};
prepareData(&data); prepareData(&data);
printf("SQL: %s\n", data.sql);
int code = taos_stmt_prepare(stmt, data.sql, 0); int code = taos_stmt_prepare(stmt, data.sql, 0);
if (code != 0){ if (code != 0){
printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt)); printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt));
@ -638,8 +640,6 @@ int insertMBSETest2(TAOS_STMT *stmt) {
int insertMBMETest1(TAOS_STMT *stmt) { int insertMBMETest1(TAOS_STMT *stmt) {
BindData data = {0}; BindData data = {0};
prepareData(&data); prepareData(&data);
printf("SQL: %s\n", data.sql);
int code = taos_stmt_prepare(stmt, data.sql, 0); int code = taos_stmt_prepare(stmt, data.sql, 0);
if (code != 0){ if (code != 0){
@ -695,8 +695,6 @@ int insertMBMETest2(TAOS_STMT *stmt) {
BindData data = {0}; BindData data = {0};
prepareData(&data); prepareData(&data);
printf("SQL: %s\n", data.sql);
int code = taos_stmt_prepare(stmt, data.sql, 0); int code = taos_stmt_prepare(stmt, data.sql, 0);
if (code != 0){ if (code != 0){
printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt)); printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt));
@ -751,8 +749,6 @@ int insertMBMETest3(TAOS_STMT *stmt) {
BindData data = {0}; BindData data = {0};
prepareData(&data); prepareData(&data);
printf("SQL: %s\n", data.sql);
int code = taos_stmt_prepare(stmt, data.sql, 0); int code = taos_stmt_prepare(stmt, data.sql, 0);
if (code != 0){ if (code != 0){
printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt)); printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt));
@ -818,8 +814,6 @@ int insertMBMETest4(TAOS_STMT *stmt) {
BindData data = {0}; BindData data = {0};
prepareData(&data); prepareData(&data);
printf("SQL: %s\n", data.sql);
int code = taos_stmt_prepare(stmt, data.sql, 0); int code = taos_stmt_prepare(stmt, data.sql, 0);
if (code != 0){ if (code != 0){
printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt)); printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt));
@ -878,8 +872,6 @@ int insertMPMETest1(TAOS_STMT *stmt) {
BindData data = {0}; BindData data = {0};
prepareData(&data); prepareData(&data);
printf("SQL: %s\n", data.sql);
int code = taos_stmt_prepare(stmt, data.sql, 0); int code = taos_stmt_prepare(stmt, data.sql, 0);
if (code != 0){ if (code != 0){
printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt)); printf("failed to execute taos_stmt_prepare. error:%s\n", taos_stmt_errstr(stmt));
@ -3866,6 +3858,8 @@ void prepareCheckResult(TAOS *taos) {
prepareCheckResultImpl(taos, buf, gCaseCtrl.printRes, gCurCase->rowNum * gExecLoopTimes); prepareCheckResultImpl(taos, buf, gCaseCtrl.printRes, gCurCase->rowNum * gExecLoopTimes);
} }
gExecLoopTimes = 1;
} }
@ -4133,7 +4127,9 @@ void generateCreateTableSQL(char *buf, int32_t tblIdx, int32_t colNum, int32_t *
blen += sprintf(buf + blen, ")"); blen += sprintf(buf + blen, ")");
printf("Create SQL:%s\n", buf); if (gCaseCtrl.printCreateTblSql) {
printf("Create Table SQL:%s\n", buf);
}
} }
void prepare(TAOS *taos, int32_t colNum, int32_t *colList, int autoCreate) { void prepare(TAOS *taos, int32_t colNum, int32_t *colList, int autoCreate) {
@ -4253,40 +4249,45 @@ void* runcase(TAOS *taos) {
} }
void runAll(TAOS *taos) { void runAll(TAOS *taos) {
#if 0 printf("Normal Test\n");
runcase(taos); runcase(taos);
printf("Null Test\n");
gCaseCtrl.bindNullNum = 1; gCaseCtrl.bindNullNum = 1;
runcase(taos); runcase(taos);
gCaseCtrl.bindNullNum = 0; gCaseCtrl.bindNullNum = 0;
printf("Bind Row Test\n");
gCaseCtrl.bindRowNum = 1; gCaseCtrl.bindRowNum = 1;
runcase(taos); runcase(taos);
gCaseCtrl.bindRowNum = 0; gCaseCtrl.bindRowNum = 0;
#endif
gCaseCtrl.rowNum = 10000; printf("Row Num Test\n");
gCaseCtrl.rowNum = 1000;
gCaseCtrl.printRes = false; gCaseCtrl.printRes = false;
runcase(taos); runcase(taos);
gCaseCtrl.rowNum = 0; gCaseCtrl.rowNum = 0;
gCaseCtrl.printRes = true; gCaseCtrl.printRes = true;
#if 0
gCaseCtrl.runTimes = 10; printf("Runtimes Test\n");
gCaseCtrl.runTimes = 2;
runcase(taos); runcase(taos);
gCaseCtrl.runTimes = 0; gCaseCtrl.runTimes = 0;
printf("Check Param Test\n");
gCaseCtrl.checkParamNum = true; gCaseCtrl.checkParamNum = true;
runcase(taos); runcase(taos);
gCaseCtrl.checkParamNum = false; gCaseCtrl.checkParamNum = false;
printf("Bind Col Num Test\n");
gCaseCtrl.bindColNum = 6; gCaseCtrl.bindColNum = 6;
runcase(taos); runcase(taos);
gCaseCtrl.bindColNum = 0; gCaseCtrl.bindColNum = 0;
printf("Bind Col Type Test\n");
gCaseCtrl.bindColTypeNum = tListLen(bindColTypeList); gCaseCtrl.bindColTypeNum = tListLen(bindColTypeList);
gCaseCtrl.bindColTypeNum = bindColTypeList = bindColTypeList; gCaseCtrl.bindColTypeList = bindColTypeList;
runcase(taos); runcase(taos);
#endif
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[])