From 9bb21ebbc2e89afef67cf87c6cd7fc05113e1211 Mon Sep 17 00:00:00 2001 From: shenglian zhou Date: Mon, 20 Jun 2022 08:45:57 +0800 Subject: [PATCH] fix: double free error during plan optimize --- source/libs/planner/src/planOptimizer.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index b8c6df4b54..be6186f891 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -1116,18 +1116,18 @@ static int32_t eliminateProjOptimizeImpl(SOptimizeContext* pCxt, SLogicSubplan* char* projColumnName = projColumn->colName; if (QUERY_NODE_COLUMN == nodeType(childExpr) && strcmp(projColumnName, ((SColumnNode*)childExpr)->colName) == 0 || strcmp(projColumnName, childExpr->aliasName) == 0) { - nodesListAppend(pNewChildTargets, pChildTarget); + nodesListAppend(pNewChildTargets, nodesCloneNode(pChildTarget)); } } } - - TSWAP(pChild->pTargets, pNewChildTargets); + nodesDestroyList(pChild->pTargets); + pChild->pTargets = pNewChildTargets; + int32_t code = replaceLogicNode(pLogicSubplan, (SLogicNode*)pProjectNode, pChild); if (TSDB_CODE_SUCCESS == code) { NODES_CLEAR_LIST(pProjectNode->node.pChildren); nodesDestroyNode((SNode*)pProjectNode); } - NODES_CLEAR_LIST(pNewChildTargets); return code; }