From cdd8246c1ebed5cedae2b5a8c902319ab027871d Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Fri, 10 Jan 2025 10:22:58 +0800 Subject: [PATCH] fix: qnode scale out issue --- source/libs/planner/src/planScaleOut.c | 29 +++++++++++++------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/source/libs/planner/src/planScaleOut.c b/source/libs/planner/src/planScaleOut.c index 08e9d3fd3a..59754c8952 100644 --- a/source/libs/planner/src/planScaleOut.c +++ b/source/libs/planner/src/planScaleOut.c @@ -151,24 +151,25 @@ static int32_t pushHierarchicalPlanForCompute(SNodeList* pParentsGroup, SNodeLis SNode* pChild = NULL; SNode* pParent = NULL; int32_t code = TSDB_CODE_SUCCESS; -/* - FORBOTH(pChild, pCurrentGroup, pParent, pParentsGroup) { - code = nodesListMakeAppend(&(((SLogicSubplan*)pParent)->pChildren), pChild); - if (TSDB_CODE_SUCCESS == code) { - code = nodesListMakeAppend(&(((SLogicSubplan*)pChild)->pParents), pParent); - } - if (TSDB_CODE_SUCCESS != code) { - break; - } - } -*/ - FOREACH(pChild, pCurrentGroup) { - SNode* pParent = NULL; - FOREACH(pParent, pParentsGroup) { + if (pParentsGroup->length == pCurrentGroup->length) { + FORBOTH(pChild, pCurrentGroup, pParent, pParentsGroup) { code = nodesListMakeAppend(&(((SLogicSubplan*)pParent)->pChildren), pChild); if (TSDB_CODE_SUCCESS == code) { code = nodesListMakeAppend(&(((SLogicSubplan*)pChild)->pParents), pParent); } + if (TSDB_CODE_SUCCESS != code) { + break; + } + } + } else { + FOREACH(pChild, pCurrentGroup) { + SNode* pParent = NULL; + FOREACH(pParent, pParentsGroup) { + code = nodesListMakeAppend(&(((SLogicSubplan*)pParent)->pChildren), pChild); + if (TSDB_CODE_SUCCESS == code) { + code = nodesListMakeAppend(&(((SLogicSubplan*)pChild)->pParents), pParent); + } + } } }