From 333eee4b4c03bd6952842246f4ea5b539fd0e575 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Tue, 7 Jan 2025 19:43:32 +0800 Subject: [PATCH 1/5] join case --- tests/pytest/util/tserror.py | 4 +++- tests/system-test/2-query/join.py | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/pytest/util/tserror.py b/tests/pytest/util/tserror.py index d930c82b1d..0d88d78e80 100644 --- a/tests/pytest/util/tserror.py +++ b/tests/pytest/util/tserror.py @@ -7,9 +7,11 @@ TAOS_DEF_ERROR_CODE = ctypes.c_int32(0x80000000).value TSDB_CODE_MND_FUNC_NOT_EXIST = (TAOS_DEF_ERROR_CODE | 0x0374) +TSDB_CODE_TSC_INVALID_OPERATION = (TAOS_DEF_ERROR_CODE | 0x0200) + TSDB_CODE_UDF_FUNC_EXEC_FAILURE = (TAOS_DEF_ERROR_CODE | 0x290A) TSDB_CODE_TSC_INTERNAL_ERROR = (TAOS_DEF_ERROR_CODE | 0x02FF) -TSDB_CODE_TSC_INVALID_OPERATION = (TAOS_DEF_ERROR_CODE | 0x0200) +TSDB_CODE_PAR_SYNTAX_ERROR = (TAOS_DEF_ERROR_CODE | 0x2600) diff --git a/tests/system-test/2-query/join.py b/tests/system-test/2-query/join.py index 5d5020ab4b..34f2d0ecb2 100644 --- a/tests/system-test/2-query/join.py +++ b/tests/system-test/2-query/join.py @@ -356,6 +356,11 @@ class TDTestCase: def join_semantic_test(self, dbname=DBNAME): tdSql.query("select ct1.c_int from db.ct1 as ct1 join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.checkRows(self.rows) + tdSql.error("select ct1.c_int from db.ct1 as ct1 semi join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 anti join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 outer join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 asof join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 window join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) tdSql.query("select ct1.c_int from db.ct1 as ct1 join db1.ct1 as cy1 on ct1.ts=cy1.ts") tdSql.checkRows(self.rows) @@ -390,6 +395,9 @@ class TDTestCase: tdSql.query("select ct1.c_int from db.ct1 as ct1 full join db1.ct1 as cy1 on ct1.ts=cy1.ts join db1.ct1 as cy2 on ct1.ts=cy2.ts") tdSql.checkRows(self.rows) + tdSql.error("select ct1.c_int from db.ct1 as ct1 full semi join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 full anti join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.query("select ct1.c_int from db.ct1 as ct1 full outer join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) tdSql.query("select * from db.ct1 join db.ct2 join db.ct3 on ct2.ts=ct3.ts on ct1.ts=ct2.ts") tdSql.checkRows(0) tdSql.execute(f'create table db.ct1_2 using db.stb1 tags ( 102 )') @@ -398,6 +406,13 @@ class TDTestCase: tdSql.execute(f'insert into db.ct1_3 (select * from db.ct1)') tdSql.query("select * from db.ct1 join db.ct1_2 join db.ct1_3 on ct1_2.ts=ct1_3.ts on ct1.ts=ct1_2.ts") tdSql.checkRows(self.rows) + tdSql.error("select ct1.c_int from db.ct1 as ct1 full asof join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + tdSql.error("select ct1.c_int from db.ct1 as ct1 full window join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_PAR_SYNTAX_ERROR) + + tdSql.query("select ct1.c_int from db.ct1 as ct1 left join db1.ct1 as cy1 on ct1.ts=cy1.ts") + tdSql.checkRows(self.rows) + tdSql.query("select ct1.c_int from db.ct1 as ct1 right join db1.ct1 as cy1 on ct1.ts=cy1.ts") + tdSql.checkRows(self.rows) tdSql.execute("drop table db.ct1_2") tdSql.execute("drop table db.ct1_3") From 69413aeafdfd8d44535e5f3a3c5a4b2f160453a1 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Tue, 7 Jan 2025 20:07:53 +0800 Subject: [PATCH 2/5] last_row case --- tests/system-test/2-query/last_row.py | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests/system-test/2-query/last_row.py b/tests/system-test/2-query/last_row.py index dd510459b6..8f616674e9 100644 --- a/tests/system-test/2-query/last_row.py +++ b/tests/system-test/2-query/last_row.py @@ -969,6 +969,11 @@ class TDTestCase: tdSql.checkData(0, 0, 6) tdSql.checkData(0, 1, 1734574929004) tdSql.checkData(0, 2, 4) + tdSql.query(f'select count(1), last_row(ts), last_row(c0) from (select * from (select * from {dbname}.meters))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 6) + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) tdSql.query(f'select tbname, last_row(ts), last_row(c0) from (select *, tbname from {dbname}.meters) group by tbname order by tbname') tdSql.checkRows(2) tdSql.checkData(0, 0, 'd0') @@ -977,6 +982,14 @@ class TDTestCase: tdSql.checkData(1, 0, 'd1') tdSql.checkData(1, 1, 1734574929000) tdSql.checkData(1, 2, 1) + tdSql.query(f'select tbname, last_row(ts), last_row(c0) from (select * from (select *, tbname from {dbname}.meters)) group by tbname order by tbname') + tdSql.checkRows(2) + tdSql.checkData(0, 0, 'd0') + tdSql.checkData(0, 1, 1734574929004) + tdSql.checkData(0, 2, 4) + tdSql.checkData(1, 0, 'd1') + tdSql.checkData(1, 1, 1734574929000) + tdSql.checkData(1, 2, 1) tdSql.query(f'select count(1), last_row(ts), last_row(c0) from (select * from {dbname}.d0)') tdSql.checkRows(1) tdSql.checkData(0, 0, 5) @@ -988,12 +1001,51 @@ class TDTestCase: tdSql.checkData(0, 1, 1734574929004) tdSql.checkData(0, 2, 4) + tdSql.execute(f'insert into {dbname}.d0 values(1734574930000, 1, 1, "c2", true)') + tdSql.execute(f'insert into {dbname}.d0 values(1734574931000, 1, 1, "c2", true)') + tdSql.execute(f'insert into {dbname}.d0 values(1734574932000, 1, 1, "c2", true)') + tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.checkData(0, 1, 4) + tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.checkData(0, 1, 5) + tdSql.query(f'select first(_wstart), count(1) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574929000) + tdSql.checkData(0, 1, 4) + + tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from meters interval(1s)))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from meters interval(1s)))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.checkData(0, 1, 4) + tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s)))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s)))') + tdSql.checkRows(1) + tdSql.checkData(0, 0, 1734574932000) + tdSql.checkData(0, 1, 5) + def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring # tdSql.prepare() tdLog.printNoPrefix("==========step1:create table ==============") self.initLastRowDelayTest("DELAYTEST") + self.lastrow_in_subquery("db1") + return # cache_last 0 self.prepare_datas("'NONE' ") From 344340a7fd1924d62c259a3bfa012f232cfa454b Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Tue, 7 Jan 2025 20:08:53 +0800 Subject: [PATCH 3/5] test case --- tests/system-test/2-query/last_row.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/system-test/2-query/last_row.py b/tests/system-test/2-query/last_row.py index 8f616674e9..a14c64bd19 100644 --- a/tests/system-test/2-query/last_row.py +++ b/tests/system-test/2-query/last_row.py @@ -1044,8 +1044,6 @@ class TDTestCase: tdLog.printNoPrefix("==========step1:create table ==============") self.initLastRowDelayTest("DELAYTEST") - self.lastrow_in_subquery("db1") - return # cache_last 0 self.prepare_datas("'NONE' ") @@ -1074,7 +1072,8 @@ class TDTestCase: self.lastRowDelayTest("DELAYTEST") self.lastrow_in_subquery("db1") - + + self.lastrow_in_subquery("db1") def stop(self): tdSql.close() From 4f94c7ff9b65f3bc554d17531e83272b7cb37e92 Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Wed, 8 Jan 2025 09:06:14 +0800 Subject: [PATCH 4/5] fix test case --- tests/system-test/2-query/last_row.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/system-test/2-query/last_row.py b/tests/system-test/2-query/last_row.py index a14c64bd19..14c71ac07b 100644 --- a/tests/system-test/2-query/last_row.py +++ b/tests/system-test/2-query/last_row.py @@ -1072,8 +1072,6 @@ class TDTestCase: self.lastRowDelayTest("DELAYTEST") self.lastrow_in_subquery("db1") - - self.lastrow_in_subquery("db1") def stop(self): tdSql.close() From 6101783344379fd07368e7667170bc64d1a876ae Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Wed, 8 Jan 2025 11:29:33 +0800 Subject: [PATCH 5/5] fix: test case -R --- tests/system-test/2-query/last_row.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/system-test/2-query/last_row.py b/tests/system-test/2-query/last_row.py index 14c71ac07b..40d752e40e 100644 --- a/tests/system-test/2-query/last_row.py +++ b/tests/system-test/2-query/last_row.py @@ -1004,36 +1004,36 @@ class TDTestCase: tdSql.execute(f'insert into {dbname}.d0 values(1734574930000, 1, 1, "c2", true)') tdSql.execute(f'insert into {dbname}.d0 values(1734574931000, 1, 1, "c2", true)') tdSql.execute(f'insert into {dbname}.d0 values(1734574932000, 1, 1, "c2", true)') - tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from {dbname}.meters interval(1s))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) - tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from {dbname}.meters interval(1s))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) tdSql.checkData(0, 1, 4) - tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s))') + tdSql.query(f'select last_row(_wstart) from (select _wstart, _wend, count(1) from {dbname}.meters partition by tbname interval(1s))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) - tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s))') + tdSql.query(f'select last_row(_wstart), count(1) from (select _wstart, _wend, count(1) from {dbname}.meters partition by tbname interval(1s))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) tdSql.checkData(0, 1, 5) - tdSql.query(f'select first(_wstart), count(1) from (select _wstart, _wend, count(1) from meters interval(1s))') + tdSql.query(f'select first(_wstart), count(1) from (select _wstart, _wend, count(1) from {dbname}.meters interval(1s))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574929000) tdSql.checkData(0, 1, 4) - tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from meters interval(1s)))') + tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from {dbname}.meters interval(1s)))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) - tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from meters interval(1s)))') + tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from {dbname}.meters interval(1s)))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) tdSql.checkData(0, 1, 4) - tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s)))') + tdSql.query(f'select last_row(_wstart) from (select * from (select _wstart, _wend, count(1) from {dbname}.meters partition by tbname interval(1s)))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) - tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from meters partition by tbname interval(1s)))') + tdSql.query(f'select last_row(_wstart), count(1) from (select * from (select _wstart, _wend, count(1) from {dbname}.meters partition by tbname interval(1s)))') tdSql.checkRows(1) tdSql.checkData(0, 0, 1734574932000) tdSql.checkData(0, 1, 5)