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") diff --git a/tests/system-test/2-query/last_row.py b/tests/system-test/2-query/last_row.py index dd510459b6..40d752e40e 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,6 +1001,43 @@ 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 {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 {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 {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 {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 {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 {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 {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 {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 {dbname}.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() @@ -1023,7 +1073,6 @@ class TDTestCase: self.lastrow_in_subquery("db1") - def stop(self): tdSql.close() tdLog.success(f"{__file__} successfully executed")