From 38e66c58eb8cd6f419c6eb57a4e2cfc9363b9c91 Mon Sep 17 00:00:00 2001 From: zhiyong Date: Sun, 14 Jul 2024 16:05:32 +0800 Subject: [PATCH] add ci case TD-30948 --- tests/army/query/function/cast.py | 183 ++++++++++++++++++++++++++++++ tests/army/query/queryBugs.py | 9 +- tests/parallel_test/cases.task | 1 + 3 files changed, 189 insertions(+), 4 deletions(-) create mode 100644 tests/army/query/function/cast.py diff --git a/tests/army/query/function/cast.py b/tests/army/query/function/cast.py new file mode 100644 index 0000000000..66718ce715 --- /dev/null +++ b/tests/army/query/function/cast.py @@ -0,0 +1,183 @@ +# -*- coding: utf-8 -*- + +from frame.log import * +from frame.cases import * +from frame.sql import * +from frame.caseBase import * +from frame import * + + +class TDTestCase(TBase): + def init(self, conn, logSql, replicaVar=1): + tdLog.debug(f"start to excute {__file__}") + tdSql.init(conn.cursor(), True) + self.dbname = "cast_db" + self._datetime_epoch = datetime.datetime.fromtimestamp(0) + + def cast_without_from(self): + # int + int_num = 2147483648 + tdSql.query(f"select cast({int_num} as int) re;") + tdSql.checkData(0, 0, -int_num) + + tdSql.query(f"select cast(2147483647 as int) re;") + tdSql.checkData(0, 0, 2147483647) + + tdSql.query(f"select cast({int_num} as int unsigned) re;") + tdSql.checkData(0, 0, int_num) + + tdSql.query(f"select cast({int_num} as bigint) re;") + tdSql.checkData(0, 0, int_num) + + tdSql.query(f"select cast({int_num} as bigint unsigned) re;") + tdSql.checkData(0, 0, int_num) + + tdSql.query(f"select cast({int_num} as smallint) re;") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast({int_num} as smallint unsigned) re;") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast({int_num} as tinyint) re;") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast({int_num} as tinyint unsigned) re;") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast({int_num} as float) re;") + tdSql.checkData(0, 0, '2147483648.0') + + tdSql.query(f"select cast({int_num} as double) re;") + tdSql.checkData(0, 0, '2147483648.0') + + tdSql.query(f"select cast({int_num} as bool) as re;") + tdSql.checkData(0, 0, True) + + tdSql.query(f"select cast({int_num} as timestamp) as re;") + tdSql.checkData(0, 0, self._datetime_epoch + datetime.timedelta(seconds=int(int_num) / 1000)) + + tdSql.query(f"select cast({int_num} as varchar(10)) as re;") + tdSql.checkData(0, 0, int_num) + + tdSql.query(f"select cast({int_num} as binary(10)) as re;") + tdSql.checkData(0, 0, int_num) + + sql = f"select cast({int_num} as nchar(10));" + tdSql.query(sql) + tdSql.checkData(0, 0, int_num) + + # float + float_1001 = 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019 + + tdSql.query(f"select cast({float_1001} as int) as re;") + tdSql.checkData(0, 0, 3) + + tdSql.query(f"select cast({float_1001} as int unsigned) as re;") + tdSql.checkData(0, 0, 3) + + tdSql.query(f"select cast({float_1001} as tinyint) as re;") + tdSql.checkData(0, 0, 3) + + tdSql.query(f"select cast({float_1001} as tinyint unsigned) as re;") + tdSql.checkData(0, 0, 3) + + tdSql.query(f"select cast({float_1001} as smallint) as re;") + tdSql.checkData(0, 0, 3) + + tdSql.query(f"select cast({float_1001} as smallint unsigned) as re;") + tdSql.checkData(0, 0, 3) + + tdSql.query(f"select cast({float_1001} as bigint) as re;") + tdSql.checkData(0, 0, 3) + + tdSql.query(f"select cast({float_1001} as bigint unsigned) as re;") + tdSql.checkData(0, 0, 3) + + tdSql.query(f"select cast({float_1001} as double) as re;") + tdSql.checkData(0, 0, 3.141592653589793) + + tdSql.query(f"select cast({float_1001} as float) as re;") + tdSql.checkData(0, 0, 3.1415927) + + tdSql.query(f"select cast({float_1001} as bool) as re;") + tdSql.checkData(0, 0, True) + + tdSql.query(f"select cast({float_1001} as timestamp) as re;") + tdSql.checkData(0, 0, self._datetime_epoch + datetime.timedelta(seconds=int(float_1001) / 1000)) + + sql = f"select cast({float_1001} as varchar(5)) as re;" + tdSql.query(sql) + tdSql.checkData(0, 0, 3.141) + + sql = f"select cast({float_1001} as binary(10)) as re;" + tdSql.query(sql) + tdSql.checkData(0, 0, 3.141593) + + tdSql.query(f"select cast({float_1001} as nchar(5));") + tdSql.checkData(0, 0, 3.141) + + # str + str_410 = "bcdefghigk" * 41 + big_str = "bcdefghigk" * 6552 + + tdSql.query(f"select cast('{str_410}' as binary(3)) as re;") + tdSql.checkData(0, 0, "bcd") + + tdSql.query(f"select cast('{str_410}' as varchar(2)) as re;") + tdSql.checkData(0, 0, "bc") + + tdSql.query(f"select cast('{str_410}' as nchar(10));") + tdSql.checkData(0, 0, "bcdefghigk") + + tdSql.query(f"select cast('北京' as nchar(10));") + tdSql.checkData(0, 0, "北京") + + tdSql.query(f"select cast('{str_410}' as int) as re;") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast('{str_410}' as int unsigned) as re;") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast('{str_410}' as tinyint) as re") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast('{str_410}' as tinyint unsigned) as re") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast('{str_410}' as smallint) as re") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast('{str_410}' as smallint unsigned) as re") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast('{str_410}' as bigint) as re") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast('{str_410}' as bigint unsigned) as re") + tdSql.checkData(0, 0, 0) + + tdSql.query(f"select cast('{str_410}' as float) as re;") + tdSql.checkData(0, 0, 0.0000000) + + tdSql.query(f"select cast('{str_410}' as double) as re;") + tdSql.checkData(0, 0, 0.000000000000000) + + tdSql.query(f"select cast('{str_410}' as bool) as re") + tdSql.checkData(0, 0, False) + + tdSql.query( f"select cast('{str_410}' as timestamp) as re") + tdSql.checkData(0, 0, "1970-01-01 08:00:00.000") + + + def run(self): + # self.prepare_data() + # self.all_test() + # tdSql.execute(f"flush database {self.dbname}") + # self.all_test() + self.cast_without_from() + + tdLog.success(f"{__file__} successfully executed") + + +tdCases.addLinux(__file__, TDTestCase()) +tdCases.addWindows(__file__, TDTestCase()) diff --git a/tests/army/query/queryBugs.py b/tests/army/query/queryBugs.py index f6075f6063..20ecb23881 100644 --- a/tests/army/query/queryBugs.py +++ b/tests/army/query/queryBugs.py @@ -36,7 +36,7 @@ class TDTestCase(TBase): "create table db.st(ts timestamp, age int) tags(area tinyint);", "insert into db.t1 using db.st tags(100) values('2024-01-01 10:00:01', 1);", "insert into db.t2 using db.st tags(110) values('2024-01-01 10:00:02', 2);", - "insert into db.t3 using db.st tags(3) values('2024-01-01 10:00:03', 3);" + "insert into db.t3 using db.st tags(3) values('2024-01-01 10:00:03', 3);", ] tdSql.executes(sqls) @@ -44,7 +44,7 @@ class TDTestCase(TBase): results = [ ["2024-01-01 10:00:01", 1, 100], ["2024-01-01 10:00:02", 2, 110], - ["2024-01-01 10:00:03", 3, 3] + ["2024-01-01 10:00:03", 3, 3], ] tdSql.checkDataMem(sql, results) @@ -99,11 +99,12 @@ class TDTestCase(TBase): for i in range(1, 10): new_ts = base_ts + i * 1000 num = i * 100 + v1, v2 = i * 10, i * 11 sqls = [ - f"insert into ntb1 values({new_ts}, 'nihao{num}', {10*i}, {10*i}, {10*i});", + f"insert into ntb1 values({new_ts}, 'nihao{num}', {v1}, {v1}, {v1});", f"insert into ntb1 values({new_ts + 1}, 'nihao{num + 1}', NULL, NULL, NULL);", f"delete from ntb1 where ts = {new_ts};", - f"insert into ntb1 values({new_ts + 2}, 'nihao{num + 2}', {11*i}, {11*i}, {11*i});", + f"insert into ntb1 values({new_ts + 2}, 'nihao{num + 2}', {v2}, {v2}, {v2});", ] tdSql.executes(sqls) diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index 4338187791..69709a201a 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -15,6 +15,7 @@ ,,n,army,python3 ./test.py -f s3/s3Basic.py -N 3 ,,y,army,./pytest.sh python3 ./test.py -f cluster/snapshot.py -N 3 -L 3 -D 2 ,,y,army,./pytest.sh python3 ./test.py -f query/function/test_func_elapsed.py +,,y,army,./pytest.sh python3 ./test.py -f query/function/cast.py ,,y,army,./pytest.sh python3 ./test.py -f query/test_join.py ,,y,army,./pytest.sh python3 ./test.py -f query/test_compare.py ,,y,army,./pytest.sh python3 ./test.py -f insert/test_column_tag_boundary.py