From fa491e2cc985a7a2d615d5d67ce8c7c2fad9353d Mon Sep 17 00:00:00 2001 From: shenglian zhou Date: Sun, 17 Jul 2022 22:17:30 +0800 Subject: [PATCH 1/4] fix: trigger ci test --- tests/script/tsim/valgrind/checkError1.sim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/script/tsim/valgrind/checkError1.sim b/tests/script/tsim/valgrind/checkError1.sim index 2b60d7a890..e6ecce3b4c 100644 --- a/tests/script/tsim/valgrind/checkError1.sim +++ b/tests/script/tsim/valgrind/checkError1.sim @@ -7,6 +7,7 @@ system sh/exec.sh -n dnode1 -s start -v system sh/exec.sh -n dnode2 -s start -v sql connect + print =============== step1: create alter drop show user sql create user u1 pass 'taosdata' sql show users @@ -158,4 +159,4 @@ endi if $system_content == $null then return -1 -endi \ No newline at end of file +endi From 792170b0f50e7027cfff5337672ef3bbefb3a8ac Mon Sep 17 00:00:00 2001 From: shenglian zhou Date: Tue, 19 Jul 2022 09:48:04 +0800 Subject: [PATCH 2/4] fix: remove agg node after apply tag scan optimization --- source/libs/planner/src/planOptimizer.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index 4473c7c8b6..33a66bcf78 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -2143,6 +2143,12 @@ static int32_t tagScanOptimize(SOptimizeContext* pCxt, SLogicSubplan* pLogicSubp } pScanNode->scanType = SCAN_TYPE_TAG; + SLogicNode* pAgg = pScanNode->node.pParent; + int32_t code = replaceLogicNode(pLogicSubplan, pAgg, (SLogicNode*)pScanNode); + if (TSDB_CODE_SUCCESS == code) { + NODES_CLEAR_LIST(pAgg->pChildren); + } + nodesDestroyNode((SNode*)pAgg); pCxt->optimized = true; return TSDB_CODE_SUCCESS; } From ea102128bad6f960d32011982d8d1baee0b66918 Mon Sep 17 00:00:00 2001 From: shenglian zhou Date: Tue, 19 Jul 2022 14:25:38 +0800 Subject: [PATCH 3/4] fix: remove scan cols and ts target from scan node when tag scan --- source/libs/planner/src/planOptimizer.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index 33a66bcf78..4f361614e3 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -2143,6 +2143,16 @@ static int32_t tagScanOptimize(SOptimizeContext* pCxt, SLogicSubplan* pLogicSubp } pScanNode->scanType = SCAN_TYPE_TAG; + SNode* pTarget = NULL; + FOREACH(pTarget, pScanNode->node.pTargets) { + if (PRIMARYKEY_TIMESTAMP_COL_ID == ((SColumnNode*)(pTarget))->colId) { + ERASE_NODE(pScanNode->node.pTargets); + break; + } + } + + NODES_DESTORY_LIST(pScanNode->pScanCols); + SLogicNode* pAgg = pScanNode->node.pParent; int32_t code = replaceLogicNode(pLogicSubplan, pAgg, (SLogicNode*)pScanNode); if (TSDB_CODE_SUCCESS == code) { From 4901b5953076eff5360b371c5b22d5c84c200666 Mon Sep 17 00:00:00 2001 From: shenglian zhou Date: Tue, 19 Jul 2022 19:13:15 +0800 Subject: [PATCH 4/4] fix: optimizing to do tag scan when tbname exists --- source/libs/planner/src/planOptimizer.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index 4f361614e3..c0494aa2ae 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -1378,6 +1378,22 @@ static bool planOptNodeListHasCol(SNodeList* pKeys) { return hasCol; } +static EDealRes partTagsOptHasTbname(SNode* pNode, void* pContext) { + if (QUERY_NODE_COLUMN == nodeType(pNode)) { + if (COLUMN_TYPE_TBNAME == ((SColumnNode*)pNode)->colType) { + *(bool*)pContext = true; + return DEAL_RES_END; + } + } + return DEAL_RES_CONTINUE; +} + +static bool planOptNodeListHasTbname(SNodeList* pKeys) { + bool hasCol = false; + nodesWalkExprs(pKeys, partTagsOptHasTbname, &hasCol); + return hasCol; +} + static bool partTagsIsOptimizableNode(SLogicNode* pNode) { return ((QUERY_NODE_LOGIC_PLAN_PARTITION == nodeType(pNode) || (QUERY_NODE_LOGIC_PLAN_AGG == nodeType(pNode) && NULL != ((SAggLogicNode*)pNode)->pGroupKeys && @@ -2129,7 +2145,8 @@ static bool tagScanMayBeOptimized(SLogicNode* pNode) { } SAggLogicNode* pAgg = (SAggLogicNode*)(pNode->pParent); - if (NULL == pAgg->pGroupKeys || NULL != pAgg->pAggFuncs || planOptNodeListHasCol(pAgg->pGroupKeys)) { + if (NULL == pAgg->pGroupKeys || NULL != pAgg->pAggFuncs || + planOptNodeListHasCol(pAgg->pGroupKeys) || !planOptNodeListHasTbname(pAgg->pGroupKeys)) { return false; }