提交 e30edca2 编写于 作者: L lihui

[#1083]

上级 0ad471e3
...@@ -276,7 +276,8 @@ typedef struct { ...@@ -276,7 +276,8 @@ typedef struct {
bool existsCheck; // check if the table exists bool existsCheck; // check if the table exists
int8_t showType; // show command type int8_t showType; // show command type
}; };
int8_t isParseFinish;
int8_t isInsertFromFile; // load data from file or not int8_t isInsertFromFile; // load data from file or not
bool import; // import/insert type bool import; // import/insert type
uint8_t msgType; uint8_t msgType;
......
...@@ -507,8 +507,21 @@ void tscMeterMetaCallBack(void *param, TAOS_RES *res, int code) { ...@@ -507,8 +507,21 @@ void tscMeterMetaCallBack(void *param, TAOS_RES *res, int code) {
if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; if (code == TSDB_CODE_ACTION_IN_PROGRESS) return;
} else { // normal async query continues } else { // normal async query continues
code = tsParseSql(pSql, pObj->acctId, pObj->db, false); if (pCmd->isParseFinish) {
if (code == TSDB_CODE_ACTION_IN_PROGRESS) return; tscTrace("%p resend data to vnode in metermeta callback since sql has been parsed completed", pSql);
SMeterMetaInfo* pMeterMetaInfo = tscGetMeterMetaInfo(pCmd, 0);
code = tscGetMeterMeta(pSql, pMeterMetaInfo->name, 0);
assert(code == TSDB_CODE_SUCCESS);
if (pMeterMetaInfo->pMeterMeta) {
code = tscSendMsgToServer(pSql);
if (code == TSDB_CODE_SUCCESS) return;
}
} else {
code = tsParseSql(pSql, pObj->acctId, pObj->db, false);
if (code == TSDB_CODE_ACTION_IN_PROGRESS) return;
}
} }
} else { // stream computing } else { // stream computing
......
...@@ -975,7 +975,7 @@ int doParserInsertSql(SSqlObj *pSql, char *str) { ...@@ -975,7 +975,7 @@ int doParserInsertSql(SSqlObj *pSql, char *str) {
str = pSql->asyncTblPos; str = pSql->asyncTblPos;
} }
tscTrace("%p create data block list for submit data, %p", pSql, pSql->cmd.pDataBlocks); tscTrace("%p create data block list for submit data:%p, asyncTblPos:%p, pTableHashList:%p", pSql, pSql->cmd.pDataBlocks, pSql->asyncTblPos, pSql->pTableHashList);
while (1) { while (1) {
int32_t index = 0; int32_t index = 0;
...@@ -1010,7 +1010,7 @@ int doParserInsertSql(SSqlObj *pSql, char *str) { ...@@ -1010,7 +1010,7 @@ int doParserInsertSql(SSqlObj *pSql, char *str) {
if ((code = tscParseSqlForCreateTableOnDemand(&str, pSql)) != TSDB_CODE_SUCCESS) { if ((code = tscParseSqlForCreateTableOnDemand(&str, pSql)) != TSDB_CODE_SUCCESS) {
if (fp != NULL) { if (fp != NULL) {
if (TSDB_CODE_ACTION_IN_PROGRESS == code) { if (TSDB_CODE_ACTION_IN_PROGRESS == code) {
tscTrace("async insert and waiting to get meter meta, then continue parse sql: %s", pSql->asyncTblPos); tscTrace("async insert and waiting to get meter meta, then continue parse sql: %s, pTableHashList:%p", pSql->asyncTblPos, pSql->pTableHashList);
return code; return code;
} }
tscTrace("async insert parse error, code:%d, %s", code, tsError[code]); tscTrace("async insert parse error, code:%d, %s", code, tsError[code]);
...@@ -1221,6 +1221,7 @@ _clean: ...@@ -1221,6 +1221,7 @@ _clean:
taosCleanUpIntHash(pSql->pTableHashList); taosCleanUpIntHash(pSql->pTableHashList);
pSql->pTableHashList = NULL; pSql->pTableHashList = NULL;
pSql->asyncTblPos = NULL; pSql->asyncTblPos = NULL;
pCmd->isParseFinish = 1;
return code; return code;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册