fix subquery reparse sql issue
This commit is contained in:
parent
37e0bf153a
commit
497159f3aa
|
@ -2735,18 +2735,23 @@ void tscHandleSubqueryError(SRetrieveSupport *trsupport, SSqlObj *pSql, int numO
|
||||||
tscDebug("0x%"PRIx64" retry parse sql and send query, prev error: %s, retry:%d", pParentSql->self,
|
tscDebug("0x%"PRIx64" retry parse sql and send query, prev error: %s, retry:%d", pParentSql->self,
|
||||||
tstrerror(code), pParentSql->retry);
|
tstrerror(code), pParentSql->retry);
|
||||||
|
|
||||||
code = tsParseSql(pParentSql, true);
|
SSqlObj *userSql = ((SRetrieveSupport*)pParentSql->param)->pParentSql;
|
||||||
|
|
||||||
|
code = tsParseSql(userSql, true);
|
||||||
if (code == TSDB_CODE_TSC_ACTION_IN_PROGRESS) {
|
if (code == TSDB_CODE_TSC_ACTION_IN_PROGRESS) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
pParentSql->res.code = code;
|
userSql->res.code = code;
|
||||||
tscAsyncResultOnError(pParentSql);
|
tscAsyncResultOnError(userSql);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
executeQuery(pParentSql, pQueryInfo);
|
doCleanupSubqueries(userSql, userSql->subState.numOfSub);
|
||||||
|
|
||||||
|
pQueryInfo = tscGetQueryInfo(&userSql->cmd);
|
||||||
|
executeQuery(userSql, pQueryInfo);
|
||||||
} else {
|
} else {
|
||||||
(*pParentSql->fp)(pParentSql->param, pParentSql, pParentSql->res.code);
|
(*pParentSql->fp)(pParentSql->param, pParentSql, pParentSql->res.code);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3771,19 +3771,24 @@ static void tscSubqueryCompleteCallback(void* param, TAOS_RES* tres, int code) {
|
||||||
tscDebug("0x%"PRIx64" retry parse sql and send query, prev error: %s, retry:%d", pParentSql->self,
|
tscDebug("0x%"PRIx64" retry parse sql and send query, prev error: %s, retry:%d", pParentSql->self,
|
||||||
tstrerror(code), pParentSql->retry);
|
tstrerror(code), pParentSql->retry);
|
||||||
|
|
||||||
code = tsParseSql(pParentSql, true);
|
SSqlObj *userSql = ((SRetrieveSupport*)pParentSql->param)->pParentSql;
|
||||||
|
|
||||||
|
code = tsParseSql(userSql, true);
|
||||||
if (code == TSDB_CODE_TSC_ACTION_IN_PROGRESS) {
|
if (code == TSDB_CODE_TSC_ACTION_IN_PROGRESS) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
pParentSql->res.code = code;
|
userSql->res.code = code;
|
||||||
tscAsyncResultOnError(pParentSql);
|
tscAsyncResultOnError(userSql);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SQueryInfo *pQueryInfo = tscGetQueryInfo(pParentCmd);
|
SQueryInfo *pQueryInfo = tscGetQueryInfo(&userSql->cmd);
|
||||||
executeQuery(pParentSql, pQueryInfo);
|
|
||||||
|
doCleanupSubqueries(userSql, userSql->subState.numOfSub);
|
||||||
|
|
||||||
|
executeQuery(userSql, pQueryInfo);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3805,8 +3810,9 @@ void executeQuery(SSqlObj* pSql, SQueryInfo* pQueryInfo) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taosArrayGetSize(pQueryInfo->pUpstream) > 0) { // nest query. do execute it firstly
|
if (taosArrayGetSize(pQueryInfo->pUpstream) > 0) { // nest query. do execute it firstly
|
||||||
|
assert(pSql->subState.numOfSub == 0);
|
||||||
pSql->subState.numOfSub = (int32_t) taosArrayGetSize(pQueryInfo->pUpstream);
|
pSql->subState.numOfSub = (int32_t) taosArrayGetSize(pQueryInfo->pUpstream);
|
||||||
|
assert(pSql->pSubs == NULL);
|
||||||
pSql->pSubs = calloc(pSql->subState.numOfSub, POINTER_BYTES);
|
pSql->pSubs = calloc(pSql->subState.numOfSub, POINTER_BYTES);
|
||||||
pSql->subState.states = calloc(pSql->subState.numOfSub, sizeof(int8_t));
|
pSql->subState.states = calloc(pSql->subState.numOfSub, sizeof(int8_t));
|
||||||
code = pthread_mutex_init(&pSql->subState.mutex, NULL);
|
code = pthread_mutex_init(&pSql->subState.mutex, NULL);
|
||||||
|
|
Loading…
Reference in New Issue