From d047ec23fd2dc8859a1246c93f0dc5dc2beba6c3 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Thu, 9 Jan 2025 18:35:54 +0800 Subject: [PATCH] fix: subplan type error and subplan scale out issue --- source/libs/planner/src/planScaleOut.c | 12 ++++++++++++ source/libs/planner/src/planSpliter.c | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/source/libs/planner/src/planScaleOut.c b/source/libs/planner/src/planScaleOut.c index 4027056c69..08e9d3fd3a 100644 --- a/source/libs/planner/src/planScaleOut.c +++ b/source/libs/planner/src/planScaleOut.c @@ -151,6 +151,7 @@ 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) { @@ -160,6 +161,17 @@ static int32_t pushHierarchicalPlanForCompute(SNodeList* pParentsGroup, SNodeLis break; } } +*/ + 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); + } + } + } + return code; } diff --git a/source/libs/planner/src/planSpliter.c b/source/libs/planner/src/planSpliter.c index 5c2d1efd7b..fe66023332 100644 --- a/source/libs/planner/src/planSpliter.c +++ b/source/libs/planner/src/planSpliter.c @@ -1438,9 +1438,10 @@ static int32_t stbSplSplitScanNodeWithoutPartTags(SSplitContext* pCxt, SStableSp SLogicNode* pSplitNode = NULL; int32_t code = stbSplGetSplitNodeForScan(pInfo, &pSplitNode); if (TSDB_CODE_SUCCESS == code) { - code = splCreateExchangeNodeForSubplan(pCxt, pInfo->pSubplan, pSplitNode, SUBPLAN_TYPE_MERGE); + code = splCreateExchangeNodeForSubplan(pCxt, pInfo->pSubplan, pSplitNode, pInfo->pSubplan->subplanType); } if (TSDB_CODE_SUCCESS == code) { + splSetSubplanType(pInfo->pSubplan); code = nodesListMakeStrictAppend(&pInfo->pSubplan->pChildren, (SNode*)splCreateScanSubplan(pCxt, pSplitNode, SPLIT_FLAG_STABLE_SPLIT)); }