From 5a72630b3de683c268a405eb2d415588bae4b2dd Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Fri, 26 Apr 2024 09:40:29 +0800 Subject: [PATCH 1/8] fix: select failed as using table alias name --- source/libs/parser/src/parTranslater.c | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 8f77f0dedf..b513d10a3e 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -3155,6 +3155,31 @@ static bool fromSingleTable(SNode* table) { return false; } +static bool IsEqualTbNameFuncNode(SSelectStmt* pSelect, SNode* pFunc1, SNode* pFunc2) { + if (isTbnameFuction(pFunc1) && isTbnameFuction(pFunc2)) { + SValueNode* pVal1 = (SValueNode*)nodesListGetNode(((SFunctionNode*)pFunc1)->pParameterList, 0); + SValueNode* pVal2 = (SValueNode*)nodesListGetNode(((SFunctionNode*)pFunc1)->pParameterList, 0); + if (!pVal1 && !pVal2) { + return true; + } else if (pVal1 && pVal2) { + return strcmp(pVal1->literal, pVal2->literal) == 0; + } + + if (pSelect->pFromTable && + (pSelect->pFromTable->type == QUERY_NODE_REAL_TABLE || pSelect->pFromTable->type == QUERY_NODE_TEMP_TABLE)) { + STableNode* pTable = (STableNode*)pSelect->pFromTable; + if (pVal1) { + return strcmp(pTable->tableAlias, pVal1->literal) == 0; + } else if (!pVal1) { + return strcmp(pTable->tableAlias, pVal2->literal) == 0; + } + } else { + return false; + } + } + return false; +} + static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) { STranslateContext* pCxt = (STranslateContext*)pContext; SSelectStmt* pSelect = (SSelectStmt*)pCxt->pCurrStmt; @@ -3174,6 +3199,9 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) { ((SColumnNode*)*pNode)->colType == COLUMN_TYPE_TAG) { return rewriteExprToGroupKeyFunc(pCxt, pNode); } + if (IsEqualTbNameFuncNode(pSelect, pActualNode, *pNode)) { + return rewriteExprToGroupKeyFunc(pCxt, pNode); + } } SNode* pPartKey = NULL; bool partionByTbname = hasTbnameFunction(pSelect->pPartitionByList); @@ -3185,6 +3213,9 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) { ((SColumnNode*)*pNode)->colType == COLUMN_TYPE_TAG) { return rewriteExprToGroupKeyFunc(pCxt, pNode); } + if (IsEqualTbNameFuncNode(pSelect, pPartKey, *pNode)) { + return rewriteExprToGroupKeyFunc(pCxt, pNode); + } } if (NULL != pSelect->pWindow && QUERY_NODE_STATE_WINDOW == nodeType(pSelect->pWindow)) { if (nodesEqualNode(((SStateWindowNode*)pSelect->pWindow)->pExpr, *pNode)) { From b314ca8509a5377d98eb36e427b3bff36f324d59 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Sun, 28 Apr 2024 09:45:54 +0800 Subject: [PATCH 2/8] fix: rewrite expr groupby --- source/libs/parser/src/parTranslater.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index b513d10a3e..167b4bd43c 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -3193,7 +3193,7 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) { FOREACH(pGroupNode, getGroupByList(pCxt)) { SNode* pActualNode = getGroupByNode(pGroupNode); if (nodesEqualNode(pActualNode, *pNode)) { - return DEAL_RES_IGNORE_CHILD; + return rewriteExprToGroupKeyFunc(pCxt, pNode); } if (isTbnameFuction(pActualNode) && QUERY_NODE_COLUMN == nodeType(*pNode) && ((SColumnNode*)*pNode)->colType == COLUMN_TYPE_TAG) { From 446fc9f859a1e496c34ebe8f155b8dafca344e87 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Tue, 7 May 2024 15:57:49 +0800 Subject: [PATCH 3/8] group by alias tablename --- source/libs/parser/src/parTranslater.c | 2 +- source/libs/planner/src/planOptimizer.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 167b4bd43c..b513d10a3e 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -3193,7 +3193,7 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) { FOREACH(pGroupNode, getGroupByList(pCxt)) { SNode* pActualNode = getGroupByNode(pGroupNode); if (nodesEqualNode(pActualNode, *pNode)) { - return rewriteExprToGroupKeyFunc(pCxt, pNode); + return DEAL_RES_IGNORE_CHILD; } if (isTbnameFuction(pActualNode) && QUERY_NODE_COLUMN == nodeType(*pNode) && ((SColumnNode*)*pNode)->colType == COLUMN_TYPE_TAG) { diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index da39228a62..f998e342ab 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -2835,7 +2835,9 @@ static SNode* partTagsCreateWrapperFunc(const char* pFuncName, SNode* pNode) { } snprintf(pFunc->functionName, sizeof(pFunc->functionName), "%s", pFuncName); - if (QUERY_NODE_COLUMN == nodeType(pNode) && COLUMN_TYPE_TBNAME != ((SColumnNode*)pNode)->colType) { + if ((QUERY_NODE_COLUMN == nodeType(pNode) && COLUMN_TYPE_TBNAME != ((SColumnNode*)pNode)->colType) || + (QUERY_NODE_COLUMN == nodeType(pNode) && COLUMN_TYPE_TBNAME == ((SColumnNode*)pNode)->colType && + ((SColumnNode*)pNode)->tableAlias[0] != '\0')){ SColumnNode* pCol = (SColumnNode*)pNode; partTagsSetAlias(pFunc->node.aliasName, pCol->tableAlias, pCol->colName); } else { From 0d86361a94300e4a4c0f62ccf48ef4f945f87723 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Tue, 7 May 2024 17:21:10 +0800 Subject: [PATCH 4/8] add test case --- .../2-query/agg_group_AlwaysReturnValue.py | 34 +++++++++++++++++-- .../2-query/agg_group_NotReturnValue.py | 6 +++- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/tests/system-test/2-query/agg_group_AlwaysReturnValue.py b/tests/system-test/2-query/agg_group_AlwaysReturnValue.py index 9ed0e3fc4a..6a330197c7 100755 --- a/tests/system-test/2-query/agg_group_AlwaysReturnValue.py +++ b/tests/system-test/2-query/agg_group_AlwaysReturnValue.py @@ -640,6 +640,15 @@ class TDTestCase(TDTestCase): sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,count(*) " self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 a group by a.tbname order by a.tbname,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select a.tbname,AGG(COLUMN) from {dbname}.stable_1 a group by a.tbname order by a.tbname,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select a.tbname,AGG(COLUMN) from {dbname}.stable_1 a group by tbname order by a.tbname,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + sql1 = f"select * from ({sql})" self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') @@ -647,7 +656,16 @@ class TDTestCase(TDTestCase): self.data_check_tbname(sql2,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 where ts is null group by tbname order by tbname,count(*) " - self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname,AGG(COLUMN) from {dbname}.stable_1 a where ts is null group by a.tbname order by a.tbname,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select a.tbname,AGG(COLUMN) from {dbname}.stable_1 a where ts is null group by a.tbname order by a.tbname,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select a.tbname,AGG(COLUMN) from {dbname}.stable_1 a where ts is null group by a.tbname order by tbname,count(*) " + self.data_check_tbname(sql,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') sql1 = f"select * from ({sql})" self.data_check_tbname(sql1,'NULL','NULL',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') @@ -1011,7 +1029,19 @@ class TDTestCase(TDTestCase): #union all sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname,AGG(COLUMN),count(*)" sql = f"({sql}) union all ({sql}) order by tb" - self.data_check_tbname(sql,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + self.data_check_tbname(sql,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select a.tbname tb,AGG(COLUMN) from {dbname}.stable_1 a group by a.tbname order by tbname,AGG(COLUMN),count(*)" + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 a group by a.tbname order by a.tbname,AGG(COLUMN),count(*)" + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select a.tbname tb,AGG(COLUMN) from {dbname}.stable_1 a group by tbname order by a.tbname,AGG(COLUMN),count(*)" + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') sql1 = f"select * from ({sql})" self.data_check_tbname(sql1,'AGG24','AGG24',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') diff --git a/tests/system-test/2-query/agg_group_NotReturnValue.py b/tests/system-test/2-query/agg_group_NotReturnValue.py index 73a8fe04c3..83f0acd362 100755 --- a/tests/system-test/2-query/agg_group_NotReturnValue.py +++ b/tests/system-test/2-query/agg_group_NotReturnValue.py @@ -382,7 +382,11 @@ class TDTestCase(TDTestCase): #union all sql = f"select tbname tb,AGG(COLUMN) from {dbname}.stable_1 group by tbname order by tbname " sql = f"({sql}) union all ({sql}) order by tb" - self.data_check_tbname(sql,'HAVING>04','HAVING>04',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + self.data_check_tbname(sql,'HAVING>04','HAVING>04',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') + + sql = f"select a.tbname tb,AGG(COLUMN) from {dbname}.stable_1 a group by a.tbname order by tbname " + sql = f"({sql}) union all ({sql}) order by tb" + self.data_check_tbname(sql,'HAVING>04','HAVING>04',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') sql1 = f"select * from ({sql})" self.data_check_tbname(sql1,'HAVING>04','HAVING>04',f'{base_fun}',f'{replace_fun}',f'{base_column}',f'{replace_column}') From 5a75c38897525277dca001a34ea7ef4e683454e9 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Wed, 8 May 2024 23:28:04 +0800 Subject: [PATCH 5/8] test --- source/libs/parser/src/parTranslater.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index b513d10a3e..9d0c8034be 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -3168,11 +3168,7 @@ static bool IsEqualTbNameFuncNode(SSelectStmt* pSelect, SNode* pFunc1, SNode* pF if (pSelect->pFromTable && (pSelect->pFromTable->type == QUERY_NODE_REAL_TABLE || pSelect->pFromTable->type == QUERY_NODE_TEMP_TABLE)) { STableNode* pTable = (STableNode*)pSelect->pFromTable; - if (pVal1) { - return strcmp(pTable->tableAlias, pVal1->literal) == 0; - } else if (!pVal1) { - return strcmp(pTable->tableAlias, pVal2->literal) == 0; - } + return true; } else { return false; } From d538bf304804135dd90f284d633fe0a38c217988 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Mon, 13 May 2024 00:25:40 +0800 Subject: [PATCH 6/8] join test case --- .../2-query/agg_group_AlwaysReturnValue.py | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/tests/system-test/2-query/agg_group_AlwaysReturnValue.py b/tests/system-test/2-query/agg_group_AlwaysReturnValue.py index 6a330197c7..26ae390567 100755 --- a/tests/system-test/2-query/agg_group_AlwaysReturnValue.py +++ b/tests/system-test/2-query/agg_group_AlwaysReturnValue.py @@ -1602,14 +1602,54 @@ class TDTestCase(TDTestCase): tdSql.execute('alter stable stable_1 drop column q_binary5;') tdSql.execute('alter stable stable_1 drop column q_nchar4;') tdSql.execute('alter stable stable_1 drop column q_binary4;') - + + def testTBNameUseJoin(self): + tdSql.execute('CREATE STABLE `meter1` (`ts` TIMESTAMP, `v1` INT) TAGS (`t1` INT)') + tdSql.execute('CREATE STABLE `meter2` (`ts` TIMESTAMP, `v1` INT) TAGS (`t1` INT)') + + tdSql.execute('CREATE TABLE `d1` USING `meter1` (`t1`) TAGS (1)') + tdSql.execute('CREATE TABLE `d2` USING `meter1` (`t1`) TAGS (2)') + tdSql.execute('CREATE TABLE `d21` USING `meter2` (`t1`) TAGS (21)') + tdSql.execute('CREATE TABLE `d22` USING `meter2` (`t1`) TAGS (22)') + + time.sleep(1) + tdSql.query('select tbname,count(*) from d2') + tdSql.checkData(0, 1, 0) + + tdSql.query('select b.tbname, count(*) from d1 a, d2 b where a.ts = b.ts group by b.tbname') + tdSql.checkData(0, 0, 'd2') + tdSql.checkData(0, 1, 0) + tdSql.query('select meter1.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter1.tbname order by meter1.tbname') + tdSql.checkData(0, 0, 'd1') + tdSql.checkData(1, 0, 'd2') + tdSql.checkData(0, 1, 0) + tdSql.query('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter2.tbname order by meter2.tbname') + tdSql.checkData(0, 0, 'd21') + tdSql.checkData(1, 0, 'd22') + tdSql.checkData(0, 1, 0) + tdSql.query('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts partition by meter2.tbname order by meter2.tbname') + tdSql.checkData(0, 0, 'd21') + tdSql.checkData(1, 0, 'd22') + tdSql.checkData(0, 1, 0) + tdSql.query('select m2.tbname, count(*) from meter1 m1, meter2 m2 where m1.ts = m2.ts partition by m2.tbname order by m2.tbname') + tdSql.checkData(0, 0, 'd21') + tdSql.checkData(1, 0, 'd22') + tdSql.checkData(0, 1, 0) + + tdSql.error('select tbname, count(*) from d1 a, d2 b where a.ts = b.ts group by b.tbname') + tdSql.error('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter1.tbname order by meter1.tbname') + tdSql.error('select tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter2.tbname order by meter2.tbname') + tdSql.error('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts partition by meter2.tbname order by meter.tbname') + tdSql.error('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts partition by tbname order by meter2.tbname') + tdSql.error('select m2.tbname, count(*) from meter1 m1, meter2 m2 where meter1.ts = meter2.ts partition by m2.tbname order by meter2.tbname') + def run(self): tdSql.prepare() startTime = time.time() # self.create_tables() - # self.insert_data() + # self.insert_data() self.dropandcreateDB_random("nested", 1) self.modify_tables() @@ -1620,6 +1660,8 @@ class TDTestCase(TDTestCase): self.tbname_agg_all() + self.testTBNameUseJoin() + endTime = time.time() print("total time %ds" % (endTime - startTime)) From e3f5cc9af1e333970a95200813457d31fcabdc6d Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Mon, 13 May 2024 13:32:41 +0800 Subject: [PATCH 7/8] skip join case --- .../2-query/agg_group_AlwaysReturnValue.py | 43 ++++++++++++++----- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/tests/system-test/2-query/agg_group_AlwaysReturnValue.py b/tests/system-test/2-query/agg_group_AlwaysReturnValue.py index 26ae390567..f7c82fc859 100755 --- a/tests/system-test/2-query/agg_group_AlwaysReturnValue.py +++ b/tests/system-test/2-query/agg_group_AlwaysReturnValue.py @@ -1602,20 +1602,20 @@ class TDTestCase(TDTestCase): tdSql.execute('alter stable stable_1 drop column q_binary5;') tdSql.execute('alter stable stable_1 drop column q_nchar4;') tdSql.execute('alter stable stable_1 drop column q_binary4;') - + def testTBNameUseJoin(self): tdSql.execute('CREATE STABLE `meter1` (`ts` TIMESTAMP, `v1` INT) TAGS (`t1` INT)') tdSql.execute('CREATE STABLE `meter2` (`ts` TIMESTAMP, `v1` INT) TAGS (`t1` INT)') - + tdSql.execute('CREATE TABLE `d1` USING `meter1` (`t1`) TAGS (1)') tdSql.execute('CREATE TABLE `d2` USING `meter1` (`t1`) TAGS (2)') tdSql.execute('CREATE TABLE `d21` USING `meter2` (`t1`) TAGS (21)') tdSql.execute('CREATE TABLE `d22` USING `meter2` (`t1`) TAGS (22)') - + time.sleep(1) tdSql.query('select tbname,count(*) from d2') tdSql.checkData(0, 1, 0) - + tdSql.query('select b.tbname, count(*) from d1 a, d2 b where a.ts = b.ts group by b.tbname') tdSql.checkData(0, 0, 'd2') tdSql.checkData(0, 1, 0) @@ -1635,23 +1635,46 @@ class TDTestCase(TDTestCase): tdSql.checkData(0, 0, 'd21') tdSql.checkData(1, 0, 'd22') tdSql.checkData(0, 1, 0) - + + tdSql.execute('insert into `d1` VALUES (now, 1) `d21` VALUES (now, 21)') + tdSql.execute('insert into `d1` VALUES (now, 2) `d21` VALUES (now, 22)') + tdSql.execute('insert into `d1` VALUES (now, 3) `d21` VALUES (now, 32)') + + # tdSql.query('select b.tbname, count(*) from d1 a, d2 b where a.ts = b.ts group by b.tbname') + # tdSql.checkData(0, 0, 'd2') + + tdSql.query('select meter1.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter1.tbname order by meter1.tbname') + tdSql.checkData(0, 0, 'd1') + tdSql.checkData(1, 0, 'd2') + tdSql.query('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter2.tbname order by meter2.tbname') + tdSql.checkData(0, 0, 'd21') + tdSql.checkData(1, 0, 'd22') + tdSql.query('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts partition by meter2.tbname order by meter2.tbname') + tdSql.checkData(0, 0, 'd21') + tdSql.checkData(1, 0, 'd22') + tdSql.query('select m2.tbname, count(*) from meter1 m1, meter2 m2 where m1.ts = m2.ts partition by m2.tbname order by m2.tbname') + tdSql.checkData(0, 0, 'd21') + tdSql.checkData(1, 0, 'd22') + tdSql.error('select tbname, count(*) from d1 a, d2 b where a.ts = b.ts group by b.tbname') - tdSql.error('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter1.tbname order by meter1.tbname') + # tdSql.error('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter1.tbname order by meter1.tbname') tdSql.error('select tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter2.tbname order by meter2.tbname') tdSql.error('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts partition by meter2.tbname order by meter.tbname') tdSql.error('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts partition by tbname order by meter2.tbname') tdSql.error('select m2.tbname, count(*) from meter1 m1, meter2 m2 where meter1.ts = meter2.ts partition by m2.tbname order by meter2.tbname') - + def run(self): tdSql.prepare() startTime = time.time() # self.create_tables() - # self.insert_data() - + # self.insert_data() + + self.testTBNameUseJoin() self.dropandcreateDB_random("nested", 1) + #self.testTBNameUseJoin() + self.modify_tables() for i in range(1): @@ -1660,7 +1683,7 @@ class TDTestCase(TDTestCase): self.tbname_agg_all() - self.testTBNameUseJoin() + endTime = time.time() print("total time %ds" % (endTime - startTime)) From 7e0c4eeb7dc3589e8a08863c5c48107c4e60beca Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Tue, 11 Jun 2024 15:36:41 +0800 Subject: [PATCH 8/8] fix: join test case --- .../2-query/agg_group_AlwaysReturnValue.py | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/tests/system-test/2-query/agg_group_AlwaysReturnValue.py b/tests/system-test/2-query/agg_group_AlwaysReturnValue.py index f7c82fc859..0cac9cb03b 100755 --- a/tests/system-test/2-query/agg_group_AlwaysReturnValue.py +++ b/tests/system-test/2-query/agg_group_AlwaysReturnValue.py @@ -1615,47 +1615,47 @@ class TDTestCase(TDTestCase): time.sleep(1) tdSql.query('select tbname,count(*) from d2') tdSql.checkData(0, 1, 0) - - tdSql.query('select b.tbname, count(*) from d1 a, d2 b where a.ts = b.ts group by b.tbname') - tdSql.checkData(0, 0, 'd2') - tdSql.checkData(0, 1, 0) - tdSql.query('select meter1.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter1.tbname order by meter1.tbname') - tdSql.checkData(0, 0, 'd1') - tdSql.checkData(1, 0, 'd2') - tdSql.checkData(0, 1, 0) - tdSql.query('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter2.tbname order by meter2.tbname') - tdSql.checkData(0, 0, 'd21') - tdSql.checkData(1, 0, 'd22') - tdSql.checkData(0, 1, 0) - tdSql.query('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts partition by meter2.tbname order by meter2.tbname') - tdSql.checkData(0, 0, 'd21') - tdSql.checkData(1, 0, 'd22') - tdSql.checkData(0, 1, 0) - tdSql.query('select m2.tbname, count(*) from meter1 m1, meter2 m2 where m1.ts = m2.ts partition by m2.tbname order by m2.tbname') - tdSql.checkData(0, 0, 'd21') - tdSql.checkData(1, 0, 'd22') - tdSql.checkData(0, 1, 0) - - tdSql.execute('insert into `d1` VALUES (now, 1) `d21` VALUES (now, 21)') - tdSql.execute('insert into `d1` VALUES (now, 2) `d21` VALUES (now, 22)') - tdSql.execute('insert into `d1` VALUES (now, 3) `d21` VALUES (now, 32)') + + tdSql.execute('insert into `d1` VALUES (now, 1)') + tdSql.execute('insert into `d1` VALUES (now+1s, 2)') + tdSql.execute('insert into `d1` VALUES (now+2s, 3)') + tdSql.execute('insert into `d2` VALUES (now+3s, 11)') + tdSql.execute('insert into `d2` VALUES (now+4s, 22)') + tdSql.execute('insert into `d2` VALUES (now+5s, 33)') + tdSql.execute('insert into `d21` select * from `d1`') # tdSql.query('select b.tbname, count(*) from d1 a, d2 b where a.ts = b.ts group by b.tbname') # tdSql.checkData(0, 0, 'd2') tdSql.query('select meter1.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter1.tbname order by meter1.tbname') tdSql.checkData(0, 0, 'd1') - tdSql.checkData(1, 0, 'd2') + tdSql.checkData(0, 1, 3) + # tdSql.checkData(1, 0, 'd2') tdSql.query('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter2.tbname order by meter2.tbname') tdSql.checkData(0, 0, 'd21') - tdSql.checkData(1, 0, 'd22') + tdSql.checkData(0, 1, 3) + # tdSql.checkData(1, 0, 'd22') tdSql.query('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts partition by meter2.tbname order by meter2.tbname') tdSql.checkData(0, 0, 'd21') - tdSql.checkData(1, 0, 'd22') + tdSql.checkData(0, 1, 3) + # tdSql.checkData(1, 0, 'd22') tdSql.query('select m2.tbname, count(*) from meter1 m1, meter2 m2 where m1.ts = m2.ts partition by m2.tbname order by m2.tbname') tdSql.checkData(0, 0, 'd21') + tdSql.checkData(0, 1, 3) + # tdSql.checkData(1, 0, 'd22') + + tdSql.execute('insert into `d22` select * from `d1`') + + tdSql.query('select meter1.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter1.tbname order by meter1.tbname') + tdSql.checkData(0, 0, 'd1') + tdSql.checkData(0, 1, 6) + + tdSql.query('select m2.tbname, count(*) from meter1 m1, meter2 m2 where m1.ts = m2.ts partition by m2.tbname order by m2.tbname') + tdSql.checkData(0, 0, 'd21') + tdSql.checkData(0, 1, 3) tdSql.checkData(1, 0, 'd22') - + tdSql.checkData(1, 1, 3) + tdSql.error('select tbname, count(*) from d1 a, d2 b where a.ts = b.ts group by b.tbname') # tdSql.error('select meter2.tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter1.tbname order by meter1.tbname') tdSql.error('select tbname, count(*) from meter1, meter2 where meter1.ts = meter2.ts group by meter2.tbname order by meter2.tbname') @@ -1671,9 +1671,9 @@ class TDTestCase(TDTestCase): # self.create_tables() # self.insert_data() - self.testTBNameUseJoin() - self.dropandcreateDB_random("nested", 1) #self.testTBNameUseJoin() + self.dropandcreateDB_random("nested", 1) + self.testTBNameUseJoin() self.modify_tables()