From b1cbdd0adcecc9619a1905e0b89c0e0b808c3fc5 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Sat, 23 Jul 2022 15:24:35 +0800 Subject: [PATCH 1/2] fix: add debug info --- source/client/src/clientImpl.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 7093e14982..83d9b35a91 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -1750,7 +1750,11 @@ int32_t setResultDataPtr(SReqResultInfo* pResultInfo, TAOS_FIELD* pFields, int32 char* pStart = p; for (int32_t i = 0; i < numOfCols; ++i) { colLength[i] = htonl(colLength[i]); - ASSERT(colLength[i] < dataLen); + if (colLength[i] >= dataLen) { + tscError("invalid colLength %d, dataLen %d", colLength[i], dataLen); + *(char*)0 = 1; + ASSERT(0); + } if (IS_VAR_DATA_TYPE(pResultInfo->fields[i].type)) { pResultInfo->pCol[i].offset = (int32_t*)pStart; From 3cc22ef10b53944830596057da0307c833974159 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Sat, 23 Jul 2022 19:52:15 +0800 Subject: [PATCH 2/2] fix: fix plan optimize issue --- source/client/src/clientImpl.c | 1 - source/libs/planner/src/planOptimizer.c | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 83d9b35a91..688dc67da9 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -1752,7 +1752,6 @@ int32_t setResultDataPtr(SReqResultInfo* pResultInfo, TAOS_FIELD* pFields, int32 colLength[i] = htonl(colLength[i]); if (colLength[i] >= dataLen) { tscError("invalid colLength %d, dataLen %d", colLength[i], dataLen); - *(char*)0 = 1; ASSERT(0); } diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index b006ac2b0a..7b60710c7d 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -1607,6 +1607,28 @@ static bool eliminateProjOptCanUseNewChildTargets(SLogicNode* pChild, SNodeList* return cxt.canUse; } +static void alignProjectionWithTarget(SLogicNode* pNode) { + if (QUERY_NODE_LOGIC_PLAN_PROJECT != pNode->type) { + return; + } + + SProjectLogicNode* pProjectNode = (SProjectLogicNode*)pNode; + SNode* pProjection = NULL; + FOREACH(pProjection, pProjectNode->pProjections) { + SNode* pTarget = NULL; + bool keep = false; + FOREACH(pTarget, pNode->pTargets) { + if (0 == strcmp(((SColumnNode*)pProjection)->node.aliasName, ((SColumnNode*)pTarget)->colName)) { + keep = true; + break; + } + } + if (!keep) { + nodesListErase(pProjectNode->pProjections, cell); + } + } +} + static int32_t eliminateProjOptimizeImpl(SOptimizeContext* pCxt, SLogicSubplan* pLogicSubplan, SProjectLogicNode* pProjectNode) { SLogicNode* pChild = (SLogicNode*)nodesListGetNode(pProjectNode->node.pChildren, 0); @@ -1634,6 +1656,7 @@ static int32_t eliminateProjOptimizeImpl(SOptimizeContext* pCxt, SLogicSubplan* if (TSDB_CODE_SUCCESS == code) { NODES_CLEAR_LIST(pProjectNode->node.pChildren); nodesDestroyNode((SNode*)pProjectNode); + alignProjectionWithTarget(pChild); } pCxt->optimized = true; return code;