Merge pull request #28071 from taosdata/fix/TD-30813-6
fix(stmt2/query): use snyc ctg to build pVgList
This commit is contained in:
commit
1184eb4d29
|
@ -679,9 +679,15 @@ _return:
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void freeVgList(void* list) {
|
||||||
|
SArray* pList = *(SArray**)list;
|
||||||
|
taosArrayDestroy(pList);
|
||||||
|
}
|
||||||
|
|
||||||
int32_t buildAsyncExecNodeList(SRequestObj* pRequest, SArray** pNodeList, SArray* pMnodeList, SMetaData* pResultMeta) {
|
int32_t buildAsyncExecNodeList(SRequestObj* pRequest, SArray** pNodeList, SArray* pMnodeList, SMetaData* pResultMeta) {
|
||||||
SArray* pDbVgList = NULL;
|
SArray* pDbVgList = NULL;
|
||||||
SArray* pQnodeList = NULL;
|
SArray* pQnodeList = NULL;
|
||||||
|
FDelete fp = NULL;
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
|
|
||||||
switch (tsQueryPolicy) {
|
switch (tsQueryPolicy) {
|
||||||
|
@ -705,6 +711,43 @@ int32_t buildAsyncExecNodeList(SRequestObj* pRequest, SArray** pNodeList, SArray
|
||||||
goto _return;
|
goto _return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
fp = freeVgList;
|
||||||
|
|
||||||
|
int32_t dbNum = taosArrayGetSize(pRequest->dbList);
|
||||||
|
if (dbNum > 0) {
|
||||||
|
SCatalog* pCtg = NULL;
|
||||||
|
SAppInstInfo* pInst = pRequest->pTscObj->pAppInfo;
|
||||||
|
code = catalogGetHandle(pInst->clusterId, &pCtg);
|
||||||
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
|
goto _return;
|
||||||
|
}
|
||||||
|
|
||||||
|
pDbVgList = taosArrayInit(dbNum, POINTER_BYTES);
|
||||||
|
if (NULL == pDbVgList) {
|
||||||
|
code = terrno;
|
||||||
|
goto _return;
|
||||||
|
}
|
||||||
|
SArray* pVgList = NULL;
|
||||||
|
for (int32_t i = 0; i < dbNum; ++i) {
|
||||||
|
char* dbFName = taosArrayGet(pRequest->dbList, i);
|
||||||
|
SRequestConnInfo conn = {.pTrans = pInst->pTransporter,
|
||||||
|
.requestId = pRequest->requestId,
|
||||||
|
.requestObjRefId = pRequest->self,
|
||||||
|
.mgmtEps = getEpSet_s(&pInst->mgmtEp)};
|
||||||
|
|
||||||
|
// catalogGetDBVgList will handle dbFName == null.
|
||||||
|
code = catalogGetDBVgList(pCtg, &conn, dbFName, &pVgList);
|
||||||
|
if (code) {
|
||||||
|
goto _return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NULL == taosArrayPush(pDbVgList, &pVgList)) {
|
||||||
|
code = terrno;
|
||||||
|
goto _return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
code = buildVnodePolicyNodeList(pRequest, pNodeList, pMnodeList, pDbVgList);
|
code = buildVnodePolicyNodeList(pRequest, pNodeList, pMnodeList, pDbVgList);
|
||||||
|
@ -745,17 +788,12 @@ int32_t buildAsyncExecNodeList(SRequestObj* pRequest, SArray** pNodeList, SArray
|
||||||
}
|
}
|
||||||
|
|
||||||
_return:
|
_return:
|
||||||
taosArrayDestroy(pDbVgList);
|
taosArrayDestroyEx(pDbVgList, fp);
|
||||||
taosArrayDestroy(pQnodeList);
|
taosArrayDestroy(pQnodeList);
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
void freeVgList(void* list) {
|
|
||||||
SArray* pList = *(SArray**)list;
|
|
||||||
taosArrayDestroy(pList);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t buildSyncExecNodeList(SRequestObj* pRequest, SArray** pNodeList, SArray* pMnodeList) {
|
int32_t buildSyncExecNodeList(SRequestObj* pRequest, SArray** pNodeList, SArray* pMnodeList) {
|
||||||
SArray* pDbVgList = NULL;
|
SArray* pDbVgList = NULL;
|
||||||
SArray* pQnodeList = NULL;
|
SArray* pQnodeList = NULL;
|
||||||
|
|
|
@ -1873,6 +1873,8 @@ int stmtGetParamNum2(TAOS_STMT2* stmt, int* nums) {
|
||||||
|
|
||||||
int stmtGetParamTbName(TAOS_STMT2* stmt, int* nums) {
|
int stmtGetParamTbName(TAOS_STMT2* stmt, int* nums) {
|
||||||
STscStmt2* pStmt = (STscStmt2*)stmt;
|
STscStmt2* pStmt = (STscStmt2*)stmt;
|
||||||
|
int32_t code = 0;
|
||||||
|
int32_t preCode = pStmt->errCode;
|
||||||
|
|
||||||
STMT_DLOG_E("start to get param num");
|
STMT_DLOG_E("start to get param num");
|
||||||
|
|
||||||
|
@ -1895,17 +1897,19 @@ int stmtGetParamTbName(TAOS_STMT2* stmt, int* nums) {
|
||||||
STMT_ERR_RET(stmtCreateRequest(pStmt));
|
STMT_ERR_RET(stmtCreateRequest(pStmt));
|
||||||
|
|
||||||
if (pStmt->bInfo.needParse) {
|
if (pStmt->bInfo.needParse) {
|
||||||
STMT_ERR_RET(stmtParseSql(pStmt));
|
STMT_ERRI_JRET(stmtParseSql(pStmt));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TSDB_CODE_TSC_STMT_TBNAME_ERROR == pStmt->errCode) {
|
*nums = STMT_TYPE_MULTI_INSERT == pStmt->sql.type ? 1 : 0;
|
||||||
|
|
||||||
|
_return:
|
||||||
|
if (TSDB_CODE_TSC_STMT_TBNAME_ERROR == code) {
|
||||||
*nums = 1;
|
*nums = 1;
|
||||||
pStmt->errCode = TSDB_CODE_SUCCESS;
|
code = TSDB_CODE_SUCCESS;
|
||||||
} else {
|
|
||||||
*nums = STMT_TYPE_MULTI_INSERT == pStmt->sql.type ? 1 : 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
pStmt->errCode = preCode;
|
||||||
|
return code;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
int stmtGetParam(TAOS_STMT* stmt, int idx, int* type, int* bytes) {
|
int stmtGetParam(TAOS_STMT* stmt, int idx, int* type, int* bytes) {
|
||||||
|
|
Loading…
Reference in New Issue