From 779c37b4256fb546673312e5e7465458b484e585 Mon Sep 17 00:00:00 2001 From: slzhou Date: Thu, 26 Oct 2023 14:23:21 +0800 Subject: [PATCH] enhance: change to invalid operation for stmt error --- source/libs/parser/src/parInsertSql.c | 2 +- tests/parallel_test/cases.task | 1 + tests/system-test/1-insert/insert_stb.py | 206 +++++++++++++++++++++++ 3 files changed, 208 insertions(+), 1 deletion(-) create mode 100644 tests/system-test/1-insert/insert_stb.py diff --git a/source/libs/parser/src/parInsertSql.c b/source/libs/parser/src/parInsertSql.c index 13447acab3..f8cb019ced 100644 --- a/source/libs/parser/src/parInsertSql.c +++ b/source/libs/parser/src/parInsertSql.c @@ -2070,7 +2070,7 @@ static int32_t parseInsertStbClauseBottom(SInsertParseContext* pCxt, SVnodeModif // 2. VALUES ... | FILE ... static int32_t parseInsertTableClauseBottom(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt) { if (pStmt->stbSyntax && TSDB_QUERY_HAS_TYPE(pStmt->insertType, TSDB_QUERY_TYPE_STMT_INSERT)) { - return buildSyntaxErrMsg(&pCxt->msg, "insert into super table syntax is not supported for stmt", NULL); + return buildInvalidOperationMsg(&pCxt->msg, "insert into super table syntax is not supported for stmt"); } if (!pStmt->stbSyntax) { STableDataCxt* pTableCxt = NULL; diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index 476322ab04..bd20b61706 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -83,6 +83,7 @@ ,,n,system-test,python3 ./test.py -f 7-tmq/tmqDropConsumer.py +,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/insert_stb.py ,,y,system-test,./pytest.sh python3 ./test.py -f 1-insert/delete_stable.py ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/out_of_order.py -Q 3 ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/out_of_order.py diff --git a/tests/system-test/1-insert/insert_stb.py b/tests/system-test/1-insert/insert_stb.py new file mode 100644 index 0000000000..695a5abef7 --- /dev/null +++ b/tests/system-test/1-insert/insert_stb.py @@ -0,0 +1,206 @@ +import sys +from util.log import * +from util.cases import * +from util.sql import * +from util.dnodes import tdDnodes +from math import inf +import taos + +class TDTestCase: + def caseDescription(self): + ''' + case1: [TS-3932] insert into stb + ''' + return + + def init(self, conn, logSql, replicaVer=1): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), True) + self.conn = conn + + + def restartTaosd(self, index=1, dbname="db"): + tdDnodes.stop(index) + tdDnodes.startWithoutSleep(index) + tdSql.execute(f"use insert_stb") + + + def run_normal(self): + print("running {}".format(__file__)) + tdSql.execute("drop database if exists insert_stb") + tdSql.execute("create database if not exists insert_stb") + tdSql.execute('use insert_stb') + tdSql.execute('create database d1') + + tdSql.execute('create database d2') + + tdSql.execute('use d1;') + + tdSql.execute('create table st(ts timestamp, f int) tags(t int);') + + tdSql.execute("insert into ct1 using st tags(1) values('2021-04-19 00:00:00', 1);") + + tdSql.execute("insert into ct2 using st tags(2) values('2021-04-19 00:00:01', 2);") + + tdSql.execute("insert into ct1 values('2021-04-19 00:00:02', 2);") + + tdSql.execute('use d2;') + + tdSql.execute('create table st(ts timestamp, f int) tags(t int);') + + tdSql.execute("insert into ct1 using st tags(1) values('2021-04-19 00:00:00', 1);") + + tdSql.execute("insert into ct2 using st tags(2) values('2021-04-19 00:00:01', 2);") + + tdSql.execute('create database db1 vgroups 1;') + + tdSql.execute('create table db1.stb (ts timestamp, c1 int, c2 int) tags(t1 int, t2 int);') + + tdSql.execute('use d1;') + + tdSql.execute("insert into st (tbname, ts, f, t) values('ct3', '2021-04-19 08:00:03', 3, 3);") + + tdSql.execute("insert into d1.st (tbname, ts, f) values('ct6', '2021-04-19 08:00:04', 6);") + + tdSql.execute("insert into d1.st (tbname, ts, f) values('ct6', '2021-04-19 08:00:05', 7)('ct8', '2021-04-19 08:00:06', 8);") + + tdSql.execute("insert into d1.st (tbname, ts, f, t) values('ct6', '2021-04-19 08:00:07', 9, 9)('ct8', '2021-04-19 08:00:08', 10, 10);") + + tdSql.execute("insert into d1.st (tbname, ts, f, t) values('ct6', '2021-04-19 08:00:09', 9, 9)('ct8', '2021-04-19 08:00:10', 10, 10) d2.st (tbname, ts, f, t) values('ct6', '2021-04-19 08:00:11', 9, 9)('ct8', '2021-04-19 08:00:12', 10, 10);") + + tdSql.query('select * from d1.st order by ts;') + tdSql.checkRows(11) + tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0)) + tdSql.checkData(0, 1, 1) + tdSql.checkData(0, 2, 1) + tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0, 1)) + tdSql.checkData(1, 1, 2) + tdSql.checkData(1, 2, 2) + tdSql.checkData(2, 0, datetime.datetime(2021, 4, 19, 0, 0, 2)) + tdSql.checkData(2, 1, 2) + tdSql.checkData(2, 2, 1) + tdSql.checkData(3, 0, datetime.datetime(2021, 4, 19, 8, 0, 3)) + tdSql.checkData(3, 1, 3) + tdSql.checkData(3, 2, 3) + tdSql.checkData(4, 0, datetime.datetime(2021, 4, 19, 8, 0, 4)) + tdSql.checkData(4, 1, 6) + tdSql.checkData(4, 2, None) + tdSql.checkData(5, 0, datetime.datetime(2021, 4, 19, 8, 0, 5)) + tdSql.checkData(5, 1, 7) + tdSql.checkData(5, 2, None) + tdSql.checkData(6, 0, datetime.datetime(2021, 4, 19, 8, 0, 6)) + tdSql.checkData(6, 1, 8) + tdSql.checkData(6, 2, None) + tdSql.checkData(7, 0, datetime.datetime(2021, 4, 19, 8, 0, 7)) + tdSql.checkData(7, 1, 9) + tdSql.checkData(7, 2, None) + tdSql.checkData(8, 0, datetime.datetime(2021, 4, 19, 8, 0, 8)) + tdSql.checkData(8, 1, 10) + tdSql.checkData(8, 2, None) + tdSql.checkData(9, 0, datetime.datetime(2021, 4, 19, 8, 0, 9)) + tdSql.checkData(9, 1, 9) + tdSql.checkData(9, 2, None) + tdSql.checkData(10, 0, datetime.datetime(2021, 4, 19, 8, 0, 10)) + tdSql.checkData(10, 1, 10) + tdSql.checkData(10, 2, None) + + tdSql.query('select * from d2.st order by ts;') + tdSql.checkRows(4) + tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0)) + tdSql.checkData(0, 1, 1) + tdSql.checkData(0, 2, 1) + tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0, 1)) + tdSql.checkData(1, 1, 2) + tdSql.checkData(1, 2, 2) + tdSql.checkData(2, 0, datetime.datetime(2021, 4, 19, 8, 0, 11)) + tdSql.checkData(2, 1, 9) + tdSql.checkData(2, 2, 9) + tdSql.checkData(3, 0, datetime.datetime(2021, 4, 19, 8, 0, 12)) + tdSql.checkData(3, 1, 10) + tdSql.checkData(3, 2, 10) + + tdSql.execute("insert into d2.st(ts, f, tbname) values('2021-04-19 08:00:13', 1, 'ct1') d1.ct1 values('2021-04-19 08:00:14', 1);") + + tdSql.query('select * from d1.st order by ts;') + tdSql.checkRows(12) + tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0)) + tdSql.checkData(0, 1, 1) + tdSql.checkData(0, 2, 1) + tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0, 1)) + tdSql.checkData(1, 1, 2) + tdSql.checkData(1, 2, 2) + tdSql.checkData(2, 0, datetime.datetime(2021, 4, 19, 0, 0, 2)) + tdSql.checkData(2, 1, 2) + tdSql.checkData(2, 2, 1) + tdSql.checkData(3, 0, datetime.datetime(2021, 4, 19, 8, 0, 3)) + tdSql.checkData(3, 1, 3) + tdSql.checkData(3, 2, 3) + tdSql.checkData(4, 0, datetime.datetime(2021, 4, 19, 8, 0, 4)) + tdSql.checkData(4, 1, 6) + tdSql.checkData(4, 2, None) + tdSql.checkData(5, 0, datetime.datetime(2021, 4, 19, 8, 0, 5)) + tdSql.checkData(5, 1, 7) + tdSql.checkData(5, 2, None) + tdSql.checkData(6, 0, datetime.datetime(2021, 4, 19, 8, 0, 6)) + tdSql.checkData(6, 1, 8) + tdSql.checkData(6, 2, None) + tdSql.checkData(7, 0, datetime.datetime(2021, 4, 19, 8, 0, 7)) + tdSql.checkData(7, 1, 9) + tdSql.checkData(7, 2, None) + tdSql.checkData(8, 0, datetime.datetime(2021, 4, 19, 8, 0, 8)) + tdSql.checkData(8, 1, 10) + tdSql.checkData(8, 2, None) + tdSql.checkData(9, 0, datetime.datetime(2021, 4, 19, 8, 0, 9)) + tdSql.checkData(9, 1, 9) + tdSql.checkData(9, 2, None) + tdSql.checkData(10, 0, datetime.datetime(2021, 4, 19, 8, 0, 10)) + tdSql.checkData(10, 1, 10) + tdSql.checkData(10, 2, None) + tdSql.checkData(11, 0, datetime.datetime(2021, 4, 19, 8, 0, 14)) + tdSql.checkData(11, 1, 1) + tdSql.checkData(11, 2, 1) + + tdSql.query('select * from d2.st order by ts;') + tdSql.checkRows(5) + tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0)) + tdSql.checkData(0, 1, 1) + tdSql.checkData(0, 2, 1) + tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0, 1)) + tdSql.checkData(1, 1, 2) + tdSql.checkData(1, 2, 2) + tdSql.checkData(2, 0, datetime.datetime(2021, 4, 19, 8, 0, 11)) + tdSql.checkData(2, 1, 9) + tdSql.checkData(2, 2, 9) + tdSql.checkData(3, 0, datetime.datetime(2021, 4, 19, 8, 0, 12)) + tdSql.checkData(3, 1, 10) + tdSql.checkData(3, 2, 10) + tdSql.checkData(4, 0, datetime.datetime(2021, 4, 19, 8, 0, 13)) + tdSql.checkData(4, 1, 1) + tdSql.checkData(4, 2, None) + + def run_stmt_error(self): + conn = self.conn + conn.select_db('insert_stb') + conn.execute('create table stb9(ts timestamp, f int) tags (t int)') + try: + stmt = conn.statement("insert into stb9(tbname, f, t) values('ctb91', 1, ?)") + params = taos.new_bind_params(1) + params[0].int(1) + stmt.bind_param(params) + stmt.execute() + result = stmt.use_result() + except Exception as err: + print(str(err)) + + + def run(self): + self.run_normal() + self.run_stmt_error() + + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase())