diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index 4c0d90846f4ff9428c168366c373de4bbe23e2e7..612ab6375833dd901df6e0ad91d026a9da6ef7f9 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -1544,12 +1544,13 @@ static int32_t partTagsOptimize(SOptimizeContext* pCxt, SLogicSubplan* pLogicSub code = adjustLogicNodeDataRequirement((SLogicNode*)pScan, pNode->resultDataOrder); } if (TSDB_CODE_SUCCESS == code) { - NODES_CLEAR_LIST(pNode->pChildren); - nodesDestroyNode((SNode*)pNode); if (QUERY_NODE_LOGIC_PLAN_AGG == pNode->pParent->type) { SAggLogicNode* pParent = (SAggLogicNode*)(pNode->pParent); pParent->hasGroupKeyOptimized = true; } + + NODES_CLEAR_LIST(pNode->pChildren); + nodesDestroyNode((SNode*)pNode); } } else { SAggLogicNode* pAgg = (SAggLogicNode*)pNode; @@ -1573,8 +1574,9 @@ static int32_t partTagsOptimize(SOptimizeContext* pCxt, SLogicSubplan* pLogicSub break; } } - NODES_DESTORY_LIST(pAgg->pGroupKeys); pAgg->hasGroupKeyOptimized = true; + + NODES_DESTORY_LIST(pAgg->pGroupKeys); if (TSDB_CODE_SUCCESS == code && start >= 0) { code = partTagsRewriteGroupTagsToFuncs(pScan->pGroupTags, start, pAgg); }