Merge pull request #6846 from taosdata/feature/szhou/sync_home_office
Feature/szhou/sync home office
This commit is contained in:
commit
c8f1f7ca08
|
@ -1129,6 +1129,7 @@ int tsParseInsertSql(SSqlObj *pSql) {
|
||||||
SSqlCmd *pCmd = &pSql->cmd;
|
SSqlCmd *pCmd = &pSql->cmd;
|
||||||
|
|
||||||
SInsertStatementParam* pInsertParam = &pCmd->insertParam;
|
SInsertStatementParam* pInsertParam = &pCmd->insertParam;
|
||||||
|
pInsertParam->objectId = pSql->self;
|
||||||
char* str = pInsertParam->sql;
|
char* str = pInsertParam->sql;
|
||||||
|
|
||||||
int32_t totalNum = 0;
|
int32_t totalNum = 0;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1200,9 +1200,11 @@ static int insertBatchStmtExecute(STscStmt* pStmt) {
|
||||||
// wait for the callback function to post the semaphore
|
// wait for the callback function to post the semaphore
|
||||||
tsem_wait(&pStmt->pSql->rspSem);
|
tsem_wait(&pStmt->pSql->rspSem);
|
||||||
|
|
||||||
|
code = pStmt->pSql->res.code;
|
||||||
|
|
||||||
insertBatchClean(pStmt);
|
insertBatchClean(pStmt);
|
||||||
|
|
||||||
return pStmt->pSql->res.code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
|
int stmtParseInsertTbTags(SSqlObj* pSql, STscStmt* pStmt) {
|
||||||
|
@ -1470,6 +1472,7 @@ int taos_stmt_prepare(TAOS_STMT* stmt, const char* sql, unsigned long length) {
|
||||||
pSql->fetchFp = waitForQueryRsp;
|
pSql->fetchFp = waitForQueryRsp;
|
||||||
|
|
||||||
pCmd->insertParam.insertType = TSDB_QUERY_TYPE_STMT_INSERT;
|
pCmd->insertParam.insertType = TSDB_QUERY_TYPE_STMT_INSERT;
|
||||||
|
pCmd->insertParam.objectId = pSql->self;
|
||||||
|
|
||||||
pSql->sqlstr = realloc(pSql->sqlstr, sqlLen + 1);
|
pSql->sqlstr = realloc(pSql->sqlstr, sqlLen + 1);
|
||||||
|
|
||||||
|
@ -1646,7 +1649,11 @@ int taos_stmt_close(TAOS_STMT* stmt) {
|
||||||
} else {
|
} else {
|
||||||
if (pStmt->multiTbInsert) {
|
if (pStmt->multiTbInsert) {
|
||||||
taosHashCleanup(pStmt->mtb.pTableHash);
|
taosHashCleanup(pStmt->mtb.pTableHash);
|
||||||
pStmt->mtb.pTableBlockHashList = tscDestroyBlockHashTable(pStmt->mtb.pTableBlockHashList, false);
|
bool rmMeta = false;
|
||||||
|
if (pStmt->pSql && pStmt->pSql->res.code != 0) {
|
||||||
|
rmMeta = true;
|
||||||
|
}
|
||||||
|
pStmt->mtb.pTableBlockHashList = tscDestroyBlockHashTable(pStmt->mtb.pTableBlockHashList, rmMeta);
|
||||||
taosHashCleanup(pStmt->pSql->cmd.insertParam.pTableBlockHashList);
|
taosHashCleanup(pStmt->pSql->cmd.insertParam.pTableBlockHashList);
|
||||||
pStmt->pSql->cmd.insertParam.pTableBlockHashList = NULL;
|
pStmt->pSql->cmd.insertParam.pTableBlockHashList = NULL;
|
||||||
taosArrayDestroy(pStmt->mtb.tags);
|
taosArrayDestroy(pStmt->mtb.tags);
|
||||||
|
|
|
@ -3342,6 +3342,7 @@ SSqlObj* createSubqueryObj(SSqlObj* pSql, int16_t tableIndex, __async_cb_func_t
|
||||||
pnCmd->insertParam.numOfTables = 0;
|
pnCmd->insertParam.numOfTables = 0;
|
||||||
pnCmd->insertParam.pTableNameList = NULL;
|
pnCmd->insertParam.pTableNameList = NULL;
|
||||||
pnCmd->insertParam.pTableBlockHashList = NULL;
|
pnCmd->insertParam.pTableBlockHashList = NULL;
|
||||||
|
pnCmd->insertParam.objectId = pNew->self;
|
||||||
|
|
||||||
memset(&pnCmd->insertParam.tagData, 0, sizeof(STagData));
|
memset(&pnCmd->insertParam.tagData, 0, sizeof(STagData));
|
||||||
|
|
||||||
|
|
|
@ -169,6 +169,8 @@ DLL_EXPORT void taos_close_stream(TAOS_STREAM *tstr);
|
||||||
|
|
||||||
DLL_EXPORT int taos_load_table_info(TAOS *taos, const char* tableNameList);
|
DLL_EXPORT int taos_load_table_info(TAOS *taos, const char* tableNameList);
|
||||||
|
|
||||||
|
DLL_EXPORT int taos_insert_lines(TAOS* taos, char* lines[], int numLines);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -12,7 +12,7 @@ static void prepare_data(TAOS* taos) {
|
||||||
result = taos_query(taos, "drop database if exists test;");
|
result = taos_query(taos, "drop database if exists test;");
|
||||||
taos_free_result(result);
|
taos_free_result(result);
|
||||||
usleep(100000);
|
usleep(100000);
|
||||||
result = taos_query(taos, "create database test;");
|
result = taos_query(taos, "create database test precision 'us';");
|
||||||
taos_free_result(result);
|
taos_free_result(result);
|
||||||
usleep(100000);
|
usleep(100000);
|
||||||
taos_select_db(taos, "test");
|
taos_select_db(taos, "test");
|
||||||
|
@ -949,13 +949,45 @@ void verify_stream(TAOS* taos) {
|
||||||
taos_close_stream(strm);
|
taos_close_stream(strm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t verify_schema_less(TAOS* taos) {
|
||||||
|
TAOS_RES *result;
|
||||||
|
result = taos_query(taos, "drop database if exists test;");
|
||||||
|
taos_free_result(result);
|
||||||
|
usleep(100000);
|
||||||
|
result = taos_query(taos, "create database test precision 'us';");
|
||||||
|
taos_free_result(result);
|
||||||
|
usleep(100000);
|
||||||
|
|
||||||
|
taos_select_db(taos, "test");
|
||||||
|
result = taos_query(taos, "create stable ste(ts timestamp, f int) tags(t1 bigint)");
|
||||||
|
taos_free_result(result);
|
||||||
|
usleep(100000);
|
||||||
|
|
||||||
|
char* lines[] = {
|
||||||
|
"st,t1=3i,t2=4,t3=\"t3\" c1=3i,c3=L\"passit\",c2=false,c4=4 1626006833639000000",
|
||||||
|
"st,t1=4i,t3=\"t4\",t2=5,t4=5 c1=3i,c3=L\"passitagin\",c2=true,c4=5,c5=5 1626006833640000000",
|
||||||
|
"ste,t2=5,t3=L\"ste\" c1=true,c2=4,c3=\"iam\" 1626056811823316532",
|
||||||
|
"st,t1=4i,t2=5,t3=\"t4\" c1=3i,c3=L\"passitagain\",c2=true,c4=5 1626006833642000000",
|
||||||
|
"ste,t2=5,t3=L\"ste2\" c3=\"iamszhou\",c4=false 1626056811843316532",
|
||||||
|
"ste,t2=5,t3=L\"ste2\" c3=\"iamszhou\",c4=false,c5=32b,c6=64s,c7=32w,c8=88.88f 1626056812843316532",
|
||||||
|
"st,t1=4i,t3=\"t4\",t2=5,t4=5 c1=3i,c3=L\"passitagin\",c2=true,c4=5,c5=5,c6=7u 1626006933640000000",
|
||||||
|
"stf,t1=4i,t3=\"t4\",t2=5,t4=5 c1=3i,c3=L\"passitagin\",c2=true,c4=5,c5=5,c6=7u 1626006933640000000",
|
||||||
|
"stf,t1=4i,t3=\"t4\",t2=5,t4=5 c1=3i,c3=L\"passitagin_stf\",c2=false,c5=5,c6=7u 1626006933641a"
|
||||||
|
};
|
||||||
|
|
||||||
|
// int code = taos_insert_lines(taos, lines , sizeof(lines)/sizeof(char*));
|
||||||
|
int code = taos_insert_lines(taos, &lines[0], 1);
|
||||||
|
code = taos_insert_lines(taos, &lines[1], 1);
|
||||||
|
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
const char* host = "127.0.0.1";
|
const char* host = "127.0.0.1";
|
||||||
const char* user = "root";
|
const char* user = "root";
|
||||||
const char* passwd = "taosdata";
|
const char* passwd = "taosdata";
|
||||||
|
|
||||||
taos_options(TSDB_OPTION_TIMEZONE, "GMT-8");
|
taos_options(TSDB_OPTION_TIMEZONE, "GMT-8");
|
||||||
|
|
||||||
TAOS* taos = taos_connect(host, user, passwd, "", 0);
|
TAOS* taos = taos_connect(host, user, passwd, "", 0);
|
||||||
if (taos == NULL) {
|
if (taos == NULL) {
|
||||||
printf("\033[31mfailed to connect to db, reason:%s\033[0m\n", taos_errstr(taos));
|
printf("\033[31mfailed to connect to db, reason:%s\033[0m\n", taos_errstr(taos));
|
||||||
|
@ -967,6 +999,12 @@ int main(int argc, char *argv[]) {
|
||||||
info = taos_get_client_info(taos);
|
info = taos_get_client_info(taos);
|
||||||
printf("client info: %s\n", info);
|
printf("client info: %s\n", info);
|
||||||
|
|
||||||
|
printf("************ verify shemaless *************\n");
|
||||||
|
int code = verify_schema_less(taos);
|
||||||
|
if (code == 0) {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
printf("************ verify query *************\n");
|
printf("************ verify query *************\n");
|
||||||
verify_query(taos);
|
verify_query(taos);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
system sh/stop_dnodes.sh
|
||||||
|
|
||||||
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
|
system sh/cfg.sh -n dnode1 -c walLevel -v 1
|
||||||
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
sleep 2000
|
||||||
|
sql connect
|
||||||
|
|
||||||
|
print =============== step1
|
||||||
|
$db = testlp
|
||||||
|
$mte = ste
|
||||||
|
$mt = st
|
||||||
|
sql drop database $db -x step1
|
||||||
|
step1:
|
||||||
|
sql create database $db precision 'us'
|
||||||
|
sql use $db
|
||||||
|
sql create stable $mte (ts timestamp, f int) TAGS(t1 bigint)
|
||||||
|
|
||||||
|
line_insert st,t1=3i,t2=4,t3="t3" c1=3i,c3=L"passit",c2=false,c4=4 1626006833639000000
|
||||||
|
line_insert st,t1=4i,t3="t41",t2=5 c1=3i,c3=L"passiT",c2=true,c4=5 1626006833640000000
|
||||||
|
line_insert stf,t1=4i,t2=5,t3="t4" c1=3i,c3=L"passitagain",c2=true,c4=5 1626006833642000000
|
||||||
|
line_insert ste,t2=5,t3=L"ste" c1=true,c2=4,c3="iam" 1626056811823316532
|
||||||
|
|
||||||
|
sql select * from st
|
||||||
|
if $rows != 2 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
if $data00 != @21-07-11 20:33:53.639000@ then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
if $data03 != @passit@ then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
sql select * from stf
|
||||||
|
if $rows != 1 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
sql select * from ste
|
||||||
|
if $rows != 1 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
#print =============== clear
|
||||||
|
sql drop database $db
|
||||||
|
sql show databases
|
||||||
|
if $rows != 0 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
|
@ -87,6 +87,8 @@ enum {
|
||||||
SIM_CMD_RESTFUL,
|
SIM_CMD_RESTFUL,
|
||||||
SIM_CMD_TEST,
|
SIM_CMD_TEST,
|
||||||
SIM_CMD_RETURN,
|
SIM_CMD_RETURN,
|
||||||
|
SIM_CMD_LINE_INSERT,
|
||||||
|
SIM_CMD_LINE_INSERT_ERROR,
|
||||||
SIM_CMD_END
|
SIM_CMD_END
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -172,6 +174,8 @@ bool simExecuteSqlCmd(SScript *script, char *option);
|
||||||
bool simExecuteSqlErrorCmd(SScript *script, char *rest);
|
bool simExecuteSqlErrorCmd(SScript *script, char *rest);
|
||||||
bool simExecuteSqlSlowCmd(SScript *script, char *option);
|
bool simExecuteSqlSlowCmd(SScript *script, char *option);
|
||||||
bool simExecuteRestfulCmd(SScript *script, char *rest);
|
bool simExecuteRestfulCmd(SScript *script, char *rest);
|
||||||
|
bool simExecuteLineInsertCmd(SScript *script, char *option);
|
||||||
|
bool simExecuteLineInsertErrorCmd(SScript *script, char *option);
|
||||||
void simVisuallizeOption(SScript *script, char *src, char *dst);
|
void simVisuallizeOption(SScript *script, char *src, char *dst);
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -1067,3 +1067,49 @@ bool simExecuteSqlErrorCmd(SScript *script, char *rest) {
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool simExecuteLineInsertCmd(SScript *script, char *rest) {
|
||||||
|
char buf[TSDB_MAX_BINARY_LEN];
|
||||||
|
|
||||||
|
simVisuallizeOption(script, rest, buf);
|
||||||
|
rest = buf;
|
||||||
|
|
||||||
|
SCmdLine *line = &script->lines[script->linePos];
|
||||||
|
|
||||||
|
simInfo("script:%s, %s", script->fileName, rest);
|
||||||
|
simLogSql(buf, true);
|
||||||
|
char * lines[] = {rest};
|
||||||
|
int32_t ret = taos_insert_lines(script->taos, lines, 1);
|
||||||
|
if (ret == TSDB_CODE_SUCCESS) {
|
||||||
|
simDebug("script:%s, taos:%p, %s executed. success.", script->fileName, script->taos, rest);
|
||||||
|
script->linePos++;
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
sprintf(script->error, "lineNum: %d. line: %s failed, ret:%d:%s", line->lineNum, rest,
|
||||||
|
ret & 0XFFFF, tstrerror(ret));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool simExecuteLineInsertErrorCmd(SScript *script, char *rest) {
|
||||||
|
char buf[TSDB_MAX_BINARY_LEN];
|
||||||
|
|
||||||
|
simVisuallizeOption(script, rest, buf);
|
||||||
|
rest = buf;
|
||||||
|
|
||||||
|
SCmdLine *line = &script->lines[script->linePos];
|
||||||
|
|
||||||
|
simInfo("script:%s, %s", script->fileName, rest);
|
||||||
|
simLogSql(buf, true);
|
||||||
|
char * lines[] = {rest};
|
||||||
|
int32_t ret = taos_insert_lines(script->taos, lines, 1);
|
||||||
|
if (ret == TSDB_CODE_SUCCESS) {
|
||||||
|
sprintf(script->error, "script:%s, taos:%p, %s executed. expect failed, but success.", script->fileName, script->taos, rest);
|
||||||
|
script->linePos++;
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
simDebug("lineNum: %d. line: %s failed, ret:%d:%s. Expect failed, so success", line->lineNum, rest,
|
||||||
|
ret & 0XFFFF, tstrerror(ret));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -838,6 +838,38 @@ bool simParseRunBackCmd(char *rest, SCommand *pCmd, int32_t lineNum) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool simParseLineInsertCmd(char* rest, SCommand* pCmd, int32_t lineNum) {
|
||||||
|
int32_t expLen;
|
||||||
|
|
||||||
|
rest++;
|
||||||
|
cmdLine[numOfLines].cmdno = SIM_CMD_LINE_INSERT;
|
||||||
|
cmdLine[numOfLines].lineNum = lineNum;
|
||||||
|
cmdLine[numOfLines].optionOffset = optionOffset;
|
||||||
|
expLen = (int32_t)strlen(rest);
|
||||||
|
memcpy(optionBuffer + optionOffset, rest, expLen);
|
||||||
|
optionOffset += expLen + 1;
|
||||||
|
*(optionBuffer + optionOffset - 1) = 0;
|
||||||
|
|
||||||
|
numOfLines++;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool simParseLineInsertErrorCmd(char* rest, SCommand* pCmd, int32_t lineNum) {
|
||||||
|
int32_t expLen;
|
||||||
|
|
||||||
|
rest++;
|
||||||
|
cmdLine[numOfLines].cmdno = SIM_CMD_LINE_INSERT;
|
||||||
|
cmdLine[numOfLines].lineNum = lineNum;
|
||||||
|
cmdLine[numOfLines].optionOffset = optionOffset;
|
||||||
|
expLen = (int32_t)strlen(rest);
|
||||||
|
memcpy(optionBuffer + optionOffset, rest, expLen);
|
||||||
|
optionOffset += expLen + 1;
|
||||||
|
*(optionBuffer + optionOffset - 1) = 0;
|
||||||
|
|
||||||
|
numOfLines++;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void simInitsimCmdList() {
|
void simInitsimCmdList() {
|
||||||
int32_t cmdno;
|
int32_t cmdno;
|
||||||
memset(simCmdList, 0, SIM_CMD_END * sizeof(SCommand));
|
memset(simCmdList, 0, SIM_CMD_END * sizeof(SCommand));
|
||||||
|
@ -1049,4 +1081,20 @@ void simInitsimCmdList() {
|
||||||
simCmdList[cmdno].parseCmd = simParseReturnCmd;
|
simCmdList[cmdno].parseCmd = simParseReturnCmd;
|
||||||
simCmdList[cmdno].executeCmd = simExecuteReturnCmd;
|
simCmdList[cmdno].executeCmd = simExecuteReturnCmd;
|
||||||
simAddCmdIntoHash(&(simCmdList[cmdno]));
|
simAddCmdIntoHash(&(simCmdList[cmdno]));
|
||||||
|
|
||||||
|
cmdno = SIM_CMD_LINE_INSERT;
|
||||||
|
simCmdList[cmdno].cmdno = cmdno;
|
||||||
|
strcpy(simCmdList[cmdno].name, "line_insert");
|
||||||
|
simCmdList[cmdno].nlen = (int16_t)strlen(simCmdList[cmdno].name);
|
||||||
|
simCmdList[cmdno].parseCmd = simParseLineInsertCmd;
|
||||||
|
simCmdList[cmdno].executeCmd = simExecuteLineInsertCmd;
|
||||||
|
simAddCmdIntoHash(&(simCmdList[cmdno]));
|
||||||
|
|
||||||
|
cmdno = SIM_CMD_LINE_INSERT_ERROR;
|
||||||
|
simCmdList[cmdno].cmdno = cmdno;
|
||||||
|
strcpy(simCmdList[cmdno].name, "line_insert_error");
|
||||||
|
simCmdList[cmdno].nlen = (int16_t)strlen(simCmdList[cmdno].name);
|
||||||
|
simCmdList[cmdno].parseCmd = simParseLineInsertErrorCmd;
|
||||||
|
simCmdList[cmdno].executeCmd = simExecuteLineInsertErrorCmd;
|
||||||
|
simAddCmdIntoHash(&(simCmdList[cmdno]));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue