diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index d82b3cad625ed23e4d0bc69ae283b3a5d93aab3f..4be4e25eb87b7e73a37ee484a0d6f5ded2662fad 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -499,29 +499,37 @@ static int32_t checkAggColCoexist(STranslateContext* pCxt, SSelectStmt* pSelect) return TSDB_CODE_SUCCESS; } -static int32_t setTableVgroupList(STranslateContext *pCxt, SName* name, SVgroupsInfo **pVgList) { - SArray* vgroupList = NULL; - int32_t code = catalogGetTableDistVgInfo(pCxt->pParseCxt->pCatalog, pCxt->pParseCxt->pTransporter, &(pCxt->pParseCxt->mgmtEpSet), name, &vgroupList); - if (code != TSDB_CODE_SUCCESS) { - return code; - } - - size_t vgroupNum = taosArrayGetSize(vgroupList); +static int32_t setTableVgroupList(SParseContext* pCxt, SName* name, SRealTableNode* pRealTable) { + if (TSDB_SUPER_TABLE == pRealTable->pMeta->tableType) { + SArray* vgroupList = NULL; + int32_t code = catalogGetTableDistVgInfo(pCxt->pCatalog, pCxt->pTransporter, &pCxt->mgmtEpSet, name, &vgroupList); + if (code != TSDB_CODE_SUCCESS) { + return code; + } + + size_t vgroupNum = taosArrayGetSize(vgroupList); + pRealTable->pVgroupList = calloc(1, sizeof(SVgroupsInfo) + sizeof(SVgroupInfo) * vgroupNum); + if (NULL == pRealTable->pVgroupList) { + return TSDB_CODE_OUT_OF_MEMORY; + } + pRealTable->pVgroupList->numOfVgroups = vgroupNum; + for (int32_t i = 0; i < vgroupNum; ++i) { + SVgroupInfo *vg = taosArrayGet(vgroupList, i); + pRealTable->pVgroupList->vgroups[i] = *vg; + } - SVgroupsInfo* vgList = calloc(1, sizeof(SVgroupsInfo) + sizeof(SVgroupInfo) * vgroupNum); - if (NULL == vgList) { - return TSDB_CODE_OUT_OF_MEMORY; - } - vgList->numOfVgroups = vgroupNum; - - for (int32_t i = 0; i < vgroupNum; ++i) { - SVgroupInfo *vg = taosArrayGet(vgroupList, i); - vgList->vgroups[i] = *vg; + taosArrayDestroy(vgroupList); + } else { + pRealTable->pVgroupList = calloc(1, sizeof(SVgroupsInfo) + sizeof(SVgroupInfo)); + if (NULL == pRealTable->pVgroupList) { + return TSDB_CODE_OUT_OF_MEMORY; + } + pRealTable->pVgroupList->numOfVgroups = 1; + int32_t code = catalogGetTableHashVgroup(pCxt->pCatalog, pCxt->pTransporter, &pCxt->mgmtEpSet, name, pRealTable->pVgroupList->vgroups); + if (code != TSDB_CODE_SUCCESS) { + return code; + } } - - *pVgList = vgList; - taosArrayDestroy(vgroupList); - return TSDB_CODE_SUCCESS; } @@ -536,7 +544,7 @@ static int32_t translateTable(STranslateContext* pCxt, SNode* pTable) { if (TSDB_CODE_SUCCESS != code) { return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_TABLE_NOT_EXIST, pRealTable->table.tableName); } - code = setTableVgroupList(pCxt, &name, &(pRealTable->pVgroupList)); + code = setTableVgroupList(pCxt->pParseCxt, &name, pRealTable); if (TSDB_CODE_SUCCESS != code) { return code; } diff --git a/tests/script/tsim/dnode/basic1.sim b/tests/script/tsim/dnode/basic1.sim index 6061b6ece1442fc9e84d9aedce61e44d3659fb06..33e62de519150fca92440ba11c17ac0d35ae9bf1 100644 --- a/tests/script/tsim/dnode/basic1.sim +++ b/tests/script/tsim/dnode/basic1.sim @@ -177,7 +177,7 @@ if $rows != 3 then return -1 endi -sql select * from st +sql select ts, i from st if $rows != 15 then return -1 endi