From daac5036fcbe40d6a60b912a1b48f400f88df6ff Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Thu, 22 Oct 2020 17:46:08 +0800 Subject: [PATCH] [td-1373] --- src/client/src/tscSubquery.c | 50 ++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/src/client/src/tscSubquery.c b/src/client/src/tscSubquery.c index 3ac480ae03..7262fdd9f2 100644 --- a/src/client/src/tscSubquery.c +++ b/src/client/src/tscSubquery.c @@ -362,28 +362,50 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) { int32_t num = 0; int32_t *list = NULL; - tsBufGetVnodeIdList(pSupporter->pTSBuf, &num, &list); + tsBufGetVnodeIdList(pNewQueryInfo->tsBuf, &num, &list); - for(int32_t k = 0; k < taosArrayGetSize(pTableMetaInfo->pVgroupTables);) { - SVgroupTableInfo* p = taosArrayGet(pTableMetaInfo->pVgroupTables, k); + if (pTableMetaInfo->pVgroupTables != NULL) { + for(int32_t k = 0; k < taosArrayGetSize(pTableMetaInfo->pVgroupTables);) { + SVgroupTableInfo* p = taosArrayGet(pTableMetaInfo->pVgroupTables, k); - bool found = false; - for(int32_t f = 0; f < num; ++f) { - if (p->vgInfo.vgId == list[f]) { - found = true; - break; + bool found = false; + for(int32_t f = 0; f < num; ++f) { + if (p->vgInfo.vgId == list[f]) { + found = true; + break; + } + } + + if (!found) { + tscRemoveVgroupTableGroup(pTableMetaInfo->pVgroupTables, k); + } else { + k++; } } - if (!found) { - tscRemoveVgroupTableGroup(pTableMetaInfo->pVgroupTables, k); - } else { - k++; - } + assert(taosArrayGetSize(pTableMetaInfo->pVgroupTables) > 0); + } else { // TODO remove unnecessarily accessed vnode +// pTableMetaInfo->vgroupList-> +// for(int32_t k = 0; k < taosArrayGetSize(pTableMetaInfo->pVgroupTables);) { +// SVgroupTableInfo* p = taosArrayGet(pTableMetaInfo->pVgroupTables, k); +// +// bool found = false; +// for(int32_t f = 0; f < num; ++f) { +// if (p->vgInfo.vgId == list[f]) { +// found = true; +// break; +// } +// } +// +// if (!found) { +// tscRemoveVgroupTableGroup(pTableMetaInfo->pVgroupTables, k); +// } else { +// k++; +// } +// } } taosTFree(list); - assert(taosArrayGetSize(pTableMetaInfo->pVgroupTables) > 0); size_t numOfCols = taosArrayGetSize(pNewQueryInfo->colList); tscDebug("%p subquery:%p tableIndex:%d, vgroupIndex:%d, type:%d, exprInfo:%" PRIzu ", colList:%" PRIzu ", fieldsInfo:%d, name:%s",