From a8352d8c2a61154afe29bdaf7eaffdb5d1c56922 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Fri, 23 Jul 2021 01:43:00 +0800 Subject: [PATCH 01/64] [TD-5314]: autotest cases --- tests/pytest/insert/schemalessInsert.py | 874 ++++++++++++++++++++++++ tests/pytest/util/sql.py | 26 +- 2 files changed, 898 insertions(+), 2 deletions(-) create mode 100644 tests/pytest/insert/schemalessInsert.py diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py new file mode 100644 index 0000000000..b09c153bf6 --- /dev/null +++ b/tests/pytest/insert/schemalessInsert.py @@ -0,0 +1,874 @@ +################################################################### +# Copyright (c) 2021 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import sys +import random +import string +import time +import datetime +from copy import deepcopy +import numpy as np +from util.log import * +from util.cases import * +from util.sql import * + + +class TDTestCase: + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), logSql) + self._conn = conn + + def getLongName(self, len, mode = "mixed"): + """ + generate long name + mode could be numbers/letters/mixed + """ + if mode is "numbers": + chars = ''.join(random.choice(string.digits) for i in range(len)) + elif mode is "letters": + chars = ''.join(random.choice(string.ascii_letters.lower()) for i in range(len)) + else: + chars = ''.join(random.choice(string.ascii_letters.lower() + string.digits) for i in range(len)) + return chars + + def timeTrans(self, time_value): + if time_value.endswith("ns"): + ts = int(''.join(list(filter(str.isdigit, time_value))))/1000000000 + elif time_value.endswith("us") or time_value.isdigit() and int(time_value) != 0: + ts = int(''.join(list(filter(str.isdigit, time_value))))/1000000 + elif time_value.endswith("ms"): + ts = int(''.join(list(filter(str.isdigit, time_value))))/1000 + elif time_value.endswith("s") and list(time_value)[-1] not in "num": + ts = int(''.join(list(filter(str.isdigit, time_value))))/1 + elif int(time_value) == 0: + ts = time.time() + else: + print("input ts maybe not right format") + ulsec = repr(ts).split('.')[1][:6] + if len(ulsec) < 6 and int(ulsec) != 0: + ulsec = int(ulsec) * (10 ** (6 - len(ulsec))) + # ! to confirm .000000 + elif int(ulsec) == 0: + ulsec *= 6 + # ! follow two rows added for tsCheckCase + td_ts = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(ts)) + return td_ts + #td_ts = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(ts)) + td_ts = time.strftime("%Y-%m-%d %H:%M:%S.{}".format(ulsec), time.localtime(ts)) + return td_ts + #return repr(datetime.datetime.strptime(td_ts, "%Y-%m-%d %H:%M:%S.%f")) + + def dateToTs(self, datetime_input): + return int(time.mktime(time.strptime(datetime_input, "%Y-%m-%d %H:%M:%S.%f"))) + + def getTdTypeValue(self, value): + if value.endswith("i8"): + td_type = "TINYINT" + td_tag_value = ''.join(list(value)[:-2]) + elif value.endswith("i16"): + td_type = "SMALLINT" + td_tag_value = ''.join(list(value)[:-3]) + elif value.endswith("i32"): + td_type = "INT" + td_tag_value = ''.join(list(value)[:-3]) + elif value.endswith("i64"): + td_type = "BIGINT" + td_tag_value = ''.join(list(value)[:-3]) + elif value.endswith("u64"): + td_type = "BIGINT UNSIGNED" + td_tag_value = ''.join(list(value)[:-3]) + elif value.endswith("f32"): + td_type = "FLOAT" + td_tag_value = ''.join(list(value)[:-3]) + td_tag_value = '{}'.format(np.float32(td_tag_value)) + + elif value.endswith("f64"): + td_type = "DOUBLE" + td_tag_value = ''.join(list(value)[:-3]) + elif value.startswith('L"'): + td_type = "NCHAR" + td_tag_value = ''.join(list(value)[2:-1]) + elif value.startswith('"') and value.endswith('"'): + td_type = "BINARY" + td_tag_value = ''.join(list(value)[1:-1]) + elif value.lower() == "t" or value == "true" or value == "True": + td_type = "BOOL" + td_tag_value = "True" + elif value.lower() == "f" or value == "false" or value == "False": + td_type = "BOOL" + td_tag_value = "False" + else: + td_type = "FLOAT" + td_tag_value = value + return td_type, td_tag_value + + def typeTrans(self, type_list): + type_num_list = [] + for tp in type_list: + if tp.upper() == "TIMESTAMP": + type_num_list.append(9) + elif tp.upper() == "BOOL": + type_num_list.append(1) + elif tp.upper() == "TINYINT": + type_num_list.append(2) + elif tp.upper() == "SMALLINT": + type_num_list.append(3) + elif tp.upper() == "INT": + type_num_list.append(4) + elif tp.upper() == "BIGINT": + type_num_list.append(5) + elif tp.upper() == "FLOAT": + type_num_list.append(6) + elif tp.upper() == "DOUBLE": + type_num_list.append(7) + elif tp.upper() == "BINARY": + type_num_list.append(8) + elif tp.upper() == "NCHAR": + type_num_list.append(10) + elif tp.upper() == "BIGINT UNSIGNED": + type_num_list.append(14) + return type_num_list + + def inputHandle(self, input_sql): + input_sql_split_list = input_sql.split(" ") + + stb_tag_list = input_sql_split_list[0].split(',') + stb_col_list = input_sql_split_list[1].split(',') + ts_value = self.timeTrans(input_sql_split_list[2]) + + stb_name = stb_tag_list[0] + stb_tag_list.pop(0) + + tag_name_list = [] + tag_value_list = [] + td_tag_value_list = [] + td_tag_type_list = [] + + col_name_list = [] + col_value_list = [] + td_col_value_list = [] + td_col_type_list = [] + + for elm in stb_tag_list: + if "id=" in elm.lower(): + # id_index = stb_id_tag_list.index(elm) + tb_name = elm.split('=')[1] + else: + tag_name_list.append(elm.split("=")[0]) + tag_value_list.append(elm.split("=")[1]) + tb_name = "" + td_tag_value_list.append(self.getTdTypeValue(elm.split("=")[1])[1]) + td_tag_type_list.append(self.getTdTypeValue(elm.split("=")[1])[0]) + + for elm in stb_col_list: + col_name_list.append(elm.split("=")[0]) + col_value_list.append(elm.split("=")[1]) + td_col_value_list.append(self.getTdTypeValue(elm.split("=")[1])[1]) + td_col_type_list.append(self.getTdTypeValue(elm.split("=")[1])[0]) + + # print(stb_name) + # print(tb_name) + # print(tag_name_list) + # print(tag_value_list) + # print(td_tag_type_list) + # print(td_tag_value_list) + + # print(ts_value) + + # print(col_name_list) + # print(col_value_list) + # print(td_col_value_list) + # print(td_col_type_list) + + # print("final type--------######") + final_field_list = [] + final_field_list.extend(col_name_list) + final_field_list.extend(tag_name_list) + + # print("final type--------######") + final_type_list = [] + final_type_list.append("TIMESTAMP") + final_type_list.extend(td_col_type_list) + final_type_list.extend(td_tag_type_list) + final_type_list = self.typeTrans(final_type_list) + + final_value_list = [] + final_value_list.append(ts_value) + final_value_list.extend(td_col_value_list) + final_value_list.extend(td_tag_value_list) + # print("-----------value-----------") + # print(final_value_list) + # print("-----------value-----------") + return final_value_list, final_field_list, final_type_list, stb_name, tb_name + + def genFullTypeSql(self, stb_name="", tb_name="", t0="", t1="127i8", t2="32767i16", t3="2147483647i32", + t4="9223372036854775807i64", t5="11.12345f32", t6="22.123456789f64", t7="\"binaryTagValue\"", + t8="L\"ncharTagValue\"", c0="", c1="127i8", c2="32767i16", c3="2147483647i32", + c4="9223372036854775807i64", c5="11.12345f32", c6="22.123456789f64", c7="\"binaryColValue\"", + c8="L\"ncharColValue\"", c9="7u64", ts="1626006833639000000ns", cl_add_tag=None, + id_noexist_tag=None, id_change_tag=None, id_upper_tag=None, id_double_tag=None): + if stb_name == "": + stb_name = self.getLongName(len=6, mode="letters") + if tb_name == "": + tb_name = f'{stb_name}_{random.randint(0, 65535)}_{random.randint(0, 65535)}' + if t0 == "": + t0 = random.choice(["f", "F", "false", "False", "t", "T", "true", "True"]) + if c0 == "": + c0 = random.choice(["f", "F", "false", "False", "t", "T", "true", "True"]) + #sql_seq = f'{stb_name},id=\"{tb_name}\",t0={t0},t1=127i8,t2=32767i16,t3=125.22f64,t4=11.321f32,t5=11.12345f32,t6=22.123456789f64,t7=\"binaryTagValue\",t8=L\"ncharTagValue\" c0={bool_value},c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"binaryValue\",c8=L\"ncharValue\" 1626006833639000000ns' + if id_upper_tag is not None: + id = "ID" + else: + id = "id" + sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9} {ts}' + if id_noexist_tag is not None: + sql_seq = f'{stb_name},t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9} {ts}' + if cl_add_tag is not None: + sql_seq = f'{stb_name},t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8},t9={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9} {ts}' + if id_change_tag is not None: + sql_seq = f'{stb_name},t0={t0},t1={t1},{id}=\"{tb_name}\",t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9} {ts}' + if id_double_tag is not None: + sql_seq = f'{stb_name},{id}=\"{tb_name}_1\",t0={t0},t1={t1},{id}=\"{tb_name}_2\",t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9} {ts}' + if cl_add_tag is not None: + sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8},t11={t1},t10={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9},c11={c8},c10={t0} {ts}' + return sql_seq, stb_name, tb_name + + def genMulTagColStr(self, genType, count): + """ + genType must be tag/col + """ + tag_str = "" + col_str = "" + if genType == "tag": + for i in range(0, count): + if i < (count-1): + tag_str += f't{i}=f,' + else: + tag_str += f't{i}=f ' + return tag_str + if genType == "col": + for i in range(0, count): + if i < (count-1): + col_str += f'c{i}=t,' + else: + col_str += f'c{i}=t ' + return col_str + + def genLongSql(self, tag_count, col_count): + stb_name = self.getLongName(7, mode="letters") + tb_name = f'{stb_name}_1' + tag_str = self.genMulTagColStr("tag", tag_count) + col_str = self.genMulTagColStr("col", col_count) + ts = "1626006833640000000ns" + long_sql = stb_name + ',' + f'id=\"{tb_name}\"' + ',' + tag_str + col_str + ts + return long_sql, stb_name + + def getNoIdTbName(self, stb_name): + query_sql = f"select tbname from {stb_name}" + tb_name = self.resHandle(query_sql, True)[0][0] + return tb_name + + def resHandle(self, query_sql, query_tag): + row_info = tdSql.query(query_sql, query_tag) + col_info = tdSql.getColNameList(query_sql, query_tag) + res_row_list = [] + sub_list = [] + for row_mem in row_info: + for i in row_mem: + sub_list.append(str(i)) + res_row_list.append(sub_list) + res_field_list_without_ts = col_info[0][1:] + res_type_list = col_info[1] + return res_row_list, res_field_list_without_ts, res_type_list + + def resCmp(self, input_sql, stb_name, query_sql="select * from", condition="", ts=None, id=True, none_check_tag=None): + expect_list = self.inputHandle(input_sql) + code = self._conn.insertLines([input_sql]) + print("insertLines result {}".format(code)) + query_sql = f"{query_sql} {stb_name} {condition}" + res_row_list, res_field_list_without_ts, res_type_list = self.resHandle(query_sql, True) + if ts == 0: + res_ts = self.dateToTs(res_row_list[0][0]) + current_time = time.time() + if current_time - res_ts < 60: + tdSql.checkEqual(res_row_list[0][1:], expect_list[0][1:]) + else: + print("timeout") + tdSql.checkEqual(res_row_list[0], expect_list[0]) + else: + if none_check_tag is not None: + none_index_list = [i for i,x in enumerate(res_row_list[0]) if x=="None"] + none_index_list.reverse() + for j in none_index_list: + res_row_list[0].pop(j) + expect_list[0].pop(j) + tdSql.checkEqual(res_row_list[0], expect_list[0]) + tdSql.checkEqual(res_field_list_without_ts, expect_list[1]) + tdSql.checkEqual(res_type_list, expect_list[2]) + + def initCheckCase(self): + """ + normal tags and cols, one for every elm + """ + input_sql, stb_name, tb_name = self.genFullTypeSql() + self.resCmp(input_sql, stb_name) + + def boolTypeCheckCase(self): + """ + check all normal type + """ + full_type_list = ["f", "F", "false", "False", "t", "T", "true", "True"] + for t_type in full_type_list: + input_sql, stb_name, tb_name = self.genFullTypeSql(c0=t_type, t0=t_type) + self.resCmp(input_sql, stb_name) + + def symbolsCheckCase(self): + """ + check symbols = `~!@#$%^&*()_-+={[}]\|:;'\",<.>/? + """ + ''' + please test : + binary_symbols = '\"abcd`~!@#$%^&*()_-{[}]|:;<.>?lfjal"\'\'"\"' + ''' + binary_symbols = '\"abcd`~!@#$%^&*()_-{[}]|:;<.>?lfjal"\"' + nchar_symbols = f'L{binary_symbols}' + input_sql, stb_name, tb_name = self.genFullTypeSql(c7=binary_symbols, c8=nchar_symbols, t7=binary_symbols, t8=nchar_symbols) + self.resCmp(input_sql, stb_name) + + def tsCheckCase(self): + """ + test ts list --> ["1626006833639000000ns", "1626006833639019us", "1626006833640ms", "1626006834s", "1626006822639022"] + # ! us级时间戳都为0时,数据库中查询显示,但python接口拿到的结果不显示 .000000的情况请确认,目前修改时间处理代码可以通过 + """ + ts_list = ["1626006833639000000ns", "1626006833639019us", "1626006833640ms", "1626006834s", "1626006822639022", 0] + for ts in ts_list: + input_sql, stb_name, tb_name = self.genFullTypeSql(ts=ts) + self.resCmp(input_sql, stb_name, ts) + + def idSeqCheckCase(self): + """ + check id.index in tags + eg: t0=**,id=**,t1=** + """ + input_sql, stb_name, tb_name = self.genFullTypeSql(id_change_tag=True) + self.resCmp(input_sql, stb_name) + + def idUpperCheckCase(self): + """ + check id param + eg: id and ID + """ + input_sql, stb_name, tb_name = self.genFullTypeSql(id_upper_tag=True) + self.resCmp(input_sql, stb_name) + input_sql, stb_name, tb_name = self.genFullTypeSql(id_change_tag=True, id_upper_tag=True) + self.resCmp(input_sql, stb_name) + + def noIdCheckCase(self): + """ + id not exist + """ + input_sql, stb_name, tb_name = self.genFullTypeSql(id_noexist_tag=True) + self.resCmp(input_sql, stb_name) + query_sql = f"select tbname from {stb_name}" + res_row_list = self.resHandle(query_sql, True)[0] + if len(res_row_list[0][0]) > 0: + tdSql.checkColNameList(res_row_list, res_row_list) + else: + tdSql.checkColNameList(res_row_list, "please check noIdCheckCase") + + # ! bug + # TODO confirm!!! + def maxColTagCheckCase(self): + """ + max tag count is 128 + max col count is ?? + """ + input_sql, stb_name = self.genLongSql(128, 4000) + print(input_sql) + code = self._conn.insertLines([input_sql]) + print("insertLines result {}".format(code)) + query_sql = f"describe {stb_name}" + insert_tag_col_num = len(self.resHandle(query_sql, True)[0]) + expected_num = 128 + 1023 + 1 + tdSql.checkEqual(insert_tag_col_num, expected_num) + + # input_sql, stb_name = self.genLongSql(128, 1500) + # code = self._conn.insertLines([input_sql]) + # print(f'code---{code}') + + def idIllegalNameCheckCase(self): + """ + test illegal id name + """ + rstr = list("!@#$%^&*()-+={}|[]\:<>?") + for i in rstr: + input_sql = self.genFullTypeSql(tb_name=f"\"aaa{i}bbb\"")[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + def idStartWithNumCheckCase(self): + """ + id is start with num + """ + input_sql = self.genFullTypeSql(tb_name=f"\"1aaabbb\"")[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + def nowTsCheckCase(self): + """ + check now unsupported + """ + input_sql = self.genFullTypeSql(ts="now")[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + def dateFormatTsCheckCase(self): + """ + check date format ts unsupported + """ + input_sql = self.genFullTypeSql(ts="2021-07-21\ 19:01:46.920")[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + def illegalTsCheckCase(self): + """ + check ts format like 16260068336390us19 + """ + input_sql = self.genFullTypeSql(ts="16260068336390us19")[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + def tagValueLengthCheckCase(self): + """ + check full type tag value limit + """ + # i8 + for t1 in ["-127i8"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t1=t1) + self.resCmp(input_sql, stb_name) + for t1 in ["-128i8", "128i8"]: + input_sql = self.genFullTypeSql(t1=t1)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + #i16 + for t2 in ["-32767i16"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t2=t2) + self.resCmp(input_sql, stb_name) + for t2 in ["-32768i16", "32768i16"]: + input_sql = self.genFullTypeSql(t2=t2)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + #i32 + for t3 in ["-2147483647i32"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t3=t3) + self.resCmp(input_sql, stb_name) + for t3 in ["-2147483648i32", "2147483648i32"]: + input_sql = self.genFullTypeSql(t3=t3)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + #i64 + for t4 in ["-9223372036854775807i64"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t4=t4) + self.resCmp(input_sql, stb_name) + # ! 9223372036854775808i64 failed + # !for t4 in ["-9223372036854775808i64", "9223372036854775808i64"]: + # ! input_sql = self.genFullTypeSql(t4=t4)[0] + # ! code = self._conn.insertLines([input_sql]) + # ! tdSql.checkNotEqual(code, 0) + + # f32 + for t5 in ["-11.12345f32"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t5=t5) + self.resCmp(input_sql, stb_name) + # TODO to confirm length + # #for t5 in [f"{-3.4028234663852886*(10**38)-1}f32", f"{3.4028234663852886*(10**38)+1}f32"]: + # for t5 in [f"{-3.4028234663852886*(10**38)-1}f32", f"{3.4028234663852886*(10**38)+1}f32"]: + # print("tag2") + # input_sql = self.genFullTypeSql(t5=t5)[0] + # print(input_sql) + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) + + # f64 + for t6 in ["-22.123456789f64"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t6=t6) + self.resCmp(input_sql, stb_name) + # TODO to confirm length + + # TODO binary nchar + + def colValueLengthCheckCase(self): + """ + check full type col value limit + """ + # i8 + for c1 in ["-127i8"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(c1=c1) + self.resCmp(input_sql, stb_name) + + # TODO to confirm + # for c1 in ["-131i8", "129i8"]: + # input_sql = self.genFullTypeSql(c1=c1)[0] + # print(input_sql) + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) + + #i16 + for c2 in ["-32767i16"]: + print("tag1") + input_sql, stb_name, tb_name = self.genFullTypeSql(c2=c2) + self.resCmp(input_sql, stb_name) + for c2 in ["-32768i16", "32768i16"]: + input_sql = self.genFullTypeSql(c2=c2)[0] + print(input_sql) + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + #i32 + for c3 in ["-2147483647i32"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(c3=c3) + self.resCmp(input_sql, stb_name) + for c3 in ["-2147483650i32", "2147483648i32"]: + input_sql = self.genFullTypeSql(c3=c3)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + #i64 + for c4 in ["-9223372036854775807i64"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(c4=c4) + self.resCmp(input_sql, stb_name) + # ! 9223372036854775808i64 failed + # !for c4 in ["-9223372036854775808i64", "9223372036854775808i64"]: + # ! input_sql = self.genFullTypeSql(c4=c4)[0] + # ! code = self._conn.insertLines([input_sql]) + # ! tdSql.checkNotEqual(code, 0) + + def tagColIllegalValueCheckCase(self): + """ + test illegal tag col value + """ + # bool + for i in ["TrUe", "tRue", "trUe", "truE", "FalsE", "fAlse", "faLse", "falSe", "falsE"]: + input_sql1 = self.genFullTypeSql(t0=i)[0] + code = self._conn.insertLines([input_sql1]) + tdSql.checkNotEqual(code, 0) + input_sql2 = self.genFullTypeSql(c0=i)[0] + code = self._conn.insertLines([input_sql2]) + tdSql.checkNotEqual(code, 0) + + # i8 i16 i32 i64 f32 f64 + for input_sql in [ + self.genFullTypeSql(t1="1s2i8")[0], + self.genFullTypeSql(t2="1s2i16")[0], + self.genFullTypeSql(t3="1s2i32")[0], + self.genFullTypeSql(t4="1s2i64")[0], + self.genFullTypeSql(t5="11.1s45f32")[0], + self.genFullTypeSql(t6="11.1s45f64")[0], + self.genFullTypeSql(c1="1s2i8")[0], + self.genFullTypeSql(c2="1s2i16")[0], + self.genFullTypeSql(c3="1s2i32")[0], + self.genFullTypeSql(c4="1s2i64")[0], + self.genFullTypeSql(c5="11.1s45f32")[0], + self.genFullTypeSql(c6="11.1s45f64")[0], + self.genFullTypeSql(c9="1s1u64")[0] + ]: + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + # TODO nchar binary + + def duplicateIdTagColInsertCheckCase(self): + """ + check duplicate Id Tag Col + """ + input_sql_id = self.genFullTypeSql(id_double_tag=True)[0] + code = self._conn.insertLines([input_sql_id]) + tdSql.checkNotEqual(code, 0) + + input_sql = self.genFullTypeSql()[0] + input_sql_tag = input_sql.replace("t5", "t6") + code = self._conn.insertLines([input_sql_tag]) + tdSql.checkNotEqual(code, 0) + + input_sql = self.genFullTypeSql()[0] + input_sql_col = input_sql.replace("c5", "c6") + code = self._conn.insertLines([input_sql_col]) + tdSql.checkNotEqual(code, 0) + + input_sql = self.genFullTypeSql()[0] + input_sql_col = input_sql.replace("c5", "C6") + code = self._conn.insertLines([input_sql_col]) + tdSql.checkNotEqual(code, 0) + + + + ##### stb exist ##### + def noIdStbExistCheckCase(self): + """ + case no id when stb exist + """ + input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") + self.resCmp(input_sql, stb_name) + input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, id_noexist_tag=True, t0="f", c0="f") + self.resCmp(input_sql, stb_name, condition='where tbname like "t_%"') + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(2) + # TODO cover other case + + def duplicateInsertExistCheckCase(self): + """ + check duplicate insert when stb exist + """ + input_sql, stb_name, tb_name = self.genFullTypeSql() + self.resCmp(input_sql, stb_name) + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + self.resCmp(input_sql, stb_name) + + def tagColBinaryNcharLengthCheckCase(self): + """ + check length increase + """ + input_sql, stb_name, tb_name = self.genFullTypeSql() + self.resCmp(input_sql, stb_name) + tb_name = self.getLongName(5, "letters") + input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name,t7="\"binaryTagValuebinaryTagValue\"", t8="L\"ncharTagValuencharTagValue\"", c7="\"binaryTagValuebinaryTagValue\"", c8="L\"ncharTagValuencharTagValue\"") + self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') + + # ! use tb_name + # ! bug + def tagColAddDupIDCheckCase(self): + """ + check column and tag count add, stb and tb duplicate + """ + input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") + print(input_sql) + self.resCmp(input_sql, stb_name) + input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}', t0="f", c0="f", cl_add_tag=True) + print(input_sql) + self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') + + def tagColAddCheckCase(self): + """ + check column and tag count add + """ + input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") + self.resCmp(input_sql, stb_name) + input_sql, stb_name, tb_name_1 = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}_1', t0="f", c0="f", cl_add_tag=True) + self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name_1}"') + res_row_list = self.resHandle(f"select c10,c11,t10,t11 from {tb_name}", True)[0] + tdSql.checkEqual(res_row_list[0], ['None', 'None', 'None', 'None']) + self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"', none_check_tag=True) + + def tagMd5Check(self): + """ + condition: stb not change + insert two table, keep tag unchange, change col + """ + input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f", id_noexist_tag=True) + self.resCmp(input_sql, stb_name) + tb_name1 = self.getNoIdTbName(stb_name) + input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, t0="f", c0="f", id_noexist_tag=True) + self.resCmp(input_sql, stb_name) + tb_name2 = self.getNoIdTbName(stb_name) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(1) + tdSql.checkEqual(tb_name1, tb_name2) + input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, t0="f", c0="f", id_noexist_tag=True, cl_add_tag=True) + self._conn.insertLines([input_sql]) + tb_name3 = self.getNoIdTbName(stb_name) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(2) + tdSql.checkNotEqual(tb_name1, tb_name3) + + # TODO tag binary max is 16379, col binary max??? 16379 + def tagColBinaryMaxLengthCheckCase(self): + stb_name = self.getLongName(7, "letters") + tb_name = f'{stb_name}_1' + input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}",t2="{self.getLongName(5, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + + # TODO tag nchar max is 16379, col binary max??? + def tagColNcharMaxLengthCheckCase(self): + stb_name = self.getLongName(7, "letters") + tb_name = f'{stb_name}_1' + input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' + print(input_sql) + code = self._conn.insertLines([input_sql]) + # input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}" c0=f 1626006833639000000ns' + input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(1, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(2, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + # ! rollback bug + # TODO because it is no rollback now, so stb has been broken, create a new! + stb_name = self.getLongName(7, "letters") + tb_name = f'{stb_name}_1' + input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4093, "letters")}",c2=L"{self.getLongName(4093, "letters")}",c3=L"{self.getLongName(4093, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + + def batchInsertCheckCase(self): + """ + test batch insert + """ + stb_name = self.getLongName(8, "letters") + tdSql.execute(f'create stable {stb_name}(ts timestamp, f int) tags(t1 bigint)') + lines = ["st123456,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000ns", + "st123456,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64 1626006833640000000ns", + f"{stb_name},t2=5f64,t3=L\"ste\" c1=true,c2=4i64,c3=\"iam\" 1626056811823316532ns", + "stf567890,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64,c6=7u64 1626006933640000000ns", + "st123456,t1=4i64,t2=5f64,t3=\"t4\" c1=3i64,c3=L\"passitagain\",c2=true,c4=5f64 1626006833642000000ns", + f"{stb_name},t2=5f64,t3=L\"ste2\" c3=\"iamszhou\",c4=false 1626056811843316532ns", + f"{stb_name},t2=5f64,t3=L\"ste2\" c3=\"iamszhou\",c4=false,c5=32i8,c6=64i16,c7=32i32,c8=88.88f32 1626056812843316532ns", + "st123456,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64,c6=7u64 1626006933640000000ns", + "st123456,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin_stf\",c2=false,c5=5f64,c6=7u64 1626006933641000000ns" + ] + code = self._conn.insertLines(lines) + tdSql.checkEqual(code, 0) + + # ! bug + def batchErrorInsertCheckCase(self): + """ + test batch error insert + """ + stb_name = self.getLongName(8, "letters") + lines = ["st123456,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000ns", + f"{stb_name},t2=5f64,t3=L\"ste\" c1=tRue,c2=4i64,c3=\"iam\" 1626056811823316532ns", + ] + code = self._conn.insertLines(lines) + # tdSql.checkEqual(code, 0) + + def run(self): + print("running {}".format(__file__)) + tdSql.execute("drop database if exists test") + tdSql.execute("create database if not exists test precision 'us'") + tdSql.execute('use test') + # tdSql.execute("create table super_table_cname_check (ts timestamp, pi1 int, pi2 bigint, pf1 float, pf2 double, ps1 binary(10), pi3 smallint, pi4 tinyint, pb1 bool, ps2 nchar(20)) tags (si1 int, si2 bigint, sf1 float, sf2 double, ss1 binary(10), si3 smallint, si4 tinyint, sb1 bool, ss2 nchar(20));") + # tdSql.execute('create table st1 using super_table_cname_check tags (1, 2, 1.1, 2.2, "a", 1, 1, true, "aa");') + # tdSql.execute('insert into st1 values (now, 1, 2, 1.1, 2.2, "a", 1, 1, true, "aa");') + + # self.initCheckCase() + # self.boolTypeCheckCase() + # self.symbolsCheckCase() + # self.tsCheckCase() + # self.idSeqCheckCase() + # self.idUpperCheckCase() + # self.noIdCheckCase() + # self.maxColTagCheckCase() + # self.idIllegalNameCheckCase() + # self.idStartWithNumCheckCase() + # self.nowTsCheckCase() + # self.dateFormatTsCheckCase() + # self.illegalTsCheckCase() + # self.tagValueLengthCheckCase() + + # ! 问题很多 + # ! self.colValueLengthCheckCase() + + # self.tagColIllegalValueCheckCase() + + # self.duplicateIdTagColInsertCheckCase() + # self.noIdStbExistCheckCase() + # self.duplicateInsertExistCheckCase() + # self.tagColBinaryNcharLengthCheckCase() + # self.tagColAddDupIDCheckCase() + # self.tagColAddCheckCase() + # self.tagMd5Check() + + # ! rollback bug + # self.tagColBinaryMaxLengthCheckCase() + # self.tagColNcharMaxLengthCheckCase() + + # self.batchInsertCheckCase() + + # ! bug + # ! self.batchErrorInsertCheckCase() + + + + + + # tdSql.execute('create stable ste(ts timestamp, f int) tags(t1 bigint)') + + # lines = [ "st,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000ns", + # "st,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64 1626006833640000000ns", + # "ste,t2=5f64,t3=L\"ste\" c1=true,c2=4i64,c3=\"iam\" 1626056811823316532ns", + # "stf,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64,c6=7u64 1626006933640000000ns", + # "st,t1=4i64,t2=5f64,t3=\"t4\" c1=3i64,c3=L\"passitagain\",c2=true,c4=5f64 1626006833642000000ns", + # "ste,t2=5f64,t3=L\"ste2\" c3=\"iamszhou\",c4=false 1626056811843316532ns", + # "ste,t2=5f64,t3=L\"ste2\" c3=\"iamszhou\",c4=false,c5=32i8,c6=64i16,c7=32i32,c8=88.88f32 1626056812843316532ns", + # "st,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64,c6=7u64 1626006933640000000ns", + # "stf,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin_stf\",c2=false,c5=5f64,c6=7u64 1626006933641000000ns" + # ] + + # code = self._conn.insertLines(lines) + # print("insertLines result {}".format(code)) + + # lines2 = [ "stg,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000ns", + # "stg,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64 1626006833640000000ns" + # ] + + # code = self._conn.insertLines([ lines2[0] ]) + # print("insertLines result {}".format(code)) + + # self._conn.insertLines([ lines2[1] ]) + # print("insertLines result {}".format(code)) + + # tdSql.query("select * from st") + # tdSql.checkRows(4) + + # tdSql.query("select * from ste") + # tdSql.checkRows(3) + + # tdSql.query("select * from stf") + # tdSql.checkRows(2) + + # tdSql.query("select * from stg") + # tdSql.checkRows(2) + + # tdSql.query("show tables") + # tdSql.checkRows(8) + + # tdSql.query("describe stf") + # tdSql.checkData(2, 2, 14) + + # self._conn.insertLines([ + # "sth,t1=4i64,t2=5f64,t4=5f64,ID=\"childtable\" c1=3i64,c3=L\"passitagin_stf\",c2=false,c5=5f64,c6=7u64 1626006933641ms", + # "sth,t1=4i64,t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin_stf\",c2=false,c5=5f64,c6=7u64 1626006933654ms" + # ]) + # tdSql.query('select tbname, * from sth') + # tdSql.checkRows(2) + + # tdSql.query('select tbname, * from childtable') + # tdSql.checkRows(1) + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/pytest/util/sql.py b/tests/pytest/util/sql.py index 4eb0c8f857..795af8a1f8 100644 --- a/tests/pytest/util/sql.py +++ b/tests/pytest/util/sql.py @@ -65,7 +65,7 @@ class TDSql: self.queryResult = None tdLog.info("sql:%s, expect error occured" % (sql)) - def query(self, sql): + def query(self, sql, row_tag=None): self.sql = sql try: self.cursor.execute(sql) @@ -77,21 +77,27 @@ class TDSql: args = (caller.filename, caller.lineno, sql, repr(e)) tdLog.notice("%s(%d) failed: sql:%s, %s" % args) raise Exception(repr(e)) + if row_tag: + return self.queryResult return self.queryRows - def getColNameList(self, sql): + def getColNameList(self, sql, col_tag=None): self.sql = sql try: col_name_list = [] + col_type_list = [] self.cursor.execute(sql) self.queryCols = self.cursor.description for query_col in self.queryCols: col_name_list.append(query_col[0]) + col_type_list.append(query_col[1]) except Exception as e: caller = inspect.getframeinfo(inspect.stack()[1][0]) args = (caller.filename, caller.lineno, sql, repr(e)) tdLog.notice("%s(%d) failed: sql:%s, %s" % args) raise Exception(repr(e)) + if col_tag: + return col_name_list, col_type_list return col_name_list def waitedQuery(self, sql, expectRows, timeout): @@ -232,6 +238,22 @@ class TDSql: args = (caller.filename, caller.lineno, self.sql, col_name_list, expect_col_name_list) tdLog.exit("%s(%d) failed: sql:%s, col_name_list:%s != expect_col_name_list:%s" % args) + def checkEqual(self, elm, expect_elm): + if elm == expect_elm: + tdLog.info("sql:%s, elm:%s == expect_elm:%s" % (self.sql, elm, expect_elm)) + else: + caller = inspect.getframeinfo(inspect.stack()[1][0]) + args = (caller.filename, caller.lineno, self.sql, elm, expect_elm) + tdLog.exit("%s(%d) failed: sql:%s, elm:%s != expect_elm:%s" % args) + + def checkNotEqual(self, elm, expect_elm): + if elm != expect_elm: + tdLog.info("sql:%s, elm:%s != expect_elm:%s" % (self.sql, elm, expect_elm)) + else: + caller = inspect.getframeinfo(inspect.stack()[1][0]) + args = (caller.filename, caller.lineno, self.sql, elm, expect_elm) + tdLog.exit("%s(%d) failed: sql:%s, elm:%s == expect_elm:%s" % args) + def taosdStatus(self, state): tdLog.sleep(5) pstate = 0 From 58812433106334969ba4dde2c1f21964db5ed7d7 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Fri, 23 Jul 2021 14:29:16 +0800 Subject: [PATCH 02/64] save --- tests/pytest/insert/schemalessInsert.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index b09c153bf6..7bdcbf19d1 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -694,18 +694,19 @@ class TDTestCase: tdSql.checkRows(2) tdSql.checkNotEqual(tb_name1, tb_name3) - # TODO tag binary max is 16379, col binary max??? 16379 + # TODO tag binary max is 16380, col+ts binary max??? 49143 def tagColBinaryMaxLengthCheckCase(self): stb_name = self.getLongName(7, "letters") tb_name = f'{stb_name}_1' input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) - input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}",t2="{self.getLongName(5, "letters")}" c0=f 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - tdSql.checkEqual(code, 0) - input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}" 1626006833639000000ns' + # input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}",t2="{self.getLongName(6, "letters")}" c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(12, "letters")}" 1626006833639000000ns' + input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}",t2="{self.getLongName(6, "letters")}" c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) + # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}" 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # tdSql.checkEqual(code, 0) # TODO tag nchar max is 16379, col binary max??? def tagColNcharMaxLengthCheckCase(self): @@ -715,12 +716,12 @@ class TDTestCase: print(input_sql) code = self._conn.insertLines([input_sql]) # input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}" c0=f 1626006833639000000ns' - input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(1, "letters")}" c0=f 1626006833639000000ns' + input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4094, "letters")}",t2=L"{self.getLongName(1, "letters")}" c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) - input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(2, "letters")}" c0=f 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(2, "letters")}" c0=f 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) # ! rollback bug # TODO because it is no rollback now, so stb has been broken, create a new! @@ -763,6 +764,9 @@ class TDTestCase: code = self._conn.insertLines(lines) # tdSql.checkEqual(code, 0) + def stbInsertMultiThreadCheckCase(self): + pass + def run(self): print("running {}".format(__file__)) tdSql.execute("drop database if exists test") @@ -807,7 +811,7 @@ class TDTestCase: # self.batchInsertCheckCase() # ! bug - # ! self.batchErrorInsertCheckCase() + # self.batchErrorInsertCheckCase() From 0224dd10565fb568ec8165ef3781c65036d88e78 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Fri, 23 Jul 2021 15:35:19 +0800 Subject: [PATCH 03/64] save --- tests/pytest/insert/schemalessInsert.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 7bdcbf19d1..3ec250def1 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -694,21 +694,34 @@ class TDTestCase: tdSql.checkRows(2) tdSql.checkNotEqual(tb_name1, tb_name3) - # TODO tag binary max is 16380, col+ts binary max??? 49143 + # ? tag binary max is 16384, col+ts binary max 49151 def tagColBinaryMaxLengthCheckCase(self): + """ + # ? case finish , src bug exist + every binary and nchar must be length+2, so + """ stb_name = self.getLongName(7, "letters") tb_name = f'{stb_name}_1' input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) - # input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}",t2="{self.getLongName(6, "letters")}" c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(12, "letters")}" 1626006833639000000ns' - input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}",t2="{self.getLongName(6, "letters")}" c0=f 1626006833639000000ns' + + # * every binary and nchar must be length+2, so here is two tag, max length could not larger than 16384-2*2 + input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}",t2="{self.getLongName(5, "letters")}" c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) - # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}" 1626006833639000000ns' + input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}",t2="{self.getLongName(6, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + # * check col,col+ts max in describe ---> 16143 + # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(12, "letters")}" 1626006833639000000ns' # code = self._conn.insertLines([input_sql]) # tdSql.checkEqual(code, 0) + # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(13, "letters")}" 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) - # TODO tag nchar max is 16379, col binary max??? + # ? tag nchar max is 16384, col+ts nchar max 49151 def tagColNcharMaxLengthCheckCase(self): stb_name = self.getLongName(7, "letters") tb_name = f'{stb_name}_1' @@ -805,7 +818,7 @@ class TDTestCase: # self.tagMd5Check() # ! rollback bug - # self.tagColBinaryMaxLengthCheckCase() + self.tagColBinaryMaxLengthCheckCase() # self.tagColNcharMaxLengthCheckCase() # self.batchInsertCheckCase() From c572b1345e850018917ed1f0912c20ac0df278bb Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Fri, 23 Jul 2021 16:01:12 +0800 Subject: [PATCH 04/64] save --- tests/pytest/insert/schemalessInsert.py | 42 ++++++++++++------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 3ec250def1..625726a22a 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -714,37 +714,37 @@ class TDTestCase: tdSql.checkNotEqual(code, 0) # * check col,col+ts max in describe ---> 16143 - # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(12, "letters")}" 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # tdSql.checkEqual(code, 0) - # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(13, "letters")}" 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(12, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(13, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) # ? tag nchar max is 16384, col+ts nchar max 49151 def tagColNcharMaxLengthCheckCase(self): stb_name = self.getLongName(7, "letters") tb_name = f'{stb_name}_1' input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' - print(input_sql) code = self._conn.insertLines([input_sql]) - # input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}" c0=f 1626006833639000000ns' - input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4094, "letters")}",t2=L"{self.getLongName(1, "letters")}" c0=f 1626006833639000000ns' + + # * legal nchar could not be larger than 16374/4 + input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(1, "letters")}" c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) - # input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(2, "letters")}" c0=f 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(2, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) # ! rollback bug # TODO because it is no rollback now, so stb has been broken, create a new! - stb_name = self.getLongName(7, "letters") - tb_name = f'{stb_name}_1' - input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4093, "letters")}",c2=L"{self.getLongName(4093, "letters")}",c3=L"{self.getLongName(4093, "letters")}" 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - tdSql.checkEqual(code, 0) + # stb_name = self.getLongName(7, "letters") + # tb_name = f'{stb_name}_1' + # input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4093, "letters")}",c2=L"{self.getLongName(4093, "letters")}",c3=L"{self.getLongName(4093, "letters")}" 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # tdSql.checkEqual(code, 0) def batchInsertCheckCase(self): """ @@ -818,8 +818,8 @@ class TDTestCase: # self.tagMd5Check() # ! rollback bug - self.tagColBinaryMaxLengthCheckCase() - # self.tagColNcharMaxLengthCheckCase() + # self.tagColBinaryMaxLengthCheckCase() + self.tagColNcharMaxLengthCheckCase() # self.batchInsertCheckCase() From 80afed6706b844cc3c293993177d94e8dd59610a Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Fri, 23 Jul 2021 17:12:41 +0800 Subject: [PATCH 05/64] save --- tests/pytest/insert/schemalessInsert.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 625726a22a..d1291d7dc8 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -11,7 +11,6 @@ # -*- coding: utf-8 -*- -import sys import random import string import time @@ -21,6 +20,7 @@ import numpy as np from util.log import * from util.cases import * from util.sql import * +import threading class TDTestCase: @@ -818,8 +818,8 @@ class TDTestCase: # self.tagMd5Check() # ! rollback bug - # self.tagColBinaryMaxLengthCheckCase() - self.tagColNcharMaxLengthCheckCase() + self.tagColBinaryMaxLengthCheckCase() + # self.tagColNcharMaxLengthCheckCase() # self.batchInsertCheckCase() From 90ecf82d540529cf71a20b55c3f3f25b892c3071 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Fri, 23 Jul 2021 18:31:38 +0800 Subject: [PATCH 06/64] save --- tests/pytest/insert/schemalessInsert.py | 31 ++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index d1291d7dc8..d1c1dd6519 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -713,7 +713,7 @@ class TDTestCase: code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) - # * check col,col+ts max in describe ---> 16143 + # # * check col,col+ts max in describe ---> 16143 input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(12, "letters")}" 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) @@ -777,6 +777,35 @@ class TDTestCase: code = self._conn.insertLines(lines) # tdSql.checkEqual(code, 0) + def genSqlList(self, count=5): + """ + stb --> supertable + tb --> table + ts --> timestamp + col --> column + tag --> tag + d --> different + s --> same + """ + d_stb_d_tb_list = list() + for i in range(count): + d_stb_d_tb_list.append(self.genFullTypeSql(t0="f", c0="f")) + + return d_stb_d_tb_list, + + def genMultiThreadSeq(self, sql_list): + tlist = list() + for insert_sql in sql_list: + t = threading.Thread(target=self._conn.insertLines,args=insert_sql) + tlist.append(t) + return tlist + + def multiThreadRun(self, tlist): + for t in tlist: + t.start() + for t in tlist: + t.join() + def stbInsertMultiThreadCheckCase(self): pass From 5d9c380788848792ceb175b55c7e9c659c6b8957 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Fri, 23 Jul 2021 19:01:44 +0800 Subject: [PATCH 07/64] save --- tests/pytest/insert/schemalessInsert.py | 26 +++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index d1c1dd6519..cfce8da63e 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -717,9 +717,11 @@ class TDTestCase: input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(12, "letters")}" 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) - input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(13, "letters")}" 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(13, "letters")}" 1626006833639000000ns' + # print(input_sql) + # code = self._conn.insertLines([input_sql]) + # print(code) + # tdSql.checkNotEqual(code, 0) # ? tag nchar max is 16384, col+ts nchar max 49151 def tagColNcharMaxLengthCheckCase(self): @@ -772,8 +774,7 @@ class TDTestCase: """ stb_name = self.getLongName(8, "letters") lines = ["st123456,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000ns", - f"{stb_name},t2=5f64,t3=L\"ste\" c1=tRue,c2=4i64,c3=\"iam\" 1626056811823316532ns", - ] + f"{stb_name},t2=5f64,t3=L\"ste\" c1=tRue,c2=4i64,c3=\"iam\" 1626056811823316532ns"] code = self._conn.insertLines(lines) # tdSql.checkEqual(code, 0) @@ -781,17 +782,22 @@ class TDTestCase: """ stb --> supertable tb --> table - ts --> timestamp - col --> column - tag --> tag + ts --> timestamp, same default + col --> column, same default + tag --> tag, same default d --> different s --> same + a --> add + m --> minus """ d_stb_d_tb_list = list() + s_stb_s_tb_list = list() + s_stb_s_tb_a_col_a_tag_list = list() for i in range(count): d_stb_d_tb_list.append(self.genFullTypeSql(t0="f", c0="f")) - - return d_stb_d_tb_list, + s_stb_s_tb_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"', cl_add_tag=True)) + s_stb_s_tb_a_col_a_tag_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"')) + return d_stb_d_tb_list, s_stb_s_tb_list, s_stb_s_tb_a_col_a_tag_list def genMultiThreadSeq(self, sql_list): tlist = list() From 9a94a39b292c81fb615ccfbcf495daad27a00527 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Fri, 23 Jul 2021 19:24:23 +0800 Subject: [PATCH 08/64] save --- tests/pytest/insert/schemalessInsert.py | 27 ++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index cfce8da63e..60695fbf8c 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -216,8 +216,9 @@ class TDTestCase: t4="9223372036854775807i64", t5="11.12345f32", t6="22.123456789f64", t7="\"binaryTagValue\"", t8="L\"ncharTagValue\"", c0="", c1="127i8", c2="32767i16", c3="2147483647i32", c4="9223372036854775807i64", c5="11.12345f32", c6="22.123456789f64", c7="\"binaryColValue\"", - c8="L\"ncharColValue\"", c9="7u64", ts="1626006833639000000ns", cl_add_tag=None, - id_noexist_tag=None, id_change_tag=None, id_upper_tag=None, id_double_tag=None): + c8="L\"ncharColValue\"", c9="7u64", ts="1626006833639000000ns", + id_noexist_tag=None, id_change_tag=None, id_upper_tag=None, id_double_tag=None, + ct_add_tag=None, ct_am_tag=None, ct_ma_tag=None, ct_min_tag=None): if stb_name == "": stb_name = self.getLongName(len=6, mode="letters") if tb_name == "": @@ -234,14 +235,20 @@ class TDTestCase: sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9} {ts}' if id_noexist_tag is not None: sql_seq = f'{stb_name},t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9} {ts}' - if cl_add_tag is not None: + if ct_add_tag is not None: sql_seq = f'{stb_name},t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8},t9={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9} {ts}' if id_change_tag is not None: sql_seq = f'{stb_name},t0={t0},t1={t1},{id}=\"{tb_name}\",t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9} {ts}' if id_double_tag is not None: sql_seq = f'{stb_name},{id}=\"{tb_name}_1\",t0={t0},t1={t1},{id}=\"{tb_name}_2\",t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9} {ts}' - if cl_add_tag is not None: + if ct_add_tag is not None: sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8},t11={t1},t10={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9},c11={c8},c10={t0} {ts}' + if ct_am_tag is not None: + sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9},c11={c8},c10={t0} {ts}' + if ct_ma_tag is not None: + sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8},t11={t1},t10={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6} {ts}' + if ct_min_tag is not None: + sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6} {ts}' return sql_seq, stb_name, tb_name def genMulTagColStr(self, genType, count): @@ -657,7 +664,7 @@ class TDTestCase: input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") print(input_sql) self.resCmp(input_sql, stb_name) - input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}', t0="f", c0="f", cl_add_tag=True) + input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}', t0="f", c0="f", ct_add_tag=True) print(input_sql) self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') @@ -667,7 +674,7 @@ class TDTestCase: """ input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") self.resCmp(input_sql, stb_name) - input_sql, stb_name, tb_name_1 = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}_1', t0="f", c0="f", cl_add_tag=True) + input_sql, stb_name, tb_name_1 = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}_1', t0="f", c0="f", ct_add_tag=True) self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name_1}"') res_row_list = self.resHandle(f"select c10,c11,t10,t11 from {tb_name}", True)[0] tdSql.checkEqual(res_row_list[0], ['None', 'None', 'None', 'None']) @@ -687,7 +694,7 @@ class TDTestCase: tdSql.query(f"select * from {stb_name}") tdSql.checkRows(1) tdSql.checkEqual(tb_name1, tb_name2) - input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, t0="f", c0="f", id_noexist_tag=True, cl_add_tag=True) + input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, t0="f", c0="f", id_noexist_tag=True, ct_add_tag=True) self._conn.insertLines([input_sql]) tb_name3 = self.getNoIdTbName(stb_name) tdSql.query(f"select * from {stb_name}") @@ -793,10 +800,12 @@ class TDTestCase: d_stb_d_tb_list = list() s_stb_s_tb_list = list() s_stb_s_tb_a_col_a_tag_list = list() + s_stb_s_tb_m_col_m_tag_list = list() for i in range(count): d_stb_d_tb_list.append(self.genFullTypeSql(t0="f", c0="f")) - s_stb_s_tb_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"', cl_add_tag=True)) - s_stb_s_tb_a_col_a_tag_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"')) + s_stb_s_tb_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"')) + s_stb_s_tb_a_col_a_tag_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"'), ct_add_tag=True) + s_stb_s_tb_m_col_m_tag_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"'), ct_min_tag=True) return d_stb_d_tb_list, s_stb_s_tb_list, s_stb_s_tb_a_col_a_tag_list def genMultiThreadSeq(self, sql_list): From cb7e26845b4a0ed181820563266b077cbd52e84b Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Sat, 24 Jul 2021 10:22:02 +0800 Subject: [PATCH 09/64] save --- tests/pytest/insert/schemalessInsert.py | 30 ++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 60695fbf8c..ed8e7ba103 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -491,17 +491,17 @@ class TDTestCase: for t4 in ["-9223372036854775807i64"]: input_sql, stb_name, tb_name = self.genFullTypeSql(t4=t4) self.resCmp(input_sql, stb_name) - # ! 9223372036854775808i64 failed - # !for t4 in ["-9223372036854775808i64", "9223372036854775808i64"]: - # ! input_sql = self.genFullTypeSql(t4=t4)[0] - # ! code = self._conn.insertLines([input_sql]) - # ! tdSql.checkNotEqual(code, 0) + #! 9223372036854775808i64 failed + for t4 in ["-9223372036854775808i64", "9223372036854775808i64"]: + input_sql = self.genFullTypeSql(t4=t4)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) # f32 - for t5 in ["-11.12345f32"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t5=t5) - self.resCmp(input_sql, stb_name) - # TODO to confirm length + # for t5 in ["-11.12345f32"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(t5=t5) + # self.resCmp(input_sql, stb_name) + # # TODO to confirm length # #for t5 in [f"{-3.4028234663852886*(10**38)-1}f32", f"{3.4028234663852886*(10**38)+1}f32"]: # for t5 in [f"{-3.4028234663852886*(10**38)-1}f32", f"{3.4028234663852886*(10**38)+1}f32"]: # print("tag2") @@ -510,10 +510,10 @@ class TDTestCase: # code = self._conn.insertLines([input_sql]) # tdSql.checkNotEqual(code, 0) - # f64 - for t6 in ["-22.123456789f64"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t6=t6) - self.resCmp(input_sql, stb_name) + # # f64 + # for t6 in ["-22.123456789f64"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(t6=t6) + # self.resCmp(input_sql, stb_name) # TODO to confirm length # TODO binary nchar @@ -846,7 +846,7 @@ class TDTestCase: # self.nowTsCheckCase() # self.dateFormatTsCheckCase() # self.illegalTsCheckCase() - # self.tagValueLengthCheckCase() + self.tagValueLengthCheckCase() # ! 问题很多 # ! self.colValueLengthCheckCase() @@ -862,7 +862,7 @@ class TDTestCase: # self.tagMd5Check() # ! rollback bug - self.tagColBinaryMaxLengthCheckCase() + # self.tagColBinaryMaxLengthCheckCase() # self.tagColNcharMaxLengthCheckCase() # self.batchInsertCheckCase() From 7b883b2637cd7b3fc05f544095945f2b463847d1 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Sat, 24 Jul 2021 15:38:35 +0800 Subject: [PATCH 10/64] add multi thread --- tests/pytest/insert/schemalessInsert.py | 165 ++++++++++++++++-------- 1 file changed, 113 insertions(+), 52 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index ed8e7ba103..4a818b2b49 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -461,7 +461,7 @@ class TDTestCase: check full type tag value limit """ # i8 - for t1 in ["-127i8"]: + for t1 in ["-127i8", "127i8"]: input_sql, stb_name, tb_name = self.genFullTypeSql(t1=t1) self.resCmp(input_sql, stb_name) for t1 in ["-128i8", "128i8"]: @@ -470,7 +470,7 @@ class TDTestCase: tdSql.checkNotEqual(code, 0) #i16 - for t2 in ["-32767i16"]: + for t2 in ["-32767i16", "32767i16"]: input_sql, stb_name, tb_name = self.genFullTypeSql(t2=t2) self.resCmp(input_sql, stb_name) for t2 in ["-32768i16", "32768i16"]: @@ -479,7 +479,7 @@ class TDTestCase: tdSql.checkNotEqual(code, 0) #i32 - for t3 in ["-2147483647i32"]: + for t3 in ["-2147483647i32", "2147483647i32"]: input_sql, stb_name, tb_name = self.genFullTypeSql(t3=t3) self.resCmp(input_sql, stb_name) for t3 in ["-2147483648i32", "2147483648i32"]: @@ -488,83 +488,136 @@ class TDTestCase: tdSql.checkNotEqual(code, 0) #i64 - for t4 in ["-9223372036854775807i64"]: + for t4 in ["-9223372036854775807i64", "9223372036854775807i64"]: input_sql, stb_name, tb_name = self.genFullTypeSql(t4=t4) self.resCmp(input_sql, stb_name) - #! 9223372036854775808i64 failed for t4 in ["-9223372036854775808i64", "9223372036854775808i64"]: input_sql = self.genFullTypeSql(t4=t4)[0] code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) # f32 - # for t5 in ["-11.12345f32"]: - # input_sql, stb_name, tb_name = self.genFullTypeSql(t5=t5) - # self.resCmp(input_sql, stb_name) - # # TODO to confirm length - # #for t5 in [f"{-3.4028234663852886*(10**38)-1}f32", f"{3.4028234663852886*(10**38)+1}f32"]: - # for t5 in [f"{-3.4028234663852886*(10**38)-1}f32", f"{3.4028234663852886*(10**38)+1}f32"]: - # print("tag2") - # input_sql = self.genFullTypeSql(t5=t5)[0] - # print(input_sql) - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) - - # # f64 - # for t6 in ["-22.123456789f64"]: + for t5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t5=t5) + self.resCmp(input_sql, stb_name) + # * limit set to 4028234664*(10**38) + for t5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: + input_sql = self.genFullTypeSql(t5=t5)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + # f64 #!bug stack smashing detected ***: terminated Aborted + #for t6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: + # for t6 in [f'{-1.79769*(10**308)}f64', f'{-1.79769*(10**308)}f64']: + # print("f64?") # input_sql, stb_name, tb_name = self.genFullTypeSql(t6=t6) # self.resCmp(input_sql, stb_name) # TODO to confirm length - # TODO binary nchar + # binary + stb_name = self.getLongName(7, "letters") + input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16375, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + # nchar + # * legal nchar could not be larger than 16374/4 + stb_name = self.getLongName(7, "letters") + input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4094, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + def colValueLengthCheckCase(self): """ check full type col value limit """ # i8 - for c1 in ["-127i8"]: + for c1 in ["-127i8", "127i8"]: input_sql, stb_name, tb_name = self.genFullTypeSql(c1=c1) self.resCmp(input_sql, stb_name) - # TODO to confirm - # for c1 in ["-131i8", "129i8"]: - # input_sql = self.genFullTypeSql(c1=c1)[0] - # print(input_sql) - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) - - #i16 - for c2 in ["-32767i16"]: - print("tag1") - input_sql, stb_name, tb_name = self.genFullTypeSql(c2=c2) - self.resCmp(input_sql, stb_name) - for c2 in ["-32768i16", "32768i16"]: - input_sql = self.genFullTypeSql(c2=c2)[0] + for c1 in ["-128i8", "128i8"]: + input_sql = self.genFullTypeSql(c1=c1)[0] print(input_sql) code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) - #i32 + # i16 + for c2 in ["-32767i16"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(c2=c2) + self.resCmp(input_sql, stb_name) + for c2 in ["-32768i16", "32768i16"]: + input_sql = self.genFullTypeSql(c2=c2)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + # i32 for c3 in ["-2147483647i32"]: input_sql, stb_name, tb_name = self.genFullTypeSql(c3=c3) self.resCmp(input_sql, stb_name) - for c3 in ["-2147483650i32", "2147483648i32"]: + for c3 in ["-2147483648i32", "2147483648i32"]: input_sql = self.genFullTypeSql(c3=c3)[0] code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) - #i64 + # i64 for c4 in ["-9223372036854775807i64"]: input_sql, stb_name, tb_name = self.genFullTypeSql(c4=c4) self.resCmp(input_sql, stb_name) - # ! 9223372036854775808i64 failed - # !for c4 in ["-9223372036854775808i64", "9223372036854775808i64"]: - # ! input_sql = self.genFullTypeSql(c4=c4)[0] - # ! code = self._conn.insertLines([input_sql]) - # ! tdSql.checkNotEqual(code, 0) + for c4 in ["-9223372036854775808i64", "9223372036854775808i64"]: + input_sql = self.genFullTypeSql(c4=c4)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + # f32 + for c5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(c5=c5) + self.resCmp(input_sql, stb_name) + # * limit set to 4028234664*(10**38) + for c5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: + input_sql = self.genFullTypeSql(c5=c5)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + # f64 + for c6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: + input_sql, stb_name, tb_name = self.genFullTypeSql(c6=c6) + self.resCmp(input_sql, stb_name) + # * limit set to 1.797693134862316*(10**308) + for c6 in [f'{-1.797693134862316*(10**308)}f64', f'{-1.797693134862316*(10**308)}f64']: + input_sql = self.genFullTypeSql(c6=c6)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + # binary + stb_name = self.getLongName(7, "letters") + input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + # ! bug code is 0 + # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16375, "letters")}" 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) + + # nchar + # * legal nchar could not be larger than 16374/4 + stb_name = self.getLongName(7, "letters") + input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4093, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4094, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) def tagColIllegalValueCheckCase(self): + """ test illegal tag col value """ @@ -804,14 +857,14 @@ class TDTestCase: for i in range(count): d_stb_d_tb_list.append(self.genFullTypeSql(t0="f", c0="f")) s_stb_s_tb_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"')) - s_stb_s_tb_a_col_a_tag_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"'), ct_add_tag=True) - s_stb_s_tb_m_col_m_tag_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"'), ct_min_tag=True) - return d_stb_d_tb_list, s_stb_s_tb_list, s_stb_s_tb_a_col_a_tag_list + s_stb_s_tb_a_col_a_tag_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"', ct_add_tag=True)) + s_stb_s_tb_m_col_m_tag_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"', ct_min_tag=True)) + return d_stb_d_tb_list, s_stb_s_tb_list, s_stb_s_tb_a_col_a_tag_list, s_stb_s_tb_m_col_m_tag_list def genMultiThreadSeq(self, sql_list): tlist = list() for insert_sql in sql_list: - t = threading.Thread(target=self._conn.insertLines,args=insert_sql) + t = threading.Thread(target=self._conn.insertLines,args=([insert_sql[0]],)) tlist.append(t) return tlist @@ -819,10 +872,15 @@ class TDTestCase: for t in tlist: t.start() for t in tlist: - t.join() + tlist[t].join() def stbInsertMultiThreadCheckCase(self): - pass + """ + thread input different stb + """ + input_sql = self.genSqlList()[0] + print(input_sql) + self.multiThreadRun(self.genMultiThreadSeq(input_sql)) def run(self): print("running {}".format(__file__)) @@ -846,10 +904,12 @@ class TDTestCase: # self.nowTsCheckCase() # self.dateFormatTsCheckCase() # self.illegalTsCheckCase() - self.tagValueLengthCheckCase() - # ! 问题很多 - # ! self.colValueLengthCheckCase() + # ! confirm double + # self.tagValueLengthCheckCase() + + # ! bug + # self.colValueLengthCheckCase() # self.tagColIllegalValueCheckCase() @@ -870,6 +930,7 @@ class TDTestCase: # ! bug # self.batchErrorInsertCheckCase() + self.stbInsertMultiThreadCheckCase() From 8ee09625387009cf0689c39808b0faf7eae5d19f Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Sat, 24 Jul 2021 17:27:49 +0800 Subject: [PATCH 11/64] add multi thread --- tests/pytest/insert/schemalessInsert.py | 68 ++++++++++++++++++++++--- 1 file changed, 61 insertions(+), 7 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 4a818b2b49..b6b8f57829 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -324,6 +324,13 @@ class TDTestCase: tdSql.checkEqual(res_field_list_without_ts, expect_list[1]) tdSql.checkEqual(res_type_list, expect_list[2]) + def cleanStb(self): + query_sql = "show stables" + res_row_list = self.resHandle(query_sql, True)[0] + print(res_row_list) + for stb in res_row_list: + tdSql.execute(f'drop table if exists {stb}') + def initCheckCase(self): """ normal tags and cols, one for every elm @@ -838,7 +845,7 @@ class TDTestCase: code = self._conn.insertLines(lines) # tdSql.checkEqual(code, 0) - def genSqlList(self, count=5): + def genSqlList(self, count=5, stb_name="", tb_name=""): """ stb --> supertable tb --> table @@ -856,9 +863,9 @@ class TDTestCase: s_stb_s_tb_m_col_m_tag_list = list() for i in range(count): d_stb_d_tb_list.append(self.genFullTypeSql(t0="f", c0="f")) - s_stb_s_tb_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"')) - s_stb_s_tb_a_col_a_tag_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"', ct_add_tag=True)) - s_stb_s_tb_m_col_m_tag_list.append(self.genFullTypeSql(t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"', ct_min_tag=True)) + s_stb_s_tb_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"')) + s_stb_s_tb_a_col_a_tag_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"', ct_add_tag=True)) + s_stb_s_tb_m_col_m_tag_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"', ct_min_tag=True)) return d_stb_d_tb_list, s_stb_s_tb_list, s_stb_s_tb_a_col_a_tag_list, s_stb_s_tb_m_col_m_tag_list def genMultiThreadSeq(self, sql_list): @@ -872,21 +879,66 @@ class TDTestCase: for t in tlist: t.start() for t in tlist: - tlist[t].join() + t.join() def stbInsertMultiThreadCheckCase(self): """ thread input different stb """ input_sql = self.genSqlList()[0] - print(input_sql) self.multiThreadRun(self.genMultiThreadSeq(input_sql)) + tdSql.query(f"show tables;") + tdSql.checkRows(5) + + def sStbStbDdataInsertMultiThreadCheckCase(self): + """ + thread input same stb tb, different data, result keep first data + """ + input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) + self.resCmp(input_sql, stb_name) + s_stb_s_tb_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[1] + self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(1) + expected_tb_name = self.getNoIdTbName(stb_name)[0] + tdSql.checkEqual(tb_name, expected_tb_name) + + def sStbStbDdataAtcInsertMultiThreadCheckCase(self): + """ + thread input same stb tb, different data, add columes and tags, result keep first data + """ + input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) + self.resCmp(input_sql, stb_name) + s_stb_s_tb_a_col_a_tag_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[2] + print(s_stb_s_tb_a_col_a_tag_list) + self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_a_col_a_tag_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(1) + expected_tb_name = self.getNoIdTbName(stb_name)[0] + tdSql.checkEqual(tb_name, expected_tb_name) + + def sStbStbDdataMtcInsertMultiThreadCheckCase(self): + """ + thread input same stb tb, different data, add columes and tags, result keep first data + """ + self.cleanStb() + input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) + self.resCmp(input_sql, stb_name) + s_stb_s_tb_m_col_m_tag_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[3] + print(s_stb_s_tb_m_col_m_tag_list) + self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_m_col_m_tag_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(1) + expected_tb_name = self.getNoIdTbName(stb_name)[0] + tdSql.checkEqual(tb_name, expected_tb_name) def run(self): print("running {}".format(__file__)) tdSql.execute("drop database if exists test") tdSql.execute("create database if not exists test precision 'us'") tdSql.execute('use test') + + # tdSql.execute("create table super_table_cname_check (ts timestamp, pi1 int, pi2 bigint, pf1 float, pf2 double, ps1 binary(10), pi3 smallint, pi4 tinyint, pb1 bool, ps2 nchar(20)) tags (si1 int, si2 bigint, sf1 float, sf2 double, ss1 binary(10), si3 smallint, si4 tinyint, sb1 bool, ss2 nchar(20));") # tdSql.execute('create table st1 using super_table_cname_check tags (1, 2, 1.1, 2.2, "a", 1, 1, true, "aa");') # tdSql.execute('insert into st1 values (now, 1, 2, 1.1, 2.2, "a", 1, 1, true, "aa");') @@ -931,7 +983,9 @@ class TDTestCase: # self.batchErrorInsertCheckCase() self.stbInsertMultiThreadCheckCase() - + # self.sStbStbDdataInsertMultiThreadCheckCase() + # self.sStbStbDdataAtcInsertMultiThreadCheckCase() + self.sStbStbDdataMtcInsertMultiThreadCheckCase() From 63c9b2069e6755fff9ae7cec9e7a132af7be8f40 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Sat, 24 Jul 2021 19:39:20 +0800 Subject: [PATCH 12/64] add multi thread --- tests/pytest/insert/schemalessInsert.py | 182 ++++++++++++++++++++---- 1 file changed, 158 insertions(+), 24 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index b6b8f57829..a46aa40f0f 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -245,8 +245,12 @@ class TDTestCase: sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8},t11={t1},t10={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9},c11={c8},c10={t0} {ts}' if ct_am_tag is not None: sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9},c11={c8},c10={t0} {ts}' + if id_noexist_tag is not None: + sql_seq = f'{stb_name},t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6},c7={c7},c8={c8},c9={c9},c11={c8},c10={t0} {ts}' if ct_ma_tag is not None: sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8},t11={t1},t10={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6} {ts}' + if id_noexist_tag is not None: + sql_seq = f'{stb_name},t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8},t11={t1},t10={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6} {ts}' if ct_min_tag is not None: sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6} {ts}' return sql_seq, stb_name, tb_name @@ -326,15 +330,16 @@ class TDTestCase: def cleanStb(self): query_sql = "show stables" - res_row_list = self.resHandle(query_sql, True)[0] - print(res_row_list) - for stb in res_row_list: + res_row_list = tdSql.query(query_sql, True) + stb_list = map(lambda x: x[0], res_row_list) + for stb in stb_list: tdSql.execute(f'drop table if exists {stb}') def initCheckCase(self): """ normal tags and cols, one for every elm """ + self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql() self.resCmp(input_sql, stb_name) @@ -342,6 +347,7 @@ class TDTestCase: """ check all normal type """ + self.cleanStb() full_type_list = ["f", "F", "false", "False", "t", "T", "true", "True"] for t_type in full_type_list: input_sql, stb_name, tb_name = self.genFullTypeSql(c0=t_type, t0=t_type) @@ -355,6 +361,7 @@ class TDTestCase: please test : binary_symbols = '\"abcd`~!@#$%^&*()_-{[}]|:;<.>?lfjal"\'\'"\"' ''' + self.cleanStb() binary_symbols = '\"abcd`~!@#$%^&*()_-{[}]|:;<.>?lfjal"\"' nchar_symbols = f'L{binary_symbols}' input_sql, stb_name, tb_name = self.genFullTypeSql(c7=binary_symbols, c8=nchar_symbols, t7=binary_symbols, t8=nchar_symbols) @@ -365,6 +372,7 @@ class TDTestCase: test ts list --> ["1626006833639000000ns", "1626006833639019us", "1626006833640ms", "1626006834s", "1626006822639022"] # ! us级时间戳都为0时,数据库中查询显示,但python接口拿到的结果不显示 .000000的情况请确认,目前修改时间处理代码可以通过 """ + self.cleanStb() ts_list = ["1626006833639000000ns", "1626006833639019us", "1626006833640ms", "1626006834s", "1626006822639022", 0] for ts in ts_list: input_sql, stb_name, tb_name = self.genFullTypeSql(ts=ts) @@ -375,6 +383,7 @@ class TDTestCase: check id.index in tags eg: t0=**,id=**,t1=** """ + self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql(id_change_tag=True) self.resCmp(input_sql, stb_name) @@ -383,6 +392,7 @@ class TDTestCase: check id param eg: id and ID """ + self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql(id_upper_tag=True) self.resCmp(input_sql, stb_name) input_sql, stb_name, tb_name = self.genFullTypeSql(id_change_tag=True, id_upper_tag=True) @@ -392,6 +402,7 @@ class TDTestCase: """ id not exist """ + self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql(id_noexist_tag=True) self.resCmp(input_sql, stb_name) query_sql = f"select tbname from {stb_name}" @@ -408,6 +419,7 @@ class TDTestCase: max tag count is 128 max col count is ?? """ + self.cleanStb() input_sql, stb_name = self.genLongSql(128, 4000) print(input_sql) code = self._conn.insertLines([input_sql]) @@ -425,6 +437,7 @@ class TDTestCase: """ test illegal id name """ + self.cleanStb() rstr = list("!@#$%^&*()-+={}|[]\:<>?") for i in rstr: input_sql = self.genFullTypeSql(tb_name=f"\"aaa{i}bbb\"")[0] @@ -435,6 +448,7 @@ class TDTestCase: """ id is start with num """ + self.cleanStb() input_sql = self.genFullTypeSql(tb_name=f"\"1aaabbb\"")[0] code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) @@ -443,6 +457,7 @@ class TDTestCase: """ check now unsupported """ + self.cleanStb() input_sql = self.genFullTypeSql(ts="now")[0] code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) @@ -451,6 +466,7 @@ class TDTestCase: """ check date format ts unsupported """ + self.cleanStb() input_sql = self.genFullTypeSql(ts="2021-07-21\ 19:01:46.920")[0] code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) @@ -459,6 +475,7 @@ class TDTestCase: """ check ts format like 16260068336390us19 """ + self.cleanStb() input_sql = self.genFullTypeSql(ts="16260068336390us19")[0] code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) @@ -467,6 +484,7 @@ class TDTestCase: """ check full type tag value limit """ + self.cleanStb() # i8 for t1 in ["-127i8", "127i8"]: input_sql, stb_name, tb_name = self.genFullTypeSql(t1=t1) @@ -545,6 +563,7 @@ class TDTestCase: """ check full type col value limit """ + self.cleanStb() # i8 for c1 in ["-127i8", "127i8"]: input_sql, stb_name, tb_name = self.genFullTypeSql(c1=c1) @@ -628,6 +647,7 @@ class TDTestCase: """ test illegal tag col value """ + self.cleanStb() # bool for i in ["TrUe", "tRue", "trUe", "truE", "FalsE", "fAlse", "faLse", "falSe", "falsE"]: input_sql1 = self.genFullTypeSql(t0=i)[0] @@ -661,6 +681,7 @@ class TDTestCase: """ check duplicate Id Tag Col """ + self.cleanStb() input_sql_id = self.genFullTypeSql(id_double_tag=True)[0] code = self._conn.insertLines([input_sql_id]) tdSql.checkNotEqual(code, 0) @@ -687,6 +708,7 @@ class TDTestCase: """ case no id when stb exist """ + self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") self.resCmp(input_sql, stb_name) input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, id_noexist_tag=True, t0="f", c0="f") @@ -699,6 +721,7 @@ class TDTestCase: """ check duplicate insert when stb exist """ + self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql() self.resCmp(input_sql, stb_name) code = self._conn.insertLines([input_sql]) @@ -709,6 +732,7 @@ class TDTestCase: """ check length increase """ + self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql() self.resCmp(input_sql, stb_name) tb_name = self.getLongName(5, "letters") @@ -721,6 +745,7 @@ class TDTestCase: """ check column and tag count add, stb and tb duplicate """ + self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") print(input_sql) self.resCmp(input_sql, stb_name) @@ -732,6 +757,7 @@ class TDTestCase: """ check column and tag count add """ + self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") self.resCmp(input_sql, stb_name) input_sql, stb_name, tb_name_1 = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}_1', t0="f", c0="f", ct_add_tag=True) @@ -745,6 +771,7 @@ class TDTestCase: condition: stb not change insert two table, keep tag unchange, change col """ + self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f", id_noexist_tag=True) self.resCmp(input_sql, stb_name) tb_name1 = self.getNoIdTbName(stb_name) @@ -767,6 +794,7 @@ class TDTestCase: # ? case finish , src bug exist every binary and nchar must be length+2, so """ + self.cleanStb() stb_name = self.getLongName(7, "letters") tb_name = f'{stb_name}_1' input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' @@ -792,6 +820,10 @@ class TDTestCase: # ? tag nchar max is 16384, col+ts nchar max 49151 def tagColNcharMaxLengthCheckCase(self): + """ + # ? case finish , src bug exist + """ + self.cleanStb() stb_name = self.getLongName(7, "letters") tb_name = f'{stb_name}_1' input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' @@ -819,6 +851,7 @@ class TDTestCase: """ test batch insert """ + self.cleanStb() stb_name = self.getLongName(8, "letters") tdSql.execute(f'create stable {stb_name}(ts timestamp, f int) tags(t1 bigint)') lines = ["st123456,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000ns", @@ -839,6 +872,7 @@ class TDTestCase: """ test batch error insert """ + self.cleanStb() stb_name = self.getLongName(8, "letters") lines = ["st123456,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000ns", f"{stb_name},t2=5f64,t3=L\"ste\" c1=tRue,c2=4i64,c3=\"iam\" 1626056811823316532ns"] @@ -861,12 +895,22 @@ class TDTestCase: s_stb_s_tb_list = list() s_stb_s_tb_a_col_a_tag_list = list() s_stb_s_tb_m_col_m_tag_list = list() + s_stb_d_tb_list = list() + s_stb_d_tb_a_col_m_tag_list = list() + s_stb_d_tb_a_tag_m_col_list = list() + s_stb_s_tb_d_ts_list = list() for i in range(count): d_stb_d_tb_list.append(self.genFullTypeSql(t0="f", c0="f")) - s_stb_s_tb_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"')) - s_stb_s_tb_a_col_a_tag_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"', ct_add_tag=True)) - s_stb_s_tb_m_col_m_tag_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'{self.getLongName(8, "letters")}"', ct_min_tag=True)) - return d_stb_d_tb_list, s_stb_s_tb_list, s_stb_s_tb_a_col_a_tag_list, s_stb_s_tb_m_col_m_tag_list + s_stb_s_tb_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"')) + s_stb_s_tb_a_col_a_tag_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', ct_add_tag=True)) + s_stb_s_tb_m_col_m_tag_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', ct_min_tag=True)) + s_stb_d_tb_list.append(self.genFullTypeSql(stb_name=stb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', id_noexist_tag=True)) + s_stb_d_tb_a_col_m_tag_list.append(self.genFullTypeSql(stb_name=stb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', id_noexist_tag=True, ct_am_tag=True)) + s_stb_d_tb_a_tag_m_col_list.append(self.genFullTypeSql(stb_name=stb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', id_noexist_tag=True, ct_ma_tag=True)) + s_stb_s_tb_d_ts_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', ts=0)) + + return d_stb_d_tb_list, s_stb_s_tb_list, s_stb_s_tb_a_col_a_tag_list, s_stb_s_tb_m_col_m_tag_list, s_stb_d_tb_list, s_stb_d_tb_a_col_m_tag_list, s_stb_d_tb_a_tag_m_col_list, s_stb_s_tb_d_ts_list + def genMultiThreadSeq(self, sql_list): tlist = list() @@ -885,6 +929,7 @@ class TDTestCase: """ thread input different stb """ + self.cleanStb() input_sql = self.genSqlList()[0] self.multiThreadRun(self.genMultiThreadSeq(input_sql)) tdSql.query(f"show tables;") @@ -894,6 +939,7 @@ class TDTestCase: """ thread input same stb tb, different data, result keep first data """ + self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) self.resCmp(input_sql, stb_name) s_stb_s_tb_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[1] @@ -902,35 +948,110 @@ class TDTestCase: tdSql.checkRows(1) expected_tb_name = self.getNoIdTbName(stb_name)[0] tdSql.checkEqual(tb_name, expected_tb_name) + tdSql.query(f"select * from {stb_name};") + tdSql.checkRows(1) def sStbStbDdataAtcInsertMultiThreadCheckCase(self): - """ - thread input same stb tb, different data, add columes and tags, result keep first data - """ - input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) - self.resCmp(input_sql, stb_name) - s_stb_s_tb_a_col_a_tag_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[2] - print(s_stb_s_tb_a_col_a_tag_list) - self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_a_col_a_tag_list)) - tdSql.query(f"show tables;") - tdSql.checkRows(1) - expected_tb_name = self.getNoIdTbName(stb_name)[0] - tdSql.checkEqual(tb_name, expected_tb_name) - - def sStbStbDdataMtcInsertMultiThreadCheckCase(self): """ thread input same stb tb, different data, add columes and tags, result keep first data """ self.cleanStb() input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) self.resCmp(input_sql, stb_name) + s_stb_s_tb_a_col_a_tag_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[2] + self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_a_col_a_tag_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(1) + expected_tb_name = self.getNoIdTbName(stb_name)[0] + tdSql.checkEqual(tb_name, expected_tb_name) + tdSql.query(f"select * from {stb_name};") + tdSql.checkRows(1) + + def sStbStbDdataMtcInsertMultiThreadCheckCase(self): + """ + thread input same stb tb, different data, minus columes and tags, result keep first data + """ + self.cleanStb() + input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) + self.resCmp(input_sql, stb_name) s_stb_s_tb_m_col_m_tag_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[3] - print(s_stb_s_tb_m_col_m_tag_list) self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_m_col_m_tag_list)) tdSql.query(f"show tables;") tdSql.checkRows(1) expected_tb_name = self.getNoIdTbName(stb_name)[0] tdSql.checkEqual(tb_name, expected_tb_name) + tdSql.query(f"select * from {stb_name};") + tdSql.checkRows(1) + + def sStbDtbDdataInsertMultiThreadCheckCase(self): + """ + thread input same stb, different tb, different data + """ + self.cleanStb() + input_sql, stb_name, tb_name = self.genFullTypeSql() + self.resCmp(input_sql, stb_name) + s_stb_d_tb_list = self.genSqlList(stb_name=stb_name)[4] + self.multiThreadRun(self.genMultiThreadSeq(s_stb_d_tb_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(6) + + def sStbDtbDdataAcMtInsertMultiThreadCheckCase(self): + """ + #! concurrency conflict + """ + """ + thread input same stb, different tb, different data, add col, mul tag + """ + self.cleanStb() + input_sql, stb_name, tb_name = self.genFullTypeSql() + self.resCmp(input_sql, stb_name) + s_stb_d_tb_a_col_m_tag_list = self.genSqlList(stb_name=stb_name)[5] + self.multiThreadRun(self.genMultiThreadSeq(s_stb_d_tb_a_col_m_tag_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(6) + + def sStbDtbDdataAtMcInsertMultiThreadCheckCase(self): + """ + #! concurrency conflict + """ + """ + thread input same stb, different tb, different data, add tag, mul col + """ + self.cleanStb() + input_sql, stb_name, tb_name = self.genFullTypeSql() + self.resCmp(input_sql, stb_name) + s_stb_d_tb_a_tag_m_col_list = self.genSqlList(stb_name=stb_name)[6] + self.multiThreadRun(self.genMultiThreadSeq(s_stb_d_tb_a_tag_m_col_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(6) + + def sStbStbDdataDtsInsertMultiThreadCheckCase(self): + """ + thread input same stb tb, different ts + """ + self.cleanStb() + input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) + self.resCmp(input_sql, stb_name) + s_stb_s_tb_d_ts_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[7] + print(s_stb_s_tb_d_ts_list) + self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_d_ts_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(1) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(6) + + + + def test(self): + input_sql1 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharTagValue\",c9=7u64 1626006833639000000ns" + + input_sql2 = "rfasta,t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharColValue\",c9=7u64 1626006833639000000ns" + input_sql3 = 'hmemeb,id="kilrcrldgf",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' + input_sql4 = 'hmemeb,id="kilrcrldgf",t0=F,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="fysodjql",t8=L"ncharTagValue" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="waszbfvc",c8=L"ncharColValue",c9=7u64 0' + + + self._conn.insertLines([input_sql3]) + self._conn.insertLines([input_sql4]) def run(self): print("running {}".format(__file__)) @@ -982,10 +1103,23 @@ class TDTestCase: # ! bug # self.batchErrorInsertCheckCase() - self.stbInsertMultiThreadCheckCase() + # self.stbInsertMultiThreadCheckCase() # self.sStbStbDdataInsertMultiThreadCheckCase() # self.sStbStbDdataAtcInsertMultiThreadCheckCase() - self.sStbStbDdataMtcInsertMultiThreadCheckCase() + # self.sStbStbDdataMtcInsertMultiThreadCheckCase() + # self.sStbDtbDdataInsertMultiThreadCheckCase() + + # ! concurrency conflict + # self.sStbDtbDdataAcMtInsertMultiThreadCheckCase() + # self.sStbDtbDdataAtMcInsertMultiThreadCheckCase() + # ! concurrency conflict + + # self.sStbStbDdataDtsInsertMultiThreadCheckCase() + # self.test() + + + + From f07b4f55dd4ad3583fddf8fff4b806f902118cb5 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 26 Jul 2021 01:14:53 +0800 Subject: [PATCH 13/64] save --- tests/pytest/insert/schemalessInsert.py | 56 ++++++++++++++++--------- 1 file changed, 37 insertions(+), 19 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index a46aa40f0f..3defdcaa62 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -412,22 +412,25 @@ class TDTestCase: else: tdSql.checkColNameList(res_row_list, "please check noIdCheckCase") - # ! bug - # TODO confirm!!! def maxColTagCheckCase(self): """ max tag count is 128 max col count is ?? """ - self.cleanStb() - input_sql, stb_name = self.genLongSql(128, 4000) - print(input_sql) - code = self._conn.insertLines([input_sql]) - print("insertLines result {}".format(code)) - query_sql = f"describe {stb_name}" - insert_tag_col_num = len(self.resHandle(query_sql, True)[0]) - expected_num = 128 + 1023 + 1 - tdSql.checkEqual(insert_tag_col_num, expected_num) + for input_sql in [self.genLongSql(128, 1)[0], self.genLongSql(1, 4094)[0]]: + self.cleanStb() + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + for input_sql in [self.genLongSql(129, 1)[0], self.genLongSql(1, 4095)[0]]: + self.cleanStb() + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + # print("insertLines result {}".format(code)) + # query_sql = f"describe {stb_name}" + # insert_tag_col_num = len(self.resHandle(query_sql, True)[0]) + # expected_num = 128 + 1023 + 1 + # tdSql.checkEqual(insert_tag_col_num, expected_num) # input_sql, stb_name = self.genLongSql(128, 1500) # code = self._conn.insertLines([input_sql]) @@ -574,7 +577,6 @@ class TDTestCase: print(input_sql) code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) - # i16 for c2 in ["-32767i16"]: input_sql, stb_name, tb_name = self.genFullTypeSql(c2=c2) @@ -867,6 +869,20 @@ class TDTestCase: code = self._conn.insertLines(lines) tdSql.checkEqual(code, 0) + def multiInsertCheckCase(self, count): + """ + test multi insert + """ + self.cleanStb() + sql_list = [] + stb_name = self.getLongName(8, "letters") + tdSql.execute(f'create stable {stb_name}(ts timestamp, f int) tags(t1 bigint)') + for i in range(count): + input_sql = self.genFullTypeSql(stb_name=stb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', id_noexist_tag=True)[0] + sql_list.append(input_sql) + code = self._conn.insertLines(sql_list) + tdSql.checkEqual(code, 0) + # ! bug def batchErrorInsertCheckCase(self): """ @@ -877,7 +893,7 @@ class TDTestCase: lines = ["st123456,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000ns", f"{stb_name},t2=5f64,t3=L\"ste\" c1=tRue,c2=4i64,c3=\"iam\" 1626056811823316532ns"] code = self._conn.insertLines(lines) - # tdSql.checkEqual(code, 0) + tdSql.checkNotEqual(code, 0) def genSqlList(self, count=5, stb_name="", tb_name=""): """ @@ -1046,12 +1062,14 @@ class TDTestCase: input_sql1 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharTagValue\",c9=7u64 1626006833639000000ns" input_sql2 = "rfasta,t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharColValue\",c9=7u64 1626006833639000000ns" - input_sql3 = 'hmemeb,id="kilrcrldgf",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' - input_sql4 = 'hmemeb,id="kilrcrldgf",t0=F,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="fysodjql",t8=L"ncharTagValue" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="waszbfvc",c8=L"ncharColValue",c9=7u64 0' + input_sql3 = f'ab*cd,id="ccc",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' + print(input_sql3) + # input_sql4 = 'hmemeb,id="kilrcrldgf",t0=F,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="fysodjql",t8=L"ncharTagValue" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="waszbfvc",c8=L"ncharColValue",c9=7u64 0' - self._conn.insertLines([input_sql3]) - self._conn.insertLines([input_sql4]) + code = self._conn.insertLines([input_sql3]) + print(code) + # self._conn.insertLines([input_sql4]) def run(self): print("running {}".format(__file__)) @@ -1071,7 +1089,7 @@ class TDTestCase: # self.idSeqCheckCase() # self.idUpperCheckCase() # self.noIdCheckCase() - # self.maxColTagCheckCase() + self.maxColTagCheckCase() # self.idIllegalNameCheckCase() # self.idStartWithNumCheckCase() # self.nowTsCheckCase() @@ -1099,7 +1117,7 @@ class TDTestCase: # self.tagColNcharMaxLengthCheckCase() # self.batchInsertCheckCase() - + # self.multiInsertCheckCase(5000) # ! bug # self.batchErrorInsertCheckCase() From fc732c29fb3b37f9998f5f54ec6274a095b227ce Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 26 Jul 2021 10:05:33 +0800 Subject: [PATCH 14/64] save --- tests/pytest/insert/schemalessInsert.py | 260 ++++++++++++------------ 1 file changed, 130 insertions(+), 130 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 3defdcaa62..5b0314b6fb 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -488,78 +488,78 @@ class TDTestCase: check full type tag value limit """ self.cleanStb() - # i8 - for t1 in ["-127i8", "127i8"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t1=t1) - self.resCmp(input_sql, stb_name) - for t1 in ["-128i8", "128i8"]: - input_sql = self.genFullTypeSql(t1=t1)[0] - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # # i8 + # for t1 in ["-127i8", "127i8"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(t1=t1) + # self.resCmp(input_sql, stb_name) + # for t1 in ["-128i8", "128i8"]: + # input_sql = self.genFullTypeSql(t1=t1)[0] + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) - #i16 - for t2 in ["-32767i16", "32767i16"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t2=t2) - self.resCmp(input_sql, stb_name) - for t2 in ["-32768i16", "32768i16"]: - input_sql = self.genFullTypeSql(t2=t2)[0] - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # #i16 + # for t2 in ["-32767i16", "32767i16"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(t2=t2) + # self.resCmp(input_sql, stb_name) + # for t2 in ["-32768i16", "32768i16"]: + # input_sql = self.genFullTypeSql(t2=t2)[0] + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) - #i32 - for t3 in ["-2147483647i32", "2147483647i32"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t3=t3) - self.resCmp(input_sql, stb_name) - for t3 in ["-2147483648i32", "2147483648i32"]: - input_sql = self.genFullTypeSql(t3=t3)[0] - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # #i32 + # for t3 in ["-2147483647i32", "2147483647i32"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(t3=t3) + # self.resCmp(input_sql, stb_name) + # for t3 in ["-2147483648i32", "2147483648i32"]: + # input_sql = self.genFullTypeSql(t3=t3)[0] + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) - #i64 - for t4 in ["-9223372036854775807i64", "9223372036854775807i64"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t4=t4) - self.resCmp(input_sql, stb_name) - for t4 in ["-9223372036854775808i64", "9223372036854775808i64"]: - input_sql = self.genFullTypeSql(t4=t4)[0] - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # #i64 + # for t4 in ["-9223372036854775807i64", "9223372036854775807i64"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(t4=t4) + # self.resCmp(input_sql, stb_name) + # for t4 in ["-9223372036854775808i64", "9223372036854775808i64"]: + # input_sql = self.genFullTypeSql(t4=t4)[0] + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) - # f32 - for t5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t5=t5) - self.resCmp(input_sql, stb_name) - # * limit set to 4028234664*(10**38) - for t5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: - input_sql = self.genFullTypeSql(t5=t5)[0] - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # # f32 + # for t5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(t5=t5) + # self.resCmp(input_sql, stb_name) + # # * limit set to 4028234664*(10**38) + # for t5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: + # input_sql = self.genFullTypeSql(t5=t5)[0] + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) # f64 #!bug stack smashing detected ***: terminated Aborted - #for t6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: - # for t6 in [f'{-1.79769*(10**308)}f64', f'{-1.79769*(10**308)}f64']: - # print("f64?") - # input_sql, stb_name, tb_name = self.genFullTypeSql(t6=t6) - # self.resCmp(input_sql, stb_name) + # for t6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: + for t6 in [f'{-1.79769*(10**308)}f64', f'{-1.79769*(10**308)}f64']: + print("f64?") + input_sql, stb_name, tb_name = self.genFullTypeSql(t6=t6) + self.resCmp(input_sql, stb_name) # TODO to confirm length - # binary - stb_name = self.getLongName(7, "letters") - input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}" c0=f 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - tdSql.checkEqual(code, 0) - input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16375, "letters")}" c0=f 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # # binary + # stb_name = self.getLongName(7, "letters") + # input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}" c0=f 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # tdSql.checkEqual(code, 0) + # input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16375, "letters")}" c0=f 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) - # nchar - # * legal nchar could not be larger than 16374/4 - stb_name = self.getLongName(7, "letters") - input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}" c0=f 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - tdSql.checkEqual(code, 0) - input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4094, "letters")}" c0=f 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # # nchar + # # * legal nchar could not be larger than 16374/4 + # stb_name = self.getLongName(7, "letters") + # input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}" c0=f 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # tdSql.checkEqual(code, 0) + # input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4094, "letters")}" c0=f 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) def colValueLengthCheckCase(self): @@ -567,82 +567,82 @@ class TDTestCase: check full type col value limit """ self.cleanStb() - # i8 - for c1 in ["-127i8", "127i8"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(c1=c1) - self.resCmp(input_sql, stb_name) + # # i8 + # for c1 in ["-127i8", "127i8"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(c1=c1) + # self.resCmp(input_sql, stb_name) - for c1 in ["-128i8", "128i8"]: - input_sql = self.genFullTypeSql(c1=c1)[0] - print(input_sql) - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) - # i16 - for c2 in ["-32767i16"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(c2=c2) - self.resCmp(input_sql, stb_name) - for c2 in ["-32768i16", "32768i16"]: - input_sql = self.genFullTypeSql(c2=c2)[0] - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # for c1 in ["-128i8", "128i8"]: + # input_sql = self.genFullTypeSql(c1=c1)[0] + # print(input_sql) + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) + # # i16 + # for c2 in ["-32767i16"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(c2=c2) + # self.resCmp(input_sql, stb_name) + # for c2 in ["-32768i16", "32768i16"]: + # input_sql = self.genFullTypeSql(c2=c2)[0] + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) - # i32 - for c3 in ["-2147483647i32"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(c3=c3) - self.resCmp(input_sql, stb_name) - for c3 in ["-2147483648i32", "2147483648i32"]: - input_sql = self.genFullTypeSql(c3=c3)[0] - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # # i32 + # for c3 in ["-2147483647i32"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(c3=c3) + # self.resCmp(input_sql, stb_name) + # for c3 in ["-2147483648i32", "2147483648i32"]: + # input_sql = self.genFullTypeSql(c3=c3)[0] + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) - # i64 - for c4 in ["-9223372036854775807i64"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(c4=c4) - self.resCmp(input_sql, stb_name) - for c4 in ["-9223372036854775808i64", "9223372036854775808i64"]: - input_sql = self.genFullTypeSql(c4=c4)[0] - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # # i64 + # for c4 in ["-9223372036854775807i64"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(c4=c4) + # self.resCmp(input_sql, stb_name) + # for c4 in ["-9223372036854775808i64", "9223372036854775808i64"]: + # input_sql = self.genFullTypeSql(c4=c4)[0] + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) - # f32 - for c5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(c5=c5) - self.resCmp(input_sql, stb_name) - # * limit set to 4028234664*(10**38) - for c5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: - input_sql = self.genFullTypeSql(c5=c5)[0] - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # # f32 + # for c5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: + # input_sql, stb_name, tb_name = self.genFullTypeSql(c5=c5) + # self.resCmp(input_sql, stb_name) + # # * limit set to 4028234664*(10**38) + # for c5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: + # input_sql = self.genFullTypeSql(c5=c5)[0] + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) - # f64 - for c6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: - input_sql, stb_name, tb_name = self.genFullTypeSql(c6=c6) - self.resCmp(input_sql, stb_name) - # * limit set to 1.797693134862316*(10**308) - for c6 in [f'{-1.797693134862316*(10**308)}f64', f'{-1.797693134862316*(10**308)}f64']: - input_sql = self.genFullTypeSql(c6=c6)[0] - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # # f64 + # for c6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: + # input_sql, stb_name, tb_name = self.genFullTypeSql(c6=c6) + # self.resCmp(input_sql, stb_name) + # # * limit set to 1.797693134862316*(10**308) + # for c6 in [f'{-1.797693134862316*(10**308)}f64', f'{-1.797693134862316*(10**308)}f64']: + # input_sql = self.genFullTypeSql(c6=c6)[0] + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) - # binary + # # binary stb_name = self.getLongName(7, "letters") - input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}" 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - tdSql.checkEqual(code, 0) - # ! bug code is 0 - # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16375, "letters")}" 1626006833639000000ns' + # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}" 1626006833639000000ns' # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + # tdSql.checkEqual(code, 0) + # ! bug code is 0 + input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16375, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) # nchar # * legal nchar could not be larger than 16374/4 - stb_name = self.getLongName(7, "letters") - input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4093, "letters")}" 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - tdSql.checkEqual(code, 0) - input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4094, "letters")}" 1626006833639000000ns' - code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # stb_name = self.getLongName(7, "letters") + # input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4093, "letters")}" 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # tdSql.checkEqual(code, 0) + # input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4094, "letters")}" 1626006833639000000ns' + # code = self._conn.insertLines([input_sql]) + # tdSql.checkNotEqual(code, 0) def tagColIllegalValueCheckCase(self): @@ -1089,7 +1089,7 @@ class TDTestCase: # self.idSeqCheckCase() # self.idUpperCheckCase() # self.noIdCheckCase() - self.maxColTagCheckCase() + # self.maxColTagCheckCase() # self.idIllegalNameCheckCase() # self.idStartWithNumCheckCase() # self.nowTsCheckCase() @@ -1100,7 +1100,7 @@ class TDTestCase: # self.tagValueLengthCheckCase() # ! bug - # self.colValueLengthCheckCase() + self.colValueLengthCheckCase() # self.tagColIllegalValueCheckCase() From 2fd97729db73446385d0d15b5ae5ed7c221167ca Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 26 Jul 2021 10:13:29 +0800 Subject: [PATCH 15/64] save --- tests/pytest/insert/schemalessInsert.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 5b0314b6fb..d46ec49b14 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -626,9 +626,9 @@ class TDTestCase: # # binary stb_name = self.getLongName(7, "letters") - # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}" 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # tdSql.checkEqual(code, 0) + input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) # ! bug code is 0 input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16375, "letters")}" 1626006833639000000ns' code = self._conn.insertLines([input_sql]) From c3549d245d81635ddcc0ab87922b34780e528dbd Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 26 Jul 2021 10:19:34 +0800 Subject: [PATCH 16/64] save --- tests/pytest/insert/schemalessInsert.py | 125 ++++++++++++------------ 1 file changed, 65 insertions(+), 60 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index d46ec49b14..16727b099d 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -488,51 +488,51 @@ class TDTestCase: check full type tag value limit """ self.cleanStb() - # # i8 - # for t1 in ["-127i8", "127i8"]: - # input_sql, stb_name, tb_name = self.genFullTypeSql(t1=t1) - # self.resCmp(input_sql, stb_name) - # for t1 in ["-128i8", "128i8"]: - # input_sql = self.genFullTypeSql(t1=t1)[0] - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + # i8 + for t1 in ["-127i8", "127i8"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t1=t1) + self.resCmp(input_sql, stb_name) + for t1 in ["-128i8", "128i8"]: + input_sql = self.genFullTypeSql(t1=t1)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) - # #i16 - # for t2 in ["-32767i16", "32767i16"]: - # input_sql, stb_name, tb_name = self.genFullTypeSql(t2=t2) - # self.resCmp(input_sql, stb_name) - # for t2 in ["-32768i16", "32768i16"]: - # input_sql = self.genFullTypeSql(t2=t2)[0] - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + #i16 + for t2 in ["-32767i16", "32767i16"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t2=t2) + self.resCmp(input_sql, stb_name) + for t2 in ["-32768i16", "32768i16"]: + input_sql = self.genFullTypeSql(t2=t2)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) - # #i32 - # for t3 in ["-2147483647i32", "2147483647i32"]: - # input_sql, stb_name, tb_name = self.genFullTypeSql(t3=t3) - # self.resCmp(input_sql, stb_name) - # for t3 in ["-2147483648i32", "2147483648i32"]: - # input_sql = self.genFullTypeSql(t3=t3)[0] - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + #i32 + for t3 in ["-2147483647i32", "2147483647i32"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t3=t3) + self.resCmp(input_sql, stb_name) + for t3 in ["-2147483648i32", "2147483648i32"]: + input_sql = self.genFullTypeSql(t3=t3)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) - # #i64 - # for t4 in ["-9223372036854775807i64", "9223372036854775807i64"]: - # input_sql, stb_name, tb_name = self.genFullTypeSql(t4=t4) - # self.resCmp(input_sql, stb_name) - # for t4 in ["-9223372036854775808i64", "9223372036854775808i64"]: - # input_sql = self.genFullTypeSql(t4=t4)[0] - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + #i64 + for t4 in ["-9223372036854775807i64", "9223372036854775807i64"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t4=t4) + self.resCmp(input_sql, stb_name) + for t4 in ["-9223372036854775808i64", "9223372036854775808i64"]: + input_sql = self.genFullTypeSql(t4=t4)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) - # # f32 - # for t5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: - # input_sql, stb_name, tb_name = self.genFullTypeSql(t5=t5) - # self.resCmp(input_sql, stb_name) - # # * limit set to 4028234664*(10**38) - # for t5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: - # input_sql = self.genFullTypeSql(t5=t5)[0] - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + # f32 + for t5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(t5=t5) + self.resCmp(input_sql, stb_name) + # * limit set to 4028234664*(10**38) + for t5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: + input_sql = self.genFullTypeSql(t5=t5)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) # f64 #!bug stack smashing detected ***: terminated Aborted # for t6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: @@ -541,25 +541,30 @@ class TDTestCase: input_sql, stb_name, tb_name = self.genFullTypeSql(t6=t6) self.resCmp(input_sql, stb_name) # TODO to confirm length + # * limit set to 1.797693134862316*(10**308) + for c6 in [f'{-1.797693134862316*(10**308)}f64', f'{-1.797693134862316*(10**308)}f64']: + input_sql = self.genFullTypeSql(c6=c6)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) - # # binary - # stb_name = self.getLongName(7, "letters") - # input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}" c0=f 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # tdSql.checkEqual(code, 0) - # input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16375, "letters")}" c0=f 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + # binary + stb_name = self.getLongName(7, "letters") + input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16375, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) - # # nchar - # # * legal nchar could not be larger than 16374/4 - # stb_name = self.getLongName(7, "letters") - # input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}" c0=f 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # tdSql.checkEqual(code, 0) - # input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4094, "letters")}" c0=f 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + # nchar + # * legal nchar could not be larger than 16374/4 + stb_name = self.getLongName(7, "letters") + input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4094, "letters")}" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) def colValueLengthCheckCase(self): @@ -1097,10 +1102,10 @@ class TDTestCase: # self.illegalTsCheckCase() # ! confirm double - # self.tagValueLengthCheckCase() + self.tagValueLengthCheckCase() # ! bug - self.colValueLengthCheckCase() + # self.colValueLengthCheckCase() # self.tagColIllegalValueCheckCase() From 2d12fb24620ede217c138204d391e167e3ce25d5 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 26 Jul 2021 10:38:15 +0800 Subject: [PATCH 17/64] save --- tests/pytest/insert/schemalessInsert.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 16727b099d..08d775d72e 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -1102,10 +1102,10 @@ class TDTestCase: # self.illegalTsCheckCase() # ! confirm double - self.tagValueLengthCheckCase() + # self.tagValueLengthCheckCase() # ! bug - # self.colValueLengthCheckCase() + self.colValueLengthCheckCase() # self.tagColIllegalValueCheckCase() From 9eb31d3f4773be754dc0bb8395417e22b67ac0b4 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 26 Jul 2021 10:45:00 +0800 Subject: [PATCH 18/64] save --- tests/pytest/insert/schemalessInsert.py | 120 ++++++++++++------------ 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 08d775d72e..0ee22de6c1 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -534,7 +534,7 @@ class TDTestCase: code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) - # f64 #!bug stack smashing detected ***: terminated Aborted + # f64 # * bug stack smashing detected ***: terminated Aborted --- fixed # for t6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: for t6 in [f'{-1.79769*(10**308)}f64', f'{-1.79769*(10**308)}f64']: print("f64?") @@ -572,82 +572,82 @@ class TDTestCase: check full type col value limit """ self.cleanStb() - # # i8 - # for c1 in ["-127i8", "127i8"]: - # input_sql, stb_name, tb_name = self.genFullTypeSql(c1=c1) - # self.resCmp(input_sql, stb_name) + # i8 + for c1 in ["-127i8", "127i8"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(c1=c1) + self.resCmp(input_sql, stb_name) - # for c1 in ["-128i8", "128i8"]: - # input_sql = self.genFullTypeSql(c1=c1)[0] - # print(input_sql) - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) - # # i16 - # for c2 in ["-32767i16"]: - # input_sql, stb_name, tb_name = self.genFullTypeSql(c2=c2) - # self.resCmp(input_sql, stb_name) - # for c2 in ["-32768i16", "32768i16"]: - # input_sql = self.genFullTypeSql(c2=c2)[0] - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + for c1 in ["-128i8", "128i8"]: + input_sql = self.genFullTypeSql(c1=c1)[0] + print(input_sql) + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + # i16 + for c2 in ["-32767i16"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(c2=c2) + self.resCmp(input_sql, stb_name) + for c2 in ["-32768i16", "32768i16"]: + input_sql = self.genFullTypeSql(c2=c2)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) - # # i32 - # for c3 in ["-2147483647i32"]: - # input_sql, stb_name, tb_name = self.genFullTypeSql(c3=c3) - # self.resCmp(input_sql, stb_name) - # for c3 in ["-2147483648i32", "2147483648i32"]: - # input_sql = self.genFullTypeSql(c3=c3)[0] - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + # i32 + for c3 in ["-2147483647i32"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(c3=c3) + self.resCmp(input_sql, stb_name) + for c3 in ["-2147483648i32", "2147483648i32"]: + input_sql = self.genFullTypeSql(c3=c3)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) - # # i64 - # for c4 in ["-9223372036854775807i64"]: - # input_sql, stb_name, tb_name = self.genFullTypeSql(c4=c4) - # self.resCmp(input_sql, stb_name) - # for c4 in ["-9223372036854775808i64", "9223372036854775808i64"]: - # input_sql = self.genFullTypeSql(c4=c4)[0] - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + # i64 + for c4 in ["-9223372036854775807i64"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(c4=c4) + self.resCmp(input_sql, stb_name) + for c4 in ["-9223372036854775808i64", "9223372036854775808i64"]: + input_sql = self.genFullTypeSql(c4=c4)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) - # # f32 - # for c5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: - # input_sql, stb_name, tb_name = self.genFullTypeSql(c5=c5) - # self.resCmp(input_sql, stb_name) - # # * limit set to 4028234664*(10**38) - # for c5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: - # input_sql = self.genFullTypeSql(c5=c5)[0] - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + # f32 + for c5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: + input_sql, stb_name, tb_name = self.genFullTypeSql(c5=c5) + self.resCmp(input_sql, stb_name) + # * limit set to 4028234664*(10**38) + for c5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: + input_sql = self.genFullTypeSql(c5=c5)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) - # # f64 - # for c6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: - # input_sql, stb_name, tb_name = self.genFullTypeSql(c6=c6) - # self.resCmp(input_sql, stb_name) - # # * limit set to 1.797693134862316*(10**308) - # for c6 in [f'{-1.797693134862316*(10**308)}f64', f'{-1.797693134862316*(10**308)}f64']: - # input_sql = self.genFullTypeSql(c6=c6)[0] - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + # f64 + for c6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: + input_sql, stb_name, tb_name = self.genFullTypeSql(c6=c6) + self.resCmp(input_sql, stb_name) + # * limit set to 1.797693134862316*(10**308) + for c6 in [f'{-1.797693134862316*(10**308)}f64', f'{-1.797693134862316*(10**308)}f64']: + input_sql = self.genFullTypeSql(c6=c6)[0] + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) # # binary stb_name = self.getLongName(7, "letters") input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}" 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) - # ! bug code is 0 + # * bug code is 0 ----- fixed input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16375, "letters")}" 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) # nchar # * legal nchar could not be larger than 16374/4 - # stb_name = self.getLongName(7, "letters") - # input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4093, "letters")}" 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # tdSql.checkEqual(code, 0) - # input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4094, "letters")}" 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # tdSql.checkNotEqual(code, 0) + stb_name = self.getLongName(7, "letters") + input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4093, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4094, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) def tagColIllegalValueCheckCase(self): From 909ff0b2a142471ce8130bf594688175e748691a Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 26 Jul 2021 13:53:25 +0800 Subject: [PATCH 19/64] save --- tests/pytest/insert/schemalessInsert.py | 72 ++++++++++++++----------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 0ee22de6c1..6658f43429 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -371,10 +371,12 @@ class TDTestCase: """ test ts list --> ["1626006833639000000ns", "1626006833639019us", "1626006833640ms", "1626006834s", "1626006822639022"] # ! us级时间戳都为0时,数据库中查询显示,但python接口拿到的结果不显示 .000000的情况请确认,目前修改时间处理代码可以通过 + # ! case bug """ self.cleanStb() ts_list = ["1626006833639000000ns", "1626006833639019us", "1626006833640ms", "1626006834s", "1626006822639022", 0] for ts in ts_list: + print(ts) input_sql, stb_name, tb_name = self.genFullTypeSql(ts=ts) self.resCmp(input_sql, stb_name, ts) @@ -747,7 +749,7 @@ class TDTestCase: self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') # ! use tb_name - # ! bug + # ! need to improve 目前输出未校验 def tagColAddDupIDCheckCase(self): """ check column and tag count add, stb and tb duplicate @@ -758,7 +760,7 @@ class TDTestCase: self.resCmp(input_sql, stb_name) input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}', t0="f", c0="f", ct_add_tag=True) print(input_sql) - self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') + # self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') def tagColAddCheckCase(self): """ @@ -1067,7 +1069,7 @@ class TDTestCase: input_sql1 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharTagValue\",c9=7u64 1626006833639000000ns" input_sql2 = "rfasta,t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharColValue\",c9=7u64 1626006833639000000ns" - input_sql3 = f'ab*cd,id="ccc",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' + input_sql3 = f'abcd,id="cc$Ec",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' print(input_sql3) # input_sql4 = 'hmemeb,id="kilrcrldgf",t0=F,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="fysodjql",t8=L"ncharTagValue" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="waszbfvc",c8=L"ncharColValue",c9=7u64 0' @@ -1087,50 +1089,56 @@ class TDTestCase: # tdSql.execute('create table st1 using super_table_cname_check tags (1, 2, 1.1, 2.2, "a", 1, 1, true, "aa");') # tdSql.execute('insert into st1 values (now, 1, 2, 1.1, 2.2, "a", 1, 1, true, "aa");') - # self.initCheckCase() - # self.boolTypeCheckCase() - # self.symbolsCheckCase() + self.initCheckCase() + self.boolTypeCheckCase() + self.symbolsCheckCase() + # ! case bug # self.tsCheckCase() - # self.idSeqCheckCase() - # self.idUpperCheckCase() - # self.noIdCheckCase() - # self.maxColTagCheckCase() - # self.idIllegalNameCheckCase() - # self.idStartWithNumCheckCase() - # self.nowTsCheckCase() - # self.dateFormatTsCheckCase() - # self.illegalTsCheckCase() + self.idSeqCheckCase() + self.idUpperCheckCase() + self.noIdCheckCase() + self.maxColTagCheckCase() + self.idIllegalNameCheckCase() + self.idStartWithNumCheckCase() + self.nowTsCheckCase() + self.dateFormatTsCheckCase() + self.illegalTsCheckCase() # ! confirm double # self.tagValueLengthCheckCase() # ! bug - self.colValueLengthCheckCase() + # self.colValueLengthCheckCase() - # self.tagColIllegalValueCheckCase() + self.tagColIllegalValueCheckCase() + # ! 重复ID未合并 # self.duplicateIdTagColInsertCheckCase() - # self.noIdStbExistCheckCase() - # self.duplicateInsertExistCheckCase() - # self.tagColBinaryNcharLengthCheckCase() - # self.tagColAddDupIDCheckCase() - # self.tagColAddCheckCase() - # self.tagMd5Check() + + self.noIdStbExistCheckCase() + self.duplicateInsertExistCheckCase() + self.tagColBinaryNcharLengthCheckCase() + + # ! 结果未校验 + self.tagColAddDupIDCheckCase() + + self.tagColAddCheckCase() + self.tagMd5Check() # ! rollback bug - # self.tagColBinaryMaxLengthCheckCase() - # self.tagColNcharMaxLengthCheckCase() + self.tagColBinaryMaxLengthCheckCase() + self.tagColNcharMaxLengthCheckCase() - # self.batchInsertCheckCase() + self.batchInsertCheckCase() # self.multiInsertCheckCase(5000) # ! bug - # self.batchErrorInsertCheckCase() + self.batchErrorInsertCheckCase() - # self.stbInsertMultiThreadCheckCase() - # self.sStbStbDdataInsertMultiThreadCheckCase() - # self.sStbStbDdataAtcInsertMultiThreadCheckCase() - # self.sStbStbDdataMtcInsertMultiThreadCheckCase() - # self.sStbDtbDdataInsertMultiThreadCheckCase() + self.stbInsertMultiThreadCheckCase() + self.sStbStbDdataInsertMultiThreadCheckCase() + self.sStbStbDdataAtcInsertMultiThreadCheckCase() + self.sStbStbDdataMtcInsertMultiThreadCheckCase() + self.sStbDtbDdataInsertMultiThreadCheckCase() # ! concurrency conflict # self.sStbDtbDdataAcMtInsertMultiThreadCheckCase() From 361e9f81d62f6152bfe06ea38dbb6636c25df443 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 26 Jul 2021 16:23:20 +0800 Subject: [PATCH 20/64] save --- tests/pytest/insert/schemalessInsert.py | 58 ++++++++++++------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 6658f43429..78dc15dc81 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -1089,20 +1089,20 @@ class TDTestCase: # tdSql.execute('create table st1 using super_table_cname_check tags (1, 2, 1.1, 2.2, "a", 1, 1, true, "aa");') # tdSql.execute('insert into st1 values (now, 1, 2, 1.1, 2.2, "a", 1, 1, true, "aa");') - self.initCheckCase() - self.boolTypeCheckCase() - self.symbolsCheckCase() + # self.initCheckCase() + # self.boolTypeCheckCase() + # self.symbolsCheckCase() # ! case bug # self.tsCheckCase() - self.idSeqCheckCase() - self.idUpperCheckCase() - self.noIdCheckCase() - self.maxColTagCheckCase() - self.idIllegalNameCheckCase() - self.idStartWithNumCheckCase() - self.nowTsCheckCase() - self.dateFormatTsCheckCase() - self.illegalTsCheckCase() + # self.idSeqCheckCase() + # self.idUpperCheckCase() + # self.noIdCheckCase() + # self.maxColTagCheckCase() + # self.idIllegalNameCheckCase() + # self.idStartWithNumCheckCase() + # self.nowTsCheckCase() + # self.dateFormatTsCheckCase() + # self.illegalTsCheckCase() # ! confirm double # self.tagValueLengthCheckCase() @@ -1110,35 +1110,35 @@ class TDTestCase: # ! bug # self.colValueLengthCheckCase() - self.tagColIllegalValueCheckCase() + # self.tagColIllegalValueCheckCase() # ! 重复ID未合并 # self.duplicateIdTagColInsertCheckCase() - self.noIdStbExistCheckCase() - self.duplicateInsertExistCheckCase() - self.tagColBinaryNcharLengthCheckCase() + # self.noIdStbExistCheckCase() + # self.duplicateInsertExistCheckCase() + # self.tagColBinaryNcharLengthCheckCase() # ! 结果未校验 - self.tagColAddDupIDCheckCase() + # self.tagColAddDupIDCheckCase() - self.tagColAddCheckCase() - self.tagMd5Check() + # self.tagColAddCheckCase() + # self.tagMd5Check() # ! rollback bug - self.tagColBinaryMaxLengthCheckCase() - self.tagColNcharMaxLengthCheckCase() + # self.tagColBinaryMaxLengthCheckCase() + # self.tagColNcharMaxLengthCheckCase() - self.batchInsertCheckCase() + # self.batchInsertCheckCase() # self.multiInsertCheckCase(5000) # ! bug - self.batchErrorInsertCheckCase() + # self.batchErrorInsertCheckCase() - self.stbInsertMultiThreadCheckCase() - self.sStbStbDdataInsertMultiThreadCheckCase() - self.sStbStbDdataAtcInsertMultiThreadCheckCase() - self.sStbStbDdataMtcInsertMultiThreadCheckCase() - self.sStbDtbDdataInsertMultiThreadCheckCase() + # self.stbInsertMultiThreadCheckCase() + # self.sStbStbDdataInsertMultiThreadCheckCase() + # self.sStbStbDdataAtcInsertMultiThreadCheckCase() + # self.sStbStbDdataMtcInsertMultiThreadCheckCase() + # self.sStbDtbDdataInsertMultiThreadCheckCase() # ! concurrency conflict # self.sStbDtbDdataAcMtInsertMultiThreadCheckCase() @@ -1146,7 +1146,7 @@ class TDTestCase: # ! concurrency conflict # self.sStbStbDdataDtsInsertMultiThreadCheckCase() - # self.test() + self.test() From 7f5aaa25d3f51c7182dc039a7108533da0b92e60 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 26 Jul 2021 19:12:50 +0800 Subject: [PATCH 21/64] modify some cases --- tests/pytest/insert/schemalessInsert.py | 65 +++++++++++++------------ 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 78dc15dc81..f4b1dde000 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -29,6 +29,15 @@ class TDTestCase: tdSql.init(conn.cursor(), logSql) self._conn = conn + def createDb(self, name="test", db_update_tag=0): + if db_update_tag == 0: + tdSql.execute(f"drop database if exists {name}") + tdSql.execute(f"create database if not exists {name} precision 'us'") + else: + tdSql.execute(f"drop database if exists {name}") + tdSql.execute(f"create database if not exists {name} precision 'us' update 1") + tdSql.execute(f'use {name}') + def getLongName(self, len, mode = "mixed"): """ generate long name @@ -371,14 +380,13 @@ class TDTestCase: """ test ts list --> ["1626006833639000000ns", "1626006833639019us", "1626006833640ms", "1626006834s", "1626006822639022"] # ! us级时间戳都为0时,数据库中查询显示,但python接口拿到的结果不显示 .000000的情况请确认,目前修改时间处理代码可以通过 - # ! case bug """ self.cleanStb() ts_list = ["1626006833639000000ns", "1626006833639019us", "1626006833640ms", "1626006834s", "1626006822639022", 0] for ts in ts_list: - print(ts) input_sql, stb_name, tb_name = self.genFullTypeSql(ts=ts) - self.resCmp(input_sql, stb_name, ts) + print(input_sql) + self.resCmp(input_sql, stb_name, ts=ts) def idSeqCheckCase(self): """ @@ -428,24 +436,16 @@ class TDTestCase: code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) - # print("insertLines result {}".format(code)) - # query_sql = f"describe {stb_name}" - # insert_tag_col_num = len(self.resHandle(query_sql, True)[0]) - # expected_num = 128 + 1023 + 1 - # tdSql.checkEqual(insert_tag_col_num, expected_num) - - # input_sql, stb_name = self.genLongSql(128, 1500) - # code = self._conn.insertLines([input_sql]) - # print(f'code---{code}') - def idIllegalNameCheckCase(self): """ test illegal id name + mix "`~!@#$¥%^&*()-+={}|[]、「」【】\:;《》<>?" """ self.cleanStb() - rstr = list("!@#$%^&*()-+={}|[]\:<>?") + rstr = list("`~!@#$¥%^&*()-+={}|[]、「」【】\:;《》<>?") for i in rstr: input_sql = self.genFullTypeSql(tb_name=f"\"aaa{i}bbb\"")[0] + print(input_sql) code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) @@ -710,8 +710,6 @@ class TDTestCase: code = self._conn.insertLines([input_sql_col]) tdSql.checkNotEqual(code, 0) - - ##### stb exist ##### def noIdStbExistCheckCase(self): """ @@ -749,18 +747,28 @@ class TDTestCase: self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') # ! use tb_name - # ! need to improve 目前输出未校验 def tagColAddDupIDCheckCase(self): """ check column and tag count add, stb and tb duplicate + * tag: alter table ... + * col: when update==0 and ts is same, unchange + * so this case tag&&value will be added, + * col is added without value when update==0 + * col is added with value when update==1 """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") - print(input_sql) - self.resCmp(input_sql, stb_name) - input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}', t0="f", c0="f", ct_add_tag=True) - print(input_sql) - # self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') + for db_update_tag in [0, 1]: + if db_update_tag == 1 : + self.createDb("test_update", db_update_tag=db_update_tag) + input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") + self.resCmp(input_sql, stb_name) + input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}', t0="f", c0="f", ct_add_tag=True) + if db_update_tag == 1 : + self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') + else: + self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"', none_check_tag=True) + + def tagColAddCheckCase(self): """ @@ -1069,7 +1077,7 @@ class TDTestCase: input_sql1 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharTagValue\",c9=7u64 1626006833639000000ns" input_sql2 = "rfasta,t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharColValue\",c9=7u64 1626006833639000000ns" - input_sql3 = f'abcd,id="cc$Ec",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' + input_sql3 = f'abcd,id="cc¥Ec",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' print(input_sql3) # input_sql4 = 'hmemeb,id="kilrcrldgf",t0=F,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="fysodjql",t8=L"ncharTagValue" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="waszbfvc",c8=L"ncharColValue",c9=7u64 0' @@ -1080,9 +1088,7 @@ class TDTestCase: def run(self): print("running {}".format(__file__)) - tdSql.execute("drop database if exists test") - tdSql.execute("create database if not exists test precision 'us'") - tdSql.execute('use test') + self.createDb() # tdSql.execute("create table super_table_cname_check (ts timestamp, pi1 int, pi2 bigint, pf1 float, pf2 double, ps1 binary(10), pi3 smallint, pi4 tinyint, pb1 bool, ps2 nchar(20)) tags (si1 int, si2 bigint, sf1 float, sf2 double, ss1 binary(10), si3 smallint, si4 tinyint, sb1 bool, ss2 nchar(20));") @@ -1092,7 +1098,6 @@ class TDTestCase: # self.initCheckCase() # self.boolTypeCheckCase() # self.symbolsCheckCase() - # ! case bug # self.tsCheckCase() # self.idSeqCheckCase() # self.idUpperCheckCase() @@ -1120,7 +1125,7 @@ class TDTestCase: # self.tagColBinaryNcharLengthCheckCase() # ! 结果未校验 - # self.tagColAddDupIDCheckCase() + self.tagColAddDupIDCheckCase() # self.tagColAddCheckCase() # self.tagMd5Check() @@ -1146,7 +1151,7 @@ class TDTestCase: # ! concurrency conflict # self.sStbStbDdataDtsInsertMultiThreadCheckCase() - self.test() + # self.test() From 28b7529ba7af5f4f409fc61a3ffb654fd4541473 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Tue, 27 Jul 2021 11:46:59 +0800 Subject: [PATCH 22/64] delete unused tb_name --- tests/pytest/insert/schemalessInsert.py | 110 ++++++++++-------------- 1 file changed, 46 insertions(+), 64 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index f4b1dde000..952c383f3a 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -67,7 +67,6 @@ class TDTestCase: ulsec = repr(ts).split('.')[1][:6] if len(ulsec) < 6 and int(ulsec) != 0: ulsec = int(ulsec) * (10 ** (6 - len(ulsec))) - # ! to confirm .000000 elif int(ulsec) == 0: ulsec *= 6 # ! follow two rows added for tsCheckCase @@ -101,7 +100,6 @@ class TDTestCase: td_type = "FLOAT" td_tag_value = ''.join(list(value)[:-3]) td_tag_value = '{}'.format(np.float32(td_tag_value)) - elif value.endswith("f64"): td_type = "DOUBLE" td_tag_value = ''.join(list(value)[:-3]) @@ -171,7 +169,6 @@ class TDTestCase: for elm in stb_tag_list: if "id=" in elm.lower(): - # id_index = stb_id_tag_list.index(elm) tb_name = elm.split('=')[1] else: tag_name_list.append(elm.split("=")[0]) @@ -186,26 +183,10 @@ class TDTestCase: td_col_value_list.append(self.getTdTypeValue(elm.split("=")[1])[1]) td_col_type_list.append(self.getTdTypeValue(elm.split("=")[1])[0]) - # print(stb_name) - # print(tb_name) - # print(tag_name_list) - # print(tag_value_list) - # print(td_tag_type_list) - # print(td_tag_value_list) - - # print(ts_value) - - # print(col_name_list) - # print(col_value_list) - # print(td_col_value_list) - # print(td_col_type_list) - - # print("final type--------######") final_field_list = [] final_field_list.extend(col_name_list) final_field_list.extend(tag_name_list) - # print("final type--------######") final_type_list = [] final_type_list.append("TIMESTAMP") final_type_list.extend(td_col_type_list) @@ -216,9 +197,6 @@ class TDTestCase: final_value_list.append(ts_value) final_value_list.extend(td_col_value_list) final_value_list.extend(td_tag_value_list) - # print("-----------value-----------") - # print(final_value_list) - # print("-----------value-----------") return final_value_list, final_field_list, final_type_list, stb_name, tb_name def genFullTypeSql(self, stb_name="", tb_name="", t0="", t1="127i8", t2="32767i16", t3="2147483647i32", @@ -262,7 +240,7 @@ class TDTestCase: sql_seq = f'{stb_name},t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6},t7={t7},t8={t8},t11={t1},t10={t8} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6} {ts}' if ct_min_tag is not None: sql_seq = f'{stb_name},{id}=\"{tb_name}\",t0={t0},t1={t1},t2={t2},t3={t3},t4={t4},t5={t5},t6={t6} c0={c0},c1={c1},c2={c2},c3={c3},c4={c4},c5={c5},c6={c6} {ts}' - return sql_seq, stb_name, tb_name + return sql_seq, stb_name def genMulTagColStr(self, genType, count): """ @@ -349,7 +327,7 @@ class TDTestCase: normal tags and cols, one for every elm """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql() + input_sql, stb_name = self.genFullTypeSql() self.resCmp(input_sql, stb_name) def boolTypeCheckCase(self): @@ -359,7 +337,7 @@ class TDTestCase: self.cleanStb() full_type_list = ["f", "F", "false", "False", "t", "T", "true", "True"] for t_type in full_type_list: - input_sql, stb_name, tb_name = self.genFullTypeSql(c0=t_type, t0=t_type) + input_sql, stb_name = self.genFullTypeSql(c0=t_type, t0=t_type) self.resCmp(input_sql, stb_name) def symbolsCheckCase(self): @@ -373,7 +351,7 @@ class TDTestCase: self.cleanStb() binary_symbols = '\"abcd`~!@#$%^&*()_-{[}]|:;<.>?lfjal"\"' nchar_symbols = f'L{binary_symbols}' - input_sql, stb_name, tb_name = self.genFullTypeSql(c7=binary_symbols, c8=nchar_symbols, t7=binary_symbols, t8=nchar_symbols) + input_sql, stb_name = self.genFullTypeSql(c7=binary_symbols, c8=nchar_symbols, t7=binary_symbols, t8=nchar_symbols) self.resCmp(input_sql, stb_name) def tsCheckCase(self): @@ -394,7 +372,7 @@ class TDTestCase: eg: t0=**,id=**,t1=** """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql(id_change_tag=True) + input_sql, stb_name = self.genFullTypeSql(id_change_tag=True) self.resCmp(input_sql, stb_name) def idUpperCheckCase(self): @@ -403,9 +381,9 @@ class TDTestCase: eg: id and ID """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql(id_upper_tag=True) + input_sql, stb_name = self.genFullTypeSql(id_upper_tag=True) self.resCmp(input_sql, stb_name) - input_sql, stb_name, tb_name = self.genFullTypeSql(id_change_tag=True, id_upper_tag=True) + input_sql, stb_name = self.genFullTypeSql(id_change_tag=True, id_upper_tag=True) self.resCmp(input_sql, stb_name) def noIdCheckCase(self): @@ -413,7 +391,7 @@ class TDTestCase: id not exist """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql(id_noexist_tag=True) + input_sql, stb_name = self.genFullTypeSql(id_noexist_tag=True) self.resCmp(input_sql, stb_name) query_sql = f"select tbname from {stb_name}" res_row_list = self.resHandle(query_sql, True)[0] @@ -492,7 +470,7 @@ class TDTestCase: self.cleanStb() # i8 for t1 in ["-127i8", "127i8"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t1=t1) + input_sql, stb_name = self.genFullTypeSql(t1=t1) self.resCmp(input_sql, stb_name) for t1 in ["-128i8", "128i8"]: input_sql = self.genFullTypeSql(t1=t1)[0] @@ -501,7 +479,7 @@ class TDTestCase: #i16 for t2 in ["-32767i16", "32767i16"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t2=t2) + input_sql, stb_name = self.genFullTypeSql(t2=t2) self.resCmp(input_sql, stb_name) for t2 in ["-32768i16", "32768i16"]: input_sql = self.genFullTypeSql(t2=t2)[0] @@ -510,7 +488,7 @@ class TDTestCase: #i32 for t3 in ["-2147483647i32", "2147483647i32"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t3=t3) + input_sql, stb_name = self.genFullTypeSql(t3=t3) self.resCmp(input_sql, stb_name) for t3 in ["-2147483648i32", "2147483648i32"]: input_sql = self.genFullTypeSql(t3=t3)[0] @@ -519,7 +497,7 @@ class TDTestCase: #i64 for t4 in ["-9223372036854775807i64", "9223372036854775807i64"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t4=t4) + input_sql, stb_name = self.genFullTypeSql(t4=t4) self.resCmp(input_sql, stb_name) for t4 in ["-9223372036854775808i64", "9223372036854775808i64"]: input_sql = self.genFullTypeSql(t4=t4)[0] @@ -528,7 +506,7 @@ class TDTestCase: # f32 for t5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(t5=t5) + input_sql, stb_name = self.genFullTypeSql(t5=t5) self.resCmp(input_sql, stb_name) # * limit set to 4028234664*(10**38) for t5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: @@ -540,7 +518,7 @@ class TDTestCase: # for t6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: for t6 in [f'{-1.79769*(10**308)}f64', f'{-1.79769*(10**308)}f64']: print("f64?") - input_sql, stb_name, tb_name = self.genFullTypeSql(t6=t6) + input_sql, stb_name = self.genFullTypeSql(t6=t6) self.resCmp(input_sql, stb_name) # TODO to confirm length # * limit set to 1.797693134862316*(10**308) @@ -576,7 +554,7 @@ class TDTestCase: self.cleanStb() # i8 for c1 in ["-127i8", "127i8"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(c1=c1) + input_sql, stb_name = self.genFullTypeSql(c1=c1) self.resCmp(input_sql, stb_name) for c1 in ["-128i8", "128i8"]: @@ -586,7 +564,7 @@ class TDTestCase: tdSql.checkNotEqual(code, 0) # i16 for c2 in ["-32767i16"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(c2=c2) + input_sql, stb_name = self.genFullTypeSql(c2=c2) self.resCmp(input_sql, stb_name) for c2 in ["-32768i16", "32768i16"]: input_sql = self.genFullTypeSql(c2=c2)[0] @@ -595,7 +573,7 @@ class TDTestCase: # i32 for c3 in ["-2147483647i32"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(c3=c3) + input_sql, stb_name = self.genFullTypeSql(c3=c3) self.resCmp(input_sql, stb_name) for c3 in ["-2147483648i32", "2147483648i32"]: input_sql = self.genFullTypeSql(c3=c3)[0] @@ -604,7 +582,7 @@ class TDTestCase: # i64 for c4 in ["-9223372036854775807i64"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(c4=c4) + input_sql, stb_name = self.genFullTypeSql(c4=c4) self.resCmp(input_sql, stb_name) for c4 in ["-9223372036854775808i64", "9223372036854775808i64"]: input_sql = self.genFullTypeSql(c4=c4)[0] @@ -613,7 +591,7 @@ class TDTestCase: # f32 for c5 in [f"{-3.4028234663852885981170418348451692544*(10**38)}f32", f"{3.4028234663852885981170418348451692544*(10**38)}f32"]: - input_sql, stb_name, tb_name = self.genFullTypeSql(c5=c5) + input_sql, stb_name = self.genFullTypeSql(c5=c5) self.resCmp(input_sql, stb_name) # * limit set to 4028234664*(10**38) for c5 in [f"{-3.4028234664*(10**38)}f32", f"{3.4028234664*(10**38)}f32"]: @@ -623,7 +601,7 @@ class TDTestCase: # f64 for c6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: - input_sql, stb_name, tb_name = self.genFullTypeSql(c6=c6) + input_sql, stb_name = self.genFullTypeSql(c6=c6) self.resCmp(input_sql, stb_name) # * limit set to 1.797693134862316*(10**308) for c6 in [f'{-1.797693134862316*(10**308)}f64', f'{-1.797693134862316*(10**308)}f64']: @@ -716,9 +694,9 @@ class TDTestCase: case no id when stb exist """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") + input_sql, stb_name = self.genFullTypeSql(t0="f", c0="f") self.resCmp(input_sql, stb_name) - input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, id_noexist_tag=True, t0="f", c0="f") + input_sql, stb_name = self.genFullTypeSql(stb_name=stb_name, id_noexist_tag=True, t0="f", c0="f") self.resCmp(input_sql, stb_name, condition='where tbname like "t_%"') tdSql.query(f"select * from {stb_name}") tdSql.checkRows(2) @@ -729,7 +707,7 @@ class TDTestCase: check duplicate insert when stb exist """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql() + input_sql, stb_name = self.genFullTypeSql() self.resCmp(input_sql, stb_name) code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) @@ -740,10 +718,10 @@ class TDTestCase: check length increase """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql() + input_sql, stb_name = self.genFullTypeSql() self.resCmp(input_sql, stb_name) tb_name = self.getLongName(5, "letters") - input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name,t7="\"binaryTagValuebinaryTagValue\"", t8="L\"ncharTagValuencharTagValue\"", c7="\"binaryTagValuebinaryTagValue\"", c8="L\"ncharTagValuencharTagValue\"") + input_sql, stb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name,t7="\"binaryTagValuebinaryTagValue\"", t8="L\"ncharTagValuencharTagValue\"", c7="\"binaryTagValuebinaryTagValue\"", c8="L\"ncharTagValuencharTagValue\"") self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') # ! use tb_name @@ -757,27 +735,28 @@ class TDTestCase: * col is added with value when update==1 """ self.cleanStb() + tb_name = self.getLongName(7, "letters") for db_update_tag in [0, 1]: if db_update_tag == 1 : self.createDb("test_update", db_update_tag=db_update_tag) - input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") + input_sql, stb_name = self.genFullTypeSql(tb_name=tb_name, t0="f", c0="f") self.resCmp(input_sql, stb_name) - input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}', t0="f", c0="f", ct_add_tag=True) + self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t0="f", c0="f", ct_add_tag=True) if db_update_tag == 1 : self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') else: self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"', none_check_tag=True) - - def tagColAddCheckCase(self): """ check column and tag count add """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f") + tb_name = self.getLongName(7, "letters") + input_sql, stb_name = self.genFullTypeSql(tb_name=tb_name, t0="f", c0="f") self.resCmp(input_sql, stb_name) - input_sql, stb_name, tb_name_1 = self.genFullTypeSql(stb_name=stb_name, tb_name=f'{tb_name}_1', t0="f", c0="f", ct_add_tag=True) + tb_name_1 = self.getLongName(7, "letters") + input_sql, stb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name_1, t0="f", c0="f", ct_add_tag=True) self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name_1}"') res_row_list = self.resHandle(f"select c10,c11,t10,t11 from {tb_name}", True)[0] tdSql.checkEqual(res_row_list[0], ['None', 'None', 'None', 'None']) @@ -789,16 +768,16 @@ class TDTestCase: insert two table, keep tag unchange, change col """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql(t0="f", c0="f", id_noexist_tag=True) + input_sql, stb_name = self.genFullTypeSql(t0="f", c0="f", id_noexist_tag=True) self.resCmp(input_sql, stb_name) tb_name1 = self.getNoIdTbName(stb_name) - input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, t0="f", c0="f", id_noexist_tag=True) + input_sql, stb_name = self.genFullTypeSql(stb_name=stb_name, t0="f", c0="f", id_noexist_tag=True) self.resCmp(input_sql, stb_name) tb_name2 = self.getNoIdTbName(stb_name) tdSql.query(f"select * from {stb_name}") tdSql.checkRows(1) tdSql.checkEqual(tb_name1, tb_name2) - input_sql, stb_name, tb_name = self.genFullTypeSql(stb_name=stb_name, t0="f", c0="f", id_noexist_tag=True, ct_add_tag=True) + input_sql, stb_name = self.genFullTypeSql(stb_name=stb_name, t0="f", c0="f", id_noexist_tag=True, ct_add_tag=True) self._conn.insertLines([input_sql]) tb_name3 = self.getNoIdTbName(stb_name) tdSql.query(f"select * from {stb_name}") @@ -898,7 +877,6 @@ class TDTestCase: code = self._conn.insertLines(sql_list) tdSql.checkEqual(code, 0) - # ! bug def batchErrorInsertCheckCase(self): """ test batch error insert @@ -971,7 +949,8 @@ class TDTestCase: thread input same stb tb, different data, result keep first data """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) + tb_name = self.getLongName(7, "letters") + input_sql, stb_name = self.genFullTypeSql(tb_name=tb_name) self.resCmp(input_sql, stb_name) s_stb_s_tb_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[1] self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_list)) @@ -987,7 +966,8 @@ class TDTestCase: thread input same stb tb, different data, add columes and tags, result keep first data """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) + tb_name = self.getLongName(7, "letters") + input_sql, stb_name = self.genFullTypeSql(tb_name=tb_name) self.resCmp(input_sql, stb_name) s_stb_s_tb_a_col_a_tag_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[2] self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_a_col_a_tag_list)) @@ -1003,7 +983,8 @@ class TDTestCase: thread input same stb tb, different data, minus columes and tags, result keep first data """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) + tb_name = self.getLongName(7, "letters") + input_sql, stb_name = self.genFullTypeSql(tb_name=tb_name) self.resCmp(input_sql, stb_name) s_stb_s_tb_m_col_m_tag_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[3] self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_m_col_m_tag_list)) @@ -1019,7 +1000,7 @@ class TDTestCase: thread input same stb, different tb, different data """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql() + input_sql, stb_name = self.genFullTypeSql() self.resCmp(input_sql, stb_name) s_stb_d_tb_list = self.genSqlList(stb_name=stb_name)[4] self.multiThreadRun(self.genMultiThreadSeq(s_stb_d_tb_list)) @@ -1034,7 +1015,7 @@ class TDTestCase: thread input same stb, different tb, different data, add col, mul tag """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql() + input_sql, stb_name = self.genFullTypeSql() self.resCmp(input_sql, stb_name) s_stb_d_tb_a_col_m_tag_list = self.genSqlList(stb_name=stb_name)[5] self.multiThreadRun(self.genMultiThreadSeq(s_stb_d_tb_a_col_m_tag_list)) @@ -1049,7 +1030,7 @@ class TDTestCase: thread input same stb, different tb, different data, add tag, mul col """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql() + input_sql, stb_name = self.genFullTypeSql() self.resCmp(input_sql, stb_name) s_stb_d_tb_a_tag_m_col_list = self.genSqlList(stb_name=stb_name)[6] self.multiThreadRun(self.genMultiThreadSeq(s_stb_d_tb_a_tag_m_col_list)) @@ -1061,7 +1042,8 @@ class TDTestCase: thread input same stb tb, different ts """ self.cleanStb() - input_sql, stb_name, tb_name = self.genFullTypeSql(tb_name=self.getLongName(10, "letters")) + tb_name = self.getLongName(7, "letters") + input_sql, stb_name = self.genFullTypeSql(tb_name=tb_name) self.resCmp(input_sql, stb_name) s_stb_s_tb_d_ts_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[7] print(s_stb_s_tb_d_ts_list) From 736adcf7ccdf581e5b64c3947468acc34569df31 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Tue, 27 Jul 2021 13:52:44 +0800 Subject: [PATCH 23/64] combine cases --- tests/pytest/insert/schemalessInsert.py | 149 +++++++----------------- 1 file changed, 41 insertions(+), 108 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 952c383f3a..253e50ea79 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -14,7 +14,6 @@ import random import string import time -import datetime from copy import deepcopy import numpy as np from util.log import * @@ -1052,8 +1051,6 @@ class TDTestCase: tdSql.checkRows(1) tdSql.query(f"select * from {stb_name}") tdSql.checkRows(6) - - def test(self): input_sql1 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharTagValue\",c9=7u64 1626006833639000000ns" @@ -1062,138 +1059,74 @@ class TDTestCase: input_sql3 = f'abcd,id="cc¥Ec",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' print(input_sql3) # input_sql4 = 'hmemeb,id="kilrcrldgf",t0=F,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="fysodjql",t8=L"ncharTagValue" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="waszbfvc",c8=L"ncharColValue",c9=7u64 0' - - code = self._conn.insertLines([input_sql3]) print(code) # self._conn.insertLines([input_sql4]) - def run(self): - print("running {}".format(__file__)) - self.createDb() - - - # tdSql.execute("create table super_table_cname_check (ts timestamp, pi1 int, pi2 bigint, pf1 float, pf2 double, ps1 binary(10), pi3 smallint, pi4 tinyint, pb1 bool, ps2 nchar(20)) tags (si1 int, si2 bigint, sf1 float, sf2 double, ss1 binary(10), si3 smallint, si4 tinyint, sb1 bool, ss2 nchar(20));") - # tdSql.execute('create table st1 using super_table_cname_check tags (1, 2, 1.1, 2.2, "a", 1, 1, true, "aa");') - # tdSql.execute('insert into st1 values (now, 1, 2, 1.1, 2.2, "a", 1, 1, true, "aa");') - - # self.initCheckCase() - # self.boolTypeCheckCase() - # self.symbolsCheckCase() - # self.tsCheckCase() - # self.idSeqCheckCase() - # self.idUpperCheckCase() - # self.noIdCheckCase() - # self.maxColTagCheckCase() - # self.idIllegalNameCheckCase() - # self.idStartWithNumCheckCase() - # self.nowTsCheckCase() - # self.dateFormatTsCheckCase() - # self.illegalTsCheckCase() + def runAll(self): + self.initCheckCase() + self.boolTypeCheckCase() + self.symbolsCheckCase() + self.tsCheckCase() + self.idSeqCheckCase() + self.idUpperCheckCase() + self.noIdCheckCase() + self.maxColTagCheckCase() + self.idIllegalNameCheckCase() + self.idStartWithNumCheckCase() + self.nowTsCheckCase() + self.dateFormatTsCheckCase() + self.illegalTsCheckCase() # ! confirm double - # self.tagValueLengthCheckCase() + self.tagValueLengthCheckCase() # ! bug - # self.colValueLengthCheckCase() + self.colValueLengthCheckCase() - # self.tagColIllegalValueCheckCase() + self.tagColIllegalValueCheckCase() # ! 重复ID未合并 - # self.duplicateIdTagColInsertCheckCase() + self.duplicateIdTagColInsertCheckCase() - # self.noIdStbExistCheckCase() - # self.duplicateInsertExistCheckCase() - # self.tagColBinaryNcharLengthCheckCase() + self.noIdStbExistCheckCase() + self.duplicateInsertExistCheckCase() + self.tagColBinaryNcharLengthCheckCase() # ! 结果未校验 self.tagColAddDupIDCheckCase() - # self.tagColAddCheckCase() - # self.tagMd5Check() + self.tagColAddCheckCase() + self.tagMd5Check() # ! rollback bug - # self.tagColBinaryMaxLengthCheckCase() - # self.tagColNcharMaxLengthCheckCase() + self.tagColBinaryMaxLengthCheckCase() + self.tagColNcharMaxLengthCheckCase() - # self.batchInsertCheckCase() - # self.multiInsertCheckCase(5000) + self.batchInsertCheckCase() + self.multiInsertCheckCase(5000) # ! bug - # self.batchErrorInsertCheckCase() + self.batchErrorInsertCheckCase() - # self.stbInsertMultiThreadCheckCase() - # self.sStbStbDdataInsertMultiThreadCheckCase() - # self.sStbStbDdataAtcInsertMultiThreadCheckCase() - # self.sStbStbDdataMtcInsertMultiThreadCheckCase() - # self.sStbDtbDdataInsertMultiThreadCheckCase() + self.stbInsertMultiThreadCheckCase() + self.sStbStbDdataInsertMultiThreadCheckCase() + self.sStbStbDdataAtcInsertMultiThreadCheckCase() + self.sStbStbDdataMtcInsertMultiThreadCheckCase() + self.sStbDtbDdataInsertMultiThreadCheckCase() # ! concurrency conflict - # self.sStbDtbDdataAcMtInsertMultiThreadCheckCase() - # self.sStbDtbDdataAtMcInsertMultiThreadCheckCase() + self.sStbDtbDdataAcMtInsertMultiThreadCheckCase() + self.sStbDtbDdataAtMcInsertMultiThreadCheckCase() # ! concurrency conflict + self.sStbStbDdataDtsInsertMultiThreadCheckCase() + + def run(self): + print("running {}".format(__file__)) + self.createDb() + self.runAll() - # self.sStbStbDdataDtsInsertMultiThreadCheckCase() # self.test() - - - - - - - # tdSql.execute('create stable ste(ts timestamp, f int) tags(t1 bigint)') - - # lines = [ "st,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000ns", - # "st,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64 1626006833640000000ns", - # "ste,t2=5f64,t3=L\"ste\" c1=true,c2=4i64,c3=\"iam\" 1626056811823316532ns", - # "stf,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64,c6=7u64 1626006933640000000ns", - # "st,t1=4i64,t2=5f64,t3=\"t4\" c1=3i64,c3=L\"passitagain\",c2=true,c4=5f64 1626006833642000000ns", - # "ste,t2=5f64,t3=L\"ste2\" c3=\"iamszhou\",c4=false 1626056811843316532ns", - # "ste,t2=5f64,t3=L\"ste2\" c3=\"iamszhou\",c4=false,c5=32i8,c6=64i16,c7=32i32,c8=88.88f32 1626056812843316532ns", - # "st,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64,c6=7u64 1626006933640000000ns", - # "stf,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin_stf\",c2=false,c5=5f64,c6=7u64 1626006933641000000ns" - # ] - - # code = self._conn.insertLines(lines) - # print("insertLines result {}".format(code)) - - # lines2 = [ "stg,t1=3i64,t2=4f64,t3=\"t3\" c1=3i64,c3=L\"passit\",c2=false,c4=4f64 1626006833639000000ns", - # "stg,t1=4i64,t3=\"t4\",t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin\",c2=true,c4=5f64,c5=5f64 1626006833640000000ns" - # ] - - # code = self._conn.insertLines([ lines2[0] ]) - # print("insertLines result {}".format(code)) - - # self._conn.insertLines([ lines2[1] ]) - # print("insertLines result {}".format(code)) - - # tdSql.query("select * from st") - # tdSql.checkRows(4) - - # tdSql.query("select * from ste") - # tdSql.checkRows(3) - - # tdSql.query("select * from stf") - # tdSql.checkRows(2) - - # tdSql.query("select * from stg") - # tdSql.checkRows(2) - - # tdSql.query("show tables") - # tdSql.checkRows(8) - - # tdSql.query("describe stf") - # tdSql.checkData(2, 2, 14) - - # self._conn.insertLines([ - # "sth,t1=4i64,t2=5f64,t4=5f64,ID=\"childtable\" c1=3i64,c3=L\"passitagin_stf\",c2=false,c5=5f64,c6=7u64 1626006933641ms", - # "sth,t1=4i64,t2=5f64,t4=5f64 c1=3i64,c3=L\"passitagin_stf\",c2=false,c5=5f64,c6=7u64 1626006933654ms" - # ]) - # tdSql.query('select tbname, * from sth') - # tdSql.checkRows(2) - - # tdSql.query('select tbname, * from childtable') - # tdSql.checkRows(1) def stop(self): tdSql.close() tdLog.success("%s successfully executed" % __file__) From 1bf4e5669e2757e7a16bc4010d4c8b1960705643 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Wed, 28 Jul 2021 09:47:45 +0800 Subject: [PATCH 24/64] modify --- tests/pytest/insert/schemalessInsert.py | 117 +++++++++++++++++++++--- 1 file changed, 105 insertions(+), 12 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 253e50ea79..cc3755f17b 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -907,6 +907,11 @@ class TDTestCase: s_stb_d_tb_a_col_m_tag_list = list() s_stb_d_tb_a_tag_m_col_list = list() s_stb_s_tb_d_ts_list = list() + s_stb_s_tb_d_ts_a_col_m_tag_list = list() + s_stb_s_tb_d_ts_a_tag_m_col_list = list() + s_stb_d_tb_d_ts_list = list() + s_stb_d_tb_d_ts_a_col_m_tag_list = list() + s_stb_d_tb_d_ts_a_tag_m_col_list = list() for i in range(count): d_stb_d_tb_list.append(self.genFullTypeSql(t0="f", c0="f")) s_stb_s_tb_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"')) @@ -916,8 +921,16 @@ class TDTestCase: s_stb_d_tb_a_col_m_tag_list.append(self.genFullTypeSql(stb_name=stb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', id_noexist_tag=True, ct_am_tag=True)) s_stb_d_tb_a_tag_m_col_list.append(self.genFullTypeSql(stb_name=stb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', id_noexist_tag=True, ct_ma_tag=True)) s_stb_s_tb_d_ts_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', ts=0)) + s_stb_s_tb_d_ts_a_col_m_tag_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', ts=0, ct_am_tag=True)) + s_stb_s_tb_d_ts_a_tag_m_col_list.append(self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', ts=0, ct_ma_tag=True)) + s_stb_d_tb_d_ts_list.append(self.genFullTypeSql(stb_name=stb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', id_noexist_tag=True, ts=0)) + s_stb_d_tb_d_ts_a_col_m_tag_list.append(self.genFullTypeSql(stb_name=stb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', id_noexist_tag=True, ts=0, ct_am_tag=True)) + s_stb_d_tb_d_ts_a_tag_m_col_list.append(self.genFullTypeSql(stb_name=stb_name, t7=f'"{self.getLongName(8, "letters")}"', c7=f'"{self.getLongName(8, "letters")}"', id_noexist_tag=True, ts=0, ct_ma_tag=True)) - return d_stb_d_tb_list, s_stb_s_tb_list, s_stb_s_tb_a_col_a_tag_list, s_stb_s_tb_m_col_m_tag_list, s_stb_d_tb_list, s_stb_d_tb_a_col_m_tag_list, s_stb_d_tb_a_tag_m_col_list, s_stb_s_tb_d_ts_list + return d_stb_d_tb_list, s_stb_s_tb_list, s_stb_s_tb_a_col_a_tag_list, s_stb_s_tb_m_col_m_tag_list, \ + s_stb_d_tb_list, s_stb_d_tb_a_col_m_tag_list, s_stb_d_tb_a_tag_m_col_list, s_stb_s_tb_d_ts_list, \ + s_stb_s_tb_d_ts_a_col_m_tag_list, s_stb_s_tb_d_ts_a_tag_m_col_list, s_stb_d_tb_d_ts_list, \ + s_stb_d_tb_d_ts_a_col_m_tag_list, s_stb_d_tb_d_ts_a_tag_m_col_list def genMultiThreadSeq(self, sql_list): @@ -1052,15 +1065,86 @@ class TDTestCase: tdSql.query(f"select * from {stb_name}") tdSql.checkRows(6) - def test(self): - input_sql1 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharTagValue\",c9=7u64 1626006833639000000ns" + def sStbStbDdataDtsAcMtInsertMultiThreadCheckCase(self): + """ + thread input same stb tb, different ts, add col, mul tag + """ + self.cleanStb() + tb_name = self.getLongName(7, "letters") + input_sql, stb_name = self.genFullTypeSql(tb_name=tb_name) + self.resCmp(input_sql, stb_name) + s_stb_s_tb_d_ts_a_col_m_tag_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[8] + print(s_stb_s_tb_d_ts_a_col_m_tag_list) + self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_d_ts_a_col_m_tag_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(1) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(6) + tdSql.query(f"select * from {stb_name} where t8 is not NULL") + tdSql.checkRows(6) + tdSql.query(f"select * from {tb_name} where c11 is not NULL;") + tdSql.checkRows(5) - input_sql2 = "rfasta,t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharColValue\",c9=7u64 1626006833639000000ns" - input_sql3 = f'abcd,id="cc¥Ec",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' - print(input_sql3) + def sStbStbDdataDtsAtMcInsertMultiThreadCheckCase(self): + """ + thread input same stb tb, different ts, add tag, mul col + """ + self.cleanStb() + tb_name = self.getLongName(7, "letters") + input_sql, stb_name = self.genFullTypeSql(tb_name=tb_name) + self.resCmp(input_sql, stb_name) + s_stb_s_tb_d_ts_a_tag_m_col_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[9] + print(s_stb_s_tb_d_ts_a_tag_m_col_list) + self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_d_ts_a_tag_m_col_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(1) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(6) + for c in ["c7", "c8", "c9"]: + tdSql.query(f"select * from {stb_name} where {c} is NULL") + tdSql.checkRows(5) + for t in ["t10", "t11"]: + tdSql.query(f"select * from {stb_name} where {t} is not NULL;") + tdSql.checkRows(6) + + def sStbDtbDdataDtsInsertMultiThreadCheckCase(self): + """ + thread input same stb, different tb, data, ts + """ + self.cleanStb() + input_sql, stb_name = self.genFullTypeSql() + self.resCmp(input_sql, stb_name) + s_stb_d_tb_d_ts_list = self.genSqlList(stb_name=stb_name)[10] + self.multiThreadRun(self.genMultiThreadSeq(s_stb_d_tb_d_ts_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(6) + + def sStbDtbDdataDtsAcMtInsertMultiThreadCheckCase(self): + """ + # ! concurrency conflict + """ + """ + thread input same stb, different tb, data, ts, add col, mul tag + """ + self.cleanStb() + input_sql, stb_name = self.genFullTypeSql() + self.resCmp(input_sql, stb_name) + s_stb_d_tb_d_ts_a_col_m_tag_list = self.genSqlList(stb_name=stb_name)[11] + print(s_stb_d_tb_d_ts_a_col_m_tag_list) + self.multiThreadRun(self.genMultiThreadSeq(s_stb_d_tb_d_ts_a_col_m_tag_list)) + tdSql.query(f"show tables;") + tdSql.checkRows(6) + + def test(self): + input_sql1 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharTagValue\",c9=7u64 0" + input_sql2 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64 c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64 0" + self._conn.insertLines([input_sql1]) + self._conn.insertLines([input_sql2]) + # input_sql3 = f'abcd,id="cc¥Ec",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' + # print(input_sql3) # input_sql4 = 'hmemeb,id="kilrcrldgf",t0=F,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="fysodjql",t8=L"ncharTagValue" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="waszbfvc",c8=L"ncharColValue",c9=7u64 0' - code = self._conn.insertLines([input_sql3]) - print(code) + # code = self._conn.insertLines([input_sql3]) + # print(code) # self._conn.insertLines([input_sql4]) def runAll(self): @@ -1115,16 +1199,25 @@ class TDTestCase: self.sStbDtbDdataInsertMultiThreadCheckCase() # ! concurrency conflict - self.sStbDtbDdataAcMtInsertMultiThreadCheckCase() - self.sStbDtbDdataAtMcInsertMultiThreadCheckCase() + # self.sStbDtbDdataAcMtInsertMultiThreadCheckCase() + # self.sStbDtbDdataAtMcInsertMultiThreadCheckCase() # ! concurrency conflict self.sStbStbDdataDtsInsertMultiThreadCheckCase() + self.sStbStbDdataDtsAcMtInsertMultiThreadCheckCase() + self.sStbStbDdataDtsAtMcInsertMultiThreadCheckCase() + self.sStbDtbDdataDtsInsertMultiThreadCheckCase() + + # ! concurrency conflict + # self.sStbDtbDdataDtsAcMtInsertMultiThreadCheckCase() + + + def run(self): print("running {}".format(__file__)) self.createDb() - self.runAll() - + # self.runAll() + self.sStbDtbDdataDtsAcMtInsertMultiThreadCheckCase() # self.test() def stop(self): From 2168045658a9415ebffea7e75e3daae228f550bd Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Wed, 28 Jul 2021 16:09:00 +0800 Subject: [PATCH 25/64] modify --- tests/pytest/insert/schemalessInsert.py | 81 ++++++++++--------------- 1 file changed, 33 insertions(+), 48 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index cc3755f17b..bcf7804412 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -291,8 +291,7 @@ class TDTestCase: def resCmp(self, input_sql, stb_name, query_sql="select * from", condition="", ts=None, id=True, none_check_tag=None): expect_list = self.inputHandle(input_sql) - code = self._conn.insertLines([input_sql]) - print("insertLines result {}".format(code)) + self._conn.insertLines([input_sql]) query_sql = f"{query_sql} {stb_name} {condition}" res_row_list, res_field_list_without_ts, res_type_list = self.resHandle(query_sql, True) if ts == 0: @@ -361,8 +360,7 @@ class TDTestCase: self.cleanStb() ts_list = ["1626006833639000000ns", "1626006833639019us", "1626006833640ms", "1626006834s", "1626006822639022", 0] for ts in ts_list: - input_sql, stb_name, tb_name = self.genFullTypeSql(ts=ts) - print(input_sql) + input_sql, stb_name = self.genFullTypeSql(ts=ts) self.resCmp(input_sql, stb_name, ts=ts) def idSeqCheckCase(self): @@ -422,7 +420,6 @@ class TDTestCase: rstr = list("`~!@#$¥%^&*()-+={}|[]、「」【】\:;《》<>?") for i in rstr: input_sql = self.genFullTypeSql(tb_name=f"\"aaa{i}bbb\"")[0] - print(input_sql) code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) @@ -514,12 +511,9 @@ class TDTestCase: tdSql.checkNotEqual(code, 0) # f64 # * bug stack smashing detected ***: terminated Aborted --- fixed - # for t6 in [f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64', f'{-1.79769313486231570814527423731704356798070567525844996598917476803157260780*(10**308)}f64']: for t6 in [f'{-1.79769*(10**308)}f64', f'{-1.79769*(10**308)}f64']: - print("f64?") input_sql, stb_name = self.genFullTypeSql(t6=t6) self.resCmp(input_sql, stb_name) - # TODO to confirm length # * limit set to 1.797693134862316*(10**308) for c6 in [f'{-1.797693134862316*(10**308)}f64', f'{-1.797693134862316*(10**308)}f64']: input_sql = self.genFullTypeSql(c6=c6)[0] @@ -558,7 +552,6 @@ class TDTestCase: for c1 in ["-128i8", "128i8"]: input_sql = self.genFullTypeSql(c1=c1)[0] - print(input_sql) code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) # i16 @@ -662,6 +655,7 @@ class TDTestCase: code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) # TODO nchar binary + # `~!@#$¥%^&*()-+={}|[]、「」【】:; def duplicateIdTagColInsertCheckCase(self): """ @@ -723,7 +717,6 @@ class TDTestCase: input_sql, stb_name = self.genFullTypeSql(stb_name=stb_name, tb_name=tb_name,t7="\"binaryTagValuebinaryTagValue\"", t8="L\"ncharTagValuencharTagValue\"", c7="\"binaryTagValuebinaryTagValue\"", c8="L\"ncharTagValuencharTagValue\"") self.resCmp(input_sql, stb_name, condition=f'where tbname like "{tb_name}"') - # ! use tb_name def tagColAddDupIDCheckCase(self): """ check column and tag count add, stb and tb duplicate @@ -783,10 +776,9 @@ class TDTestCase: tdSql.checkRows(2) tdSql.checkNotEqual(tb_name1, tb_name3) - # ? tag binary max is 16384, col+ts binary max 49151 + # * tag binary max is 16384, col+ts binary max 49151 def tagColBinaryMaxLengthCheckCase(self): """ - # ? case finish , src bug exist every binary and nchar must be length+2, so """ self.cleanStb() @@ -799,21 +791,27 @@ class TDTestCase: input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}",t2="{self.getLongName(5, "letters")}" c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(2) input_sql = f'{stb_name},t0=t,t1="{self.getLongName(16374, "letters")}",t2="{self.getLongName(6, "letters")}" c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(2) # # * check col,col+ts max in describe ---> 16143 input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(12, "letters")}" 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) - # input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(13, "letters")}" 1626006833639000000ns' - # print(input_sql) - # code = self._conn.insertLines([input_sql]) - # print(code) - # tdSql.checkNotEqual(code, 0) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(3) + input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}",c2="{self.getLongName(16374, "letters")}",c3="{self.getLongName(16374, "letters")}",c4="{self.getLongName(13, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(3) - # ? tag nchar max is 16384, col+ts nchar max 49151 + # * tag nchar max is 16374/4, col+ts nchar max 49151 def tagColNcharMaxLengthCheckCase(self): """ # ? case finish , src bug exist @@ -828,12 +826,15 @@ class TDTestCase: input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(1, "letters")}" c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(2) input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(2, "letters")}" c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) - tdSql.checkNotEqual(code, 0) + # ! leave a bug DB error: Invalid value in client + # tdSql.checkNotEqual(code, 0) + # tdSql.query(f"select * from {stb_name}") + # tdSql.checkRows(2) - # ! rollback bug - # TODO because it is no rollback now, so stb has been broken, create a new! # stb_name = self.getLongName(7, "letters") # tb_name = f'{stb_name}_1' # input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' @@ -1058,7 +1059,6 @@ class TDTestCase: input_sql, stb_name = self.genFullTypeSql(tb_name=tb_name) self.resCmp(input_sql, stb_name) s_stb_s_tb_d_ts_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[7] - print(s_stb_s_tb_d_ts_list) self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_d_ts_list)) tdSql.query(f"show tables;") tdSql.checkRows(1) @@ -1074,7 +1074,6 @@ class TDTestCase: input_sql, stb_name = self.genFullTypeSql(tb_name=tb_name) self.resCmp(input_sql, stb_name) s_stb_s_tb_d_ts_a_col_m_tag_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[8] - print(s_stb_s_tb_d_ts_a_col_m_tag_list) self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_d_ts_a_col_m_tag_list)) tdSql.query(f"show tables;") tdSql.checkRows(1) @@ -1094,7 +1093,6 @@ class TDTestCase: input_sql, stb_name = self.genFullTypeSql(tb_name=tb_name) self.resCmp(input_sql, stb_name) s_stb_s_tb_d_ts_a_tag_m_col_list = self.genSqlList(stb_name=stb_name, tb_name=tb_name)[9] - print(s_stb_s_tb_d_ts_a_tag_m_col_list) self.multiThreadRun(self.genMultiThreadSeq(s_stb_s_tb_d_ts_a_tag_m_col_list)) tdSql.query(f"show tables;") tdSql.checkRows(1) @@ -1130,7 +1128,6 @@ class TDTestCase: input_sql, stb_name = self.genFullTypeSql() self.resCmp(input_sql, stb_name) s_stb_d_tb_d_ts_a_col_m_tag_list = self.genSqlList(stb_name=stb_name)[11] - print(s_stb_d_tb_d_ts_a_col_m_tag_list) self.multiThreadRun(self.genMultiThreadSeq(s_stb_d_tb_d_ts_a_col_m_tag_list)) tdSql.query(f"show tables;") tdSql.checkRows(6) @@ -1161,51 +1158,38 @@ class TDTestCase: self.nowTsCheckCase() self.dateFormatTsCheckCase() self.illegalTsCheckCase() - - # ! confirm double self.tagValueLengthCheckCase() - - # ! bug self.colValueLengthCheckCase() - self.tagColIllegalValueCheckCase() - - # ! 重复ID未合并 self.duplicateIdTagColInsertCheckCase() - self.noIdStbExistCheckCase() self.duplicateInsertExistCheckCase() self.tagColBinaryNcharLengthCheckCase() - - # ! 结果未校验 self.tagColAddDupIDCheckCase() - self.tagColAddCheckCase() self.tagMd5Check() - - # ! rollback bug self.tagColBinaryMaxLengthCheckCase() self.tagColNcharMaxLengthCheckCase() - self.batchInsertCheckCase() - self.multiInsertCheckCase(5000) - # ! bug + self.multiInsertCheckCase(10000) self.batchErrorInsertCheckCase() - + # MultiThreads self.stbInsertMultiThreadCheckCase() self.sStbStbDdataInsertMultiThreadCheckCase() self.sStbStbDdataAtcInsertMultiThreadCheckCase() self.sStbStbDdataMtcInsertMultiThreadCheckCase() self.sStbDtbDdataInsertMultiThreadCheckCase() - # ! concurrency conflict + # # ! concurrency conflict # self.sStbDtbDdataAcMtInsertMultiThreadCheckCase() # self.sStbDtbDdataAtMcInsertMultiThreadCheckCase() - # ! concurrency conflict + self.sStbStbDdataDtsInsertMultiThreadCheckCase() - self.sStbStbDdataDtsAcMtInsertMultiThreadCheckCase() - self.sStbStbDdataDtsAtMcInsertMultiThreadCheckCase() + # # ! concurrency conflict + # self.sStbStbDdataDtsAcMtInsertMultiThreadCheckCase() + # self.sStbStbDdataDtsAtMcInsertMultiThreadCheckCase() + self.sStbDtbDdataDtsInsertMultiThreadCheckCase() # ! concurrency conflict @@ -1216,8 +1200,9 @@ class TDTestCase: def run(self): print("running {}".format(__file__)) self.createDb() - # self.runAll() - self.sStbDtbDdataDtsAcMtInsertMultiThreadCheckCase() + self.runAll() + # ! bug leave + # self.tagColNcharMaxLengthCheckCase() # self.test() def stop(self): From e72173dd780c6acd709e354c9c5eb66ed6f8075e Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Wed, 28 Jul 2021 18:28:01 +0800 Subject: [PATCH 26/64] modify --- tests/pytest/insert/schemalessInsert.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index bcf7804412..58542702d4 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -655,7 +655,10 @@ class TDTestCase: code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) # TODO nchar binary - # `~!@#$¥%^&*()-+={}|[]、「」【】:; + # check blank + + + # ~!@#$¥%^&*()-+={}|[]、「」:; def duplicateIdTagColInsertCheckCase(self): """ @@ -831,9 +834,9 @@ class TDTestCase: input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(2, "letters")}" c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) # ! leave a bug DB error: Invalid value in client - # tdSql.checkNotEqual(code, 0) - # tdSql.query(f"select * from {stb_name}") - # tdSql.checkRows(2) + tdSql.checkNotEqual(code, 0) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(2) # stb_name = self.getLongName(7, "letters") # tb_name = f'{stb_name}_1' @@ -1133,10 +1136,11 @@ class TDTestCase: tdSql.checkRows(6) def test(self): - input_sql1 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharTagValue\",c9=7u64 0" - input_sql2 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64 c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64 0" - self._conn.insertLines([input_sql1]) - self._conn.insertLines([input_sql2]) + input_sql1 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"nchar TagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharTagValue\",c9=7u64 0" + # input_sql2 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64 c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64 0" + code = self._conn.insertLines([input_sql1]) + print(code) + # self._conn.insertLines([input_sql2]) # input_sql3 = f'abcd,id="cc¥Ec",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' # print(input_sql3) # input_sql4 = 'hmemeb,id="kilrcrldgf",t0=F,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="fysodjql",t8=L"ncharTagValue" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="waszbfvc",c8=L"ncharColValue",c9=7u64 0' @@ -1200,10 +1204,10 @@ class TDTestCase: def run(self): print("running {}".format(__file__)) self.createDb() - self.runAll() + # self.runAll() # ! bug leave # self.tagColNcharMaxLengthCheckCase() - # self.test() + self.test() def stop(self): tdSql.close() From 4320d6412a642ea0f2b71d00e363e4e180ea716c Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Thu, 29 Jul 2021 14:15:08 +0800 Subject: [PATCH 27/64] finish 40 cases for schemaless in insert/schemalessInsert.py, but 5 of them could not be used now because multiThreading is not complete modify util/sql.py: add row_tag in query(), add col_tag in getColNameList(), add checkEqual() and checkNotEqual() --- tests/pytest/insert/schemalessInsert.py | 65 ++++++++++++++++--------- 1 file changed, 41 insertions(+), 24 deletions(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 58542702d4..0a917b36ec 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -68,7 +68,7 @@ class TDTestCase: ulsec = int(ulsec) * (10 ** (6 - len(ulsec))) elif int(ulsec) == 0: ulsec *= 6 - # ! follow two rows added for tsCheckCase + # * follow two rows added for tsCheckCase td_ts = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(ts)) return td_ts #td_ts = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(ts)) @@ -510,7 +510,7 @@ class TDTestCase: code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) - # f64 # * bug stack smashing detected ***: terminated Aborted --- fixed + # f64 for t6 in [f'{-1.79769*(10**308)}f64', f'{-1.79769*(10**308)}f64']: input_sql, stb_name = self.genFullTypeSql(t6=t6) self.resCmp(input_sql, stb_name) @@ -606,7 +606,6 @@ class TDTestCase: input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16374, "letters")}" 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkEqual(code, 0) - # * bug code is 0 ----- fixed input_sql = f'{stb_name},t0=t c0=f,c1="{self.getLongName(16375, "letters")}" 1626006833639000000ns' code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) @@ -654,11 +653,27 @@ class TDTestCase: ]: code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) - # TODO nchar binary - # check blank - - # ~!@#$¥%^&*()-+={}|[]、「」:; + # check binary and nchar blank + stb_name = self.getLongName(7, "letters") + input_sql1 = f'{stb_name},t0=t c0=f,c1="abc aaa" 1626006833639000000ns' + input_sql2 = f'{stb_name},t0=t c0=f,c1=L"abc aaa" 1626006833639000000ns' + input_sql3 = f'{stb_name},t0=t,t1="abc aaa" c0=f 1626006833639000000ns' + input_sql4 = f'{stb_name},t0=t,t1=L"abc aaa" c0=f 1626006833639000000ns' + for input_sql in [input_sql1, input_sql2, input_sql3, input_sql4]: + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + + # check accepted binary and nchar symbols + # # * ~!@#$¥%^&*()-+={}|[]、「」:; + for symbol in list('~!@#$¥%^&*()-+={}|[]、「」:;'): + input_sql1 = f'{stb_name},t0=t c0=f,c1="abc{symbol}aaa" 1626006833639000000ns' + input_sql2 = f'{stb_name},t0=t,t1="abc{symbol}aaa" c0=f 1626006833639000000ns' + code = self._conn.insertLines([input_sql1]) + tdSql.checkEqual(code, 0) + code = self._conn.insertLines([input_sql2]) + tdSql.checkEqual(code, 0) + def duplicateIdTagColInsertCheckCase(self): """ @@ -782,7 +797,7 @@ class TDTestCase: # * tag binary max is 16384, col+ts binary max 49151 def tagColBinaryMaxLengthCheckCase(self): """ - every binary and nchar must be length+2, so + every binary and nchar must be length+2 """ self.cleanStb() stb_name = self.getLongName(7, "letters") @@ -817,7 +832,7 @@ class TDTestCase: # * tag nchar max is 16374/4, col+ts nchar max 49151 def tagColNcharMaxLengthCheckCase(self): """ - # ? case finish , src bug exist + check nchar length limit """ self.cleanStb() stb_name = self.getLongName(7, "letters") @@ -833,18 +848,20 @@ class TDTestCase: tdSql.checkRows(2) input_sql = f'{stb_name},t0=t,t1=L"{self.getLongName(4093, "letters")}",t2=L"{self.getLongName(2, "letters")}" c0=f 1626006833639000000ns' code = self._conn.insertLines([input_sql]) - # ! leave a bug DB error: Invalid value in client tdSql.checkNotEqual(code, 0) tdSql.query(f"select * from {stb_name}") tdSql.checkRows(2) - # stb_name = self.getLongName(7, "letters") - # tb_name = f'{stb_name}_1' - # input_sql = f'{stb_name},id="{tb_name}",t0=t c0=f 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4093, "letters")}",c2=L"{self.getLongName(4093, "letters")}",c3=L"{self.getLongName(4093, "letters")}" 1626006833639000000ns' - # code = self._conn.insertLines([input_sql]) - # tdSql.checkEqual(code, 0) + input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4093, "letters")}",c2=L"{self.getLongName(4093, "letters")}",c3=L"{self.getLongName(4093, "letters")}",c4=L"{self.getLongName(4, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkEqual(code, 0) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(3) + input_sql = f'{stb_name},t0=t c0=f,c1=L"{self.getLongName(4093, "letters")}",c2=L"{self.getLongName(4093, "letters")}",c3=L"{self.getLongName(4093, "letters")}",c4=L"{self.getLongName(5, "letters")}" 1626006833639000000ns' + code = self._conn.insertLines([input_sql]) + tdSql.checkNotEqual(code, 0) + tdSql.query(f"select * from {stb_name}") + tdSql.checkRows(3) def batchInsertCheckCase(self): """ @@ -1136,9 +1153,10 @@ class TDTestCase: tdSql.checkRows(6) def test(self): - input_sql1 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"nchar TagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharTagValue\",c9=7u64 0" - # input_sql2 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64 c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64 0" + input_sql1 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7=\"ddzhiksj\",t8=L\"ncharTagValue\" c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7=\"bnhwlgvj\",c8=L\"ncharTagValue\",c9=7u64 1626006933640000000ns" + input_sql2 = "rfasta,id=\"rfasta_1\",t0=true,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64 c0=True,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64 1626006933640000000ns" code = self._conn.insertLines([input_sql1]) + code = self._conn.insertLines([input_sql2]) print(code) # self._conn.insertLines([input_sql2]) # input_sql3 = f'abcd,id="cc¥Ec",t0=True,t1=127i8,t2=32767i16,t3=2147483647i32,t4=9223372036854775807i64,t5=11.12345f32,t6=22.123456789f64,t7="ndsfdrum",t8=L"ncharTagValue" c0=f,c1=127i8,c2=32767i16,c3=2147483647i32,c4=9223372036854775807i64,c5=11.12345f32,c6=22.123456789f64,c7="igwoehkm",c8=L"ncharColValue",c9=7u64 0' @@ -1175,7 +1193,7 @@ class TDTestCase: self.tagColBinaryMaxLengthCheckCase() self.tagColNcharMaxLengthCheckCase() self.batchInsertCheckCase() - self.multiInsertCheckCase(10000) + self.multiInsertCheckCase(5000) self.batchErrorInsertCheckCase() # MultiThreads self.stbInsertMultiThreadCheckCase() @@ -1204,10 +1222,9 @@ class TDTestCase: def run(self): print("running {}".format(__file__)) self.createDb() - # self.runAll() - # ! bug leave - # self.tagColNcharMaxLengthCheckCase() - self.test() + self.runAll() + # self.tagColIllegalValueCheckCase() + # self.test() def stop(self): tdSql.close() From 92ea7517f6b068434e50d5faa6833f2899b20351 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Fri, 30 Jul 2021 17:40:02 +0800 Subject: [PATCH 28/64] add tdSql.execute('reset query cache') to function resHandle() --- tests/pytest/insert/schemalessInsert.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 0a917b36ec..5582f47849 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -277,6 +277,7 @@ class TDTestCase: return tb_name def resHandle(self, query_sql, query_tag): + tdSql.execute('reset query cache') row_info = tdSql.query(query_sql, query_tag) col_info = tdSql.getColNameList(query_sql, query_tag) res_row_list = [] From 385c4bd13266b17fda4a99754c212d61db36d875 Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Sun, 1 Aug 2021 22:23:46 +0800 Subject: [PATCH 29/64] [TD-5559]:[schemaless]add unique id to sml parser logs --- src/client/src/tscParseLineProtocol.c | 104 +++++++++++++------------- 1 file changed, 53 insertions(+), 51 deletions(-) diff --git a/src/client/src/tscParseLineProtocol.c b/src/client/src/tscParseLineProtocol.c index c6cdee6f1f..69c74a3291 100644 --- a/src/client/src/tscParseLineProtocol.c +++ b/src/client/src/tscParseLineProtocol.c @@ -1417,7 +1417,7 @@ static bool isTimeStamp(char *pVal, uint16_t len, SMLTimeStampType *tsType) { return false; } -static bool convertStrToNumber(TAOS_SML_KV *pVal, char*str) { +static bool convertStrToNumber(TAOS_SML_KV *pVal, char*str, SSmlLinesInfo* info) { errno = 0; uint8_t type = pVal->type; int16_t length = pVal->length; @@ -1436,7 +1436,7 @@ static bool convertStrToNumber(TAOS_SML_KV *pVal, char*str) { } if (errno == ERANGE) { - tscError("Converted number out of range"); + tscError("SML:0x%"PRIx64" Convert number(%s) out of range", info->id, str); return false; } @@ -1518,7 +1518,7 @@ static bool convertStrToNumber(TAOS_SML_KV *pVal, char*str) { } //len does not include '\0' from value. static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, - uint16_t len) { + uint16_t len, SSmlLinesInfo* info) { if (len <= 0) { return false; } @@ -1528,7 +1528,7 @@ static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, pVal->type = TSDB_DATA_TYPE_TINYINT; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; value[len - 2] = '\0'; - if (!isValidInteger(value) || !convertStrToNumber(pVal, value)) { + if (!isValidInteger(value) || !convertStrToNumber(pVal, value, info)) { return false; } return true; @@ -1537,7 +1537,7 @@ static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, pVal->type = TSDB_DATA_TYPE_UTINYINT; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; value[len - 2] = '\0'; - if (!isValidInteger(value) || !convertStrToNumber(pVal, value)) { + if (!isValidInteger(value) || !convertStrToNumber(pVal, value, info)) { return false; } return true; @@ -1546,7 +1546,7 @@ static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, pVal->type = TSDB_DATA_TYPE_SMALLINT; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; value[len - 3] = '\0'; - if (!isValidInteger(value) || !convertStrToNumber(pVal, value)) { + if (!isValidInteger(value) || !convertStrToNumber(pVal, value, info)) { return false; } return true; @@ -1555,7 +1555,7 @@ static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, pVal->type = TSDB_DATA_TYPE_USMALLINT; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; value[len - 3] = '\0'; - if (!isValidInteger(value) || !convertStrToNumber(pVal, value)) { + if (!isValidInteger(value) || !convertStrToNumber(pVal, value, info)) { return false; } return true; @@ -1564,7 +1564,7 @@ static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, pVal->type = TSDB_DATA_TYPE_INT; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; value[len - 3] = '\0'; - if (!isValidInteger(value) || !convertStrToNumber(pVal, value)) { + if (!isValidInteger(value) || !convertStrToNumber(pVal, value, info)) { return false; } return true; @@ -1573,7 +1573,7 @@ static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, pVal->type = TSDB_DATA_TYPE_UINT; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; value[len - 3] = '\0'; - if (!isValidInteger(value) || !convertStrToNumber(pVal, value)) { + if (!isValidInteger(value) || !convertStrToNumber(pVal, value, info)) { return false; } return true; @@ -1582,7 +1582,7 @@ static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, pVal->type = TSDB_DATA_TYPE_BIGINT; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; value[len - 3] = '\0'; - if (!isValidInteger(value) || !convertStrToNumber(pVal, value)) { + if (!isValidInteger(value) || !convertStrToNumber(pVal, value, info)) { return false; } return true; @@ -1591,7 +1591,7 @@ static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, pVal->type = TSDB_DATA_TYPE_UBIGINT; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; value[len - 3] = '\0'; - if (!isValidInteger(value) || !convertStrToNumber(pVal, value)) { + if (!isValidInteger(value) || !convertStrToNumber(pVal, value, info)) { return false; } return true; @@ -1601,7 +1601,7 @@ static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, pVal->type = TSDB_DATA_TYPE_FLOAT; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; value[len - 3] = '\0'; - if (!isValidFloat(value) || !convertStrToNumber(pVal, value)) { + if (!isValidFloat(value) || !convertStrToNumber(pVal, value, info)) { return false; } return true; @@ -1610,7 +1610,7 @@ static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, pVal->type = TSDB_DATA_TYPE_DOUBLE; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; value[len - 3] = '\0'; - if (!isValidFloat(value) || !convertStrToNumber(pVal, value)) { + if (!isValidFloat(value) || !convertStrToNumber(pVal, value, info)) { return false; } return true; @@ -1646,7 +1646,7 @@ static bool convertSmlValueType(TAOS_SML_KV *pVal, char *value, if (isValidInteger(value) || isValidFloat(value)) { pVal->type = TSDB_DATA_TYPE_FLOAT; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; - if (!convertStrToNumber(pVal, value)) { + if (!convertStrToNumber(pVal, value, info)) { return false; } return true; @@ -1702,7 +1702,7 @@ static int32_t getTimeStampValue(char *value, uint16_t len, } static int32_t convertSmlTimeStamp(TAOS_SML_KV *pVal, char *value, - uint16_t len) { + uint16_t len, SSmlLinesInfo* info) { int32_t ret; SMLTimeStampType type; int64_t tsVal; @@ -1715,7 +1715,7 @@ static int32_t convertSmlTimeStamp(TAOS_SML_KV *pVal, char *value, if (ret) { return ret; } - tscDebug("Timestamp after conversion:%"PRId64, tsVal); + tscDebug("SML:0x%"PRIx64"Timestamp after conversion:%"PRId64, info->id, tsVal); pVal->type = TSDB_DATA_TYPE_TIMESTAMP; pVal->length = (int16_t)tDataTypes[pVal->type].bytes; @@ -1724,7 +1724,7 @@ static int32_t convertSmlTimeStamp(TAOS_SML_KV *pVal, char *value, return TSDB_CODE_SUCCESS; } -static int32_t parseSmlTimeStamp(TAOS_SML_KV **pTS, const char **index) { +static int32_t parseSmlTimeStamp(TAOS_SML_KV **pTS, const char **index, SSmlLinesInfo* info) { const char *start, *cur; int32_t ret = TSDB_CODE_SUCCESS; int len = 0; @@ -1744,7 +1744,7 @@ static int32_t parseSmlTimeStamp(TAOS_SML_KV **pTS, const char **index) { memcpy(value, start, len); } - ret = convertSmlTimeStamp(*pTS, value, len); + ret = convertSmlTimeStamp(*pTS, value, len, info); if (ret) { free(value); free(*pTS); @@ -1757,7 +1757,7 @@ static int32_t parseSmlTimeStamp(TAOS_SML_KV **pTS, const char **index) { return ret; } -static bool checkDuplicateKey(char *key, SHashObj *pHash) { +static bool checkDuplicateKey(char *key, SHashObj *pHash, SSmlLinesInfo* info) { char *val = NULL; char *cur = key; char keyLower[TSDB_COL_NAME_LEN]; @@ -1771,7 +1771,7 @@ static bool checkDuplicateKey(char *key, SHashObj *pHash) { val = taosHashGet(pHash, keyLower, keyLen); if (val) { - tscError("Duplicate key:%s", keyLower); + tscError("SML:0x%"PRIx64" Duplicate key detected:%s", info->id, keyLower); return true; } @@ -1781,19 +1781,19 @@ static bool checkDuplicateKey(char *key, SHashObj *pHash) { return false; } -static int32_t parseSmlKey(TAOS_SML_KV *pKV, const char **index, SHashObj *pHash) { +static int32_t parseSmlKey(TAOS_SML_KV *pKV, const char **index, SHashObj *pHash, SSmlLinesInfo* info) { const char *cur = *index; char key[TSDB_COL_NAME_LEN + 1]; // +1 to avoid key[len] over write uint16_t len = 0; //key field cannot start with digit if (isdigit(*cur)) { - tscError("Tag key cannnot start with digit\n"); + tscError("SML:0x%"PRIx64" Tag key cannnot start with digit", info->id); return TSDB_CODE_TSC_LINE_SYNTAX_ERROR; } while (*cur != '\0') { if (len > TSDB_COL_NAME_LEN) { - tscDebug("Key field cannot exceeds 65 characters"); + tscError("SML:0x%"PRIx64" Key field cannot exceeds 65 characters", info->id); return TSDB_CODE_TSC_LINE_SYNTAX_ERROR; } //unescaped '=' identifies a tag key @@ -1810,20 +1810,20 @@ static int32_t parseSmlKey(TAOS_SML_KV *pKV, const char **index, SHashObj *pHash } key[len] = '\0'; - if (checkDuplicateKey(key, pHash)) { + if (checkDuplicateKey(key, pHash, info)) { return TSDB_CODE_TSC_LINE_SYNTAX_ERROR; } pKV->key = calloc(len + 1, 1); memcpy(pKV->key, key, len + 1); - //tscDebug("Key:%s|len:%d", pKV->key, len); + //tscDebug("SML:0x%"PRIx64" Key:%s|len:%d", info->id, pKV->key, len); *index = cur + 1; return TSDB_CODE_SUCCESS; } static bool parseSmlValue(TAOS_SML_KV *pKV, const char **index, - bool *is_last_kv) { + bool *is_last_kv, SSmlLinesInfo* info) { const char *start, *cur; char *value = NULL; uint16_t len = 0; @@ -1847,7 +1847,9 @@ static bool parseSmlValue(TAOS_SML_KV *pKV, const char **index, value = calloc(len + 1, 1); memcpy(value, start, len); value[len] = '\0'; - if (!convertSmlValueType(pKV, value, len)) { + if (!convertSmlValueType(pKV, value, len, info)) { + tscError("SML:0x%"PRIx64" Failed to convert sml value string(%s) to any type", + info->id, value); //free previous alocated key field free(pKV->key); pKV->key = NULL; @@ -1861,7 +1863,7 @@ static bool parseSmlValue(TAOS_SML_KV *pKV, const char **index, } static int32_t parseSmlMeasurement(TAOS_SML_DATA_POINT *pSml, const char **index, - uint8_t *has_tags) { + uint8_t *has_tags, SSmlLinesInfo* info) { const char *cur = *index; uint16_t len = 0; @@ -1870,7 +1872,7 @@ static int32_t parseSmlMeasurement(TAOS_SML_DATA_POINT *pSml, const char **index return TSDB_CODE_TSC_OUT_OF_MEMORY; } if (isdigit(*cur)) { - tscError("Measurement field cannnot start with digit"); + tscError("SML:0x%"PRIx64" Measurement field cannnot start with digit", info->id); free(pSml->stableName); pSml->stableName = NULL; return TSDB_CODE_TSC_LINE_SYNTAX_ERROR; @@ -1878,7 +1880,7 @@ static int32_t parseSmlMeasurement(TAOS_SML_DATA_POINT *pSml, const char **index while (*cur != '\0') { if (len > TSDB_TABLE_NAME_LEN) { - tscError("Measurement field cannot exceeds 193 characters"); + tscError("SML:0x%"PRIx64" Measurement field cannot exceeds 193 characters", info->id); free(pSml->stableName); pSml->stableName = NULL; return TSDB_CODE_TSC_LINE_SYNTAX_ERROR; @@ -1902,7 +1904,7 @@ static int32_t parseSmlMeasurement(TAOS_SML_DATA_POINT *pSml, const char **index } pSml->stableName[len] = '\0'; *index = cur + 1; - tscDebug("Stable name in measurement:%s|len:%d", pSml->stableName, len); + tscDebug("SML:0x%"PRIx64" Stable name in measurement:%s|len:%d", info->id, pSml->stableName, len); return TSDB_CODE_SUCCESS; } @@ -1921,7 +1923,8 @@ static int32_t isValidChildTableName(const char *pTbName, int16_t len) { static int32_t parseSmlKvPairs(TAOS_SML_KV **pKVs, int *num_kvs, const char **index, bool isField, - TAOS_SML_DATA_POINT* smlData, SHashObj *pHash) { + TAOS_SML_DATA_POINT* smlData, SHashObj *pHash, + SSmlLinesInfo* info) { const char *cur = *index; int32_t ret = TSDB_CODE_SUCCESS; TAOS_SML_KV *pkv; @@ -1941,14 +1944,14 @@ static int32_t parseSmlKvPairs(TAOS_SML_KV **pKVs, int *num_kvs, } while (*cur != '\0') { - ret = parseSmlKey(pkv, &cur, pHash); + ret = parseSmlKey(pkv, &cur, pHash, info); if (ret) { - tscError("Unable to parse key field"); + tscError("SML:0x%"PRIx64" Unable to parse key", info->id); goto error; } - ret = parseSmlValue(pkv, &cur, &is_last_kv); + ret = parseSmlValue(pkv, &cur, &is_last_kv, info); if (ret) { - tscError("Unable to parse value field"); + tscError("SML:0x%"PRIx64" Unable to parse value", info->id); goto error; } if (!isField && @@ -1966,7 +1969,6 @@ static int32_t parseSmlKvPairs(TAOS_SML_KV **pKVs, int *num_kvs, *num_kvs += 1; } if (is_last_kv) { - //tscDebug("last key-value field detected"); goto done; } @@ -2024,50 +2026,50 @@ static void moveTimeStampToFirstKv(TAOS_SML_DATA_POINT** smlData, TAOS_SML_KV *t free(ts); } -int32_t tscParseLine(const char* sql, TAOS_SML_DATA_POINT* smlData) { +int32_t tscParseLine(const char* sql, TAOS_SML_DATA_POINT* smlData, SSmlLinesInfo* info) { const char* index = sql; int32_t ret = TSDB_CODE_SUCCESS; uint8_t has_tags = 0; TAOS_SML_KV *timestamp = NULL; SHashObj *keyHashTable = taosHashInit(128, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, false); - ret = parseSmlMeasurement(smlData, &index, &has_tags); + ret = parseSmlMeasurement(smlData, &index, &has_tags, info); if (ret) { - tscError("Unable to parse measurement"); + tscError("SML:0x%"PRIx64" Unable to parse measurement", info->id); taosHashCleanup(keyHashTable); return ret; } - tscDebug("Parse measurement finished, has_tags:%d", has_tags); + tscDebug("SML:0x%"PRIx64" Parse measurement finished, has_tags:%d", info->id, has_tags); //Parse Tags if (has_tags) { - ret = parseSmlKvPairs(&smlData->tags, &smlData->tagNum, &index, false, smlData, keyHashTable); + ret = parseSmlKvPairs(&smlData->tags, &smlData->tagNum, &index, false, smlData, keyHashTable, info); if (ret) { - tscError("Unable to parse tag"); + tscError("SML:0x%"PRIx64" Unable to parse tag", info->id); taosHashCleanup(keyHashTable); return ret; } } - tscDebug("Parse tags finished, num of tags:%d", smlData->tagNum); + tscDebug("SML:0x%"PRIx64" Parse tags finished, num of tags:%d", info->id, smlData->tagNum); //Parse fields - ret = parseSmlKvPairs(&smlData->fields, &smlData->fieldNum, &index, true, smlData, keyHashTable); + ret = parseSmlKvPairs(&smlData->fields, &smlData->fieldNum, &index, true, smlData, keyHashTable, info); if (ret) { - tscError("Unable to parse field"); + tscError("SML:0x%"PRIx64" Unable to parse field", info->id); taosHashCleanup(keyHashTable); return ret; } - tscDebug("Parse fields finished, num of fields:%d", smlData->fieldNum); + tscDebug("SML:0x%"PRIx64" Parse fields finished, num of fields:%d", info->id, smlData->fieldNum); taosHashCleanup(keyHashTable); //Parse timestamp - ret = parseSmlTimeStamp(×tamp, &index); + ret = parseSmlTimeStamp(×tamp, &index, info); if (ret) { - tscError("Unable to parse timestamp"); + tscError("SML:0x%"PRIx64" Unable to parse timestamp", info->id); return ret; } moveTimeStampToFirstKv(&smlData, timestamp); - tscDebug("Parse timestamp finished"); + tscDebug("SML:0x%"PRIx64" Parse timestamp finished", info->id); return TSDB_CODE_SUCCESS; } @@ -2104,7 +2106,7 @@ void destroySmlDataPoint(TAOS_SML_DATA_POINT* point) { int32_t tscParseLines(char* lines[], int numLines, SArray* points, SArray* failedLines, SSmlLinesInfo* info) { for (int32_t i = 0; i < numLines; ++i) { TAOS_SML_DATA_POINT point = {0}; - int32_t code = tscParseLine(lines[i], &point); + int32_t code = tscParseLine(lines[i], &point, info); if (code != TSDB_CODE_SUCCESS) { tscError("SML:0x%"PRIx64" data point line parse failed. line %d : %s", info->id, i, lines[i]); destroySmlDataPoint(&point); From 3e50aef50c82aa6df4ca0ccff667b0b60516a804 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 2 Aug 2021 13:02:43 +0800 Subject: [PATCH 30/64] [td-3299]: add logic plan support. --- src/client/src/tscParseInsert.c | 5 +- src/client/src/tscSQLParser.c | 26 +++---- src/client/src/tscServer.c | 6 +- src/client/src/tscSubquery.c | 2 + src/client/src/tscUtil.c | 2 +- src/os/inc/osTime.h | 2 +- src/os/src/detail/osTime.c | 8 +-- src/query/inc/sql.y | 2 +- src/query/src/qPlan.c | 72 ++++++++++--------- src/query/src/qSqlParser.c | 3 +- src/query/src/sql.c | 122 ++++++++++++++++---------------- 11 files changed, 124 insertions(+), 126 deletions(-) diff --git a/src/client/src/tscParseInsert.c b/src/client/src/tscParseInsert.c index f24f7a7ecb..2db4c27886 100644 --- a/src/client/src/tscParseInsert.c +++ b/src/client/src/tscParseInsert.c @@ -84,8 +84,6 @@ int tsParseTime(SStrToken *pToken, int64_t *time, char **next, char *error, int1 int64_t useconds = 0; char * pTokenEnd = *next; - index = 0; - if (pToken->type == TK_NOW) { useconds = taosGetTimestamp(timePrec); } else if (strncmp(pToken->z, "0", 1) == 0 && pToken->n == 1) { @@ -130,7 +128,8 @@ int tsParseTime(SStrToken *pToken, int64_t *time, char **next, char *error, int1 return tscInvalidOperationMsg(error, "value expected in timestamp", sToken.z); } - if (parseAbsoluteDuration(valueToken.z, valueToken.n, &interval, timePrec) != TSDB_CODE_SUCCESS) { + char unit = 0; + if (parseAbsoluteDuration(valueToken.z, valueToken.n, &interval, &unit, timePrec) != TSDB_CODE_SUCCESS) { return TSDB_CODE_TSC_INVALID_OPERATION; } diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index a55b7ca253..b5c310d0db 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -1287,35 +1287,31 @@ int32_t parseSlidingClause(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, SStrToken* pSl STableMetaInfo* pTableMetaInfo = tscGetMetaInfo(pQueryInfo, 0); STableComInfo tinfo = tscGetTableInfo(pTableMetaInfo->pTableMeta); + SInterval* pInterval = &pQueryInfo->interval; if (pSliding->n == 0) { - pQueryInfo->interval.slidingUnit = pQueryInfo->interval.intervalUnit; - pQueryInfo->interval.sliding = pQueryInfo->interval.interval; + pInterval->slidingUnit = pInterval->intervalUnit; + pInterval->sliding = pInterval->interval; return TSDB_CODE_SUCCESS; } - if (pQueryInfo->interval.intervalUnit == 'n' || pQueryInfo->interval.intervalUnit == 'y') { + if (pInterval->intervalUnit == 'n' || pInterval->intervalUnit == 'y') { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3); } - parseAbsoluteDuration(pSliding->z, pSliding->n, &pQueryInfo->interval.sliding, tinfo.precision); + parseAbsoluteDuration(pSliding->z, pSliding->n, &pInterval->sliding, &pInterval->slidingUnit, tinfo.precision); - if (pQueryInfo->interval.sliding < - convertTimePrecision(tsMinSlidingTime, TSDB_TIME_PRECISION_MILLI, tinfo.precision)) { + if (pInterval->sliding < convertTimePrecision(tsMinSlidingTime, TSDB_TIME_PRECISION_MILLI, tinfo.precision)) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg0); } - if (pQueryInfo->interval.sliding > pQueryInfo->interval.interval) { + if (pInterval->sliding > pInterval->interval) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg1); } - if ((pQueryInfo->interval.interval != 0) && (pQueryInfo->interval.interval/pQueryInfo->interval.sliding > INTERVAL_SLIDING_FACTOR)) { + if ((pInterval->interval != 0) && (pInterval->interval/pInterval->sliding > INTERVAL_SLIDING_FACTOR)) { return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg2); } -// if (pQueryInfo->interval.sliding != pQueryInfo->interval.interval && pSql->pStream == NULL) { -// return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg4); -// } - return TSDB_CODE_SUCCESS; } @@ -8752,13 +8748,13 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf tfree(p); } -#if 0 +//#if 0 SQueryNode* p = qCreateQueryPlan(pQueryInfo); char* s = queryPlanToString(p); + printf("%s\n", s); tfree(s); - qDestroyQueryPlan(p); -#endif +//#endif return TSDB_CODE_SUCCESS; // Does not build query message here } diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 0d23d8af20..e4c5c7346f 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -392,10 +392,8 @@ void tscProcessMsgFromServer(SRpcMsg *rpcMsg, SRpcEpSet *pEpSet) { // single table query error need to be handled here. if ((cmd == TSDB_SQL_SELECT || cmd == TSDB_SQL_UPDATE_TAGS_VAL) && - (((rpcMsg->code == TSDB_CODE_TDB_INVALID_TABLE_ID || - rpcMsg->code == TSDB_CODE_VND_INVALID_VGROUP_ID)) || - rpcMsg->code == TSDB_CODE_RPC_NETWORK_UNAVAIL || - rpcMsg->code == TSDB_CODE_APP_NOT_READY)) { + (((rpcMsg->code == TSDB_CODE_TDB_INVALID_TABLE_ID || rpcMsg->code == TSDB_CODE_VND_INVALID_VGROUP_ID)) || + rpcMsg->code == TSDB_CODE_RPC_NETWORK_UNAVAIL || rpcMsg->code == TSDB_CODE_APP_NOT_READY)) { // 1. super table subquery // 2. nest queries are all not updated the tablemeta and retry parse the sql after cleanup local tablemeta/vgroup id buffer diff --git a/src/client/src/tscSubquery.c b/src/client/src/tscSubquery.c index 8c20aed350..083903cf2b 100644 --- a/src/client/src/tscSubquery.c +++ b/src/client/src/tscSubquery.c @@ -1635,6 +1635,8 @@ void tscFetchDatablockForSubquery(SSqlObj* pSql) { continue; } + + SSqlRes* pRes1 = &pSql1->res; if (pRes1->row >= pRes1->numOfRows) { subquerySetState(pSql1, &pSql->subState, i, 0); diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index ba7f86f8bc..c5e1e0184f 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -3654,7 +3654,7 @@ SSqlObj* createSubqueryObj(SSqlObj* pSql, int16_t tableIndex, __async_cb_func_t if (pQueryInfo->fillType != TSDB_FILL_NONE) { //just make memory memory sanitizer happy - //refator later + //refactor later pNewQueryInfo->fillVal = calloc(1, pQueryInfo->fieldsInfo.numOfOutput * sizeof(int64_t)); if (pNewQueryInfo->fillVal == NULL) { terrno = TSDB_CODE_TSC_OUT_OF_MEMORY; diff --git a/src/os/inc/osTime.h b/src/os/inc/osTime.h index f013a2f7d1..dcb0e4c9b6 100644 --- a/src/os/inc/osTime.h +++ b/src/os/inc/osTime.h @@ -97,7 +97,7 @@ int64_t taosTimeAdd(int64_t t, int64_t duration, char unit, int32_t precision); int64_t taosTimeTruncate(int64_t t, const SInterval* pInterval, int32_t precision); int32_t taosTimeCountInterval(int64_t skey, int64_t ekey, int64_t interval, char unit, int32_t precision); -int32_t parseAbsoluteDuration(char* token, int32_t tokenlen, int64_t* ts, int32_t timePrecision); +int32_t parseAbsoluteDuration(char* token, int32_t tokenlen, int64_t* ts, char* unit, int32_t timePrecision); int32_t parseNatualDuration(const char* token, int32_t tokenLen, int64_t* duration, char* unit, int32_t timePrecision); int32_t taosParseTime(char* timestr, int64_t* time, int32_t len, int32_t timePrec, int8_t dayligth); diff --git a/src/os/src/detail/osTime.c b/src/os/src/detail/osTime.c index 847d484d9e..a95d919a83 100644 --- a/src/os/src/detail/osTime.c +++ b/src/os/src/detail/osTime.c @@ -397,7 +397,7 @@ static int32_t getDuration(int64_t val, char unit, int64_t* result, int32_t time * n - Months (30 days) * y - Years (365 days) */ -int32_t parseAbsoluteDuration(char* token, int32_t tokenlen, int64_t* duration, int32_t timePrecision) { +int32_t parseAbsoluteDuration(char* token, int32_t tokenlen, int64_t* duration, char* unit, int32_t timePrecision) { errno = 0; char* endPtr = NULL; @@ -408,12 +408,12 @@ int32_t parseAbsoluteDuration(char* token, int32_t tokenlen, int64_t* duration, } /* natual month/year are not allowed in absolute duration */ - char unit = token[tokenlen - 1]; - if (unit == 'n' || unit == 'y') { + *unit = token[tokenlen - 1]; + if (*unit == 'n' || *unit == 'y') { return -1; } - return getDuration(timestamp, unit, duration, timePrecision); + return getDuration(timestamp, *unit, duration, timePrecision); } int32_t parseNatualDuration(const char* token, int32_t tokenLen, int64_t* duration, char* unit, int32_t timePrecision) { diff --git a/src/query/inc/sql.y b/src/query/inc/sql.y index ecdde4f707..96f1e680f1 100644 --- a/src/query/inc/sql.y +++ b/src/query/inc/sql.y @@ -479,7 +479,7 @@ tagitem(A) ::= PLUS(X) FLOAT(Y). { //////////////////////// The SELECT statement ///////////////////////////////// %type select {SSqlNode*} %destructor select {destroySqlNode($$);} -select(A) ::= SELECT(T) selcollist(W) from(X) where_opt(Y) interval_opt(K) session_option(H) windowstate_option(D) fill_opt(F) sliding_opt(S) groupby_opt(P) having_opt(N) orderby_opt(Z) slimit_opt(G) limit_opt(L). { +select(A) ::= SELECT(T) selcollist(W) from(X) where_opt(Y) interval_opt(K) sliding_opt(S) session_option(H) windowstate_option(D) fill_opt(F)groupby_opt(P) having_opt(N) orderby_opt(Z) slimit_opt(G) limit_opt(L). { A = tSetQuerySqlNode(&T, W, X, Y, P, Z, &K, &H, &D, &S, F, &L, &G, N); } diff --git a/src/query/src/qPlan.c b/src/query/src/qPlan.c index a94d015e06..42b99852ce 100644 --- a/src/query/src/qPlan.c +++ b/src/query/src/qPlan.c @@ -32,8 +32,8 @@ typedef struct SJoinCond { SColumn *colCond[2]; } SJoinCond; -static SQueryNode* createQueryNode(int32_t type, const char* name, SQueryNode** prev, - int32_t numOfPrev, SExprInfo** pExpr, int32_t numOfOutput, SQueryTableInfo* pTableInfo, +static SQueryNode* createQueryNode(int32_t type, const char* name, SQueryNode** prev, int32_t numOfPrev, + SExprInfo** pExpr, int32_t numOfOutput, SQueryTableInfo* pTableInfo, void* pExtInfo) { SQueryNode* pNode = calloc(1, sizeof(SQueryNode)); @@ -112,8 +112,8 @@ static SQueryNode* doAddTableColumnNode(SQueryInfo* pQueryInfo, STableMetaInfo* } STimeWindow* window = &pQueryInfo->window; - SQueryNode* pNode = createQueryNode(QNODE_TABLESCAN, "TableScan", NULL, 0, NULL, 0, - info, window); + SQueryNode* pNode = createQueryNode(QNODE_TABLESCAN, "TableScan", NULL, 0, NULL, 0, info, window); + if (pQueryInfo->projectionQuery) { int32_t numOfOutput = (int32_t) taosArrayGetSize(pExprs); pNode = createQueryNode(QNODE_PROJECT, "Projection", &pNode, 1, pExprs->pData, numOfOutput, info, NULL); @@ -146,39 +146,41 @@ static SQueryNode* doAddTableColumnNode(SQueryInfo* pQueryInfo, STableMetaInfo* } static SQueryNode* doCreateQueryPlanForOneTableImpl(SQueryInfo* pQueryInfo, SQueryNode* pNode, SQueryTableInfo* info, - SArray* pExprs) { - // check for aggregation - if (pQueryInfo->interval.interval > 0) { - int32_t numOfOutput = (int32_t) taosArrayGetSize(pExprs); + SArray* pExprs) { + // check for aggregation + if (pQueryInfo->interval.interval > 0) { + int32_t numOfOutput = (int32_t)taosArrayGetSize(pExprs); - pNode = createQueryNode(QNODE_TIMEWINDOW, "TimeWindowAgg", &pNode, 1, pExprs->pData, numOfOutput, info, - &pQueryInfo->interval); - } else if (pQueryInfo->groupbyColumn) { - int32_t numOfOutput = (int32_t) taosArrayGetSize(pExprs); - pNode = createQueryNode(QNODE_GROUPBY, "Groupby", &pNode, 1, pExprs->pData, numOfOutput, info, - &pQueryInfo->groupbyExpr); - } else if (pQueryInfo->sessionWindow.gap > 0) { - pNode = createQueryNode(QNODE_SESSIONWINDOW, "SessionWindowAgg", &pNode, 1, NULL, 0, info, NULL); - } else if (pQueryInfo->simpleAgg) { - int32_t numOfOutput = (int32_t) taosArrayGetSize(pExprs); - pNode = createQueryNode(QNODE_AGGREGATE, "Aggregate", &pNode, 1, pExprs->pData, numOfOutput, info, NULL); + pNode = createQueryNode(QNODE_TIMEWINDOW, "TimeWindowAgg", &pNode, 1, pExprs->pData, numOfOutput, info, + &pQueryInfo->interval); + if (pQueryInfo->groupbyExpr.numOfGroupCols != 0) { + pNode = createQueryNode(QNODE_GROUPBY, "Groupby", &pNode, 1, pExprs->pData, numOfOutput, info, &pQueryInfo->groupbyExpr); } + } else if (pQueryInfo->groupbyColumn) { + int32_t numOfOutput = (int32_t)taosArrayGetSize(pExprs); + pNode = createQueryNode(QNODE_GROUPBY, "Groupby", &pNode, 1, pExprs->pData, numOfOutput, info, + &pQueryInfo->groupbyExpr); + } else if (pQueryInfo->sessionWindow.gap > 0) { + pNode = createQueryNode(QNODE_SESSIONWINDOW, "SessionWindowAgg", &pNode, 1, NULL, 0, info, NULL); + } else if (pQueryInfo->simpleAgg) { + int32_t numOfOutput = (int32_t)taosArrayGetSize(pExprs); + pNode = createQueryNode(QNODE_AGGREGATE, "Aggregate", &pNode, 1, pExprs->pData, numOfOutput, info, NULL); + } - if (pQueryInfo->havingFieldNum > 0 || pQueryInfo->arithmeticOnAgg) { - int32_t numOfExpr = (int32_t) taosArrayGetSize(pQueryInfo->exprList1); - pNode = - createQueryNode(QNODE_PROJECT, "Projection", &pNode, 1, pQueryInfo->exprList1->pData, numOfExpr, info, NULL); - } + if (pQueryInfo->havingFieldNum > 0 || pQueryInfo->arithmeticOnAgg) { + int32_t numOfExpr = (int32_t)taosArrayGetSize(pQueryInfo->exprList1); + pNode = + createQueryNode(QNODE_PROJECT, "Projection", &pNode, 1, pQueryInfo->exprList1->pData, numOfExpr, info, NULL); + } - if (pQueryInfo->fillType != TSDB_FILL_NONE) { - SFillEssInfo* pInfo = calloc(1, sizeof(SFillEssInfo)); - pInfo->fillType = pQueryInfo->fillType; - pInfo->val = calloc(pNode->numOfOutput, sizeof(int64_t)); - memcpy(pInfo->val, pQueryInfo->fillVal, pNode->numOfOutput); - - pNode = createQueryNode(QNODE_FILL, "Fill", &pNode, 1, NULL, 0, info, pInfo); - } + if (pQueryInfo->fillType != TSDB_FILL_NONE) { + SFillEssInfo* pInfo = calloc(1, sizeof(SFillEssInfo)); + pInfo->fillType = pQueryInfo->fillType; + pInfo->val = calloc(pNode->numOfOutput, sizeof(int64_t)); + memcpy(pInfo->val, pQueryInfo->fillVal, pNode->numOfOutput); + pNode = createQueryNode(QNODE_FILL, "Fill", &pNode, 1, NULL, 0, info, pInfo); + } if (pQueryInfo->limit.limit != -1 || pQueryInfo->limit.offset != 0) { pNode = createQueryNode(QNODE_LIMIT, "Limit", &pNode, 1, NULL, 0, info, &pQueryInfo->limit); @@ -326,7 +328,7 @@ static int32_t doPrintPlan(char* buf, SQueryNode* pQueryNode, int32_t level, int switch(pQueryNode->info.type) { case QNODE_TABLESCAN: { STimeWindow* win = (STimeWindow*)pQueryNode->pExtInfo; - len1 = sprintf(buf + len, "%s #0x%" PRIx64 ") time_range: %" PRId64 " - %" PRId64 "\n", + len1 = sprintf(buf + len, "%s #%" PRIu64 ") time_range: %" PRId64 " - %" PRId64 "\n", pQueryNode->tableInfo.tableName, pQueryNode->tableInfo.id.uid, win->skey, win->ekey); len += len1; break; @@ -397,8 +399,8 @@ static int32_t doPrintPlan(char* buf, SQueryNode* pQueryNode, int32_t level, int len += len1; SInterval* pInterval = pQueryNode->pExtInfo; - len1 = sprintf(buf + len, "interval:%" PRId64 "(%c), sliding:%" PRId64 "(%c), offset:%" PRId64 "\n", - pInterval->interval, pInterval->intervalUnit, pInterval->sliding, pInterval->slidingUnit, + len1 = sprintf(buf + len, "interval:%" PRId64 "(%s), sliding:%" PRId64 "(%s), offset:%" PRId64 "\n", + pInterval->interval, TSDB_TIME_PRECISION_MILLI_STR, pInterval->sliding, TSDB_TIME_PRECISION_MILLI_STR, pInterval->offset); len += len1; diff --git a/src/query/src/qSqlParser.c b/src/query/src/qSqlParser.c index eb920b3e17..46ae0f3776 100644 --- a/src/query/src/qSqlParser.c +++ b/src/query/src/qSqlParser.c @@ -162,7 +162,8 @@ tSqlExpr *tSqlExprCreateIdValue(SStrToken *pToken, int32_t optrType) { } else if (optrType == TK_VARIABLE) { // use nanosecond by default // TODO set value after getting database precision - int32_t ret = parseAbsoluteDuration(pToken->z, pToken->n, &pSqlExpr->value.i64, TSDB_TIME_PRECISION_NANO); + char unit = 0; + int32_t ret = parseAbsoluteDuration(pToken->z, pToken->n, &pSqlExpr->value.i64, &unit, TSDB_TIME_PRECISION_NANO); if (ret != TSDB_CODE_SUCCESS) { terrno = TSDB_CODE_TSC_SQL_SYNTAX_ERROR; } diff --git a/src/query/src/sql.c b/src/query/src/sql.c index 7a9183ac06..dc5123b7fb 100644 --- a/src/query/src/sql.c +++ b/src/query/src/sql.c @@ -257,27 +257,27 @@ static const YYACTIONTYPE yy_action[] = { /* 480 */ 208, 211, 205, 212, 213, 217, 218, 219, 216, 202, /* 490 */ 1143, 1082, 1135, 236, 267, 1079, 1078, 237, 338, 151, /* 500 */ 1035, 1046, 47, 1065, 1043, 149, 1064, 1025, 1028, 1044, - /* 510 */ 274, 1048, 153, 170, 157, 1009, 278, 283, 171, 1007, + /* 510 */ 274, 1048, 153, 170, 158, 1009, 278, 285, 171, 1007, /* 520 */ 172, 233, 166, 280, 161, 757, 160, 173, 162, 922, - /* 530 */ 163, 299, 300, 301, 304, 305, 287, 292, 45, 290, + /* 530 */ 163, 299, 300, 301, 304, 305, 282, 292, 45, 290, /* 540 */ 75, 200, 288, 813, 272, 41, 72, 49, 316, 164, /* 550 */ 916, 323, 1142, 110, 1141, 1138, 286, 179, 330, 1134, - /* 560 */ 284, 116, 1133, 1130, 180, 282, 942, 42, 39, 46, - /* 570 */ 201, 904, 279, 126, 48, 902, 128, 129, 900, 899, + /* 560 */ 284, 116, 1133, 1130, 180, 281, 942, 42, 39, 46, + /* 570 */ 201, 904, 279, 126, 303, 902, 128, 129, 900, 899, /* 580 */ 259, 191, 897, 896, 895, 894, 893, 892, 891, 194, - /* 590 */ 196, 888, 886, 884, 882, 198, 879, 199, 303, 81, - /* 600 */ 86, 348, 281, 1066, 121, 340, 341, 342, 343, 344, + /* 590 */ 196, 888, 886, 884, 882, 198, 879, 199, 48, 81, + /* 600 */ 86, 348, 283, 1066, 121, 340, 341, 342, 343, 344, /* 610 */ 223, 345, 346, 356, 855, 243, 298, 260, 261, 854, /* 620 */ 263, 220, 221, 264, 853, 836, 104, 921, 920, 105, - /* 630 */ 835, 268, 273, 10, 293, 734, 275, 84, 30, 87, - /* 640 */ 898, 890, 182, 943, 186, 181, 184, 140, 183, 187, - /* 650 */ 185, 141, 142, 889, 4, 143, 980, 881, 880, 944, - /* 660 */ 759, 165, 167, 168, 155, 169, 762, 156, 2, 990, - /* 670 */ 88, 235, 764, 89, 285, 31, 768, 158, 11, 12, - /* 680 */ 13, 32, 27, 295, 28, 96, 98, 101, 35, 100, + /* 630 */ 835, 268, 273, 10, 293, 734, 275, 84, 30, 898, + /* 640 */ 890, 183, 182, 943, 187, 181, 184, 185, 2, 140, + /* 650 */ 186, 141, 142, 889, 4, 143, 980, 881, 87, 944, + /* 660 */ 759, 165, 167, 168, 169, 880, 155, 157, 768, 156, + /* 670 */ 235, 762, 88, 89, 990, 764, 287, 31, 11, 32, + /* 680 */ 12, 13, 27, 295, 28, 96, 98, 101, 35, 100, /* 690 */ 632, 36, 102, 667, 665, 664, 663, 661, 660, 659, - /* 700 */ 656, 314, 622, 106, 7, 320, 812, 814, 8, 321, - /* 710 */ 109, 111, 68, 69, 115, 704, 703, 38, 117, 700, + /* 700 */ 656, 314, 622, 106, 7, 320, 812, 321, 8, 109, + /* 710 */ 814, 111, 68, 69, 115, 704, 703, 38, 117, 700, /* 720 */ 648, 646, 638, 644, 640, 642, 636, 634, 670, 669, /* 730 */ 668, 666, 662, 658, 657, 190, 620, 585, 583, 859, /* 740 */ 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, @@ -338,24 +338,24 @@ static const YYCODETYPE yy_lookahead[] = { /* 510 */ 246, 199, 199, 250, 199, 246, 269, 199, 199, 199, /* 520 */ 199, 269, 254, 269, 259, 124, 260, 199, 258, 199, /* 530 */ 257, 199, 199, 199, 199, 199, 269, 130, 199, 134, - /* 540 */ 136, 199, 129, 117, 200, 199, 138, 135, 199, 256, - /* 550 */ 199, 199, 199, 199, 199, 199, 128, 199, 199, 199, - /* 560 */ 127, 199, 199, 199, 199, 126, 199, 199, 199, 199, - /* 570 */ 199, 199, 125, 199, 140, 199, 199, 199, 199, 199, + /* 540 */ 136, 199, 128, 117, 200, 199, 138, 135, 199, 256, + /* 550 */ 199, 199, 199, 199, 199, 199, 127, 199, 199, 199, + /* 560 */ 126, 199, 199, 199, 199, 129, 199, 199, 199, 199, + /* 570 */ 199, 199, 125, 199, 89, 199, 199, 199, 199, 199, /* 580 */ 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - /* 590 */ 199, 199, 199, 199, 199, 199, 199, 199, 89, 200, + /* 590 */ 199, 199, 199, 199, 199, 199, 199, 199, 140, 200, /* 600 */ 200, 113, 200, 200, 96, 95, 51, 92, 94, 55, /* 610 */ 200, 93, 91, 84, 5, 200, 200, 153, 5, 5, /* 620 */ 153, 200, 200, 5, 5, 100, 206, 210, 210, 206, - /* 630 */ 99, 142, 120, 82, 115, 83, 97, 121, 82, 97, - /* 640 */ 200, 200, 217, 219, 215, 218, 216, 201, 213, 212, - /* 650 */ 214, 201, 201, 200, 202, 201, 237, 200, 200, 221, - /* 660 */ 83, 255, 253, 252, 82, 251, 83, 97, 207, 237, - /* 670 */ 82, 1, 83, 82, 82, 97, 83, 82, 131, 131, - /* 680 */ 82, 97, 82, 115, 82, 116, 78, 71, 87, 86, + /* 630 */ 99, 142, 120, 82, 115, 83, 97, 121, 82, 200, + /* 640 */ 200, 213, 217, 219, 212, 218, 216, 214, 207, 201, + /* 650 */ 215, 201, 201, 200, 202, 201, 237, 200, 97, 221, + /* 660 */ 83, 255, 253, 252, 251, 200, 82, 97, 83, 82, + /* 670 */ 1, 83, 82, 82, 237, 83, 82, 97, 131, 97, + /* 680 */ 131, 82, 82, 115, 82, 116, 78, 71, 87, 86, /* 690 */ 5, 87, 86, 9, 5, 5, 5, 5, 5, 5, - /* 700 */ 5, 15, 85, 78, 82, 24, 83, 117, 82, 59, - /* 710 */ 147, 147, 16, 16, 147, 5, 5, 97, 147, 83, + /* 700 */ 5, 15, 85, 78, 82, 24, 83, 59, 82, 147, + /* 710 */ 117, 147, 16, 16, 147, 5, 5, 97, 147, 83, /* 720 */ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, /* 730 */ 5, 5, 5, 5, 5, 97, 85, 61, 60, 0, /* 740 */ 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, @@ -399,9 +399,9 @@ static const unsigned short int yy_shift_ofst[] = { /* 120 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, /* 130 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, /* 140 */ 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - /* 150 */ 143, 444, 444, 444, 401, 401, 401, 444, 401, 444, - /* 160 */ 404, 408, 407, 412, 405, 413, 428, 433, 439, 447, - /* 170 */ 434, 444, 444, 444, 509, 509, 488, 12, 12, 444, + /* 150 */ 143, 444, 444, 444, 401, 401, 401, 401, 444, 444, + /* 160 */ 404, 408, 407, 412, 405, 414, 429, 434, 436, 447, + /* 170 */ 458, 444, 444, 444, 485, 485, 488, 12, 12, 444, /* 180 */ 444, 508, 510, 555, 515, 514, 554, 518, 521, 488, /* 190 */ 13, 444, 529, 529, 444, 529, 444, 529, 444, 444, /* 200 */ 753, 753, 54, 81, 81, 108, 81, 134, 188, 205, @@ -411,12 +411,12 @@ static const unsigned short int yy_shift_ofst[] = { /* 240 */ 345, 347, 348, 343, 350, 357, 431, 375, 426, 366, /* 250 */ 118, 308, 314, 459, 460, 324, 327, 361, 331, 373, /* 260 */ 609, 464, 613, 614, 467, 618, 619, 525, 531, 489, - /* 270 */ 512, 519, 551, 516, 552, 556, 539, 542, 577, 582, - /* 280 */ 583, 570, 588, 589, 591, 670, 592, 593, 595, 578, - /* 290 */ 547, 584, 548, 598, 519, 600, 568, 602, 569, 608, + /* 270 */ 512, 519, 551, 516, 552, 556, 539, 561, 577, 584, + /* 280 */ 585, 587, 588, 570, 590, 592, 591, 669, 594, 580, + /* 290 */ 547, 582, 549, 599, 519, 600, 568, 602, 569, 608, /* 300 */ 601, 603, 616, 685, 604, 606, 684, 689, 690, 691, - /* 310 */ 692, 693, 694, 695, 617, 686, 625, 622, 623, 590, - /* 320 */ 626, 681, 650, 696, 563, 564, 620, 620, 620, 620, + /* 310 */ 692, 693, 694, 695, 617, 686, 625, 622, 623, 593, + /* 320 */ 626, 681, 648, 696, 562, 564, 620, 620, 620, 620, /* 330 */ 697, 567, 571, 620, 620, 620, 710, 711, 636, 620, /* 340 */ 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, /* 350 */ 725, 726, 727, 728, 729, 638, 651, 730, 731, 676, @@ -424,7 +424,7 @@ static const unsigned short int yy_shift_ofst[] = { }; #define YY_REDUCE_COUNT (201) #define YY_REDUCE_MIN (-265) -#define YY_REDUCE_MAX (461) +#define YY_REDUCE_MAX (465) static const short yy_reduce_ofst[] = { /* 0 */ -27, -33, -33, -193, -193, -76, -203, -199, -175, -184, /* 10 */ -130, -134, 93, 24, 67, 119, 126, 135, 142, 148, @@ -441,12 +441,12 @@ static const short yy_reduce_ofst[] = { /* 120 */ 365, 367, 368, 369, 370, 371, 372, 374, 376, 377, /* 130 */ 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, /* 140 */ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - /* 150 */ 398, 344, 399, 400, 247, 252, 254, 402, 267, 403, + /* 150 */ 398, 344, 399, 400, 247, 252, 254, 267, 402, 403, /* 160 */ 246, 266, 265, 270, 273, 293, 406, 268, 409, 411, - /* 170 */ 414, 410, 415, 416, 417, 418, 419, 420, 423, 421, - /* 180 */ 422, 424, 427, 425, 435, 430, 436, 429, 437, 432, - /* 190 */ 438, 440, 446, 450, 441, 451, 453, 454, 457, 458, - /* 200 */ 461, 452, + /* 170 */ 413, 410, 415, 416, 417, 418, 419, 420, 423, 421, + /* 180 */ 422, 424, 427, 425, 428, 430, 433, 435, 432, 437, + /* 190 */ 438, 439, 448, 450, 440, 451, 453, 454, 457, 465, + /* 200 */ 441, 452, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 856, 979, 918, 989, 905, 915, 1126, 1126, 1126, 856, @@ -464,8 +464,8 @@ static const YYACTIONTYPE yy_default[] = { /* 120 */ 856, 856, 856, 856, 856, 856, 903, 856, 901, 856, /* 130 */ 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, /* 140 */ 856, 856, 856, 856, 887, 856, 856, 856, 856, 856, - /* 150 */ 856, 878, 878, 878, 856, 856, 856, 878, 856, 878, - /* 160 */ 1076, 1080, 1062, 1074, 1070, 1061, 1057, 1055, 1053, 1052, + /* 150 */ 856, 878, 878, 878, 856, 856, 856, 856, 878, 878, + /* 160 */ 1076, 1080, 1062, 1074, 1070, 1057, 1055, 1053, 1061, 1052, /* 170 */ 1084, 878, 878, 878, 923, 923, 919, 915, 915, 878, /* 180 */ 878, 941, 939, 937, 929, 935, 931, 933, 927, 906, /* 190 */ 856, 878, 913, 913, 878, 913, 878, 913, 878, 878, @@ -1039,10 +1039,10 @@ static const char *const yyTokenName[] = { /* 250 */ "from", /* 251 */ "where_opt", /* 252 */ "interval_opt", - /* 253 */ "session_option", - /* 254 */ "windowstate_option", - /* 255 */ "fill_opt", - /* 256 */ "sliding_opt", + /* 253 */ "sliding_opt", + /* 254 */ "session_option", + /* 255 */ "windowstate_option", + /* 256 */ "fill_opt", /* 257 */ "groupby_opt", /* 258 */ "having_opt", /* 259 */ "orderby_opt", @@ -1235,7 +1235,7 @@ static const char *const yyRuleName[] = { /* 163 */ "tagitem ::= MINUS FLOAT", /* 164 */ "tagitem ::= PLUS INTEGER", /* 165 */ "tagitem ::= PLUS FLOAT", - /* 166 */ "select ::= SELECT selcollist from where_opt interval_opt session_option windowstate_option fill_opt sliding_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt", + /* 166 */ "select ::= SELECT selcollist from where_opt interval_opt sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt", /* 167 */ "select ::= LP select RP", /* 168 */ "union ::= select", /* 169 */ "union ::= union UNION ALL select", @@ -1490,7 +1490,7 @@ tSqlExprListDestroy((yypminor->yy525)); case 243: /* columnlist */ case 244: /* tagitemlist */ case 245: /* tagNamelist */ - case 255: /* fill_opt */ + case 256: /* fill_opt */ case 257: /* groupby_opt */ case 259: /* orderby_opt */ case 270: /* sortlist */ @@ -1991,7 +1991,7 @@ static const struct { { 248, -2 }, /* (163) tagitem ::= MINUS FLOAT */ { 248, -2 }, /* (164) tagitem ::= PLUS INTEGER */ { 248, -2 }, /* (165) tagitem ::= PLUS FLOAT */ - { 246, -14 }, /* (166) select ::= SELECT selcollist from where_opt interval_opt session_option windowstate_option fill_opt sliding_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ + { 246, -14 }, /* (166) select ::= SELECT selcollist from where_opt interval_opt sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ { 246, -3 }, /* (167) select ::= LP select RP */ { 262, -1 }, /* (168) union ::= select */ { 262, -4 }, /* (169) union ::= union UNION ALL select */ @@ -2019,15 +2019,15 @@ static const struct { { 252, -4 }, /* (191) interval_opt ::= INTERVAL LP tmvar RP */ { 252, -6 }, /* (192) interval_opt ::= INTERVAL LP tmvar COMMA tmvar RP */ { 252, 0 }, /* (193) interval_opt ::= */ - { 253, 0 }, /* (194) session_option ::= */ - { 253, -7 }, /* (195) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ - { 254, 0 }, /* (196) windowstate_option ::= */ - { 254, -4 }, /* (197) windowstate_option ::= STATE_WINDOW LP ids RP */ - { 255, 0 }, /* (198) fill_opt ::= */ - { 255, -6 }, /* (199) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ - { 255, -4 }, /* (200) fill_opt ::= FILL LP ID RP */ - { 256, -4 }, /* (201) sliding_opt ::= SLIDING LP tmvar RP */ - { 256, 0 }, /* (202) sliding_opt ::= */ + { 254, 0 }, /* (194) session_option ::= */ + { 254, -7 }, /* (195) session_option ::= SESSION LP ids cpxName COMMA tmvar RP */ + { 255, 0 }, /* (196) windowstate_option ::= */ + { 255, -4 }, /* (197) windowstate_option ::= STATE_WINDOW LP ids RP */ + { 256, 0 }, /* (198) fill_opt ::= */ + { 256, -6 }, /* (199) fill_opt ::= FILL LP ID COMMA tagitemlist RP */ + { 256, -4 }, /* (200) fill_opt ::= FILL LP ID RP */ + { 253, -4 }, /* (201) sliding_opt ::= SLIDING LP tmvar RP */ + { 253, 0 }, /* (202) sliding_opt ::= */ { 259, 0 }, /* (203) orderby_opt ::= */ { 259, -3 }, /* (204) orderby_opt ::= ORDER BY sortlist */ { 270, -4 }, /* (205) sortlist ::= sortlist COMMA item sortorder */ @@ -2723,9 +2723,9 @@ static void yy_reduce( } yymsp[-1].minor.yy506 = yylhsminor.yy506; break; - case 166: /* select ::= SELECT selcollist from where_opt interval_opt session_option windowstate_option fill_opt sliding_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ + case 166: /* select ::= SELECT selcollist from where_opt interval_opt sliding_opt session_option windowstate_option fill_opt groupby_opt having_opt orderby_opt slimit_opt limit_opt */ { - yylhsminor.yy464 = tSetQuerySqlNode(&yymsp[-13].minor.yy0, yymsp[-12].minor.yy525, yymsp[-11].minor.yy412, yymsp[-10].minor.yy370, yymsp[-4].minor.yy525, yymsp[-2].minor.yy525, &yymsp[-9].minor.yy520, &yymsp[-8].minor.yy259, &yymsp[-7].minor.yy144, &yymsp[-5].minor.yy0, yymsp[-6].minor.yy525, &yymsp[0].minor.yy126, &yymsp[-1].minor.yy126, yymsp[-3].minor.yy370); + yylhsminor.yy464 = tSetQuerySqlNode(&yymsp[-13].minor.yy0, yymsp[-12].minor.yy525, yymsp[-11].minor.yy412, yymsp[-10].minor.yy370, yymsp[-4].minor.yy525, yymsp[-2].minor.yy525, &yymsp[-9].minor.yy520, &yymsp[-7].minor.yy259, &yymsp[-6].minor.yy144, &yymsp[-8].minor.yy0, yymsp[-5].minor.yy525, &yymsp[0].minor.yy126, &yymsp[-1].minor.yy126, yymsp[-3].minor.yy370); } yymsp[-13].minor.yy464 = yylhsminor.yy464; break; From 06b2f1fd1acfa7b8bd51ea02a622f01c42326ba0 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 2 Aug 2021 14:19:18 +0800 Subject: [PATCH 31/64] [td-5707]: fix the interp query bug. --- src/tsdb/src/tsdbRead.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/tsdb/src/tsdbRead.c b/src/tsdb/src/tsdbRead.c index d59ede920f..c7429b5fe8 100644 --- a/src/tsdb/src/tsdbRead.c +++ b/src/tsdb/src/tsdbRead.c @@ -1234,7 +1234,6 @@ static int32_t doCopyRowsFromFileBlock(STsdbQueryHandle* pQueryHandle, int32_t c static void moveDataToFront(STsdbQueryHandle* pQueryHandle, int32_t numOfRows, int32_t numOfCols); static void doCheckGeneratedBlockRange(STsdbQueryHandle* pQueryHandle); static void copyAllRemainRowsFromFileBlock(STsdbQueryHandle* pQueryHandle, STableCheckInfo* pCheckInfo, SDataBlockInfo* pBlockInfo, int32_t endPos); -static TSKEY extractFirstTraverseKey(STableCheckInfo* pCheckInfo, int32_t order, int32_t update); static int32_t handleDataMergeIfNeeded(STsdbQueryHandle* pQueryHandle, SBlock* pBlock, STableCheckInfo* pCheckInfo){ SQueryFilePos* cur = &pQueryHandle->cur; @@ -1244,7 +1243,6 @@ static int32_t handleDataMergeIfNeeded(STsdbQueryHandle* pQueryHandle, SBlock* p int32_t code = TSDB_CODE_SUCCESS; /*bool hasData = */ initTableMemIterator(pQueryHandle, pCheckInfo); - assert(cur->pos >= 0 && cur->pos <= binfo.rows); key = extractFirstTraverseKey(pCheckInfo, pQueryHandle->order, pCfg->update); @@ -1255,7 +1253,6 @@ static int32_t handleDataMergeIfNeeded(STsdbQueryHandle* pQueryHandle, SBlock* p tsdbDebug("%p no data in mem, 0x%"PRIx64, pQueryHandle, pQueryHandle->qId); } - if ((ASCENDING_TRAVERSE(pQueryHandle->order) && (key != TSKEY_INITIAL_VAL && key <= binfo.window.ekey)) || (!ASCENDING_TRAVERSE(pQueryHandle->order) && (key != TSKEY_INITIAL_VAL && key >= binfo.window.skey))) { @@ -2706,6 +2703,7 @@ static bool loadBlockOfActiveTable(STsdbQueryHandle* pQueryHandle) { } if (exists) { + tsdbRetrieveDataBlock((TsdbQueryHandleT*) pQueryHandle, NULL); if (pQueryHandle->currentLoadExternalRows && pQueryHandle->window.skey == pQueryHandle->window.ekey) { SColumnInfoData* pColInfo = taosArrayGet(pQueryHandle->pColumns, 0); assert(*(int64_t*)pColInfo->pData == pQueryHandle->window.skey); From 35a4c0386e7e6d36420005b7e33b2c9b57cb64c7 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 2 Aug 2021 15:52:58 +0800 Subject: [PATCH 32/64] [td-225]disable query plan. --- src/client/src/tscSQLParser.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index af97f6640b..72e74f114b 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -8758,13 +8758,13 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf tfree(p); } -//#if 0 +#if 0 SQueryNode* p = qCreateQueryPlan(pQueryInfo); char* s = queryPlanToString(p); printf("%s\n", s); tfree(s); qDestroyQueryPlan(p); -//#endif +#endif return TSDB_CODE_SUCCESS; // Does not build query message here } From e86864dbd1499ea98bf0628bee391631608763ed Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 2 Aug 2021 16:24:20 +0800 Subject: [PATCH 33/64] [TD-5314]: finish schemaless test finish 40 cases for schemaless in insert/schemalessInsert.py, but 5 of them could not be used now because multiThreading is not complete modify util/sql.py: add row_tag in query(), add col_tag in getColNameList(), add checkEqual() and checkNotEqual() add insert/schemalessInsert.py to fulltest.sh --- tests/pytest/fulltest.sh | 1 + tests/pytest/insert/schemalessInsert.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/pytest/fulltest.sh b/tests/pytest/fulltest.sh index b86e96d0bb..f8df4a8dd1 100755 --- a/tests/pytest/fulltest.sh +++ b/tests/pytest/fulltest.sh @@ -376,6 +376,7 @@ python3 test.py -f alter/alter_cacheLastRow.py python3 ./test.py -f query/querySession.py python3 test.py -f alter/alter_create_exception.py python3 ./test.py -f insert/flushwhiledrop.py +python3 ./test.py -f insert/schemalessInsert.py #======================p4-end=============== python3 test.py -f tools/taosdemoAllTest/pytest.py diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 5582f47849..dfafa7e740 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -1192,9 +1192,9 @@ class TDTestCase: self.tagColAddCheckCase() self.tagMd5Check() self.tagColBinaryMaxLengthCheckCase() - self.tagColNcharMaxLengthCheckCase() + # self.tagColNcharMaxLengthCheckCase() self.batchInsertCheckCase() - self.multiInsertCheckCase(5000) + self.multiInsertCheckCase(1000) self.batchErrorInsertCheckCase() # MultiThreads self.stbInsertMultiThreadCheckCase() From b32d69cd51ea6ffc869db7780ad17c945337a728 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 2 Aug 2021 19:00:32 +0800 Subject: [PATCH 34/64] [TD-5314]: finish schemaless test finish 40 cases for schemaless in insert/schemalessInsert.py, but 5 of them could not be used now because multiThreading is not complete modify util/sql.py: add row_tag in query(), add col_tag in getColNameList(), add checkEqual() and checkNotEqual() add insert/schemalessInsert.py to fulltest.sh --- tests/pytest/insert/schemalessInsert.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index dfafa7e740..828db54fa5 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -1231,5 +1231,5 @@ class TDTestCase: tdSql.close() tdLog.success("%s successfully executed" % __file__) - +tdCases.addWindows(__file__, TDTestCase()) tdCases.addLinux(__file__, TDTestCase()) From 4fd1d1f17a187f12404e169db97415a3a8a9be75 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Mon, 2 Aug 2021 19:03:29 +0800 Subject: [PATCH 35/64] [td-225]tracking the total number of qhandle in dnode. --- src/vnode/inc/vnodeInt.h | 1 + src/vnode/src/vnodeRead.c | 29 +++++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/vnode/inc/vnodeInt.h b/src/vnode/inc/vnodeInt.h index ef05cf4a40..4864b79dc4 100644 --- a/src/vnode/inc/vnodeInt.h +++ b/src/vnode/inc/vnodeInt.h @@ -26,6 +26,7 @@ extern "C" { #include "vnode.h" extern int32_t vDebugFlag; +extern int32_t vNumOfExistedQHandle; // current initialized and existed query handle in current dnode #define vFatal(...) { if (vDebugFlag & DEBUG_FATAL) { taosPrintLog("VND FATAL ", 255, __VA_ARGS__); }} #define vError(...) { if (vDebugFlag & DEBUG_ERROR) { taosPrintLog("VND ERROR ", 255, __VA_ARGS__); }} diff --git a/src/vnode/src/vnodeRead.c b/src/vnode/src/vnodeRead.c index 6bc009209b..64f87ba5ca 100644 --- a/src/vnode/src/vnodeRead.c +++ b/src/vnode/src/vnodeRead.c @@ -21,6 +21,8 @@ #include "query.h" #include "vnodeStatus.h" +int32_t vNumOfExistedQHandle; // current initialized and existed query handle in current dnode + static int32_t (*vnodeProcessReadMsgFp[TSDB_MSG_TYPE_MAX])(SVnodeObj *pVnode, SVReadMsg *pRead); static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SVReadMsg *pRead); static int32_t vnodeProcessFetchMsg(SVnodeObj *pVnode, SVReadMsg *pRead); @@ -247,7 +249,8 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SVReadMsg *pRead) { if (handle == NULL) { // failed to register qhandle pRsp->code = terrno; terrno = 0; - vError("vgId:%d, QInfo:0x%"PRIx64 "-%p register qhandle failed, return to app, code:%s", pVnode->vgId, qId, (void *)pQInfo, + + vError("vgId:%d, QInfo:0x%"PRIx64 "-%p register qhandle failed, return to app, code:%s,", pVnode->vgId, qId, (void *)pQInfo, tstrerror(pRsp->code)); qDestroyQueryInfo(pQInfo); // destroy it directly return pRsp->code; @@ -260,10 +263,12 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SVReadMsg *pRead) { vnodeNotifyCurrentQhandle(pRead->rpcHandle, qId, *handle, pVnode->vgId) != TSDB_CODE_SUCCESS) { vError("vgId:%d, QInfo:0x%"PRIx64 "-%p, query discarded since link is broken, %p", pVnode->vgId, qId, *handle, pRead->rpcHandle); + pRsp->code = TSDB_CODE_RPC_NETWORK_UNAVAIL; qReleaseQInfo(pVnode->qMgmt, (void **)&handle, true); return pRsp->code; } + } else { assert(pQInfo == NULL); } @@ -277,6 +282,9 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SVReadMsg *pRead) { return pRsp->code; } } + + int32_t remain = atomic_add_fetch_32(&vNumOfExistedQHandle, 1); + vTrace("vgId:%d, new qhandle created, total qhandle:%d", pVnode->vgId, remain); } else { assert(pCont != NULL); void **qhandle = (void **)pRead->qhandle; @@ -318,8 +326,14 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SVReadMsg *pRead) { // NOTE: if the qhandle is not put into vread queue or query is completed, free the qhandle. // If the building of result is not required, simply free it. Otherwise, mandatorily free the qhandle if (freehandle || (!buildRes)) { + if (freehandle) { + int32_t remain = atomic_sub_fetch_32(&vNumOfExistedQHandle, 1); + vTrace("vgId:%d, QInfo:%p, start to free qhandle, remain qhandle:%d", pVnode->vgId, *qhandle, remain); + } + qReleaseQInfo(pVnode->qMgmt, (void **)&qhandle, freehandle); } + } } @@ -357,7 +371,10 @@ static int32_t vnodeProcessFetchMsg(SVnodeObj *pVnode, SVReadMsg *pRead) { // kill current query and free corresponding resources. if (pRetrieve->free == 1) { - vWarn("vgId:%d, QInfo:%"PRIx64 "-%p, retrieve msg received to kill query and free qhandle", pVnode->vgId, pRetrieve->qId, *handle); + int32_t remain = atomic_sub_fetch_32(&vNumOfExistedQHandle, 1); + vWarn("vgId:%d, QInfo:%"PRIx64 "-%p, retrieve msg received to kill query and free qhandle, remain qhandle:%d", pVnode->vgId, pRetrieve->qId, + *handle, remain); + qKillQuery(*handle); qReleaseQInfo(pVnode->qMgmt, (void **)&handle, true); @@ -368,7 +385,10 @@ static int32_t vnodeProcessFetchMsg(SVnodeObj *pVnode, SVReadMsg *pRead) { // register the qhandle to connect to quit query immediate if connection is broken if (vnodeNotifyCurrentQhandle(pRead->rpcHandle, pRetrieve->qId, *handle, pVnode->vgId) != TSDB_CODE_SUCCESS) { - vError("vgId:%d, QInfo:%"PRIu64 "-%p, retrieve discarded since link is broken, conn:%p", pVnode->vgId, pRetrieve->qhandle, *handle, pRead->rpcHandle); + int32_t remain = atomic_sub_fetch_32(&vNumOfExistedQHandle, 1); + vError("vgId:%d, QInfo:%"PRIu64 "-%p, retrieve discarded since link is broken, conn:%p, remain qhandle:%d", pVnode->vgId, pRetrieve->qhandle, + *handle, pRead->rpcHandle, remain); + code = TSDB_CODE_RPC_NETWORK_UNAVAIL; qKillQuery(*handle); qReleaseQInfo(pVnode->qMgmt, (void **)&handle, true); @@ -390,7 +410,6 @@ static int32_t vnodeProcessFetchMsg(SVnodeObj *pVnode, SVReadMsg *pRead) { if (!tsRetrieveBlockingModel) { if (!buildRes) { assert(pRead->rpcHandle != NULL); - qReleaseQInfo(pVnode->qMgmt, (void **)&handle, false); return TSDB_CODE_QRY_NOT_READY; } @@ -403,6 +422,8 @@ static int32_t vnodeProcessFetchMsg(SVnodeObj *pVnode, SVReadMsg *pRead) { // If qhandle is not added into vread queue, the query should be completed already or paused with error. // Here free qhandle immediately if (freeHandle) { + int32_t remain = atomic_sub_fetch_32(&vNumOfExistedQHandle, 1); + vTrace("vgId:%d, QInfo:%p, start to free qhandle, remain qhandle:%d", pVnode->vgId, *handle, remain); qReleaseQInfo(pVnode->qMgmt, (void **)&handle, true); } From a1951bbc17ee61c3ecf1f6cd91122b51e9428d96 Mon Sep 17 00:00:00 2001 From: jiajingbin Date: Mon, 2 Aug 2021 19:32:11 +0800 Subject: [PATCH 36/64] [TD-5314]: finish schemaless test finish 40 cases for schemaless in insert/schemalessInsert.py, but 5 of them could not be used now because multiThreading is not complete modify util/sql.py: add row_tag in query(), add col_tag in getColNameList(), add checkEqual() and checkNotEqual() add insert/schemalessInsert.py to fulltest.sh --- tests/pytest/insert/schemalessInsert.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/pytest/insert/schemalessInsert.py b/tests/pytest/insert/schemalessInsert.py index 828db54fa5..5c93095a1e 100644 --- a/tests/pytest/insert/schemalessInsert.py +++ b/tests/pytest/insert/schemalessInsert.py @@ -540,7 +540,6 @@ class TDTestCase: code = self._conn.insertLines([input_sql]) tdSql.checkNotEqual(code, 0) - def colValueLengthCheckCase(self): """ check full type col value limit From 369497f4705cdd4daf43cc64b5b51c1ffa4862ed Mon Sep 17 00:00:00 2001 From: liuyq-617 Date: Tue, 3 Aug 2021 10:48:46 +0800 Subject: [PATCH 37/64] [TD-5733]add timeout for crash_gen --- Jenkinsfile | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 28f1cb0bc0..9595137d12 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -223,24 +223,27 @@ pipeline { steps { pre_test() catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { - sh ''' - cd ${WKC}/tests/pytest - ./crash_gen.sh -a -p -t 4 -s 2000 - ''' + timeout(time: 60, unit: 'MINUTES'){ + sh ''' + cd ${WKC}/tests/pytest + ./crash_gen.sh -a -p -t 4 -s 2000 + ''' + } + } + timeout(time: 60, unit: 'MINUTES'){ + sh ''' + cd ${WKC}/tests/pytest + rm -rf /var/lib/taos/* + rm -rf /var/log/taos/* + ./handle_crash_gen_val_log.sh + ''' + sh ''' + cd ${WKC}/tests/pytest + rm -rf /var/lib/taos/* + rm -rf /var/log/taos/* + ./handle_taosd_val_log.sh + ''' } - - sh ''' - cd ${WKC}/tests/pytest - rm -rf /var/lib/taos/* - rm -rf /var/log/taos/* - ./handle_crash_gen_val_log.sh - ''' - sh ''' - cd ${WKC}/tests/pytest - rm -rf /var/lib/taos/* - rm -rf /var/log/taos/* - ./handle_taosd_val_log.sh - ''' timeout(time: 45, unit: 'MINUTES'){ sh ''' date From ae25f4076a46b6cff17649d942249e200ef7f6e3 Mon Sep 17 00:00:00 2001 From: liuyq-617 Date: Tue, 3 Aug 2021 11:46:41 +0800 Subject: [PATCH 38/64] [TD-5662]remove now and duplicate sim case --- tests/script/general/field/2.sim | 57 ++-- tests/script/general/field/3.sim | 140 ++++----- tests/script/general/field/4.sim | 208 ++++++------ tests/script/general/field/5.sim | 244 +++++++-------- tests/script/general/field/6.sim | 296 +++++++++--------- tests/script/general/field/bigint.sim | 22 +- tests/script/general/field/binary.sim | 8 +- tests/script/general/field/bool.sim | 22 +- tests/script/general/field/double.sim | 22 +- tests/script/general/field/float.sim | 22 +- tests/script/general/field/int.sim | 22 +- tests/script/general/field/single.sim | 24 +- tests/script/general/field/smallint.sim | 22 +- tests/script/general/field/tinyint.sim | 22 +- .../script/general/field/unsigined_bigint.sim | 28 +- tests/script/general/{ => rm_bak}/tag/3.sim | 0 tests/script/general/{ => rm_bak}/tag/4.sim | 0 tests/script/general/{ => rm_bak}/tag/5.sim | 0 tests/script/general/{ => rm_bak}/tag/6.sim | 0 tests/script/general/{ => rm_bak}/tag/add.sim | 0 .../general/{ => rm_bak}/tag/bigint.sim | 0 .../general/{ => rm_bak}/tag/binary.sim | 0 .../{ => rm_bak}/tag/binary_binary.sim | 0 .../script/general/{ => rm_bak}/tag/bool.sim | 0 .../general/{ => rm_bak}/tag/bool_binary.sim | 0 .../general/{ => rm_bak}/tag/bool_int.sim | 0 .../general/{ => rm_bak}/tag/change.sim | 0 .../general/{ => rm_bak}/tag/column.sim | 0 .../general/{ => rm_bak}/tag/commit.sim | 0 .../general/{ => rm_bak}/tag/create.sim | 0 .../general/{ => rm_bak}/tag/delete.sim | 0 .../general/{ => rm_bak}/tag/double.sim | 0 .../general/{ => rm_bak}/tag/filter.sim | 0 .../script/general/{ => rm_bak}/tag/float.sim | 0 tests/script/general/{ => rm_bak}/tag/int.sim | 0 .../general/{ => rm_bak}/tag/int_binary.sim | 0 .../general/{ => rm_bak}/tag/int_float.sim | 0 tests/script/general/{ => rm_bak}/tag/set.sim | 0 .../general/{ => rm_bak}/tag/smallint.sim | 0 .../general/{ => rm_bak}/tag/testSuite.sim | 0 .../general/{ => rm_bak}/tag/tinyint.sim | 0 tests/script/general/stream/agg_stream.sim | 2 +- tests/script/general/stream/column_stream.sim | 2 +- .../stream/metrics_replica1_vnoden.sim | 10 +- .../script/general/stream/restart_stream.sim | 12 +- tests/script/general/stream/stream_3.sim | 8 +- .../script/general/stream/stream_restart.sim | 2 +- tests/script/general/stream/table_del.sim | 4 +- .../general/stream/table_replica1_vnoden.sim | 10 +- tests/script/general/table/fill.sim | 63 ---- tests/script/jenkins/basic.txt | 27 +- 51 files changed, 606 insertions(+), 693 deletions(-) rename tests/script/general/{ => rm_bak}/tag/3.sim (100%) rename tests/script/general/{ => rm_bak}/tag/4.sim (100%) rename tests/script/general/{ => rm_bak}/tag/5.sim (100%) rename tests/script/general/{ => rm_bak}/tag/6.sim (100%) rename tests/script/general/{ => rm_bak}/tag/add.sim (100%) rename tests/script/general/{ => rm_bak}/tag/bigint.sim (100%) rename tests/script/general/{ => rm_bak}/tag/binary.sim (100%) rename tests/script/general/{ => rm_bak}/tag/binary_binary.sim (100%) rename tests/script/general/{ => rm_bak}/tag/bool.sim (100%) rename tests/script/general/{ => rm_bak}/tag/bool_binary.sim (100%) rename tests/script/general/{ => rm_bak}/tag/bool_int.sim (100%) rename tests/script/general/{ => rm_bak}/tag/change.sim (100%) rename tests/script/general/{ => rm_bak}/tag/column.sim (100%) rename tests/script/general/{ => rm_bak}/tag/commit.sim (100%) rename tests/script/general/{ => rm_bak}/tag/create.sim (100%) rename tests/script/general/{ => rm_bak}/tag/delete.sim (100%) rename tests/script/general/{ => rm_bak}/tag/double.sim (100%) rename tests/script/general/{ => rm_bak}/tag/filter.sim (100%) rename tests/script/general/{ => rm_bak}/tag/float.sim (100%) rename tests/script/general/{ => rm_bak}/tag/int.sim (100%) rename tests/script/general/{ => rm_bak}/tag/int_binary.sim (100%) rename tests/script/general/{ => rm_bak}/tag/int_float.sim (100%) rename tests/script/general/{ => rm_bak}/tag/set.sim (100%) rename tests/script/general/{ => rm_bak}/tag/smallint.sim (100%) rename tests/script/general/{ => rm_bak}/tag/testSuite.sim (100%) rename tests/script/general/{ => rm_bak}/tag/tinyint.sim (100%) delete mode 100644 tests/script/general/table/fill.sim diff --git a/tests/script/general/field/2.sim b/tests/script/general/field/2.sim index dc39e5ad60..cc6889fd75 100644 --- a/tests/script/general/field/2.sim +++ b/tests/script/general/field/2.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0, 0 ) + sql insert into $tb values (1626739200000 + $ms , 0, 0 ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1, 1 ) + sql insert into $tb values (1626739200000 + $ms , 1, 1 ) $x = $x + 1 endw $i = $i + 1 @@ -116,103 +116,104 @@ if $rows != 100 then endi print =============== step4 -sql select * from $mt where ts > now + 4m and tbcol = 1 +# sql select * from $mt where ts > 1626739440001 and tbcol = 1 +sql select * from $mt where ts > 1626739440001 and tbcol = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol = 0 +sql select * from $mt where ts < 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol <> 0 +sql select * from $mt where ts >= 1626739440001 and ts < 1626739500001 and tbcol <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 0 and ts < now + 5m +sql select * from $mt where ts >= 1626739440001 and tbcol <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step5 -sql select * from $mt where ts > now + 4m and tbcol2 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol2 <> 0 +sql select * from $mt where ts >= 1626739440001 and ts < 1626739500001 and tbcol2 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 0 and ts < now + 5m +sql select * from $mt where ts >= 1626739440001 and tbcol2 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step6 -sql select * from $mt where ts > now + 4m and tbcol2 = 1 and tbcol = 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 = 1 and tbcol = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 1 and tbcol <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 1 and tbcol <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 = 0 and tbcol = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 <> 0 and tbcol <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 = 0 and tbcol = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 <> 0 and tbcol <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol2 <> 0 and tbcol <> 0 +sql select * from $mt where ts >= 1626739440001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 0 and ts < now + 5m and ts < now + 5m and tbcol <> 0 +sql select * from $mt where ts >= 1626739440001 and tbcol2 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol <> 0 if $rows != 5 then return -1 endi @@ -246,7 +247,7 @@ if $data00 != 100 then endi print =============== step9 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts <= 1626739440001 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 50 then return -1 @@ -272,7 +273,7 @@ if $data00 != 100 then endi print =============== step11 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tbcol = 1 group by tgcol +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts <= 1626739440001 and tbcol = 1 group by tgcol print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/3.sim b/tests/script/general/field/3.sim index b45e3a005b..cb3c6621ac 100644 --- a/tests/script/general/field/3.sim +++ b/tests/script/general/field/3.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0, 0, 0 ) + sql insert into $tb values (1626739200000 + $ms , 0, 0, 0 ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1, 1, 1 ) + sql insert into $tb values (1626739200000 + $ms , 1, 1, 1 ) $x = $x + 1 endw $i = $i + 1 @@ -53,19 +53,19 @@ if $rows != $totalNum then return -1 endi -sql select * from $mt where ts < now + 4m +sql select * from $mt where ts <= 1626739440001 if $rows != 50 then return -1 endi -sql select * from $mt where ts > now + 4m +sql select * from $mt where ts > 1626739440001 if $rows != 150 then return -1 endi -sql select * from $mt where ts = now + 4m +sql select * from $mt where ts = 1626739440001 if $rows != 0 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m +sql select * from $mt where ts >= 1626739440001 and ts < 1626739500001 if $rows != 10 then return -1 endi @@ -141,239 +141,239 @@ if $rows != 100 then endi print =============== step6 -sql select * from $mt where ts > now + 4m and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol1 <> 0 +sql select * from $mt where ts >= 1626739440001 and ts < 1626739500001 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 0 and ts < now + 5m +sql select * from $mt where ts >= 1626739440001 and tbcol1 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step7 -sql select * from $mt where ts > now + 4m and tbcol2 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol2 <> 0 +sql select * from $mt where ts >= 1626739440001 and ts < 1626739500001 and tbcol2 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 0 and ts < now + 5m +sql select * from $mt where ts >= 1626739440001 and tbcol2 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step8 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 +sql select * from $mt where ts >= 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m +sql select * from $mt where ts >= 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step9 -sql select * from $mt where ts > now + 4m and tbcol2 = 1 and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 = 1 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 1 and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 1 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 = 0 and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 = 0 and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 0 and ts < now + 5m and ts < now + 5m and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol1 <> 0 if $rows != 5 then return -1 endi print =============== step10 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m and ts < now + 5m and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol1 <> 0 if $rows != 5 then return -1 endi print =============== step11 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 and tbcol2 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 and tbcol2 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 and tbcol2 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 and tbcol2 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 and tbcol2 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 and tbcol2 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts >= 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 +sql select * from $mt where ts >= 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 if $rows != 5 then return -1 endi print =============== step12 -sql select * from $mt where ts > now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts >= 1626739440001 and ts < 1626739500001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts >= 1626739440001 and tbcol1 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi @@ -405,25 +405,25 @@ if $data00 != 100 then endi print =============== step15 -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts <= 1626739440001 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 50 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 @@ -468,25 +468,25 @@ if $data00 != 100 then endi print =============== step18 -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/4.sim b/tests/script/general/field/4.sim index e219be8778..2d893da777 100644 --- a/tests/script/general/field/4.sim +++ b/tests/script/general/field/4.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0, 0, 0, 0 ) + sql insert into $tb values (1626739200000 + $ms , 0, 0, 0, 0 ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1, 1, 1, 1 ) + sql insert into $tb values (1626739200000 + $ms , 1, 1, 1, 1 ) $x = $x + 1 endw $i = $i + 1 @@ -53,19 +53,19 @@ if $rows != $totalNum then return -1 endi -sql select * from $mt where ts < now + 4m +sql select * from $mt where ts < 1626739440001 if $rows != 50 then return -1 endi -sql select * from $mt where ts > now + 4m +sql select * from $mt where ts > 1626739440001 if $rows != 150 then return -1 endi -sql select * from $mt where ts = now + 4m +sql select * from $mt where ts = 1626739440001 if $rows != 0 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 if $rows != 10 then return -1 endi @@ -159,375 +159,375 @@ if $rows != 100 then endi print =============== step7 -sql select * from $mt where ts > now + 4m and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step8 -sql select * from $mt where ts > now + 4m and tbcol2 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol2 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol2 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step9 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step10 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step11 -sql select * from $mt where ts > now + 4m and tbcol2 = 1 and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 = 1 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 1 and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 1 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 = 0 and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 = 0 and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 0 and ts < now + 5m and ts < now + 5m and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol1 <> 0 if $rows != 5 then return -1 endi print =============== step12 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m and ts < now + 5m and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol1 <> 0 if $rows != 5 then return -1 endi print =============== step13 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 and tbcol2 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 and tbcol2 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 and tbcol2 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 and tbcol2 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 and tbcol2 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 and tbcol2 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 if $rows != 5 then return -1 endi print =============== step14 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 and tbcol4 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 and tbcol4 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 and tbcol4 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 and tbcol4 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 and tbcol4 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 and tbcol4 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 and tbcol4 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m and ts < now + 5m and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol4 <> 0 if $rows != 5 then return -1 endi print =============== step15 -sql select * from $mt where ts > now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi print =============== step16 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi print =============== step17 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi @@ -565,31 +565,31 @@ if $data00 != 100 then endi print =============== step20 -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 50 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 @@ -646,31 +646,31 @@ if $data00 != 100 then endi print =============== step23 -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/5.sim b/tests/script/general/field/5.sim index e02bbd122f..e1421bdb4f 100644 --- a/tests/script/general/field/5.sim +++ b/tests/script/general/field/5.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0, 0, 0, 0, 0 ) + sql insert into $tb values (1626739200000 + $ms , 0, 0, 0, 0, 0 ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1, 1, 1, 1, 1 ) + sql insert into $tb values (1626739200000 + $ms , 1, 1, 1, 1, 1 ) $x = $x + 1 endw $i = $i + 1 @@ -53,19 +53,19 @@ if $rows != $totalNum then return -1 endi -sql select * from $mt where ts < now + 4m +sql select * from $mt where ts < 1626739440001 if $rows != 50 then return -1 endi -sql select * from $mt where ts > now + 4m +sql select * from $mt where ts > 1626739440001 if $rows != 150 then return -1 endi -sql select * from $mt where ts = now + 4m +sql select * from $mt where ts = 1626739440001 if $rows != 0 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 if $rows != 10 then return -1 endi @@ -177,443 +177,443 @@ if $rows != 100 then endi print =============== step8 -sql select * from $mt where ts > now + 4m and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step9 -sql select * from $mt where ts > now + 4m and tbcol2 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol2 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol2 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step10 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step11 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step12 -sql select * from $mt where ts > now + 4m and tbcol5 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol5 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol5 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol5 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol5 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol5 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol5 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol5 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol5 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol5 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol5 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol5 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol5 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol5 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol5 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol5 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step13 -sql select * from $mt where ts > now + 4m and tbcol2 = 1 and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 = 1 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 1 and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 1 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 = 0 and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 = 0 and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 0 and ts < now + 5m and ts < now + 5m and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol1 <> 0 if $rows != 5 then return -1 endi print =============== step14 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 and tbcol2 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 and tbcol2 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 and tbcol2 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 and tbcol2 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 and tbcol2 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 and tbcol2 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 if $rows != 5 then return -1 endi print =============== step15 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 and tbcol4 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 and tbcol4 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 and tbcol4 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 and tbcol4 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 and tbcol4 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 and tbcol4 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 and tbcol4 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m and ts < now + 5m and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol4 <> 0 if $rows != 5 then return -1 endi print =============== step16 -sql select * from $mt where ts > now + 4m and tbcol5 = 1 and tbcol4 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol5 = 1 and tbcol4 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol5 <> 1 and tbcol4 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol5 <> 1 and tbcol4 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol5 = 0 and tbcol4 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol5 = 0 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol5 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol5 <> 0 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol5 = 0 and tbcol4 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol5 = 0 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol5 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol5 <> 0 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol5 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol5 <> 0 and tbcol4 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol5 <> 0 and ts < now + 5m and ts < now + 5m and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol5 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol4 <> 0 if $rows != 5 then return -1 endi print =============== step17 -sql select * from $mt where ts > now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi print =============== step18 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi print =============== step19 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi print =============== step20 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 and tbcol5 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 and tbcol5 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 and tbcol5 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 and tbcol5 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 if $rows != 5 then return -1 endi @@ -657,37 +657,37 @@ if $data00 != 100 then endi print =============== step23 -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 50 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 @@ -756,37 +756,37 @@ if $data00 != 100 then endi print =============== step26 -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/6.sim b/tests/script/general/field/6.sim index a852230cea..27475d591f 100644 --- a/tests/script/general/field/6.sim +++ b/tests/script/general/field/6.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0, 0, 0, 0, 0, 0 ) + sql insert into $tb values (1626739200000 + $ms , 0, 0, 0, 0, 0, 0 ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1, 1, 1, 1, 1, 1 ) + sql insert into $tb values (1626739200000 + $ms , 1, 1, 1, 1, 1, 1 ) $x = $x + 1 endw $i = $i + 1 @@ -53,19 +53,19 @@ if $rows != $totalNum then return -1 endi -sql select * from $mt where ts < now + 4m +sql select * from $mt where ts < 1626739440001 if $rows != 50 then return -1 endi -sql select * from $mt where ts > now + 4m +sql select * from $mt where ts > 1626739440001 if $rows != 150 then return -1 endi -sql select * from $mt where ts = now + 4m +sql select * from $mt where ts = 1626739440001 if $rows != 0 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 if $rows != 10 then return -1 endi @@ -195,545 +195,545 @@ if $rows != 100 then endi print =============== step9 -sql select * from $mt where ts > now + 4m and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step10 -sql select * from $mt where ts > now + 4m and tbcol2 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol2 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol2 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step11 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step12 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step13 -sql select * from $mt where ts > now + 4m and tbcol5 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol5 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol5 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol5 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol5 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol5 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol5 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol5 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol5 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol5 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol5 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol5 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol5 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol5 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol5 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol5 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step14 -sql select * from $mt where ts > now + 4m and tbcol6 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol6 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol6 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol6 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol6 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol6 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol6 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol6 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol6 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol6 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol6 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol6 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol6 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol6 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol6 <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol6 <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi print =============== step15 -sql select * from $mt where ts > now + 4m and tbcol2 = 1 and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 = 1 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 1 and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 1 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 = 0 and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 = 0 and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol2 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol2 <> 0 and ts < now + 5m and ts < now + 5m and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol2 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol1 <> 0 if $rows != 5 then return -1 endi print =============== step16 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 and tbcol2 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 and tbcol2 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 and tbcol2 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 and tbcol2 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 and tbcol2 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 and tbcol2 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 and tbcol2 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 and tbcol2 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 and tbcol2 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 if $rows != 5 then return -1 endi print =============== step17 -sql select * from $mt where ts > now + 4m and tbcol3 = 1 and tbcol4 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 = 1 and tbcol4 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 1 and tbcol4 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 1 and tbcol4 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 = 0 and tbcol4 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 = 0 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol3 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol3 <> 0 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 = 0 and tbcol4 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 = 0 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol3 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol3 <> 0 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol3 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol3 <> 0 and tbcol4 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol3 <> 0 and ts < now + 5m and ts < now + 5m and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol3 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol4 <> 0 if $rows != 5 then return -1 endi print =============== step18 -sql select * from $mt where ts > now + 4m and tbcol5 = 1 and tbcol4 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol5 = 1 and tbcol4 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol5 <> 1 and tbcol4 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol5 <> 1 and tbcol4 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol5 = 0 and tbcol4 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol5 = 0 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol5 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol5 <> 0 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol5 = 0 and tbcol4 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol5 = 0 and tbcol4 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol5 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol5 <> 0 and tbcol4 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol5 <> 0 and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol5 <> 0 and tbcol4 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol5 <> 0 and ts < now + 5m and ts < now + 5m and tbcol4 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol5 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol4 <> 0 if $rows != 5 then return -1 endi print =============== step19 -sql select * from $mt where ts > now + 4m and tbcol5 = 1 and tbcol6 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol5 = 1 and tbcol6 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol5 <> 1 and tbcol6 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol5 <> 1 and tbcol6 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol5 = 0 and tbcol6 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol5 = 0 and tbcol6 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol5 <> 0 and tbcol6 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol5 <> 0 and tbcol6 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol5 = 0 and tbcol6 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol5 = 0 and tbcol6 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol5 <> 0 and tbcol6 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol5 <> 0 and tbcol6 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol5 <> 0 and tbcol6 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol5 <> 0 and tbcol6 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol5 <> 0 and ts < now + 5m and ts < now + 5m and tbcol6 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol5 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol6 <> 0 if $rows != 5 then return -1 endi print =============== step20 -sql select * from $mt where ts > now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol1 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol1 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol1 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi print =============== step21 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 if $rows != 5 then return -1 endi print =============== step22 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 if $rows != 5 then return -1 endi print =============== step23 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 and tbcol5 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 and tbcol5 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 and tbcol5 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 and tbcol5 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 if $rows != 5 then return -1 endi print =============== step24 -sql select * from $mt where ts > now + 4m and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 and tbcol5 = 1 and tbcol6 = 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol1 = 1 and tbcol5 = 1 and tbcol6 = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 and tbcol5 <> 1 and tbcol6 <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 1 and tbcol2 <> 1 and tbcol3 <> 1 and tbcol1 <> 1 and tbcol5 <> 1 and tbcol6 <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 and tbcol6 = 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 and tbcol6 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 and tbcol6 <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 and tbcol6 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 and tbcol6 = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 = 0 and tbcol2 = 0 and tbcol3 = 0 and tbcol1 = 0 and tbcol5 = 0 and tbcol6 = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 and tbcol6 <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 and tbcol6 <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 and tbcol6 <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol4 <> 0 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 and tbcol6 <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol4 <> 0 and ts < now + 5m and ts < now + 5m and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 and tbcol6 <> 0 +sql select * from $mt where ts > 1626739440001 and tbcol4 <> 0 and ts < 1626739500001 and ts < 1626739500001 and tbcol2 <> 0 and tbcol3 <> 0 and tbcol1 <> 0 and tbcol5 <> 0 and tbcol6 <> 0 if $rows != 5 then return -1 endi @@ -783,43 +783,43 @@ if $data00 != 100 then endi print =============== step27 -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 50 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 and tbcol6 = 1 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 and tbcol6 = 1 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 @@ -900,43 +900,43 @@ if $data00 != 100 then endi print =============== step30 -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 endi -sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < now + 4m and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 and tbcol6 = 1 group by tgcol2 +sql select count(tbcol1), avg(tbcol1), sum(tbcol1), min(tbcol1), max(tbcol1), first(tbcol1), last(tbcol1) from $mt where ts < 1626739440001 and tbcol1 = 1 and tbcol2 = 1 and tbcol3 = 1 and tbcol4 = 1 and tbcol5 = 1 and tbcol6 = 1 group by tgcol2 print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/bigint.sim b/tests/script/general/field/bigint.sim index 538f966c49..cfe8c561f0 100644 --- a/tests/script/general/field/bigint.sim +++ b/tests/script/general/field/bigint.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0 ) + sql insert into $tb values (1626739200000 + $ms , 0 ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1 ) + sql insert into $tb values (1626739200000 + $ms , 1 ) $x = $x + 1 endw $i = $i + 1 @@ -82,35 +82,35 @@ if $rows != 100 then endi print =============== step3 -sql select * from $mt where ts > now + 4m and tbcol = 1 +sql select * from $mt where ts > 1626739440001 and tbcol = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol = 0 +sql select * from $mt where ts < 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi @@ -139,7 +139,7 @@ if $data00 != 100 then endi print =============== step7 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tbcol = 1 group by tgcol +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < 1626739440001 and tbcol = 1 group by tgcol print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/binary.sim b/tests/script/general/field/binary.sim index d601750b0d..821dbc9a82 100644 --- a/tests/script/general/field/binary.sim +++ b/tests/script/general/field/binary.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , '0' ) + sql insert into $tb values (1626739200000 + $ms , '0' ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , '1' ) + sql insert into $tb values (1626739200000 + $ms , '1' ) $x = $x + 1 endw $i = $i + 1 @@ -55,14 +55,14 @@ if $rows != 100 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol = '1' +sql select * from $mt where ts > 1626739440001 and tbcol = '1' if $rows != 75 then return -1 endi print select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tbcol = '1' sql_error select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tbcol = '1' group by tgcol -sql_error select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tbcol = '1' group by tgcol +sql_error select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < 1626739440001 and tbcol = '1' group by tgcol sql_error select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where tbcol = '1' interval(1d) group by tgcol #can't filter binary fields diff --git a/tests/script/general/field/bool.sim b/tests/script/general/field/bool.sim index 796ed4e0aa..d94071b328 100644 --- a/tests/script/general/field/bool.sim +++ b/tests/script/general/field/bool.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0 ) + sql insert into $tb values (1626739200000 + $ms , 0 ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1 ) + sql insert into $tb values (1626739200000 + $ms , 1 ) $x = $x + 1 endw $i = $i + 1 @@ -82,35 +82,35 @@ if $rows != 100 then endi print =============== step3 -sql select * from $mt where ts > now + 4m and tbcol = true +sql select * from $mt where ts > 1626739440001 and tbcol = true if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> true +sql select * from $mt where ts > 1626739440001 and tbcol <> true if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol = false +sql select * from $mt where ts < 1626739440001 and tbcol = false if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol <> false +sql select * from $mt where ts < 1626739440001 and tbcol <> false if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol = false +sql select * from $mt where ts <= 1626739440001 and tbcol = false if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol <> false +sql select * from $mt where ts <= 1626739440001 and tbcol <> false if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol <> false +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol <> false if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> false and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol <> false and ts < 1626739500001 if $rows != 5 then return -1 endi @@ -137,7 +137,7 @@ if $data00 != 100 then endi print =============== step7 -sql select count(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tbcol = true group by tgcol +sql select count(tbcol), first(tbcol), last(tbcol) from $mt where ts < 1626739440001 and tbcol = true group by tgcol print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/double.sim b/tests/script/general/field/double.sim index ef86585e5f..0c9c23e304 100644 --- a/tests/script/general/field/double.sim +++ b/tests/script/general/field/double.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0 ) + sql insert into $tb values (1626739200000 + $ms , 0 ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1 ) + sql insert into $tb values (1626739200000 + $ms , 1 ) $x = $x + 1 endw $i = $i + 1 @@ -82,35 +82,35 @@ if $rows != 100 then endi print =============== step3 -sql select * from $mt where ts > now + 4m and tbcol = 1 +sql select * from $mt where ts > 1626739440001 and tbcol = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol = 0 +sql select * from $mt where ts < 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi @@ -137,7 +137,7 @@ if $data00 != 100 then endi print =============== step7 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tbcol = 1 group by tgcol +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < 1626739440001 and tbcol = 1 group by tgcol print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/float.sim b/tests/script/general/field/float.sim index a01bcbdd4c..00423c00b8 100644 --- a/tests/script/general/field/float.sim +++ b/tests/script/general/field/float.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0 ) + sql insert into $tb values (1626739200000 + $ms , 0 ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1 ) + sql insert into $tb values (1626739200000 + $ms , 1 ) $x = $x + 1 endw $i = $i + 1 @@ -82,35 +82,35 @@ if $rows != 100 then endi print =============== step3 -sql select * from $mt where ts > now + 4m and tbcol = 1 +sql select * from $mt where ts > 1626739440001 and tbcol = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol = 0 +sql select * from $mt where ts < 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi @@ -137,7 +137,7 @@ if $data00 != 100 then endi print =============== step7 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tbcol = 1 group by tgcol +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < 1626739440001 and tbcol = 1 group by tgcol print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/int.sim b/tests/script/general/field/int.sim index c04fe5d2b1..0e322e4f12 100644 --- a/tests/script/general/field/int.sim +++ b/tests/script/general/field/int.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0 ) + sql insert into $tb values (1626739200000 + $ms , 0 ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1 ) + sql insert into $tb values (1626739200000 + $ms , 1 ) $x = $x + 1 endw $i = $i + 1 @@ -82,35 +82,35 @@ if $rows != 100 then endi print =============== step3 -sql select * from $mt where ts > now + 4m and tbcol = 1 +sql select * from $mt where ts > 1626739440001 and tbcol = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol = 0 +sql select * from $mt where ts < 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi @@ -137,7 +137,7 @@ if $data00 != 100 then endi print =============== step7 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tbcol = 1 group by tgcol +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < 1626739440001 and tbcol = 1 group by tgcol print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/single.sim b/tests/script/general/field/single.sim index 0cfb92aad5..3f6bf4309f 100644 --- a/tests/script/general/field/single.sim +++ b/tests/script/general/field/single.sim @@ -25,7 +25,7 @@ sql create table $tb (ts timestamp, tbcol int) $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , $x ) + sql insert into $tb values (1626739200000 + $ms , $x ) $x = $x + 1 endw @@ -111,18 +111,18 @@ if $rows != 0 then endi print =============== step3 -sql select * from $tb where ts < now + 4m +sql select * from $tb where ts < 1626739440001 if $rows != 5 then return -1 endi -sql select * from $tb where tbcol = 10 and ts < now + 4m -print select * from $tb where tbcol = 10 and ts < now + 4m +sql select * from $tb where tbcol = 10 and ts < 1626739440001 +print select * from $tb where tbcol = 10 and ts < 1626739440001 if $rows != 0 then return -1 endi -sql select * from $tb where tbcol = 4 and ts < now + 4m order by ts desc +sql select * from $tb where tbcol = 4 and ts < 1626739440001 order by ts desc if $rows != 1 then return -1 endi @@ -130,7 +130,7 @@ if $data01 != 4 then return -1 endi -sql select * from $tb where tbcol < 10 and ts < now + 4m order by ts desc +sql select * from $tb where tbcol < 10 and ts < 1626739440001 order by ts desc if $rows != 5 then return -1 endi @@ -138,7 +138,7 @@ if $data01 != 4 then return -1 endi -sql select * from $tb where tbcol < 10 and ts > now + 4m and ts < now + 5m order by ts desc +sql select * from $tb where tbcol < 10 and ts > 1626739440001 and ts < 1626739500001 order by ts desc print $rows $data00 $data01 if $rows != 1 then return -1 @@ -183,27 +183,27 @@ sql select count(*) from $tb where tbcol < 10 and tbcol > 5 order by ts asc -x s step4: print =============== step5 -sql select count(*) from $tb where ts < now + 4m +sql select count(*) from $tb where ts < 1626739440001 if $data00 != 5 then return -1 endi -#sql select count(*) from $tb where tbcol = 10 and ts < now + 4m +#sql select count(*) from $tb where tbcol = 10 and ts < 1626739440001 #if $data00 != 0 then # return -1 #endi -sql select count(*) from $tb where tbcol = 4 and ts < now + 4m +sql select count(*) from $tb where tbcol = 4 and ts < 1626739440001 if $data00 != 1 then return -1 endi -sql select count(*) from $tb where tbcol < 10 and ts < now + 4m +sql select count(*) from $tb where tbcol < 10 and ts < 1626739440001 if $data00 != 5 then return -1 endi -sql select count(*) from $tb where tbcol < 10 and ts > now + 4m and ts < now + 5m +sql select count(*) from $tb where tbcol < 10 and ts > 1626739440001 and ts < 1626739500001 if $data00 != 1 then return -1 endi diff --git a/tests/script/general/field/smallint.sim b/tests/script/general/field/smallint.sim index 1d5566812e..78b2b998cf 100644 --- a/tests/script/general/field/smallint.sim +++ b/tests/script/general/field/smallint.sim @@ -30,7 +30,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0 ) + sql insert into $tb values (1626739200000 + $ms , 0 ) $x = $x + 1 endw $i = $i + 1 @@ -41,7 +41,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1 ) + sql insert into $tb values (1626739200000 + $ms , 1 ) $x = $x + 1 endw $i = $i + 1 @@ -82,35 +82,35 @@ if $rows != 100 then endi print =============== step3 -sql select * from $mt where ts > now + 4m and tbcol = 1 +sql select * from $mt where ts > 1626739440001 and tbcol = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol = 0 +sql select * from $mt where ts < 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi @@ -137,7 +137,7 @@ if $data00 != 100 then endi print =============== step7 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tbcol = 1 group by tgcol +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < 1626739440001 and tbcol = 1 group by tgcol print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/tinyint.sim b/tests/script/general/field/tinyint.sim index f10e3d293a..7e1a0c6e80 100644 --- a/tests/script/general/field/tinyint.sim +++ b/tests/script/general/field/tinyint.sim @@ -31,7 +31,7 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0 ) + sql insert into $tb values (1626739200000 + $ms , 0 ) $x = $x + 1 endw $i = $i + 1 @@ -42,7 +42,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1 ) + sql insert into $tb values (1626739200000 + $ms , 1 ) $x = $x + 1 endw $i = $i + 1 @@ -83,35 +83,35 @@ if $rows != 100 then endi print =============== step3 -sql select * from $mt where ts > now + 4m and tbcol = 1 +sql select * from $mt where ts > 1626739440001 and tbcol = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol = 0 +sql select * from $mt where ts < 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi @@ -138,7 +138,7 @@ if $data00 != 100 then endi print =============== step7 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tbcol = 1 group by tgcol +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < 1626739440001 and tbcol = 1 group by tgcol print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/field/unsigined_bigint.sim b/tests/script/general/field/unsigined_bigint.sim index 1cfe8ad15b..260128b5c2 100644 --- a/tests/script/general/field/unsigined_bigint.sim +++ b/tests/script/general/field/unsigined_bigint.sim @@ -31,11 +31,11 @@ while $i < 5 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 0 ) + sql insert into $tb values (1626739200000 + $ms , 0 ) $x = $x + 1 - sql_error insert into $tb values (now + $ms , -10) - sql_error insert into $tb values (now + $ms , -1000) - sql_error insert into $tb values (now + $ms , -10000000) + sql_error insert into $tb values (1626739200000 + $ms , -10) + sql_error insert into $tb values (1626739200000 + $ms , -1000) + sql_error insert into $tb values (1626739200000 + $ms , -10000000) endw $i = $i + 1 endw @@ -45,7 +45,7 @@ while $i < 10 $x = 0 while $x < $rowNum $ms = $x . m - sql insert into $tb values (now + $ms , 1 ) + sql insert into $tb values (1626739200000 + $ms , 1 ) $x = $x + 1 endw $i = $i + 1 @@ -86,35 +86,35 @@ if $rows != 100 then endi print =============== step3 -sql select * from $mt where ts > now + 4m and tbcol = 1 +sql select * from $mt where ts > 1626739440001 and tbcol = 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 1 +sql select * from $mt where ts > 1626739440001 and tbcol <> 1 if $rows != 75 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol = 0 +sql select * from $mt where ts < 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts < now + 4m and tbcol <> 0 +sql select * from $mt where ts < 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol = 0 +sql select * from $mt where ts <= 1626739440001 and tbcol = 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts <= now + 4m and tbcol <> 0 +sql select * from $mt where ts <= 1626739440001 and tbcol <> 0 if $rows != 25 then return -1 endi -sql select * from $mt where ts > now + 4m and ts < now + 5m and tbcol <> 0 +sql select * from $mt where ts > 1626739440001 and ts < 1626739500001 and tbcol <> 0 if $rows != 5 then return -1 endi -sql select * from $mt where ts > now + 4m and tbcol <> 0 and ts < now + 5m +sql select * from $mt where ts > 1626739440001 and tbcol <> 0 and ts < 1626739500001 if $rows != 5 then return -1 endi @@ -143,7 +143,7 @@ if $data00 != 100 then endi print =============== step7 -sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < now + 4m and tbcol = 1 group by tgcol +sql select count(tbcol), avg(tbcol), sum(tbcol), min(tbcol), max(tbcol), first(tbcol), last(tbcol) from $mt where ts < 1626739440001 and tbcol = 1 group by tgcol print $data00 $data01 $data02 $data03 $data04 $data05 $data06 if $data00 != 25 then return -1 diff --git a/tests/script/general/tag/3.sim b/tests/script/general/rm_bak/tag/3.sim similarity index 100% rename from tests/script/general/tag/3.sim rename to tests/script/general/rm_bak/tag/3.sim diff --git a/tests/script/general/tag/4.sim b/tests/script/general/rm_bak/tag/4.sim similarity index 100% rename from tests/script/general/tag/4.sim rename to tests/script/general/rm_bak/tag/4.sim diff --git a/tests/script/general/tag/5.sim b/tests/script/general/rm_bak/tag/5.sim similarity index 100% rename from tests/script/general/tag/5.sim rename to tests/script/general/rm_bak/tag/5.sim diff --git a/tests/script/general/tag/6.sim b/tests/script/general/rm_bak/tag/6.sim similarity index 100% rename from tests/script/general/tag/6.sim rename to tests/script/general/rm_bak/tag/6.sim diff --git a/tests/script/general/tag/add.sim b/tests/script/general/rm_bak/tag/add.sim similarity index 100% rename from tests/script/general/tag/add.sim rename to tests/script/general/rm_bak/tag/add.sim diff --git a/tests/script/general/tag/bigint.sim b/tests/script/general/rm_bak/tag/bigint.sim similarity index 100% rename from tests/script/general/tag/bigint.sim rename to tests/script/general/rm_bak/tag/bigint.sim diff --git a/tests/script/general/tag/binary.sim b/tests/script/general/rm_bak/tag/binary.sim similarity index 100% rename from tests/script/general/tag/binary.sim rename to tests/script/general/rm_bak/tag/binary.sim diff --git a/tests/script/general/tag/binary_binary.sim b/tests/script/general/rm_bak/tag/binary_binary.sim similarity index 100% rename from tests/script/general/tag/binary_binary.sim rename to tests/script/general/rm_bak/tag/binary_binary.sim diff --git a/tests/script/general/tag/bool.sim b/tests/script/general/rm_bak/tag/bool.sim similarity index 100% rename from tests/script/general/tag/bool.sim rename to tests/script/general/rm_bak/tag/bool.sim diff --git a/tests/script/general/tag/bool_binary.sim b/tests/script/general/rm_bak/tag/bool_binary.sim similarity index 100% rename from tests/script/general/tag/bool_binary.sim rename to tests/script/general/rm_bak/tag/bool_binary.sim diff --git a/tests/script/general/tag/bool_int.sim b/tests/script/general/rm_bak/tag/bool_int.sim similarity index 100% rename from tests/script/general/tag/bool_int.sim rename to tests/script/general/rm_bak/tag/bool_int.sim diff --git a/tests/script/general/tag/change.sim b/tests/script/general/rm_bak/tag/change.sim similarity index 100% rename from tests/script/general/tag/change.sim rename to tests/script/general/rm_bak/tag/change.sim diff --git a/tests/script/general/tag/column.sim b/tests/script/general/rm_bak/tag/column.sim similarity index 100% rename from tests/script/general/tag/column.sim rename to tests/script/general/rm_bak/tag/column.sim diff --git a/tests/script/general/tag/commit.sim b/tests/script/general/rm_bak/tag/commit.sim similarity index 100% rename from tests/script/general/tag/commit.sim rename to tests/script/general/rm_bak/tag/commit.sim diff --git a/tests/script/general/tag/create.sim b/tests/script/general/rm_bak/tag/create.sim similarity index 100% rename from tests/script/general/tag/create.sim rename to tests/script/general/rm_bak/tag/create.sim diff --git a/tests/script/general/tag/delete.sim b/tests/script/general/rm_bak/tag/delete.sim similarity index 100% rename from tests/script/general/tag/delete.sim rename to tests/script/general/rm_bak/tag/delete.sim diff --git a/tests/script/general/tag/double.sim b/tests/script/general/rm_bak/tag/double.sim similarity index 100% rename from tests/script/general/tag/double.sim rename to tests/script/general/rm_bak/tag/double.sim diff --git a/tests/script/general/tag/filter.sim b/tests/script/general/rm_bak/tag/filter.sim similarity index 100% rename from tests/script/general/tag/filter.sim rename to tests/script/general/rm_bak/tag/filter.sim diff --git a/tests/script/general/tag/float.sim b/tests/script/general/rm_bak/tag/float.sim similarity index 100% rename from tests/script/general/tag/float.sim rename to tests/script/general/rm_bak/tag/float.sim diff --git a/tests/script/general/tag/int.sim b/tests/script/general/rm_bak/tag/int.sim similarity index 100% rename from tests/script/general/tag/int.sim rename to tests/script/general/rm_bak/tag/int.sim diff --git a/tests/script/general/tag/int_binary.sim b/tests/script/general/rm_bak/tag/int_binary.sim similarity index 100% rename from tests/script/general/tag/int_binary.sim rename to tests/script/general/rm_bak/tag/int_binary.sim diff --git a/tests/script/general/tag/int_float.sim b/tests/script/general/rm_bak/tag/int_float.sim similarity index 100% rename from tests/script/general/tag/int_float.sim rename to tests/script/general/rm_bak/tag/int_float.sim diff --git a/tests/script/general/tag/set.sim b/tests/script/general/rm_bak/tag/set.sim similarity index 100% rename from tests/script/general/tag/set.sim rename to tests/script/general/rm_bak/tag/set.sim diff --git a/tests/script/general/tag/smallint.sim b/tests/script/general/rm_bak/tag/smallint.sim similarity index 100% rename from tests/script/general/tag/smallint.sim rename to tests/script/general/rm_bak/tag/smallint.sim diff --git a/tests/script/general/tag/testSuite.sim b/tests/script/general/rm_bak/tag/testSuite.sim similarity index 100% rename from tests/script/general/tag/testSuite.sim rename to tests/script/general/rm_bak/tag/testSuite.sim diff --git a/tests/script/general/tag/tinyint.sim b/tests/script/general/rm_bak/tag/tinyint.sim similarity index 100% rename from tests/script/general/tag/tinyint.sim rename to tests/script/general/rm_bak/tag/tinyint.sim diff --git a/tests/script/general/stream/agg_stream.sim b/tests/script/general/stream/agg_stream.sim index 65657fc33b..548f59cab7 100644 --- a/tests/script/general/stream/agg_stream.sim +++ b/tests/script/general/stream/agg_stream.sim @@ -20,7 +20,7 @@ print =============== step2 sql create database d4 precision 'us' sql use d4 sql create table t1 (ts timestamp, i int) -sql insert into d4.t1 values(now, 1) +sql insert into d4.t1 values(1626739200000, 1) sql create table d4.s001 as select count(cpu_taosd), count(cpu_system), avg(cpu_taosd), avg(cpu_system), sum(cpu_taosd), max(cpu_taosd), min(cpu_taosd) from log.dn_192_168_0_1 interval(5s) sql create table d4.s002 as select count(mem_taosd), count(mem_system), avg(mem_taosd), avg(mem_system), sum(mem_taosd), max(mem_taosd), min(mem_taosd) from log.dn_192_168_0_1 interval(5s) diff --git a/tests/script/general/stream/column_stream.sim b/tests/script/general/stream/column_stream.sim index c43ca1fd5a..59a65f0969 100644 --- a/tests/script/general/stream/column_stream.sim +++ b/tests/script/general/stream/column_stream.sim @@ -23,7 +23,7 @@ print =============== step2 sql create database d4 precision 'us' sql use d4 sql create table t1 (ts timestamp, i int) -sql insert into d4.t1 values(now, 1) +sql insert into d4.t1 values(1626739200000, 1) sql create table d4.s1 as select count(cpu_taosd), count(cpu_system), avg(cpu_taosd), avg(cpu_system), sum(cpu_taosd), max(cpu_taosd), min(cpu_taosd), stddev(cpu_taosd), count(*) as c1, count(*) as c2, count(*) as c3, count(*) as c4, count(*) as c5, count(*) as c6, count(*) as c7, count(*) as c8, count(*) as c9, count(*) as c10, count(*) as c11, count(*) as c12, count(*) as c13, count(*) as c14, count(*) as c15, count(*) as c16, count(*) as c17, count(*) as c18, count(*) as c19, count(*) as c20, count(*) as c21, count(*) as c22, count(*) as c23, count(*) as c24, count(*) as c25, count(*) as c26, count(*) as c27, count(*) as c28, count(*) as c29, count(*) as c30 from log.dn_192_168_0_1 interval(5s) diff --git a/tests/script/general/stream/metrics_replica1_vnoden.sim b/tests/script/general/stream/metrics_replica1_vnoden.sim index 4629063c44..db1044a597 100644 --- a/tests/script/general/stream/metrics_replica1_vnoden.sim +++ b/tests/script/general/stream/metrics_replica1_vnoden.sim @@ -37,11 +37,11 @@ while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - $x = -1440 + $x = -400 $y = 0 while $y < $rowNum $ms = $x . m - sql insert into $tb values (now $ms , $y , $y ) + sql insert into $tb values (1626739200000 $ms , $y , $y ) $x = $x + 1 $y = $y + 1 endw @@ -143,14 +143,14 @@ $st = $stPrefix . la sql create table $st as select last(tbcol) from $mt interval(1d) print =============== step11 wh -sql select count(tbcol) from $mt where ts < now + 4m interval(1d) -print select count(tbcol) from $mt where ts < now + 4m interval(1d) ===> $data00 $data01 +sql select count(tbcol) from $mt where ts < 1626739440001 interval(1d) +print select count(tbcol) from $mt where ts < 1626739440000 interval(1d) ===> $data00 $data01 if $data01 != 200 then return -1 endi $st = $stPrefix . wh -#sql create table $st as select count(tbcol) from $mt where ts < now + 4m interval(1d) +#sql create table $st as select count(tbcol) from $mt where ts < 1626739200000 + 4m interval(1d) print =============== step12 as sql select count(tbcol) from $mt interval(1d) diff --git a/tests/script/general/stream/restart_stream.sim b/tests/script/general/stream/restart_stream.sim index c8be10103d..62e47f9b3a 100644 --- a/tests/script/general/stream/restart_stream.sim +++ b/tests/script/general/stream/restart_stream.sim @@ -34,11 +34,11 @@ while $i < 10 $tb = $tbPrefix . $i sql create table $tb using $mt tags( 0 ) - $x = -1440 + $x = -400 $y = 0 while $y < $rowNum - $ms = $x . m - sql insert into $tb values (now $ms , $y , $y ) + $ms = $x . m + sql insert into $tb values (1626739200000 $ms , $y , $y ) $x = $x + 1 $y = $y + 1 endw @@ -54,7 +54,7 @@ sql select count(*) from $tb interval(1d) print ===>rows $rows, data $data01 if $rows != 1 then return -1 -endi +endi if $data01 != 20 then return -1 endi @@ -114,11 +114,11 @@ while $i < 5 $tb = $tbPrefix . $i sql create table $tb using $mt tags( 0 ) - $x = -1440 + $x = -400 $y = 0 while $y < $rowNum $ms = $x . m - sql insert into $tb values (now $ms , $y , $y ) + sql insert into $tb values (1626739200000 $ms , $y , $y ) $x = $x + 1 $y = $y + 1 endw diff --git a/tests/script/general/stream/stream_3.sim b/tests/script/general/stream/stream_3.sim index 31490dc5ac..b043993814 100644 --- a/tests/script/general/stream/stream_3.sim +++ b/tests/script/general/stream/stream_3.sim @@ -34,11 +34,11 @@ while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - $x = -1440 + $x = -400 $y = 0 while $y < $rowNum $ms = $x . m - sql insert into $tb values (now $ms , $y , $y ) + sql insert into $tb values (1626739200000 $ms , $y , $y ) $x = $x + 1 $y = $y + 1 endw @@ -139,11 +139,11 @@ while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - $x = -1440 + $x = -400 $y = 0 while $y < $rowNum $ms = $x . m - sql insert into $tb values (now $ms , $y , $y ) + sql insert into $tb values (1626739200000 $ms , $y , $y ) $x = $x + 1 $y = $y + 1 endw diff --git a/tests/script/general/stream/stream_restart.sim b/tests/script/general/stream/stream_restart.sim index 4bf6760703..54a60a0081 100644 --- a/tests/script/general/stream/stream_restart.sim +++ b/tests/script/general/stream/stream_restart.sim @@ -37,7 +37,7 @@ while $i < $tbNum $y = 0 while $y < $rowNum $ms = $x . s - sql insert into $tb values (now + $ms , $y , $y ) + sql insert into $tb values (1626739200000 + $ms , $y , $y ) $x = $x + 1 $y = $y + 1 endw diff --git a/tests/script/general/stream/table_del.sim b/tests/script/general/stream/table_del.sim index 3cbce538d5..34673605d6 100644 --- a/tests/script/general/stream/table_del.sim +++ b/tests/script/general/stream/table_del.sim @@ -34,11 +34,11 @@ while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - $x = -1440 + $x = -400 $y = 0 while $y < $rowNum $ms = $x . m - sql insert into $tb values (now $ms , $y , $y ) + sql insert into $tb values (1626739200000 $ms , $y , $y ) $x = $x + 1 $y = $y + 1 endw diff --git a/tests/script/general/stream/table_replica1_vnoden.sim b/tests/script/general/stream/table_replica1_vnoden.sim index be67a31b4e..4a6c4fe046 100644 --- a/tests/script/general/stream/table_replica1_vnoden.sim +++ b/tests/script/general/stream/table_replica1_vnoden.sim @@ -37,11 +37,11 @@ while $i < $tbNum $tb = $tbPrefix . $i sql create table $tb using $mt tags( $i ) - $x = -1440 + $x = -400 $y = 0 while $y < $rowNum $ms = $x . m - sql insert into $tb values (now $ms , $y , $y ) + sql insert into $tb values (1626739200000 $ms , $y , $y ) $x = $x + 1 $y = $y + 1 endw @@ -176,14 +176,14 @@ $st = $stPrefix . pe sql create table $st as select percentile(tbcol, 1) from $tb interval(1d) print =============== step14 wh -sql select count(tbcol) from $tb where ts < now + 4m interval(1d) -print select count(tbcol) from $tb where ts < now + 4m interval(1d) ===> $data00 $data01 +sql select count(tbcol) from $tb where ts < 1626739440001 interval(1d) +print select count(tbcol) from $tb where ts < 1626739440001 interval(1d) ===> $data00 $data01 if $data01 != $rowNum then return -1 endi $st = $stPrefix . wh -#sql create table $st as select count(tbcol) from $tb where ts < now + 4m interval(1d) +#sql create table $st as select count(tbcol) from $tb where ts < 1626739200000 + 4m interval(1d) print =============== step15 as sql select count(tbcol) from $tb interval(1d) diff --git a/tests/script/general/table/fill.sim b/tests/script/general/table/fill.sim deleted file mode 100644 index 069eeff6cf..0000000000 --- a/tests/script/general/table/fill.sim +++ /dev/null @@ -1,63 +0,0 @@ -system sh/stop_dnodes.sh - -system sh/deploy.sh -n dnode1 -i 1 -system sh/cfg.sh -n dnode1 -c walLevel -v 1 -system sh/exec.sh -n dnode1 -s start - -sleep 2000 -sql connect - -print =================== step1 -sql create database db -sql use db -sql create table mt (ts timestamp, k int, h binary(20), t bigint, s float, f double, x smallint, y tinyint, z bool) tags (a int, b binary(20), c bigint) -sql create table tb using mt tags (0, '1', 2) - -sql insert into tb values(now -200d, 200, '1', 2, 3, 4, 5, 6, true); -sql insert into tb values(now -100d, 100, '1', 2, 3, 4, 5, 6, true); -sql insert into tb values(now -30d, 30, '1', 2, 3, 4, 5, 6, true); -sql insert into tb values(now -20d, 20, '1', 2, 3, 4, 5, 6, true); -sql insert into tb values(now -10d, 10, '1', 2, 3, 4, 5, 6, true); -sql insert into tb values(now -5d, 5, '1', 2, 3, 4, 5, 6, true); -sql insert into tb values(now -1d, 1, '1', 2, 3, 4, 5, 6, true); -sql insert into tb values(now, 0, '1', 2, 3, 4, 5, 6, true); - -sql select * from db.mt -if $rows != 8 then - return -1 -endi - -sql select * from db.tb -if $rows != 8 then - return -1 -endi - -sql select count(*) from db.mt -if $data00 != 8 then - return -1 -endi - -sql select count(*), last(ts), min(k), max(k), avg(k) from db.mt where a=0 and ts>="2016-4-29 8:0:0" and ts < "2018-7-18 8:9:0" interval(1d) fill(value, 1) -sql select count(*), last(ts), min(k), max(k), avg(k) from db.mt where a=0 and ts>="2016-4-29 8:0:0" and ts < "2018-7-18 8:9:0" interval(1d) fill(value, 1) - -print =================== step2 -system sh/exec.sh -n dnode1 -s stop -x SIGINT -sleep 3000 -system sh/exec.sh -n dnode1 -s start -sleep 2000 - -print =================== step3 -sql select * from db.mt -if $rows != 8 then - return -1 -endi - -sql select * from db.tb -if $rows != 8 then - return -1 -endi - -sql select count(*) from db.mt -if $data00 != 8 then - return -1 -endi diff --git a/tests/script/jenkins/basic.txt b/tests/script/jenkins/basic.txt index daac2caf5d..6ad6a74eed 100644 --- a/tests/script/jenkins/basic.txt +++ b/tests/script/jenkins/basic.txt @@ -93,31 +93,7 @@ cd ../../../debug; make #======================b1-end=============== #======================b2-start=============== -./test.sh -f general/tag/3.sim -./test.sh -f general/tag/4.sim -./test.sh -f general/tag/5.sim -./test.sh -f general/tag/6.sim -./test.sh -f general/tag/add.sim -./test.sh -f general/tag/bigint.sim -./test.sh -f general/tag/binary_binary.sim -./test.sh -f general/tag/binary.sim -./test.sh -f general/tag/bool_binary.sim -./test.sh -f general/tag/bool_int.sim -./test.sh -f general/tag/bool.sim -./test.sh -f general/tag/change.sim -./test.sh -f general/tag/column.sim -./test.sh -f general/tag/commit.sim -./test.sh -f general/tag/create.sim -./test.sh -f general/tag/delete.sim -./test.sh -f general/tag/double.sim -./test.sh -f general/tag/filter.sim -./test.sh -f general/tag/float.sim -./test.sh -f general/tag/int_binary.sim -./test.sh -f general/tag/int_float.sim -./test.sh -f general/tag/int.sim -./test.sh -f general/tag/set.sim -./test.sh -f general/tag/smallint.sim -./test.sh -f general/tag/tinyint.sim + ./test.sh -f general/wal/sync.sim ./test.sh -f general/wal/kill.sim ./test.sh -f general/wal/maxtables.sim @@ -397,7 +373,6 @@ cd ../../../debug; make ./test.sh -f general/table/delete_writing.sim ./test.sh -f general/table/describe.sim ./test.sh -f general/table/double.sim -./test.sh -f general/table/fill.sim ./test.sh -f general/table/float.sim ./test.sh -f general/table/int.sim ./test.sh -f general/table/limit.sim From f3f8a20296e208060961a352a7366a3ae3bb5bb2 Mon Sep 17 00:00:00 2001 From: liuyq-617 Date: Tue, 3 Aug 2021 13:51:48 +0800 Subject: [PATCH 39/64] prevent zombie taosd --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 9595137d12..e6e8a1df32 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -41,6 +41,7 @@ def pre_test(){ sh ''' killall -9 taosd ||echo "no taosd running" killall -9 gdb || echo "no gdb running" + killall -9 python3.8 || echo "no python program running" cd ${WKC} git reset --hard HEAD~10 >/dev/null ''' From 9de8ca6725960dc5078196db8f78e9a4e6e3e8fa Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Tue, 3 Aug 2021 15:29:00 +0800 Subject: [PATCH 40/64] [TD-5694]: alloc mem for datacols dynamically --- src/common/inc/tdataformat.h | 6 +- src/common/src/tdataformat.c | 180 ++++++++++++++------------------- src/tsdb/inc/tsdbRowMergeBuf.h | 4 +- src/tsdb/src/tsdbMeta.c | 2 + src/tsdb/src/tsdbReadImpl.c | 9 ++ 5 files changed, 95 insertions(+), 106 deletions(-) diff --git a/src/common/inc/tdataformat.h b/src/common/inc/tdataformat.h index 47bd8a72b2..99c612c86c 100644 --- a/src/common/inc/tdataformat.h +++ b/src/common/inc/tdataformat.h @@ -325,7 +325,7 @@ typedef struct SDataCol { #define isAllRowsNull(pCol) ((pCol)->len == 0) static FORCE_INLINE void dataColReset(SDataCol *pDataCol) { pDataCol->len = 0; } -void dataColInit(SDataCol *pDataCol, STColumn *pCol, void **pBuf, int maxPoints); +void dataColInit(SDataCol *pDataCol, STColumn *pCol, int maxPoints); void dataColAppendVal(SDataCol *pCol, const void *value, int numOfRows, int maxPoints); void dataColSetOffset(SDataCol *pCol, int nEle); @@ -358,12 +358,12 @@ typedef struct { int maxRowSize; int maxCols; // max number of columns int maxPoints; // max number of points - int bufSize; + //int bufSize; int numOfRows; int numOfCols; // Total number of cols int sversion; // TODO: set sversion - void * buf; + //void * buf; SDataCol *cols; } SDataCols; diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 8ef3d083c7..ad928211a1 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -207,24 +207,16 @@ SMemRow tdMemRowDup(SMemRow row) { return trow; } -void dataColInit(SDataCol *pDataCol, STColumn *pCol, void **pBuf, int maxPoints) { +void dataColInit(SDataCol *pDataCol, STColumn *pCol, int maxPoints) { pDataCol->type = colType(pCol); pDataCol->colId = colColId(pCol); pDataCol->bytes = colBytes(pCol); pDataCol->offset = colOffset(pCol) + TD_DATA_ROW_HEAD_SIZE; pDataCol->len = 0; - if (IS_VAR_DATA_TYPE(pDataCol->type)) { - pDataCol->dataOff = (VarDataOffsetT *)(*pBuf); - pDataCol->pData = POINTER_SHIFT(*pBuf, sizeof(VarDataOffsetT) * maxPoints); - pDataCol->spaceSize = pDataCol->bytes * maxPoints; - *pBuf = POINTER_SHIFT(*pBuf, pDataCol->spaceSize + sizeof(VarDataOffsetT) * maxPoints); - } else { - pDataCol->spaceSize = pDataCol->bytes * maxPoints; - pDataCol->dataOff = NULL; - pDataCol->pData = *pBuf; - *pBuf = POINTER_SHIFT(*pBuf, pDataCol->spaceSize); - } + pDataCol->spaceSize = pDataCol->bytes * maxPoints; + pDataCol->pData = NULL; + pDataCol->dataOff = NULL; } // value from timestamp should be TKEY here instead of TSKEY void dataColAppendVal(SDataCol *pCol, const void *value, int numOfRows, int maxPoints) { @@ -239,6 +231,15 @@ void dataColAppendVal(SDataCol *pCol, const void *value, int numOfRows, int maxP if (numOfRows > 0) { // Find the first not null value, fill all previouse values as NULL dataColSetNEleNull(pCol, numOfRows, maxPoints); + } else { + if(pCol->pData == NULL) { + pCol->pData = malloc(maxPoints * pCol->bytes); + ASSERT(pCol->pData != NULL); + if(IS_VAR_DATA_TYPE(pCol->type)) { + pCol->dataOff = malloc(maxPoints * sizeof(VarDataOffsetT)); + ASSERT(pCol->dataOff != NULL); + } + } } } @@ -263,7 +264,7 @@ bool isNEleNull(SDataCol *pCol, int nEle) { return true; } -FORCE_INLINE void dataColSetNullAt(SDataCol *pCol, int index) { +static FORCE_INLINE void dataColSetNullAt(SDataCol *pCol, int index) { if (IS_VAR_DATA_TYPE(pCol->type)) { pCol->dataOff[index] = pCol->len; char *ptr = POINTER_SHIFT(pCol->pData, pCol->len); @@ -277,6 +278,15 @@ FORCE_INLINE void dataColSetNullAt(SDataCol *pCol, int index) { void dataColSetNEleNull(SDataCol *pCol, int nEle, int maxPoints) { + if(pCol->pData == NULL) { + pCol->pData = malloc(maxPoints * pCol->bytes); + ASSERT(pCol->pData != NULL); + if(IS_VAR_DATA_TYPE(pCol->type)) { + pCol->dataOff = malloc(maxPoints * sizeof(VarDataOffsetT)); + ASSERT(pCol->dataOff != NULL); + } + } + if (IS_VAR_DATA_TYPE(pCol->type)) { pCol->len = 0; for (int i = 0; i < nEle; i++) { @@ -324,17 +334,7 @@ SDataCols *tdNewDataCols(int maxRowSize, int maxCols, int maxRows) { } pCols->maxRowSize = maxRowSize; - pCols->bufSize = maxRowSize * maxRows; - if (pCols->bufSize > 0) { - pCols->buf = malloc(pCols->bufSize); - if (pCols->buf == NULL) { - uDebug("malloc failure, size:%" PRId64 " failed, reason:%s", (int64_t)sizeof(SDataCol) * maxCols, - strerror(errno)); - tdFreeDataCols(pCols); - return NULL; - } - } return pCols; } @@ -348,27 +348,31 @@ int tdInitDataCols(SDataCols *pCols, STSchema *pSchema) { if (schemaTLen(pSchema) > pCols->maxRowSize) { pCols->maxRowSize = schemaTLen(pSchema); - pCols->bufSize = schemaTLen(pSchema) * pCols->maxPoints; - pCols->buf = realloc(pCols->buf, pCols->bufSize); - if (pCols->buf == NULL) return -1; } tdResetDataCols(pCols); pCols->numOfCols = schemaNCols(pSchema); - void *ptr = pCols->buf; for (int i = 0; i < schemaNCols(pSchema); i++) { - dataColInit(pCols->cols + i, schemaColAt(pSchema, i), &ptr, pCols->maxPoints); - ASSERT((char *)ptr - (char *)(pCols->buf) <= pCols->bufSize); + dataColInit(pCols->cols + i, schemaColAt(pSchema, i), pCols->maxPoints); } return 0; } SDataCols *tdFreeDataCols(SDataCols *pCols) { + int i; if (pCols) { - tfree(pCols->buf); - tfree(pCols->cols); + if(pCols->cols) { + int maxCols = pCols->maxCols; + for(i = 0; i < maxCols; i++) { + SDataCol *pCol = &pCols->cols[i]; + tfree(pCol->pData); + tfree(pCol->dataOff); + } + free(pCols->cols); + pCols->cols = NULL; + } free(pCols); } return NULL; @@ -389,19 +393,17 @@ SDataCols *tdDupDataCols(SDataCols *pDataCols, bool keepData) { pRet->cols[i].offset = pDataCols->cols[i].offset; pRet->cols[i].spaceSize = pDataCols->cols[i].spaceSize; - pRet->cols[i].pData = (void *)((char *)pRet->buf + ((char *)(pDataCols->cols[i].pData) - (char *)(pDataCols->buf))); - - if (IS_VAR_DATA_TYPE(pRet->cols[i].type)) { - ASSERT(pDataCols->cols[i].dataOff != NULL); - pRet->cols[i].dataOff = - (int32_t *)((char *)pRet->buf + ((char *)(pDataCols->cols[i].dataOff) - (char *)(pDataCols->buf))); - } + pRet->cols[i].len = 0; + pRet->cols[i].dataOff = NULL; + pRet->cols[i].pData = NULL; if (keepData) { pRet->cols[i].len = pDataCols->cols[i].len; if (pDataCols->cols[i].len > 0) { + pRet->cols[i].pData = malloc(pDataCols->cols[i].bytes * pDataCols->maxPoints); memcpy(pRet->cols[i].pData, pDataCols->cols[i].pData, pDataCols->cols[i].len); if (IS_VAR_DATA_TYPE(pRet->cols[i].type)) { + pRet->cols[i].dataOff = malloc(sizeof(VarDataOffsetT) * pDataCols->maxPoints); memcpy(pRet->cols[i].dataOff, pDataCols->cols[i].dataOff, sizeof(VarDataOffsetT) * pDataCols->maxPoints); } } @@ -426,40 +428,27 @@ static void tdAppendDataRowToDataCol(SDataRow row, STSchema *pSchema, SDataCols int rcol = 0; int dcol = 0; - if (dataRowDeleted(row)) { - for (; dcol < pCols->numOfCols; dcol++) { - SDataCol *pDataCol = &(pCols->cols[dcol]); - if (dcol == 0) { - dataColAppendVal(pDataCol, dataRowTuple(row), pCols->numOfRows, pCols->maxPoints); - } else { - dataColSetNullAt(pDataCol, pCols->numOfRows); - } + while (dcol < pCols->numOfCols) { + SDataCol *pDataCol = &(pCols->cols[dcol]); + if (rcol >= schemaNCols(pSchema)) { + dataColAppendVal(pDataCol, getNullValue(pDataCol->type), pCols->numOfRows, pCols->maxPoints); + dcol++; + continue; } - } else { - while (dcol < pCols->numOfCols) { - SDataCol *pDataCol = &(pCols->cols[dcol]); - if (rcol >= schemaNCols(pSchema)) { - // dataColSetNullAt(pDataCol, pCols->numOfRows); - dataColAppendVal(pDataCol, getNullValue(pDataCol->type), pCols->numOfRows, pCols->maxPoints); - dcol++; - continue; - } - STColumn *pRowCol = schemaColAt(pSchema, rcol); - if (pRowCol->colId == pDataCol->colId) { - void *value = tdGetRowDataOfCol(row, pRowCol->type, pRowCol->offset + TD_DATA_ROW_HEAD_SIZE); - dataColAppendVal(pDataCol, value, pCols->numOfRows, pCols->maxPoints); - dcol++; - rcol++; - } else if (pRowCol->colId < pDataCol->colId) { - rcol++; - } else { - if(forceSetNull) { - //dataColSetNullAt(pDataCol, pCols->numOfRows); - dataColAppendVal(pDataCol, getNullValue(pDataCol->type), pCols->numOfRows, pCols->maxPoints); - } - dcol++; + STColumn *pRowCol = schemaColAt(pSchema, rcol); + if (pRowCol->colId == pDataCol->colId) { + void *value = tdGetRowDataOfCol(row, pRowCol->type, pRowCol->offset + TD_DATA_ROW_HEAD_SIZE); + dataColAppendVal(pDataCol, value, pCols->numOfRows, pCols->maxPoints); + dcol++; + rcol++; + } else if (pRowCol->colId < pDataCol->colId) { + rcol++; + } else { + if(forceSetNull) { + dataColAppendVal(pDataCol, getNullValue(pDataCol->type), pCols->numOfRows, pCols->maxPoints); } + dcol++; } } pCols->numOfRows++; @@ -471,43 +460,30 @@ static void tdAppendKvRowToDataCol(SKVRow row, STSchema *pSchema, SDataCols *pCo int rcol = 0; int dcol = 0; - if (kvRowDeleted(row)) { - for (; dcol < pCols->numOfCols; dcol++) { - SDataCol *pDataCol = &(pCols->cols[dcol]); - if (dcol == 0) { - dataColAppendVal(pDataCol, kvRowValues(row), pCols->numOfRows, pCols->maxPoints); - } else { - dataColSetNullAt(pDataCol, pCols->numOfRows); - } + int nRowCols = kvRowNCols(row); + + while (dcol < pCols->numOfCols) { + SDataCol *pDataCol = &(pCols->cols[dcol]); + if (rcol >= nRowCols || rcol >= schemaNCols(pSchema)) { + dataColAppendVal(pDataCol, getNullValue(pDataCol->type), pCols->numOfRows, pCols->maxPoints); + ++dcol; + continue; } - } else { - int nRowCols = kvRowNCols(row); - while (dcol < pCols->numOfCols) { - SDataCol *pDataCol = &(pCols->cols[dcol]); - if (rcol >= nRowCols || rcol >= schemaNCols(pSchema)) { - // dataColSetNullAt(pDataCol, pCols->numOfRows); + SColIdx *colIdx = kvRowColIdxAt(row, rcol); + + if (colIdx->colId == pDataCol->colId) { + void *value = tdGetKvRowDataOfCol(row, colIdx->offset); + dataColAppendVal(pDataCol, value, pCols->numOfRows, pCols->maxPoints); + ++dcol; + ++rcol; + } else if (colIdx->colId < pDataCol->colId) { + ++rcol; + } else { + if (forceSetNull) { dataColAppendVal(pDataCol, getNullValue(pDataCol->type), pCols->numOfRows, pCols->maxPoints); - ++dcol; - continue; - } - - SColIdx *colIdx = kvRowColIdxAt(row, rcol); - - if (colIdx->colId == pDataCol->colId) { - void *value = tdGetKvRowDataOfCol(row, colIdx->offset); - dataColAppendVal(pDataCol, value, pCols->numOfRows, pCols->maxPoints); - ++dcol; - ++rcol; - } else if (colIdx->colId < pDataCol->colId) { - ++rcol; - } else { - if (forceSetNull) { - // dataColSetNullAt(pDataCol, pCols->numOfRows); - dataColAppendVal(pDataCol, getNullValue(pDataCol->type), pCols->numOfRows, pCols->maxPoints); - } - ++dcol; } + ++dcol; } } pCols->numOfRows++; diff --git a/src/tsdb/inc/tsdbRowMergeBuf.h b/src/tsdb/inc/tsdbRowMergeBuf.h index 302bf25750..cefa9b27fb 100644 --- a/src/tsdb/inc/tsdbRowMergeBuf.h +++ b/src/tsdb/inc/tsdbRowMergeBuf.h @@ -29,7 +29,9 @@ typedef void* SMergeBuf; SDataRow tsdbMergeTwoRows(SMergeBuf *pBuf, SMemRow row1, SMemRow row2, STSchema *pSchema1, STSchema *pSchema2); static FORCE_INLINE int tsdbMergeBufMakeSureRoom(SMergeBuf *pBuf, STSchema* pSchema1, STSchema* pSchema2) { - return tsdbMakeRoom(pBuf, MAX(dataRowMaxBytesFromSchema(pSchema1), dataRowMaxBytesFromSchema(pSchema2))); + size_t len1 = dataRowMaxBytesFromSchema(pSchema1); + size_t len2 = dataRowMaxBytesFromSchema(pSchema2); + return tsdbMakeRoom(pBuf, MAX(len1, len2)); } static FORCE_INLINE void tsdbFreeMergeBuf(SMergeBuf buf) { diff --git a/src/tsdb/src/tsdbMeta.c b/src/tsdb/src/tsdbMeta.c index f233500ee9..619b32b3d9 100644 --- a/src/tsdb/src/tsdbMeta.c +++ b/src/tsdb/src/tsdbMeta.c @@ -1035,6 +1035,8 @@ static void tsdbRemoveTableFromMeta(STsdbRepo *pRepo, STable *pTable, bool rmFro } } } + pMeta->maxCols = maxCols; + pMeta->maxRowBytes = maxRowBytes; if (lock) tsdbUnlockRepoMeta(pRepo); tsdbDebug("vgId:%d table %s uid %" PRIu64 " is removed from meta", REPO_ID(pRepo), TABLE_CHAR_NAME(pTable), TABLE_UID(pTable)); diff --git a/src/tsdb/src/tsdbReadImpl.c b/src/tsdb/src/tsdbReadImpl.c index 666a2d3571..a16c3ffe6a 100644 --- a/src/tsdb/src/tsdbReadImpl.c +++ b/src/tsdb/src/tsdbReadImpl.c @@ -518,6 +518,15 @@ static int tsdbCheckAndDecodeColumnData(SDataCol *pDataCol, void *content, int32 return -1; } + if(pDataCol->pData == NULL) { + pDataCol->pData = malloc(maxPoints * pDataCol->bytes); + ASSERT(pDataCol->pData != NULL); + if(IS_VAR_DATA_TYPE(pDataCol->type)) { + pDataCol->dataOff = malloc(maxPoints * sizeof(VarDataOffsetT)); + ASSERT(pDataCol->dataOff != NULL); + } + } + // Decode the data if (comp) { // Need to decompress From 806cf56011be0b22f45fd05dbe8d65bf0ad1eb33 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Tue, 3 Aug 2021 17:12:44 +0800 Subject: [PATCH 41/64] [TD-4199] enhance performance --- src/client/src/tscParseLineProtocol.c | 6 +-- src/client/src/tscSQLParser.c | 23 +++++----- src/client/src/tscServer.c | 35 ++++----------- src/client/src/tscUtil.c | 16 ++++--- src/query/inc/qTableMeta.h | 3 +- src/util/inc/hash.h | 10 +++++ src/util/src/hash.c | 64 +++++++++++++++++++++++++++ 7 files changed, 108 insertions(+), 49 deletions(-) diff --git a/src/client/src/tscParseLineProtocol.c b/src/client/src/tscParseLineProtocol.c index 7d2823a42e..69e55fd333 100644 --- a/src/client/src/tscParseLineProtocol.c +++ b/src/client/src/tscParseLineProtocol.c @@ -458,9 +458,9 @@ int32_t loadTableMeta(TAOS* taos, char* tableName, SSmlSTableSchema* schema, SSm schema->tagHash = taosHashInit(8, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, false); schema->fieldHash = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, false); - uint32_t size = tscGetTableMetaMaxSize(); - STableMeta* tableMeta = calloc(1, size); - taosHashGetClone(tscTableMetaMap, fullTableName, strlen(fullTableName), NULL, tableMeta); + size_t size = 0; + STableMeta* tableMeta = NULL; + taosHashGetCloneExt(tscTableMetaMap, fullTableName, strlen(fullTableName), NULL, (void **)&tableMeta, &size); tstrncpy(schema->sTableName, tableName, strlen(tableName)+1); schema->precision = tableMeta->tableInfo.precision; diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 27b839169c..6f18ea3753 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -8093,6 +8093,7 @@ int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo) { SArray* pVgroupList = NULL; SArray* plist = NULL; STableMeta* pTableMeta = NULL; + size_t tableMetaCapacity = 0; SQueryInfo* pQueryInfo = tscGetQueryInfo(pCmd); pCmd->pTableMetaMap = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_NO_LOCK); @@ -8119,18 +8120,14 @@ int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo) { } } - uint32_t maxSize = tscGetTableMetaMaxSize(); char name[TSDB_TABLE_FNAME_LEN] = {0}; - assert(maxSize < 80 * TSDB_MAX_COLUMNS); - if (!pSql->pBuf) { - if (NULL == (pSql->pBuf = tcalloc(1, 80 * TSDB_MAX_COLUMNS))) { - code = TSDB_CODE_TSC_OUT_OF_MEMORY; - goto _end; - } - } - - pTableMeta = calloc(1, maxSize); + //if (!pSql->pBuf) { + // if (NULL == (pSql->pBuf = tcalloc(1, 80 * TSDB_MAX_COLUMNS))) { + // code = TSDB_CODE_TSC_OUT_OF_MEMORY; + // goto _end; + // } + //} plist = taosArrayInit(4, POINTER_BYTES); pVgroupList = taosArrayInit(4, POINTER_BYTES); @@ -8144,10 +8141,10 @@ int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo) { tNameExtractFullName(pname, name); size_t len = strlen(name); - memset(pTableMeta, 0, maxSize); - taosHashGetClone(tscTableMetaMap, name, len, NULL, pTableMeta); + + taosHashGetCloneExt(tscTableMetaMap, name, len, NULL, (void **)&pTableMeta, &tableMetaCapacity); - if (pTableMeta->id.uid > 0) { + if (pTableMeta && pTableMeta->id.uid > 0) { tscDebug("0x%"PRIx64" retrieve table meta %s from local buf", pSql->self, name); // avoid mem leak, may should update pTableMeta diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index fdb1be9f4e..d1cc0c1fa8 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -2840,40 +2840,21 @@ int32_t getMultiTableMetaFromMnode(SSqlObj *pSql, SArray* pNameList, SArray* pVg int32_t tscGetTableMetaImpl(SSqlObj* pSql, STableMetaInfo *pTableMetaInfo, bool autocreate, bool onlyLocal) { assert(tIsValidName(&pTableMetaInfo->name)); - uint32_t size = tscGetTableMetaMaxSize(); - if (pTableMetaInfo->pTableMeta == NULL) { - pTableMetaInfo->pTableMeta = calloc(1, size); - pTableMetaInfo->tableMetaSize = size; - } else if (pTableMetaInfo->tableMetaSize < size) { - char *tmp = realloc(pTableMetaInfo->pTableMeta, size); - if (tmp == NULL) { - return TSDB_CODE_TSC_OUT_OF_MEMORY; - } - pTableMetaInfo->pTableMeta = (STableMeta *)tmp; - } - - memset(pTableMetaInfo->pTableMeta, 0, size); - pTableMetaInfo->tableMetaSize = size; - - pTableMetaInfo->pTableMeta->tableType = -1; - pTableMetaInfo->pTableMeta->tableInfo.numOfColumns = -1; - char name[TSDB_TABLE_FNAME_LEN] = {0}; tNameExtractFullName(&pTableMetaInfo->name, name); size_t len = strlen(name); - taosHashGetClone(tscTableMetaMap, name, len, NULL, pTableMetaInfo->pTableMeta); + taosHashGetCloneExt(tscTableMetaMap, name, len, NULL, (void **)&(pTableMetaInfo->pTableMeta), &pTableMetaInfo->tableMetaCapacity); // TODO resize the tableMeta - assert(size < 80 * TSDB_MAX_COLUMNS); - if (!pSql->pBuf) { - if (NULL == (pSql->pBuf = tcalloc(1, 80 * TSDB_MAX_COLUMNS))) { - return TSDB_CODE_TSC_OUT_OF_MEMORY; - } - } - + //assert(size < 80 * TSDB_MAX_COLUMNS); + //if (!pSql->pBuf) { + // if (NULL == (pSql->pBuf = tcalloc(1, 80 * TSDB_MAX_COLUMNS))) { + // return TSDB_CODE_TSC_OUT_OF_MEMORY; + // } + //} STableMeta* pMeta = pTableMetaInfo->pTableMeta; - if (pMeta->id.uid > 0) { + if (pMeta && pMeta->id.uid > 0) { // in case of child table, here only get the if (pMeta->tableType == TSDB_CHILD_TABLE) { int32_t code = tscCreateTableMetaFromSTableMeta(pTableMetaInfo->pTableMeta, name, pSql->pBuf); diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index a82e452d0b..b42199ec91 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -1657,6 +1657,7 @@ int32_t tscCopyDataBlockToPayload(SSqlObj* pSql, STableDataBlocks* pDataBlock) { pTableMetaInfo->pTableMeta = tscTableMetaDup(pDataBlock->pTableMeta); pTableMetaInfo->tableMetaSize = tscGetTableMetaSize(pDataBlock->pTableMeta); + pTableMetaInfo->tableMetaCapacity = (size_t)(pTableMetaInfo->tableMetaSize); } /* @@ -3414,6 +3415,8 @@ STableMetaInfo* tscAddTableMetaInfo(SQueryInfo* pQueryInfo, SName* name, STableM } else { pTableMetaInfo->tableMetaSize = tscGetTableMetaSize(pTableMeta); } + pTableMetaInfo->tableMetaCapacity = (size_t)(pTableMetaInfo->tableMetaSize); + if (vgroupList != NULL) { pTableMetaInfo->vgroupList = tscVgroupInfoClone(vgroupList); @@ -4446,14 +4449,15 @@ CChildTableMeta* tscCreateChildMeta(STableMeta* pTableMeta) { } int32_t tscCreateTableMetaFromSTableMeta(STableMeta* pChild, const char* name, void* buf) { - assert(pChild != NULL && buf != NULL); + assert(pChild != NULL); - STableMeta* p = buf; - taosHashGetClone(tscTableMetaMap, pChild->sTableName, strnlen(pChild->sTableName, TSDB_TABLE_FNAME_LEN), NULL, p); + STableMeta* p = NULL; + size_t sz = 0; + taosHashGetCloneExt(tscTableMetaMap, pChild->sTableName, strnlen(pChild->sTableName, TSDB_TABLE_FNAME_LEN), NULL, (void **)&p, &sz); // tableMeta exists, build child table meta according to the super table meta // the uid need to be checked in addition to the general name of the super table. - if (p->id.uid > 0 && pChild->suid == p->id.uid) { + if (p && p->id.uid > 0 && pChild->suid == p->id.uid) { pChild->sversion = p->sversion; pChild->tversion = p->tversion; @@ -4461,8 +4465,10 @@ int32_t tscCreateTableMetaFromSTableMeta(STableMeta* pChild, const char* name, v int32_t total = pChild->tableInfo.numOfColumns + pChild->tableInfo.numOfTags; memcpy(pChild->schema, p->schema, sizeof(SSchema) *total); + tfree(p); return TSDB_CODE_SUCCESS; } else { // super table has been removed, current tableMeta is also expired. remove it here + tfree(p); taosHashRemove(tscTableMetaMap, name, strnlen(name, TSDB_TABLE_FNAME_LEN)); return -1; } @@ -4977,4 +4983,4 @@ void tscRemoveTableMetaBuf(STableMetaInfo* pTableMetaInfo, uint64_t id) { taosHashRemove(tscTableMetaMap, fname, len); tscDebug("0x%"PRIx64" remove table meta %s, numOfRemain:%d", id, fname, (int32_t) taosHashGetSize(tscTableMetaMap)); -} \ No newline at end of file +} diff --git a/src/query/inc/qTableMeta.h b/src/query/inc/qTableMeta.h index 4bb5483a10..0dae74ac82 100644 --- a/src/query/inc/qTableMeta.h +++ b/src/query/inc/qTableMeta.h @@ -71,7 +71,8 @@ typedef struct STableMeta { typedef struct STableMetaInfo { STableMeta *pTableMeta; // table meta, cached in client side and acquired by name - uint32_t tableMetaSize; + uint32_t tableMetaSize; + size_t tableMetaCapacity; SVgroupsInfo *vgroupList; SArray *pVgroupTables; // SArray diff --git a/src/util/inc/hash.h b/src/util/inc/hash.h index a53aa602c1..6c4145810b 100644 --- a/src/util/inc/hash.h +++ b/src/util/inc/hash.h @@ -127,6 +127,16 @@ void *taosHashGet(SHashObj *pHashObj, const void *key, size_t keyLen); */ void* taosHashGetClone(SHashObj *pHashObj, const void *key, size_t keyLen, void (*fp)(void *), void* d); +/** + * @param pHashObj + * @param key + * @param keyLen + * @param fp + * @param d + * @param sz + * @return + */ +void* taosHashGetCloneExt(SHashObj *pHashObj, const void *key, size_t keyLen, void (*fp)(void *), void** d, size_t *sz); /** * remove item with the specified key * @param pHashObj diff --git a/src/util/src/hash.c b/src/util/src/hash.c index 2e18f36a17..4398b2d457 100644 --- a/src/util/src/hash.c +++ b/src/util/src/hash.c @@ -18,6 +18,8 @@ #include "tulog.h" #include "taosdef.h" +#define EXT_SIZE 512 + #define HASH_NEED_RESIZE(_h) ((_h)->size >= (_h)->capacity * HASH_DEFAULT_LOAD_FACTOR) #define DO_FREE_HASH_NODE(_n) \ @@ -296,6 +298,68 @@ int32_t taosHashPut(SHashObj *pHashObj, const void *key, size_t keyLen, void *da void *taosHashGet(SHashObj *pHashObj, const void *key, size_t keyLen) { return taosHashGetClone(pHashObj, key, keyLen, NULL, NULL); } +//TODO(yihaoDeng), merge with taosHashGetClone +void* taosHashGetCloneExt(SHashObj *pHashObj, const void *key, size_t keyLen, void (*fp)(void *), void** d, size_t *sz) { + if (taosHashTableEmpty(pHashObj) || keyLen == 0 || key == NULL) { + return NULL; + } + + uint32_t hashVal = (*pHashObj->hashFp)(key, (uint32_t)keyLen); + + // only add the read lock to disable the resize process + __rd_lock(&pHashObj->lock, pHashObj->type); + + int32_t slot = HASH_INDEX(hashVal, pHashObj->capacity); + SHashEntry *pe = pHashObj->hashList[slot]; + + // no data, return directly + if (atomic_load_32(&pe->num) == 0) { + __rd_unlock(&pHashObj->lock, pHashObj->type); + return NULL; + } + + char *data = NULL; + + // lock entry + if (pHashObj->type == HASH_ENTRY_LOCK) { + taosRLockLatch(&pe->latch); + } + + if (pe->num > 0) { + assert(pe->next != NULL); + } else { + assert(pe->next == NULL); + } + + SHashNode *pNode = doSearchInEntryList(pHashObj, pe, key, keyLen, hashVal); + if (pNode != NULL) { + if (fp != NULL) { + fp(GET_HASH_NODE_DATA(pNode)); + } + + if (*d == NULL) { + *sz = pNode->dataLen + EXT_SIZE; + *d = calloc(1, *sz); + } else if (*sz < pNode->dataLen){ + *sz = pNode->dataLen + EXT_SIZE; + *d = realloc(*d, *sz); + } + memcpy(*d, GET_HASH_NODE_DATA(pNode), pNode->dataLen); + // just make runtime happy + if ((*sz) - pNode->dataLen > 0) { + memset((*d) + pNode->dataLen, 0, (*sz) - pNode->dataLen); + } + + data = GET_HASH_NODE_DATA(pNode); + } + + if (pHashObj->type == HASH_ENTRY_LOCK) { + taosRUnLockLatch(&pe->latch); + } + + __rd_unlock(&pHashObj->lock, pHashObj->type); + return data; +} void* taosHashGetClone(SHashObj *pHashObj, const void *key, size_t keyLen, void (*fp)(void *), void* d) { if (taosHashTableEmpty(pHashObj) || keyLen == 0 || key == NULL) { From 38d9fbc7d91a8cdd8cb77bbc13f271587952c60b Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Tue, 3 Aug 2021 17:46:48 +0800 Subject: [PATCH 42/64] [TD-4199] enhance performance --- src/util/src/hash.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/src/hash.c b/src/util/src/hash.c index 4398b2d457..d4e23c900f 100644 --- a/src/util/src/hash.c +++ b/src/util/src/hash.c @@ -344,10 +344,10 @@ void* taosHashGetCloneExt(SHashObj *pHashObj, const void *key, size_t keyLen, vo *sz = pNode->dataLen + EXT_SIZE; *d = realloc(*d, *sz); } - memcpy(*d, GET_HASH_NODE_DATA(pNode), pNode->dataLen); + memcpy((char *)(*d), GET_HASH_NODE_DATA(pNode), pNode->dataLen); // just make runtime happy if ((*sz) - pNode->dataLen > 0) { - memset((*d) + pNode->dataLen, 0, (*sz) - pNode->dataLen); + memset((char *)(*d) + pNode->dataLen, 0, (*sz) - pNode->dataLen); } data = GET_HASH_NODE_DATA(pNode); From e8d100657bcf800fd51f8e3a843e41b0c54ff6cd Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Tue, 3 Aug 2021 18:37:57 +0800 Subject: [PATCH 43/64] [TD-5694]: fix memory alloc --- src/common/inc/tdataformat.h | 4 +-- src/common/src/tdataformat.c | 61 +++++++++++++++++++++++------------- src/tsdb/src/tsdbReadImpl.c | 9 +----- 3 files changed, 42 insertions(+), 32 deletions(-) diff --git a/src/common/inc/tdataformat.h b/src/common/inc/tdataformat.h index 99c612c86c..53e77430d3 100644 --- a/src/common/inc/tdataformat.h +++ b/src/common/inc/tdataformat.h @@ -325,6 +325,8 @@ typedef struct SDataCol { #define isAllRowsNull(pCol) ((pCol)->len == 0) static FORCE_INLINE void dataColReset(SDataCol *pDataCol) { pDataCol->len = 0; } +void tdAllocMemForCol(SDataCol *pCol, int maxPoints); + void dataColInit(SDataCol *pDataCol, STColumn *pCol, int maxPoints); void dataColAppendVal(SDataCol *pCol, const void *value, int numOfRows, int maxPoints); void dataColSetOffset(SDataCol *pCol, int nEle); @@ -358,12 +360,10 @@ typedef struct { int maxRowSize; int maxCols; // max number of columns int maxPoints; // max number of points - //int bufSize; int numOfRows; int numOfCols; // Total number of cols int sversion; // TODO: set sversion - //void * buf; SDataCol *cols; } SDataCols; diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index ad928211a1..077081bfb6 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -22,6 +22,24 @@ static void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, int limit1, SDataCols *src2, int *iter2, int limit2, int tRows, bool forceSetNull); +void tdAllocMemForCol(SDataCol *pCol, int maxPoints) { + if(pCol->pData == NULL) { + pCol->pData = malloc(maxPoints * pCol->bytes); + pCol->spaceSize = maxPoints * pCol->bytes; + if(pCol->pData == NULL) { + uDebug("malloc failure, size:%" PRId64 " failed, reason:%s", (int64_t)pCol->spaceSize, + strerror(errno)); + } + if(IS_VAR_DATA_TYPE(pCol->type)) { + pCol->dataOff = malloc(maxPoints * sizeof(VarDataOffsetT)); + if(pCol->dataOff == NULL) { + uDebug("malloc failure, size:%" PRId64 " failed, reason:%s", (int64_t)(maxPoints * sizeof(VarDataOffsetT)), + strerror(errno)); + } + } + } +} + /** * Duplicate the schema and return a new object */ @@ -214,9 +232,6 @@ void dataColInit(SDataCol *pDataCol, STColumn *pCol, int maxPoints) { pDataCol->offset = colOffset(pCol) + TD_DATA_ROW_HEAD_SIZE; pDataCol->len = 0; - pDataCol->spaceSize = pDataCol->bytes * maxPoints; - pDataCol->pData = NULL; - pDataCol->dataOff = NULL; } // value from timestamp should be TKEY here instead of TSKEY void dataColAppendVal(SDataCol *pCol, const void *value, int numOfRows, int maxPoints) { @@ -232,14 +247,7 @@ void dataColAppendVal(SDataCol *pCol, const void *value, int numOfRows, int maxP // Find the first not null value, fill all previouse values as NULL dataColSetNEleNull(pCol, numOfRows, maxPoints); } else { - if(pCol->pData == NULL) { - pCol->pData = malloc(maxPoints * pCol->bytes); - ASSERT(pCol->pData != NULL); - if(IS_VAR_DATA_TYPE(pCol->type)) { - pCol->dataOff = malloc(maxPoints * sizeof(VarDataOffsetT)); - ASSERT(pCol->dataOff != NULL); - } - } + tdAllocMemForCol(pCol, maxPoints); } } @@ -277,15 +285,8 @@ static FORCE_INLINE void dataColSetNullAt(SDataCol *pCol, int index) { } void dataColSetNEleNull(SDataCol *pCol, int nEle, int maxPoints) { - - if(pCol->pData == NULL) { - pCol->pData = malloc(maxPoints * pCol->bytes); - ASSERT(pCol->pData != NULL); - if(IS_VAR_DATA_TYPE(pCol->type)) { - pCol->dataOff = malloc(maxPoints * sizeof(VarDataOffsetT)); - ASSERT(pCol->dataOff != NULL); - } - } + if(isAllRowsNull(pCol)) return; + tdAllocMemForCol(pCol, maxPoints); if (IS_VAR_DATA_TYPE(pCol->type)) { pCol->len = 0; @@ -340,9 +341,24 @@ SDataCols *tdNewDataCols(int maxRowSize, int maxCols, int maxRows) { } int tdInitDataCols(SDataCols *pCols, STSchema *pSchema) { + int i; + int oldMaxCols = pCols->maxCols; + if(oldMaxCols > 0) { + for(i = 0; i < oldMaxCols; i++) { + if(i >= pSchema->numOfCols || + (pCols->cols[i].spaceSize < pSchema->columns[i].bytes * pCols->maxPoints)) { + tfree(pCols->cols[i].pData); + tfree(pCols->cols[i].dataOff); + } + } + } if (schemaNCols(pSchema) > pCols->maxCols) { pCols->maxCols = schemaNCols(pSchema); pCols->cols = (SDataCol *)realloc(pCols->cols, sizeof(SDataCol) * pCols->maxCols); + for(i = oldMaxCols; i < pCols->maxCols; i++) { + pCols->cols[i].pData = NULL; + pCols->cols[i].dataOff = NULL; + } if (pCols->cols == NULL) return -1; } @@ -353,7 +369,7 @@ int tdInitDataCols(SDataCols *pCols, STSchema *pSchema) { tdResetDataCols(pCols); pCols->numOfCols = schemaNCols(pSchema); - for (int i = 0; i < schemaNCols(pSchema); i++) { + for (i = 0; i < schemaNCols(pSchema); i++) { dataColInit(pCols->cols + i, schemaColAt(pSchema, i), pCols->maxPoints); } @@ -392,7 +408,7 @@ SDataCols *tdDupDataCols(SDataCols *pDataCols, bool keepData) { pRet->cols[i].bytes = pDataCols->cols[i].bytes; pRet->cols[i].offset = pDataCols->cols[i].offset; - pRet->cols[i].spaceSize = pDataCols->cols[i].spaceSize; + pRet->cols[i].spaceSize = 0; pRet->cols[i].len = 0; pRet->cols[i].dataOff = NULL; pRet->cols[i].pData = NULL; @@ -400,6 +416,7 @@ SDataCols *tdDupDataCols(SDataCols *pDataCols, bool keepData) { if (keepData) { pRet->cols[i].len = pDataCols->cols[i].len; if (pDataCols->cols[i].len > 0) { + pRet->cols[i].spaceSize = pDataCols->cols[i].spaceSize; pRet->cols[i].pData = malloc(pDataCols->cols[i].bytes * pDataCols->maxPoints); memcpy(pRet->cols[i].pData, pDataCols->cols[i].pData, pDataCols->cols[i].len); if (IS_VAR_DATA_TYPE(pRet->cols[i].type)) { diff --git a/src/tsdb/src/tsdbReadImpl.c b/src/tsdb/src/tsdbReadImpl.c index a16c3ffe6a..711c32535b 100644 --- a/src/tsdb/src/tsdbReadImpl.c +++ b/src/tsdb/src/tsdbReadImpl.c @@ -518,14 +518,7 @@ static int tsdbCheckAndDecodeColumnData(SDataCol *pDataCol, void *content, int32 return -1; } - if(pDataCol->pData == NULL) { - pDataCol->pData = malloc(maxPoints * pDataCol->bytes); - ASSERT(pDataCol->pData != NULL); - if(IS_VAR_DATA_TYPE(pDataCol->type)) { - pDataCol->dataOff = malloc(maxPoints * sizeof(VarDataOffsetT)); - ASSERT(pDataCol->dataOff != NULL); - } - } + tdAllocMemForCol(pDataCol, maxPoints); // Decode the data if (comp) { From ba7427c8c999a2238bd4875984d21bd499d89f51 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Tue, 3 Aug 2021 18:48:50 +0800 Subject: [PATCH 44/64] [TD-5702]: taosdemo remove memory operation. (#7114) * [TD-5702]: taosdemo remove memory operation. * add remainderBufLen to check row data generation. * row data generation with remainder buffer length checking. Co-authored-by: Shuduo Sang --- src/kit/taosdemo/taosdemo.c | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 5ac85f87f1..d04bb2905f 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -5093,7 +5093,9 @@ static int getRowDataFromSample( static int64_t generateStbRowData( SSuperTable* stbInfo, - char* recBuf, int64_t timestamp) + char* recBuf, + int64_t remainderBufLen, + int64_t timestamp) { int64_t dataLen = 0; char *pstr = recBuf; @@ -5121,6 +5123,7 @@ static int64_t generateStbRowData( rand_string(buf, stbInfo->columns[i].dataLen); dataLen += snprintf(pstr + dataLen, maxLen - dataLen, "\'%s\',", buf); tmfree(buf); + } else { char *tmp; @@ -5177,6 +5180,9 @@ static int64_t generateStbRowData( tstrncpy(pstr + dataLen, ",", 2); dataLen += 1; } + + if (dataLen > remainderBufLen) + return 0; } dataLen -= 1; @@ -5383,7 +5389,7 @@ static int32_t generateDataTailWithoutStb( int32_t k = 0; for (k = 0; k < batch;) { - char data[MAX_DATA_SIZE]; + char *data = pstr; memset(data, 0, MAX_DATA_SIZE); int64_t retLen = 0; @@ -5407,7 +5413,7 @@ static int32_t generateDataTailWithoutStb( if (len > remainderBufLen) break; - pstr += sprintf(pstr, "%s", data); + pstr += retLen; k++; len += retLen; remainderBufLen -= retLen; @@ -5463,14 +5469,14 @@ static int32_t generateStbDataTail( int32_t k; for (k = 0; k < batch;) { - char data[MAX_DATA_SIZE]; - memset(data, 0, MAX_DATA_SIZE); + char *data = pstr; int64_t lenOfRow = 0; if (tsRand) { if (superTblInfo->disorderRatio > 0) { lenOfRow = generateStbRowData(superTblInfo, data, + remainderBufLen, startTime + getTSRandTail( superTblInfo->timeStampStep, k, superTblInfo->disorderRatio, @@ -5478,6 +5484,7 @@ static int32_t generateStbDataTail( ); } else { lenOfRow = generateStbRowData(superTblInfo, data, + remainderBufLen, startTime + superTblInfo->timeStampStep * k ); } @@ -5490,11 +5497,15 @@ static int32_t generateStbDataTail( pSamplePos); } + if (lenOfRow == 0) { + data[0] = '\0'; + break; + } if ((lenOfRow + 1) > remainderBufLen) { break; } - pstr += snprintf(pstr , lenOfRow + 1, "%s", data); + pstr += lenOfRow; k++; len += lenOfRow; remainderBufLen -= lenOfRow; @@ -6246,7 +6257,7 @@ static int32_t generateStbProgressiveData( assert(buffer != NULL); char *pstr = buffer; - memset(buffer, 0, *pRemainderBufLen); + memset(pstr, 0, *pRemainderBufLen); int64_t headLen = generateStbSQLHead( superTblInfo, @@ -6640,7 +6651,7 @@ static void* syncWriteProgressive(threadInfo *pThreadInfo) { return NULL; } - int64_t remainderBufLen = maxSqlLen; + int64_t remainderBufLen = maxSqlLen - 2000; char *pstr = pThreadInfo->buffer; int len = snprintf(pstr, @@ -6822,10 +6833,14 @@ static void callBack(void *param, TAOS_RES *res, int code) { && rand_num < pThreadInfo->superTblInfo->disorderRatio) { int64_t d = pThreadInfo->lastTs - (taosRandom() % pThreadInfo->superTblInfo->disorderRange + 1); - generateStbRowData(pThreadInfo->superTblInfo, data, d); + generateStbRowData(pThreadInfo->superTblInfo, data, + MAX_DATA_SIZE, + d); } else { generateStbRowData(pThreadInfo->superTblInfo, - data, pThreadInfo->lastTs += 1000); + data, + MAX_DATA_SIZE, + pThreadInfo->lastTs += 1000); } pstr += sprintf(pstr, "%s", data); pThreadInfo->counter++; @@ -7050,6 +7065,7 @@ static void startMultiThreadInsertData(int threads, char* db_name, for (int i = 0; i < threads; i++) { threadInfo *pThreadInfo = infos + i; pThreadInfo->threadID = i; + tstrncpy(pThreadInfo->db_name, db_name, TSDB_DB_NAME_LEN); pThreadInfo->time_precision = timePrec; pThreadInfo->superTblInfo = superTblInfo; From 746a316f23ce4817c8e27f6faaced447fd8193c6 Mon Sep 17 00:00:00 2001 From: happyguoxy Date: Tue, 3 Aug 2021 19:04:51 +0800 Subject: [PATCH 45/64] [TD-5460]:test database update=0 --- tests/pytest/import_merge/import_update_0.py | 1913 ++++++++++++++++++ 1 file changed, 1913 insertions(+) create mode 100644 tests/pytest/import_merge/import_update_0.py diff --git a/tests/pytest/import_merge/import_update_0.py b/tests/pytest/import_merge/import_update_0.py new file mode 100644 index 0000000000..6466deb370 --- /dev/null +++ b/tests/pytest/import_merge/import_update_0.py @@ -0,0 +1,1913 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import sys +import taos +from util.log import tdLog +from util.cases import tdCases +from util.sql import tdSql +from util.dnodes import * +import random +import time + + +class TDTestCase: + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), logSql) + + self.ts = 1600000000000 + self.num = 50 + self.num4096 = 5 + + def getBuildPath(self): + selfPath = os.path.dirname(os.path.realpath(__file__)) + + if ("community" in selfPath): + projPath = selfPath[:selfPath.find("community")] + else: + projPath = selfPath[:selfPath.find("tests")] + + for root, dirs, files in os.walk(projPath): + if ("taosd" in files): + rootRealPath = os.path.dirname(os.path.realpath(root)) + if ("packaging" not in rootRealPath): + buildPath = root[:len(root)-len("/build/bin")] + break + return buildPath + + def run(self): + tdSql.prepare() + # test case for https://jira.taosdata.com:18080/browse/TD-5062 + + startTime = time.time() + + tdSql.execute('''drop database if exists test_updata_0 ;''') + # update 0 不更新 ; update 1 覆盖更新 ;update 2 合并更新 + tdLog.info("========== test database updata = 0 ==========") + tdSql.execute('''create database test_updata_0 update 0 minrows 10 maxrows 200 ;''') + tdSql.execute('''use test_updata_0;''') + tdSql.execute('''create stable stable_1 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) + tags(loc nchar(20) , t_int int);''') + tdSql.execute('''create table table_1 using stable_1 tags('table_1' , '1' )''') + tdSql.execute('''create table table_2 using stable_1 tags('table_2' , '2' )''') + tdSql.execute('''create table table_3 using stable_1 tags('table_3' , '3' )''') + + #regular table + tdSql.execute('''create table regular_table_1 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) ;''') + tdSql.execute('''create table regular_table_2 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) ;''') + tdSql.execute('''create table regular_table_3 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) ;''') + + + tdLog.info("========== test1.1 : insert data , check data==========") + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_1 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_1 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== 4096 regular_table ==========") + sql = "create table regular_table_4096_1 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4094): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += "col4095 binary(22))" + tdLog.info(len(sql)) + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into regular_table_4096_1 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4094): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from regular_table_4096_1 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = "create stable stable_4096_1 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4092): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += " col4093 binary(22)) " + sql += " tags (loc nchar(20),tag_1 int) " + tdLog.info(len(sql)) + tdSql.execute(sql) + + sql = " create table table_4096_1 using stable_4096_1 tags ('table_4096_1',1); " + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into table_4096_1 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4092): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from table_4096_1 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query('''select * from stable_4096_1 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + # minrows 10 maxrows 200 + for i in range(self.num): + tdSql.execute('''insert into regular_table_1 values(%d, %d, %d, %d, %d, 0, 'binary.%s', 'nchar.%s', %f, %f, %d)''' + % (self.ts -100 + i, i, i, i, i, i, i, i, i, self.ts -100 + i)) + tdSql.execute('''insert into regular_table_1 values(%d, %d, %d, %d, %d, false, 'binary%s', 'nchar%s', %f, %f, %d)''' + % (self.ts + i, random.randint(-2147483647, 2147483647), + random.randint(-9223372036854775807, 9223372036854775807), random.randint(-32767, 32767), + random.randint(-127, 127), random.randint(-100, 100), random.randint(-10000, 10000), + random.uniform(-100000,100000), random.uniform(-1000000000,1000000000), self.ts + i)) + + tdSql.execute('''insert into table_1 values(%d, %d, %d, %d, %d, 0, 'binary.%s', 'nchar.%s', %f, %f, %d)''' + % (self.ts -100 + i, i, i, i, i, i, i, i, i, self.ts -100 + i)) + tdSql.execute('''insert into table_1 values(%d, %d, %d, %d, %d, false, 'binary%s', 'nchar%s', %f, %f, %d)''' + % (self.ts + i, random.randint(-2147483647, 2147483647), + random.randint(-9223372036854775807, 9223372036854775807), random.randint(-32767, 32767), + random.randint(-127, 127), random.randint(-100, 100), random.randint(-10000, 10000), + random.uniform(-100000,100000), random.uniform(-1000000000,1000000000), self.ts + i)) + + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_1 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.error('''insert into regular_table_1 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.error('''insert into regular_table_1 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_1 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.error('''insert into table_1 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.error('''insert into table_1 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdLog.info("========== 4096 regular_table ==========") + sql = '''insert into regular_table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = '''insert into table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query("select * from stable_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + + tdLog.info("========== test1.2 : insert data , taosdemo force data dropping disk , check data==========") + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_2 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_2 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== 4096 regular_table ==========") + sql = "create table regular_table_4096_2 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4094): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += "col4095 binary(22))" + tdLog.info(len(sql)) + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into regular_table_4096_2 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4094): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from regular_table_4096_2 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = "create stable stable_4096_2 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4092): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += " col4093 binary(22)) " + sql += " tags (loc nchar(20),tag_1 int) " + tdLog.info(len(sql)) + tdSql.execute(sql) + + sql = " create table table_4096_2 using stable_4096_2 tags ('table_4096_2',1); " + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into table_4096_2 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4092): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from table_4096_2 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query('''select * from stable_4096_2 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + + # taosdemo force data dropping disk + buildPath = self.getBuildPath() + if (buildPath == ""): + tdLog.exit("taosd not found!") + else: + tdLog.info("taosd found in %s" % buildPath) + binPath = buildPath+ "/build/bin/" + os.system("%staosdemo -N -d taosdemo -t 100 -n 100 -l 1000 -y" % binPath) + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_2 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.error('''insert into table_2 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.error('''insert into table_2 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdLog.info("========== 4096 regular_table ==========") + sql = '''insert into regular_table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = '''insert into table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query("select * from stable_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + tdLog.info("========== test1.3 : insert data , tdDnodes restart force data dropping disk , check data==========") + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_3 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_3 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== 4096 regular_table ==========") + sql = "create table regular_table_4096_3 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4094): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += "col4095 binary(22))" + tdLog.info(len(sql)) + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into regular_table_4096_3 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4094): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from regular_table_4096_3 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = "create stable stable_4096_3 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4092): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += " col4093 binary(22)) " + sql += " tags (loc nchar(20),tag_1 int) " + tdLog.info(len(sql)) + tdSql.execute(sql) + + sql = " create table table_4096_3 using stable_4096_3 tags ('table_4096_3',1); " + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into table_4096_3 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4092): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from table_4096_3 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query('''select * from stable_4096_3 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + # tdDnodes restart force data dropping disk + tdDnodes.stop(1) + tdDnodes.start(1) + + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_3 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.error('''insert into regular_table_3 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.error('''insert into regular_table_3 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_3 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.error('''insert into table_3 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.error('''insert into table_3 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== 4096 regular_table ==========") + sql = '''insert into regular_table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = '''insert into table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query("select * from stable_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + endTime = time.time() + print("total time %ds" % (endTime - startTime)) + + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) \ No newline at end of file From 92c0b28106d4cac2444e38fd757204e135e47bbb Mon Sep 17 00:00:00 2001 From: happyguoxy Date: Tue, 3 Aug 2021 19:05:01 +0800 Subject: [PATCH 46/64] [TD-5460]:test database update=1 --- tests/pytest/import_merge/import_update_1.py | 1913 ++++++++++++++++++ 1 file changed, 1913 insertions(+) create mode 100644 tests/pytest/import_merge/import_update_1.py diff --git a/tests/pytest/import_merge/import_update_1.py b/tests/pytest/import_merge/import_update_1.py new file mode 100644 index 0000000000..f313703342 --- /dev/null +++ b/tests/pytest/import_merge/import_update_1.py @@ -0,0 +1,1913 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import sys +import taos +from util.log import tdLog +from util.cases import tdCases +from util.sql import tdSql +from util.dnodes import * +import random +import time + + +class TDTestCase: + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), logSql) + + self.ts = 1600000000000 + self.num = 50 + self.num4096 = 5 + + def getBuildPath(self): + selfPath = os.path.dirname(os.path.realpath(__file__)) + + if ("community" in selfPath): + projPath = selfPath[:selfPath.find("community")] + else: + projPath = selfPath[:selfPath.find("tests")] + + for root, dirs, files in os.walk(projPath): + if ("taosd" in files): + rootRealPath = os.path.dirname(os.path.realpath(root)) + if ("packaging" not in rootRealPath): + buildPath = root[:len(root)-len("/build/bin")] + break + return buildPath + + def run(self): + tdSql.prepare() + # test case for https://jira.taosdata.com:18080/browse/TD-5062 + + startTime = time.time() + + tdSql.execute('''drop database if exists test_updata_1 ;''') + # update 0 不更新 ; update 1 覆盖更新 ;update 2 合并更新 + tdLog.info("========== test database updata = 1 ==========") + tdSql.execute('''create database test_updata_1 update 1 minrows 10 maxrows 200 ;''') + tdSql.execute('''use test_updata_1;''') + tdSql.execute('''create stable stable_1 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) + tags(loc nchar(20) , t_int int);''') + tdSql.execute('''create table table_1 using stable_1 tags('table_1' , '1' )''') + tdSql.execute('''create table table_2 using stable_1 tags('table_2' , '2' )''') + tdSql.execute('''create table table_3 using stable_1 tags('table_3' , '3' )''') + + #regular table + tdSql.execute('''create table regular_table_1 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) ;''') + tdSql.execute('''create table regular_table_2 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) ;''') + tdSql.execute('''create table regular_table_3 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) ;''') + + + tdLog.info("========== test1.1 : insert data , check data==========") + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_1 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_1 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== 4096 regular_table ==========") + sql = "create table regular_table_4096_1 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4094): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += "col4095 binary(22))" + tdLog.info(len(sql)) + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into regular_table_4096_1 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4094): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from regular_table_4096_1 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = "create stable stable_4096_1 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4092): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += " col4093 binary(22)) " + sql += " tags (loc nchar(20),tag_1 int) " + tdLog.info(len(sql)) + tdSql.execute(sql) + + sql = " create table table_4096_1 using stable_4096_1 tags ('table_4096_1',1); " + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into table_4096_1 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4092): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from table_4096_1 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query('''select * from stable_4096_1 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + # minrows 10 maxrows 200 + for i in range(self.num): + tdSql.execute('''insert into regular_table_1 values(%d, %d, %d, %d, %d, 0, 'binary.%s', 'nchar.%s', %f, %f, %d)''' + % (self.ts -100 + i, i, i, i, i, i, i, i, i, self.ts -100 + i)) + tdSql.execute('''insert into regular_table_1 values(%d, %d, %d, %d, %d, false, 'binary%s', 'nchar%s', %f, %f, %d)''' + % (self.ts + i, random.randint(-2147483647, 2147483647), + random.randint(-9223372036854775807, 9223372036854775807), random.randint(-32767, 32767), + random.randint(-127, 127), random.randint(-100, 100), random.randint(-10000, 10000), + random.uniform(-100000,100000), random.uniform(-1000000000,1000000000), self.ts + i)) + + tdSql.execute('''insert into table_1 values(%d, %d, %d, %d, %d, 0, 'binary.%s', 'nchar.%s', %f, %f, %d)''' + % (self.ts -100 + i, i, i, i, i, i, i, i, i, self.ts -100 + i)) + tdSql.execute('''insert into table_1 values(%d, %d, %d, %d, %d, false, 'binary%s', 'nchar%s', %f, %f, %d)''' + % (self.ts + i, random.randint(-2147483647, 2147483647), + random.randint(-9223372036854775807, 9223372036854775807), random.randint(-32767, 32767), + random.randint(-127, 127), random.randint(-100, 100), random.randint(-10000, 10000), + random.uniform(-100000,100000), random.uniform(-1000000000,1000000000), self.ts + i)) + + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_1 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.error('''insert into regular_table_1 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.error('''insert into regular_table_1 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_1 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.error('''insert into table_1 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.error('''insert into table_1 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdLog.info("========== 4096 regular_table ==========") + sql = '''insert into regular_table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,None) + tdSql.checkData(0,3801,None) + tdSql.checkData(0,4091,None) + tdSql.checkData(0,4095,None) + + tdLog.info("========== 4096 stable ==========") + sql = '''insert into table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query("select * from stable_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,None) + tdSql.checkData(0,3801,None) + tdSql.checkData(0,4091,None) + tdSql.checkData(0,4093,None) + tdSql.query("select * from stable_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,None) + tdSql.checkData(0,3801,None) + tdSql.checkData(0,4091,None) + tdSql.checkData(0,4093,None) + + + tdLog.info("========== test1.2 : insert data , taosdemo force data dropping disk , check data==========") + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_2 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_2 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== 4096 regular_table ==========") + sql = "create table regular_table_4096_2 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4094): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += "col4095 binary(22))" + tdLog.info(len(sql)) + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into regular_table_4096_2 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4094): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from regular_table_4096_2 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = "create stable stable_4096_2 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4092): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += " col4093 binary(22)) " + sql += " tags (loc nchar(20),tag_1 int) " + tdLog.info(len(sql)) + tdSql.execute(sql) + + sql = " create table table_4096_2 using stable_4096_2 tags ('table_4096_2',1); " + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into table_4096_2 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4092): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from table_4096_2 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query('''select * from stable_4096_2 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + + # taosdemo force data dropping disk + buildPath = self.getBuildPath() + if (buildPath == ""): + tdLog.exit("taosd not found!") + else: + tdLog.info("taosd found in %s" % buildPath) + binPath = buildPath+ "/build/bin/" + os.system("%staosdemo -N -d taosdemo -t 100 -n 100 -l 1000 -y" % binPath) + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_2 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.error('''insert into table_2 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + + tdSql.error('''insert into table_2 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + + tdLog.info("========== 4096 regular_table ==========") + sql = '''insert into regular_table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,None) + tdSql.checkData(0,3801,None) + tdSql.checkData(0,4091,None) + tdSql.checkData(0,4095,None) + + tdLog.info("========== 4096 stable ==========") + sql = '''insert into table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query("select * from stable_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,None) + tdSql.checkData(0,3801,None) + tdSql.checkData(0,4091,None) + tdSql.checkData(0,4093,None) + tdSql.query("select * from stable_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,None) + tdSql.checkData(0,3801,None) + tdSql.checkData(0,4091,None) + tdSql.checkData(0,4093,None) + + tdLog.info("========== test1.3 : insert data , tdDnodes restart force data dropping disk , check data==========") + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_3 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_3 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== 4096 regular_table ==========") + sql = "create table regular_table_4096_3 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4094): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += "col4095 binary(22))" + tdLog.info(len(sql)) + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into regular_table_4096_3 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4094): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from regular_table_4096_3 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = "create stable stable_4096_3 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4092): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += " col4093 binary(22)) " + sql += " tags (loc nchar(20),tag_1 int) " + tdLog.info(len(sql)) + tdSql.execute(sql) + + sql = " create table table_4096_3 using stable_4096_3 tags ('table_4096_3',1); " + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into table_4096_3 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4092): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from table_4096_3 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query('''select * from stable_4096_3 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + # tdDnodes restart force data dropping disk + tdDnodes.stop(1) + tdDnodes.start(1) + + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_3 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.error('''insert into regular_table_3 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + + tdSql.error('''insert into regular_table_3 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_3 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.error('''insert into table_3 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + + tdSql.error('''insert into table_3 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + + + tdLog.info("========== 4096 regular_table ==========") + sql = '''insert into regular_table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,None) + tdSql.checkData(0,3801,None) + tdSql.checkData(0,4091,None) + tdSql.checkData(0,4095,None) + + tdLog.info("========== 4096 stable ==========") + sql = '''insert into table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query("select * from stable_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,None) + tdSql.checkData(0,3801,None) + tdSql.checkData(0,4091,None) + tdSql.checkData(0,4093,None) + tdSql.query("select * from stable_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,None) + tdSql.checkData(0,3801,None) + tdSql.checkData(0,4091,None) + tdSql.checkData(0,4093,None) + + endTime = time.time() + print("total time %ds" % (endTime - startTime)) + + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) \ No newline at end of file From ad2a3150fe9732764cda4e0ddb07b4a489caf335 Mon Sep 17 00:00:00 2001 From: happyguoxy Date: Tue, 3 Aug 2021 19:05:09 +0800 Subject: [PATCH 47/64] [TD-5460]:test database update=2 --- tests/pytest/import_merge/import_update_2.py | 2273 ++++++++++++++++++ 1 file changed, 2273 insertions(+) create mode 100644 tests/pytest/import_merge/import_update_2.py diff --git a/tests/pytest/import_merge/import_update_2.py b/tests/pytest/import_merge/import_update_2.py new file mode 100644 index 0000000000..ff2f8a5e5c --- /dev/null +++ b/tests/pytest/import_merge/import_update_2.py @@ -0,0 +1,2273 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import sys +import taos +from util.log import tdLog +from util.cases import tdCases +from util.sql import tdSql +from util.dnodes import * +import random +import time + + +class TDTestCase: + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor(), logSql) + + self.ts = 1600000000000 + self.num = 50 + self.num4096 = 5 + + def getBuildPath(self): + selfPath = os.path.dirname(os.path.realpath(__file__)) + + if ("community" in selfPath): + projPath = selfPath[:selfPath.find("community")] + else: + projPath = selfPath[:selfPath.find("tests")] + + for root, dirs, files in os.walk(projPath): + if ("taosd" in files): + rootRealPath = os.path.dirname(os.path.realpath(root)) + if ("packaging" not in rootRealPath): + buildPath = root[:len(root)-len("/build/bin")] + break + return buildPath + + def run(self): + tdSql.prepare() + # test case for https://jira.taosdata.com:18080/browse/TD-5062 + + startTime = time.time() + + tdSql.execute('''drop database if exists test_updata_2 ;''') + # update 0 不更新 ; update 1 覆盖更新 ;update 2 合并更新 + tdLog.info("========== test database updata = 2 ==========") + tdSql.execute('''create database test_updata_2 update 2 minrows 10 maxrows 200 ;''') + tdSql.execute('''use test_updata_2;''') + tdSql.execute('''create stable stable_1 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) + tags(loc nchar(20) , t_int int);''') + tdSql.execute('''create table table_1 using stable_1 tags('table_1' , '1' )''') + tdSql.execute('''create table table_2 using stable_1 tags('table_2' , '2' )''') + tdSql.execute('''create table table_3 using stable_1 tags('table_3' , '3' )''') + + #regular table + tdSql.execute('''create table regular_table_1 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) ;''') + tdSql.execute('''create table regular_table_2 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) ;''') + tdSql.execute('''create table regular_table_3 + (ts timestamp , q_int int , q_bigint bigint , q_smallint smallint , q_tinyint tinyint, + q_bool bool , q_binary binary(10) , q_nchar nchar(10) , q_float float , q_double double , q_ts timestamp) ;''') + + + tdLog.info("========== test1.1 : insert data , check data==========") + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_1 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_1 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== 4096 regular_table ==========") + sql = "create table regular_table_4096_1 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4094): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += "col4095 binary(22))" + tdLog.info(len(sql)) + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into regular_table_4096_1 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4094): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from regular_table_4096_1 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = "create stable stable_4096_1 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4092): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += " col4093 binary(22)) " + sql += " tags (loc nchar(20),tag_1 int) " + tdLog.info(len(sql)) + tdSql.execute(sql) + + sql = " create table table_4096_1 using stable_4096_1 tags ('table_4096_1',1); " + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into table_4096_1 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4092): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from table_4096_1 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query('''select * from stable_4096_1 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + # minrows 10 maxrows 200 + for i in range(self.num): + tdSql.execute('''insert into regular_table_1 values(%d, %d, %d, %d, %d, 0, 'binary.%s', 'nchar.%s', %f, %f, %d)''' + % (self.ts -100 + i, i, i, i, i, i, i, i, i, self.ts -100 + i)) + tdSql.execute('''insert into regular_table_1 values(%d, %d, %d, %d, %d, false, 'binary%s', 'nchar%s', %f, %f, %d)''' + % (self.ts + i, random.randint(-2147483647, 2147483647), + random.randint(-9223372036854775807, 9223372036854775807), random.randint(-32767, 32767), + random.randint(-127, 127), random.randint(-100, 100), random.randint(-10000, 10000), + random.uniform(-100000,100000), random.uniform(-1000000000,1000000000), self.ts + i)) + + tdSql.execute('''insert into table_1 values(%d, %d, %d, %d, %d, 0, 'binary.%s', 'nchar.%s', %f, %f, %d)''' + % (self.ts -100 + i, i, i, i, i, i, i, i, i, self.ts -100 + i)) + tdSql.execute('''insert into table_1 values(%d, %d, %d, %d, %d, false, 'binary%s', 'nchar%s', %f, %f, %d)''' + % (self.ts + i, random.randint(-2147483647, 2147483647), + random.randint(-9223372036854775807, 9223372036854775807), random.randint(-32767, 32767), + random.randint(-127, 127), random.randint(-100, 100), random.randint(-10000, 10000), + random.uniform(-100000,100000), random.uniform(-1000000000,1000000000), self.ts + i)) + + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_1 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + tdSql.execute('''insert into regular_table_1 values( %d , 1, 1, 1, 1, 1, 'binary+1', 'nchar+1', 1.000000, 1.000000, 1600000001000);''' %(self.ts + 200)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,1) + tdSql.checkData(0,2,1) + tdSql.checkData(0,3,1) + tdSql.checkData(0,4,1) + tdSql.checkData(0,5,'True') + tdSql.checkData(0,6,'binary+1') + tdSql.checkData(0,7,'nchar+1') + tdSql.checkData(0,8,1) + tdSql.checkData(0,9,1) + tdSql.checkData(0,10,'2020-09-13 20:26:41.000') + + tdSql.error('''insert into regular_table_1 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.error('''insert into regular_table_1 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into regular_table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + tdSql.execute('''insert into regular_table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from regular_table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_1 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_1 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.error('''insert into table_1 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.error('''insert into table_1 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into table_1 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + tdSql.execute('''insert into table_1 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdLog.info("========== 4096 regular_table ==========") + sql = '''insert into regular_table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + sql = '''insert into regular_table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 2 , 502 , 102 , 1502 , 2002 , 0 , 3002 , '3502' , '3802' ,'2020-09-13 20:26:44.092','1600000002000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,2) + tdSql.checkData(0,501,502) + tdSql.checkData(0,1001,102) + tdSql.checkData(0,1501,1502) + tdSql.checkData(0,2001,2002) + tdSql.checkData(0,2501,'False') + tdSql.checkData(0,3001,3002) + tdSql.checkData(0,3501,'3502') + tdSql.checkData(0,3801,'3802') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.092') + tdSql.checkData(0,4095,'1600000002000') + + tdLog.info("========== 4096 stable ==========") + sql = '''insert into table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query("select * from stable_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_1 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + sql = '''insert into table_4096_1 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 2 , 502 , 102 , 1502 , 2002 , 0 , 3002 , '3502' , '3802' ,'2020-09-13 20:26:44.092','1600000002000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,2) + tdSql.checkData(0,501,502) + tdSql.checkData(0,1001,102) + tdSql.checkData(0,1501,1502) + tdSql.checkData(0,2001,2002) + tdSql.checkData(0,2501,'False') + tdSql.checkData(0,3001,3002) + tdSql.checkData(0,3501,'3502') + tdSql.checkData(0,3801,'3802') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.092') + tdSql.checkData(0,4093,'1600000002000') + tdSql.query("select * from stable_4096_1 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,2) + tdSql.checkData(0,501,502) + tdSql.checkData(0,1001,102) + tdSql.checkData(0,1501,1502) + tdSql.checkData(0,2001,2002) + tdSql.checkData(0,2501,'False') + tdSql.checkData(0,3001,3002) + tdSql.checkData(0,3501,'3502') + tdSql.checkData(0,3801,'3802') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.092') + tdSql.checkData(0,4093,'1600000002000') + + + tdLog.info("========== test1.2 : insert data , taosdemo force data dropping disk , check data==========") + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_2 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from regular_table_2 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_2 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== 4096 regular_table ==========") + sql = "create table regular_table_4096_2 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4094): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += "col4095 binary(22))" + tdLog.info(len(sql)) + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into regular_table_4096_2 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4094): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from regular_table_4096_2 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = "create stable stable_4096_2 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4092): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += " col4093 binary(22)) " + sql += " tags (loc nchar(20),tag_1 int) " + tdLog.info(len(sql)) + tdSql.execute(sql) + + sql = " create table table_4096_2 using stable_4096_2 tags ('table_4096_2',1); " + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into table_4096_2 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4092): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from table_4096_2 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query('''select * from stable_4096_2 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + + # taosdemo force data dropping disk + buildPath = self.getBuildPath() + if (buildPath == ""): + tdLog.exit("taosd not found!") + else: + tdLog.info("taosd found in %s" % buildPath) + binPath = buildPath+ "/build/bin/" + os.system("%staosdemo -N -d taosdemo -t 100 -n 100 -l 1000 -y" % binPath) + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_2 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_2 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + + tdSql.error('''insert into table_2 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + + tdSql.error('''insert into table_2 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into table_2 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_2 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + tdSql.execute('''insert into table_2 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_1 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_2' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + + tdLog.info("========== 4096 regular_table ==========") + sql = '''insert into regular_table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + sql = '''insert into regular_table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 2 , 502 , 102 , 1502 , 2002 , 0 , 3002 , '3502' , '3802' ,'2020-09-13 20:26:44.092','1600000002000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,2) + tdSql.checkData(0,501,502) + tdSql.checkData(0,1001,102) + tdSql.checkData(0,1501,1502) + tdSql.checkData(0,2001,2002) + tdSql.checkData(0,2501,'False') + tdSql.checkData(0,3001,3002) + tdSql.checkData(0,3501,'3502') + tdSql.checkData(0,3801,'3802') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.092') + tdSql.checkData(0,4095,'1600000002000') + + + tdLog.info("========== 4096 stable ==========") + sql = '''insert into table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query("select * from stable_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_2 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + sql = '''insert into table_4096_2 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 2 , 502 , 102 , 1502 , 2002 , 0 , 3002 , '3502' , '3802' ,'2020-09-13 20:26:44.092','1600000002000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,2) + tdSql.checkData(0,501,502) + tdSql.checkData(0,1001,102) + tdSql.checkData(0,1501,1502) + tdSql.checkData(0,2001,2002) + tdSql.checkData(0,2501,'False') + tdSql.checkData(0,3001,3002) + tdSql.checkData(0,3501,'3502') + tdSql.checkData(0,3801,'3802') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.092') + tdSql.checkData(0,4093,'1600000002000') + tdSql.query("select * from stable_4096_2 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,2) + tdSql.checkData(0,501,502) + tdSql.checkData(0,1001,102) + tdSql.checkData(0,1501,1502) + tdSql.checkData(0,2001,2002) + tdSql.checkData(0,2501,'False') + tdSql.checkData(0,3001,3002) + tdSql.checkData(0,3501,'3502') + tdSql.checkData(0,3801,'3802') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.092') + tdSql.checkData(0,4093,'1600000002000') + + + tdLog.info("========== test1.3 : insert data , tdDnodes restart force data dropping disk , check data==========") + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_3 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_3 values( %d , 0, 0, 0, 0, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,None) + tdSql.checkData(0,2,None) + tdSql.checkData(0,3,None) + tdSql.checkData(0,4,None) + tdSql.checkData(0,5,None) + tdSql.checkData(0,6,None) + tdSql.checkData(0,7,None) + tdSql.checkData(0,8,None) + tdSql.checkData(0,9,None) + tdSql.checkData(0,10,None) + + + tdLog.info("========== 4096 regular_table ==========") + sql = "create table regular_table_4096_3 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4094): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += "col4095 binary(22))" + tdLog.info(len(sql)) + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into regular_table_4096_3 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4094): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from regular_table_4096_3 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + tdLog.info("========== 4096 stable ==========") + sql = "create stable stable_4096_3 (ts timestamp, " + for i in range(500): + sql += "int_%d int, " % (i + 1) + for i in range(500,1000): + sql += "smallint_%d smallint, " % (i + 1) + for i in range(1000,1500): + sql += "tinyint_%d tinyint, " % (i + 1) + for i in range(1500,2000): + sql += "double_%d double, " % (i + 1) + for i in range(2000,2500): + sql += "float_%d float, " % (i + 1) + for i in range(2500,3000): + sql += "bool_%d bool, " % (i + 1) + for i in range(3000,3500): + sql += "bigint_%d bigint, " % (i + 1) + for i in range(3500,3800): + sql += "nchar_%d nchar(4), " % (i + 1) + for i in range(3800,4090): + sql += "binary_%d binary(10), " % (i + 1) + for i in range(4090,4092): + sql += "timestamp_%d timestamp, " % (i + 1) + sql += " col4093 binary(22)) " + sql += " tags (loc nchar(20),tag_1 int) " + tdLog.info(len(sql)) + tdSql.execute(sql) + + sql = " create table table_4096_3 using stable_4096_3 tags ('table_4096_3',1); " + tdSql.execute(sql) + + for i in range(self.num4096): + sql = "insert into table_4096_3 values(%d, " + for j in range(4090): + str = "'%s', " % 'NULL' + sql += str + for j in range(4090,4092): + str = "%s, " % (self.ts + j) + sql += str + sql += "'%s')" % (self.ts + i) + tdSql.execute(sql % (self.ts + i)) + tdSql.query('''select * from table_4096_3 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4094) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query('''select * from stable_4096_3 where ts = %d ;''' %(self.ts)) + tdSql.checkCols(4096) + tdSql.checkData(0,1,None) + tdSql.checkData(0,501,None) + tdSql.checkData(0,1001,None) + tdSql.checkData(0,1501,None) + tdSql.checkData(0,2001,None) + tdSql.checkData(0,2501,None) + tdSql.checkData(0,3001,None) + tdSql.checkData(0,3501,'NULL') + tdSql.checkData(0,3801,'NULL') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-10 20:26:44.090','1500000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + # tdDnodes restart force data dropping disk + tdDnodes.stop(1) + tdDnodes.start(1) + + tdLog.info("========== regular_table ==========") + tdSql.execute('''insert into regular_table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into regular_table_3 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + tdSql.execute('''insert into regular_table_3 values( %d , 1, 1, 1, 1, 1, 'binary+1', 'nchar+1', 1.000000, 1.000000, 1600000001000);''' %(self.ts + 200)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,1) + tdSql.checkData(0,2,1) + tdSql.checkData(0,3,1) + tdSql.checkData(0,4,1) + tdSql.checkData(0,5,'True') + tdSql.checkData(0,6,'binary+1') + tdSql.checkData(0,7,'nchar+1') + tdSql.checkData(0,8,1) + tdSql.checkData(0,9,1) + tdSql.checkData(0,10,'2020-09-13 20:26:41.000') + + tdSql.error('''insert into regular_table_3 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + + tdSql.error('''insert into regular_table_3 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into regular_table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + tdSql.execute('''insert into regular_table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from regular_table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdLog.info("========== stable ==========") + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts - 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-0') + tdSql.checkData(0,7,'nchar-0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_3 values( %d , 0, 0, 0, 0, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.execute('''insert into table_3 values( %d , NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);''' %(self.ts + 200)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 200) + tdSql.query(sql) + tdSql.checkData(0,1,0) + tdSql.checkData(0,2,0) + tdSql.checkData(0,3,0) + tdSql.checkData(0,4,0) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+0') + tdSql.checkData(0,7,'nchar+0') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + tdSql.error('''insert into table_3 values( %d , -2147483648, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775808, -32767, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32768, -127, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -128, 0, 'binary-0', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0123', 'nchar-0', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + tdSql.error('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-0', 'nchar-01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + + tdSql.execute('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts - 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts - 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + + tdSql.error('''insert into table_3 values( %d , 2147483648, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775808, 32767, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32768, 127, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 128, 0, 'binary+0', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0123', 'nchar+0', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + tdSql.error('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+0', 'nchar+01234', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + + tdSql.execute('''insert into table_3 values( %d , 2147483647, 9223372036854775807, 32767, 127, 0, 'binary+012', 'nchar+0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,2147483647) + tdSql.checkData(0,2,9223372036854775807) + tdSql.checkData(0,3,32767) + tdSql.checkData(0,4,127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary+012') + tdSql.checkData(0,7,'nchar+0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:44.090') + tdSql.execute('''insert into table_3 values( %d , -2147483647, -9223372036854775807, -32767, -127, 0, 'binary-012', 'nchar-0123', 0.000000, 0.000000, 1600000000000);''' %(self.ts + 500)) + sql = '''select * from table_3 where ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + sql = '''select * from stable_1 where loc = 'table_3' and ts = %d ;''' %(self.ts + 500) + tdSql.query(sql) + tdSql.checkData(0,1,-2147483647) + tdSql.checkData(0,2,-9223372036854775807) + tdSql.checkData(0,3,-32767) + tdSql.checkData(0,4,-127) + tdSql.checkData(0,5,'False') + tdSql.checkData(0,6,'binary-012') + tdSql.checkData(0,7,'nchar-0123') + tdSql.checkData(0,8,0) + tdSql.checkData(0,9,0) + tdSql.checkData(0,10,'2020-09-13 20:26:40.000') + + + + tdLog.info("========== 4096 regular_table ==========") + sql = '''insert into regular_table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4095,'1600000000000') + + sql = '''insert into regular_table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4095,'1500000000000') + + sql = '''insert into regular_table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4095 ) + values('2020-09-13 20:26:40.000' , 2 , 502 , 102 , 1502 , 2002 , 0 , 3002 , '3502' , '3802' ,'2020-09-13 20:26:44.092','1600000002000');''' + tdSql.execute(sql) + tdSql.query("select * from regular_table_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,2) + tdSql.checkData(0,501,502) + tdSql.checkData(0,1001,102) + tdSql.checkData(0,1501,1502) + tdSql.checkData(0,2001,2002) + tdSql.checkData(0,2501,'False') + tdSql.checkData(0,3001,3002) + tdSql.checkData(0,3501,'3502') + tdSql.checkData(0,3801,'3802') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.092') + tdSql.checkData(0,4095,'1600000002000') + + + tdLog.info("========== 4096 stable ==========") + sql = '''insert into table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 1 , 501 , 101 , 1501 , 2001 , 1 , 3001 , '3501' , '3801' ,'2020-09-13 20:26:44.090','1600000000000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + tdSql.query("select * from stable_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.090') + tdSql.checkData(0,4093,'1600000000000') + + sql = '''insert into table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-10 20:26:40.000' , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL);''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + tdSql.query("select * from stable_4096_3 where ts ='2020-09-10 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,1) + tdSql.checkData(0,501,501) + tdSql.checkData(0,1001,101) + tdSql.checkData(0,1501,1501) + tdSql.checkData(0,2001,2001) + tdSql.checkData(0,2501,'True') + tdSql.checkData(0,3001,3001) + tdSql.checkData(0,3501,'3501') + tdSql.checkData(0,3801,'3801') + tdSql.checkData(0,4091,'2020-09-10 20:26:44.090') + tdSql.checkData(0,4093,'1500000000000') + + sql = '''insert into table_4096_3 (ts , int_1,smallint_501 , tinyint_1001 , double_1501 , float_2001 , bool_2501 , + bigint_3001 , nchar_3501 , binary_3801 , timestamp_4091 , col4093 ) + values('2020-09-13 20:26:40.000' , 2 , 502 , 102 , 1502 , 2002 , 0 , 3002 , '3502' , '3802' ,'2020-09-13 20:26:44.092','1600000002000');''' + tdSql.execute(sql) + tdSql.query("select * from table_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4094) + tdSql.checkData(0,1,2) + tdSql.checkData(0,501,502) + tdSql.checkData(0,1001,102) + tdSql.checkData(0,1501,1502) + tdSql.checkData(0,2001,2002) + tdSql.checkData(0,2501,'False') + tdSql.checkData(0,3001,3002) + tdSql.checkData(0,3501,'3502') + tdSql.checkData(0,3801,'3802') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.092') + tdSql.checkData(0,4093,'1600000002000') + tdSql.query("select * from stable_4096_3 where ts ='2020-09-13 20:26:40.000';") + tdSql.checkCols(4096) + tdSql.checkData(0,1,2) + tdSql.checkData(0,501,502) + tdSql.checkData(0,1001,102) + tdSql.checkData(0,1501,1502) + tdSql.checkData(0,2001,2002) + tdSql.checkData(0,2501,'False') + tdSql.checkData(0,3001,3002) + tdSql.checkData(0,3501,'3502') + tdSql.checkData(0,3801,'3802') + tdSql.checkData(0,4091,'2020-09-13 20:26:44.092') + tdSql.checkData(0,4093,'1600000002000') + + + endTime = time.time() + print("total time %ds" % (endTime - startTime)) + + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) \ No newline at end of file From db6c0da0f33ccc4d8e0b5b386f4b302e13487694 Mon Sep 17 00:00:00 2001 From: happyguoxy Date: Tue, 3 Aug 2021 19:05:36 +0800 Subject: [PATCH 48/64] [TD-5460]:test database update --- tests/pytest/fulltest.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/pytest/fulltest.sh b/tests/pytest/fulltest.sh index b86e96d0bb..ddb223ca7a 100755 --- a/tests/pytest/fulltest.sh +++ b/tests/pytest/fulltest.sh @@ -148,6 +148,9 @@ python3 ./test.py -f import_merge/importTPORestart.py python3 ./test.py -f import_merge/importTRestart.py python3 ./test.py -f import_merge/importInsertThenImport.py python3 ./test.py -f import_merge/importCSV.py +python3 ./test.py -f import_merge/import_update_0.py +python3 ./test.py -f import_merge/import_update_1.py +python3 ./test.py -f import_merge/import_update_2.py #======================p1-end=============== #======================p2-start=============== # tools From 93245c12f9327ff2481c974e05adbf54dc22c7ea Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Tue, 3 Aug 2021 20:01:39 +0800 Subject: [PATCH 49/64] [TD-4199] enhance performance --- src/client/inc/tscUtil.h | 2 +- src/client/src/tscSQLParser.c | 2 +- src/client/src/tscServer.c | 2 +- src/client/src/tscUtil.c | 17 ++++++++++++----- src/util/src/hash.c | 2 +- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/client/inc/tscUtil.h b/src/client/inc/tscUtil.h index a7c2862f51..577ce2a0fd 100644 --- a/src/client/inc/tscUtil.h +++ b/src/client/inc/tscUtil.h @@ -340,7 +340,7 @@ STableMeta* createSuperTableMeta(STableMetaMsg* pChild); uint32_t tscGetTableMetaSize(STableMeta* pTableMeta); CChildTableMeta* tscCreateChildMeta(STableMeta* pTableMeta); uint32_t tscGetTableMetaMaxSize(); -int32_t tscCreateTableMetaFromSTableMeta(STableMeta* pChild, const char* name, void* buf); +int32_t tscCreateTableMetaFromSTableMeta(STableMeta** pChild, const char* name, size_t *tableMetaCapacity); STableMeta* tscTableMetaDup(STableMeta* pTableMeta); SVgroupsInfo* tscVgroupsInfoDup(SVgroupsInfo* pVgroupsInfo); diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 6f18ea3753..9022d84de1 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -8150,7 +8150,7 @@ int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo) { // avoid mem leak, may should update pTableMeta void* pVgroupIdList = NULL; if (pTableMeta->tableType == TSDB_CHILD_TABLE) { - code = tscCreateTableMetaFromSTableMeta(pTableMeta, name, pSql->pBuf); + code = tscCreateTableMetaFromSTableMeta((STableMeta **)(&pTableMeta), name, &tableMetaCapacity); // create the child table meta from super table failed, try load it from mnode if (code != TSDB_CODE_SUCCESS) { diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index d1cc0c1fa8..cd79049281 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -2857,7 +2857,7 @@ int32_t tscGetTableMetaImpl(SSqlObj* pSql, STableMetaInfo *pTableMetaInfo, bool if (pMeta && pMeta->id.uid > 0) { // in case of child table, here only get the if (pMeta->tableType == TSDB_CHILD_TABLE) { - int32_t code = tscCreateTableMetaFromSTableMeta(pTableMetaInfo->pTableMeta, name, pSql->pBuf); + int32_t code = tscCreateTableMetaFromSTableMeta(&pTableMetaInfo->pTableMeta, name, &pTableMetaInfo->tableMetaCapacity); if (code != TSDB_CODE_SUCCESS) { return getTableMetaFromMnode(pSql, pTableMetaInfo, autocreate); } diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index b42199ec91..cf5f0b2d12 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -4448,11 +4448,13 @@ CChildTableMeta* tscCreateChildMeta(STableMeta* pTableMeta) { return cMeta; } -int32_t tscCreateTableMetaFromSTableMeta(STableMeta* pChild, const char* name, void* buf) { - assert(pChild != NULL); +int32_t tscCreateTableMetaFromSTableMeta(STableMeta** ppChild, const char* name, size_t *tableMetaCapacity) { + assert(*ppChild != NULL); STableMeta* p = NULL; size_t sz = 0; + STableMeta* pChild = *ppChild; + taosHashGetCloneExt(tscTableMetaMap, pChild->sTableName, strnlen(pChild->sTableName, TSDB_TABLE_FNAME_LEN), NULL, (void **)&p, &sz); // tableMeta exists, build child table meta according to the super table meta @@ -4462,9 +4464,14 @@ int32_t tscCreateTableMetaFromSTableMeta(STableMeta* pChild, const char* name, v pChild->tversion = p->tversion; memcpy(&pChild->tableInfo, &p->tableInfo, sizeof(STableComInfo)); - int32_t total = pChild->tableInfo.numOfColumns + pChild->tableInfo.numOfTags; - - memcpy(pChild->schema, p->schema, sizeof(SSchema) *total); + int32_t totalBytes = (pChild->tableInfo.numOfColumns + pChild->tableInfo.numOfTags) * sizeof(SSchema); + int32_t tableMetaSize = sizeof(STableMeta) + totalBytes; + if (*tableMetaCapacity < tableMetaSize) { + pChild = realloc(pChild, tableMetaSize); + *tableMetaCapacity = (size_t)tableMetaSize; + } + memcpy(pChild->schema, p->schema, totalBytes); + *ppChild = pChild; tfree(p); return TSDB_CODE_SUCCESS; } else { // super table has been removed, current tableMeta is also expired. remove it here diff --git a/src/util/src/hash.c b/src/util/src/hash.c index d4e23c900f..6118aa7bef 100644 --- a/src/util/src/hash.c +++ b/src/util/src/hash.c @@ -18,7 +18,7 @@ #include "tulog.h" #include "taosdef.h" -#define EXT_SIZE 512 +#define EXT_SIZE 1024 #define HASH_NEED_RESIZE(_h) ((_h)->size >= (_h)->capacity * HASH_DEFAULT_LOAD_FACTOR) From ce52e4aa69ba534a6db91c0e579ea13db0f2a431 Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Tue, 3 Aug 2021 21:34:21 +0800 Subject: [PATCH 50/64] [TD-5712]: taosdump timestamp overflow. (#7119) * [TD-5712]: taosdump timestamp overflow. * fix few variables' name * fix stable loop mistake. * fix bug if thread number is 1 --- src/kit/taosdump/taosdump.c | 161 ++++++++++++++++++------------------ 1 file changed, 81 insertions(+), 80 deletions(-) diff --git a/src/kit/taosdump/taosdump.c b/src/kit/taosdump/taosdump.c index dc36dbf671..e3f3880f0c 100644 --- a/src/kit/taosdump/taosdump.c +++ b/src/kit/taosdump/taosdump.c @@ -307,7 +307,7 @@ static void taosDumpCreateTableClause(STableDef *tableDes, int numOfCols, FILE *fp, char* dbName); static void taosDumpCreateMTableClause(STableDef *tableDes, char *metric, int numOfCols, FILE *fp, char* dbName); -static int32_t taosDumpTable(char *table, char *metric, +static int32_t taosDumpTable(char *tbName, char *metric, FILE *fp, TAOS* taosCon, char* dbName); static int taosDumpTableData(FILE *fp, char *tbName, TAOS* taosCon, char* dbName, @@ -340,7 +340,7 @@ struct arguments g_args = { false, // schemeonly true, // with_property false, // avro format - -INT64_MAX, // start_time + -INT64_MAX, // start_time INT64_MAX, // end_time "ms", // precision 1, // data_batch @@ -798,11 +798,11 @@ static int taosGetTableRecordInfo( tstrncpy(pTableRecordInfo->tableRecord.name, (char *)row[TSDB_SHOW_TABLES_NAME_INDEX], min(TSDB_TABLE_NAME_LEN, - fields[TSDB_SHOW_TABLES_NAME_INDEX].bytes) + 1); + fields[TSDB_SHOW_TABLES_NAME_INDEX].bytes + 1)); tstrncpy(pTableRecordInfo->tableRecord.metric, (char *)row[TSDB_SHOW_TABLES_METRIC_INDEX], min(TSDB_TABLE_NAME_LEN, - fields[TSDB_SHOW_TABLES_METRIC_INDEX].bytes) + 1); + fields[TSDB_SHOW_TABLES_METRIC_INDEX].bytes + 1)); break; } @@ -945,7 +945,7 @@ static int32_t taosSaveTableOfMetricToTempFile( int32_t numOfThread = *totalNumOfThread; int subFd = -1; - for (; numOfThread < maxThreads; numOfThread++) { + for (; numOfThread <= maxThreads; numOfThread++) { memset(tmpBuf, 0, MAX_FILE_NAME_LEN); sprintf(tmpBuf, ".tables.tmp.%d", numOfThread); subFd = open(tmpBuf, O_RDWR | O_CREAT | O_TRUNC, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH); @@ -1084,7 +1084,7 @@ _dump_db_point: } tstrncpy(g_dbInfos[count]->name, (char *)row[TSDB_SHOW_DB_NAME_INDEX], - min(TSDB_DB_NAME_LEN, fields[TSDB_SHOW_DB_NAME_INDEX].bytes) + 1); + min(TSDB_DB_NAME_LEN, fields[TSDB_SHOW_DB_NAME_INDEX].bytes + 1)); if (g_args.with_property) { g_dbInfos[count]->ntables = *((int32_t *)row[TSDB_SHOW_DB_NTABLES_INDEX]); g_dbInfos[count]->vgroups = *((int32_t *)row[TSDB_SHOW_DB_VGROUPS_INDEX]); @@ -1093,7 +1093,7 @@ _dump_db_point: g_dbInfos[count]->days = *((int16_t *)row[TSDB_SHOW_DB_DAYS_INDEX]); tstrncpy(g_dbInfos[count]->keeplist, (char *)row[TSDB_SHOW_DB_KEEP_INDEX], - min(32, fields[TSDB_SHOW_DB_KEEP_INDEX].bytes) + 1); + min(32, fields[TSDB_SHOW_DB_KEEP_INDEX].bytes + 1)); //g_dbInfos[count]->daysToKeep = *((int16_t *)row[TSDB_SHOW_DB_KEEP_INDEX]); //g_dbInfos[count]->daysToKeep1; //g_dbInfos[count]->daysToKeep2; @@ -1107,7 +1107,7 @@ _dump_db_point: g_dbInfos[count]->cachelast = (int8_t)(*((int8_t *)row[TSDB_SHOW_DB_CACHELAST_INDEX])); tstrncpy(g_dbInfos[count]->precision, (char *)row[TSDB_SHOW_DB_PRECISION_INDEX], - min(8, fields[TSDB_SHOW_DB_PRECISION_INDEX].bytes) + 1); + min(8, fields[TSDB_SHOW_DB_PRECISION_INDEX].bytes + 1)); //g_dbInfos[count]->precision = *((int8_t *)row[TSDB_SHOW_DB_PRECISION_INDEX]); g_dbInfos[count]->update = *((int8_t *)row[TSDB_SHOW_DB_UPDATE_INDEX]); } @@ -1237,7 +1237,7 @@ _exit_failure: static int taosGetTableDes( char* dbName, char *table, - STableDef *tableDes, TAOS* taosCon, bool isSuperTable) { + STableDef *stableDes, TAOS* taosCon, bool isSuperTable) { TAOS_ROW row = NULL; TAOS_RES* res = NULL; int count = 0; @@ -1256,18 +1256,18 @@ static int taosGetTableDes( TAOS_FIELD *fields = taos_fetch_fields(res); - tstrncpy(tableDes->name, table, TSDB_TABLE_NAME_LEN); + tstrncpy(stableDes->name, table, TSDB_TABLE_NAME_LEN); while ((row = taos_fetch_row(res)) != NULL) { - tstrncpy(tableDes->cols[count].field, + tstrncpy(stableDes->cols[count].field, (char *)row[TSDB_DESCRIBE_METRIC_FIELD_INDEX], min(TSDB_COL_NAME_LEN + 1, fields[TSDB_DESCRIBE_METRIC_FIELD_INDEX].bytes + 1)); - tstrncpy(tableDes->cols[count].type, + tstrncpy(stableDes->cols[count].type, (char *)row[TSDB_DESCRIBE_METRIC_TYPE_INDEX], min(16, fields[TSDB_DESCRIBE_METRIC_TYPE_INDEX].bytes + 1)); - tableDes->cols[count].length = + stableDes->cols[count].length = *((int *)row[TSDB_DESCRIBE_METRIC_LENGTH_INDEX]); - tstrncpy(tableDes->cols[count].note, + tstrncpy(stableDes->cols[count].note, (char *)row[TSDB_DESCRIBE_METRIC_NOTE_INDEX], min(COL_NOTE_LEN, fields[TSDB_DESCRIBE_METRIC_NOTE_INDEX].bytes + 1)); @@ -1284,11 +1284,11 @@ static int taosGetTableDes( // if chidl-table have tag, using select tagName from table to get tagValue for (int i = 0 ; i < count; i++) { - if (strcmp(tableDes->cols[i].note, "TAG") != 0) continue; + if (strcmp(stableDes->cols[i].note, "TAG") != 0) continue; sprintf(sqlstr, "select %s from %s.%s", - tableDes->cols[i].field, dbName, table); + stableDes->cols[i].field, dbName, table); res = taos_query(taosCon, sqlstr); code = taos_errno(res); @@ -1310,7 +1310,7 @@ static int taosGetTableDes( } if (row[0] == NULL) { - sprintf(tableDes->cols[i].note, "%s", "NULL"); + sprintf(stableDes->cols[i].note, "%s", "NULL"); taos_free_result(res); res = NULL; continue; @@ -1321,47 +1321,47 @@ static int taosGetTableDes( //int32_t* length = taos_fetch_lengths(tmpResult); switch (fields[0].type) { case TSDB_DATA_TYPE_BOOL: - sprintf(tableDes->cols[i].note, "%d", + sprintf(stableDes->cols[i].note, "%d", ((((int32_t)(*((char *)row[0]))) == 1) ? 1 : 0)); break; case TSDB_DATA_TYPE_TINYINT: - sprintf(tableDes->cols[i].note, "%d", *((int8_t *)row[0])); + sprintf(stableDes->cols[i].note, "%d", *((int8_t *)row[0])); break; case TSDB_DATA_TYPE_SMALLINT: - sprintf(tableDes->cols[i].note, "%d", *((int16_t *)row[0])); + sprintf(stableDes->cols[i].note, "%d", *((int16_t *)row[0])); break; case TSDB_DATA_TYPE_INT: - sprintf(tableDes->cols[i].note, "%d", *((int32_t *)row[0])); + sprintf(stableDes->cols[i].note, "%d", *((int32_t *)row[0])); break; case TSDB_DATA_TYPE_BIGINT: - sprintf(tableDes->cols[i].note, "%" PRId64 "", *((int64_t *)row[0])); + sprintf(stableDes->cols[i].note, "%" PRId64 "", *((int64_t *)row[0])); break; case TSDB_DATA_TYPE_FLOAT: - sprintf(tableDes->cols[i].note, "%f", GET_FLOAT_VAL(row[0])); + sprintf(stableDes->cols[i].note, "%f", GET_FLOAT_VAL(row[0])); break; case TSDB_DATA_TYPE_DOUBLE: - sprintf(tableDes->cols[i].note, "%f", GET_DOUBLE_VAL(row[0])); + sprintf(stableDes->cols[i].note, "%f", GET_DOUBLE_VAL(row[0])); break; case TSDB_DATA_TYPE_BINARY: { - memset(tableDes->cols[i].note, 0, sizeof(tableDes->cols[i].note)); - tableDes->cols[i].note[0] = '\''; + memset(stableDes->cols[i].note, 0, sizeof(stableDes->cols[i].note)); + stableDes->cols[i].note[0] = '\''; char tbuf[COL_NOTE_LEN]; converStringToReadable((char *)row[0], length[0], tbuf, COL_NOTE_LEN); - char* pstr = stpcpy(&(tableDes->cols[i].note[1]), tbuf); + char* pstr = stpcpy(&(stableDes->cols[i].note[1]), tbuf); *(pstr++) = '\''; break; } case TSDB_DATA_TYPE_NCHAR: { - memset(tableDes->cols[i].note, 0, sizeof(tableDes->cols[i].note)); + memset(stableDes->cols[i].note, 0, sizeof(stableDes->cols[i].note)); char tbuf[COL_NOTE_LEN-2]; // need reserve 2 bytes for ' ' convertNCharToReadable((char *)row[0], length[0], tbuf, COL_NOTE_LEN); - sprintf(tableDes->cols[i].note, "\'%s\'", tbuf); + sprintf(stableDes->cols[i].note, "\'%s\'", tbuf); break; } case TSDB_DATA_TYPE_TIMESTAMP: - sprintf(tableDes->cols[i].note, "%" PRId64 "", *(int64_t *)row[0]); + sprintf(stableDes->cols[i].note, "%" PRId64 "", *(int64_t *)row[0]); #if 0 if (!g_args.mysqlFlag) { sprintf(tableDes->cols[i].note, "%" PRId64 "", *(int64_t *)row[0]); @@ -1386,7 +1386,7 @@ static int taosGetTableDes( return count; } -static int convertSchemaToAvroSchema(STableDef *tableDes, char **avroSchema) +static int convertSchemaToAvroSchema(STableDef *stableDes, char **avroSchema) { errorPrint("%s() LN%d TODO: covert table schema to avro schema\n", __func__, __LINE__); @@ -1394,7 +1394,7 @@ static int convertSchemaToAvroSchema(STableDef *tableDes, char **avroSchema) } static int32_t taosDumpTable( - char *table, char *metric, + char *tbName, char *metric, FILE *fp, TAOS* taosCon, char* dbName) { int count = 0; @@ -1415,7 +1415,7 @@ static int32_t taosDumpTable( memset(tableDes, 0, sizeof(STableDef) + sizeof(SColDes) * TSDB_MAX_COLUMNS); */ - count = taosGetTableDes(dbName, table, tableDes, taosCon, false); + count = taosGetTableDes(dbName, tbName, tableDes, taosCon, false); if (count < 0) { free(tableDes); @@ -1426,7 +1426,7 @@ static int32_t taosDumpTable( taosDumpCreateMTableClause(tableDes, metric, count, fp, dbName); } else { // dump table definition - count = taosGetTableDes(dbName, table, tableDes, taosCon, false); + count = taosGetTableDes(dbName, tbName, tableDes, taosCon, false); if (count < 0) { free(tableDes); @@ -1446,7 +1446,7 @@ static int32_t taosDumpTable( int32_t ret = 0; if (!g_args.schemaonly) { - ret = taosDumpTableData(fp, table, taosCon, dbName, + ret = taosDumpTableData(fp, tbName, taosCon, dbName, jsonAvroSchema); } @@ -1648,26 +1648,27 @@ static void taosStartDumpOutWorkThreads(int32_t numOfThread, char *dbName) static int32_t taosDumpStable(char *table, FILE *fp, TAOS* taosCon, char* dbName) { - uint64_t sizeOfTableDes = (uint64_t)(sizeof(STableDef) + sizeof(SColDes) * TSDB_MAX_COLUMNS); - STableDef *tableDes = (STableDef *)calloc(1, sizeOfTableDes); - if (NULL == tableDes) { + uint64_t sizeOfTableDes = + (uint64_t)(sizeof(STableDef) + sizeof(SColDes) * TSDB_MAX_COLUMNS); + STableDef *stableDes = (STableDef *)calloc(1, sizeOfTableDes); + if (NULL == stableDes) { errorPrint("%s() LN%d, failed to allocate %"PRIu64" memory\n", __func__, __LINE__, sizeOfTableDes); exit(-1); } - int count = taosGetTableDes(dbName, table, tableDes, taosCon, true); + int count = taosGetTableDes(dbName, table, stableDes, taosCon, true); if (count < 0) { - free(tableDes); + free(stableDes); errorPrint("%s() LN%d, failed to get stable[%s] schema\n", __func__, __LINE__, table); exit(-1); } - taosDumpCreateTableClause(tableDes, count, fp, dbName); + taosDumpCreateTableClause(stableDes, count, fp, dbName); - free(tableDes); + free(stableDes); return 0; } @@ -1707,7 +1708,7 @@ static int32_t taosDumpCreateSuperTableClause(TAOS* taosCon, char* dbName, FILE memset(&tableRecord, 0, sizeof(STableRecord)); tstrncpy(tableRecord.name, (char *)row[TSDB_SHOW_TABLES_NAME_INDEX], min(TSDB_TABLE_NAME_LEN, - fields[TSDB_SHOW_TABLES_NAME_INDEX].bytes) + 1); + fields[TSDB_SHOW_TABLES_NAME_INDEX].bytes + 1)); taosWrite(fd, &tableRecord, sizeof(STableRecord)); } @@ -1782,10 +1783,10 @@ static int taosDumpDb(SDbInfo *dbInfo, FILE *fp, TAOS *taosCon) { memset(&tableRecord, 0, sizeof(STableRecord)); tstrncpy(tableRecord.name, (char *)row[TSDB_SHOW_TABLES_NAME_INDEX], min(TSDB_TABLE_NAME_LEN, - fields[TSDB_SHOW_TABLES_NAME_INDEX].bytes) + 1); + fields[TSDB_SHOW_TABLES_NAME_INDEX].bytes + 1)); tstrncpy(tableRecord.metric, (char *)row[TSDB_SHOW_TABLES_METRIC_INDEX], min(TSDB_TABLE_NAME_LEN, - fields[TSDB_SHOW_TABLES_METRIC_INDEX].bytes) + 1); + fields[TSDB_SHOW_TABLES_METRIC_INDEX].bytes + 1)); taosWrite(fd, &tableRecord, sizeof(STableRecord)); @@ -1865,52 +1866,52 @@ static int taosDumpDb(SDbInfo *dbInfo, FILE *fp, TAOS *taosCon) { static void taosDumpCreateTableClause(STableDef *tableDes, int numOfCols, FILE *fp, char* dbName) { - int counter = 0; - int count_temp = 0; - char sqlstr[COMMAND_SIZE]; + int counter = 0; + int count_temp = 0; + char sqlstr[COMMAND_SIZE]; - char* pstr = sqlstr; + char* pstr = sqlstr; - pstr += sprintf(sqlstr, "CREATE TABLE IF NOT EXISTS %s.%s", - dbName, tableDes->name); + pstr += sprintf(sqlstr, "CREATE TABLE IF NOT EXISTS %s.%s", + dbName, tableDes->name); - for (; counter < numOfCols; counter++) { - if (tableDes->cols[counter].note[0] != '\0') break; + for (; counter < numOfCols; counter++) { + if (tableDes->cols[counter].note[0] != '\0') break; - if (counter == 0) { - pstr += sprintf(pstr, " (%s %s", - tableDes->cols[counter].field, tableDes->cols[counter].type); - } else { - pstr += sprintf(pstr, ", %s %s", - tableDes->cols[counter].field, tableDes->cols[counter].type); + if (counter == 0) { + pstr += sprintf(pstr, " (%s %s", + tableDes->cols[counter].field, tableDes->cols[counter].type); + } else { + pstr += sprintf(pstr, ", %s %s", + tableDes->cols[counter].field, tableDes->cols[counter].type); + } + + if (strcasecmp(tableDes->cols[counter].type, "binary") == 0 || + strcasecmp(tableDes->cols[counter].type, "nchar") == 0) { + pstr += sprintf(pstr, "(%d)", tableDes->cols[counter].length); + } } - if (strcasecmp(tableDes->cols[counter].type, "binary") == 0 || - strcasecmp(tableDes->cols[counter].type, "nchar") == 0) { - pstr += sprintf(pstr, "(%d)", tableDes->cols[counter].length); - } - } + count_temp = counter; - count_temp = counter; + for (; counter < numOfCols; counter++) { + if (counter == count_temp) { + pstr += sprintf(pstr, ") TAGS (%s %s", + tableDes->cols[counter].field, tableDes->cols[counter].type); + } else { + pstr += sprintf(pstr, ", %s %s", + tableDes->cols[counter].field, tableDes->cols[counter].type); + } - for (; counter < numOfCols; counter++) { - if (counter == count_temp) { - pstr += sprintf(pstr, ") TAGS (%s %s", - tableDes->cols[counter].field, tableDes->cols[counter].type); - } else { - pstr += sprintf(pstr, ", %s %s", - tableDes->cols[counter].field, tableDes->cols[counter].type); + if (strcasecmp(tableDes->cols[counter].type, "binary") == 0 || + strcasecmp(tableDes->cols[counter].type, "nchar") == 0) { + pstr += sprintf(pstr, "(%d)", tableDes->cols[counter].length); + } } - if (strcasecmp(tableDes->cols[counter].type, "binary") == 0 || - strcasecmp(tableDes->cols[counter].type, "nchar") == 0) { - pstr += sprintf(pstr, "(%d)", tableDes->cols[counter].length); - } - } + pstr += sprintf(pstr, ");"); - pstr += sprintf(pstr, ");"); - - fprintf(fp, "%s\n\n", sqlstr); + fprintf(fp, "%s\n\n", sqlstr); } static void taosDumpCreateMTableClause(STableDef *tableDes, char *metric, From 72c26ef481e35494bfac24092d46be89d1e1ed1e Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Tue, 3 Aug 2021 22:03:59 +0800 Subject: [PATCH 51/64] [TD-5694]: refactor --- src/common/src/tdataformat.c | 53 ++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 077081bfb6..f50445e6e7 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -23,18 +23,20 @@ static void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, i int limit2, int tRows, bool forceSetNull); void tdAllocMemForCol(SDataCol *pCol, int maxPoints) { - if(pCol->pData == NULL) { - pCol->pData = malloc(maxPoints * pCol->bytes); - pCol->spaceSize = maxPoints * pCol->bytes; - if(pCol->pData == NULL) { + int spaceNeeded = pCol->bytes * maxPoints; + if(IS_VAR_DATA_TYPE(pCol->type)) { + spaceNeeded += sizeof(VarDataOffsetT) * maxPoints; + } + if(pCol->spaceSize < spaceNeeded) { + void* ptr = realloc(pCol->pData, spaceNeeded); + if(ptr == NULL) { uDebug("malloc failure, size:%" PRId64 " failed, reason:%s", (int64_t)pCol->spaceSize, strerror(errno)); - } - if(IS_VAR_DATA_TYPE(pCol->type)) { - pCol->dataOff = malloc(maxPoints * sizeof(VarDataOffsetT)); - if(pCol->dataOff == NULL) { - uDebug("malloc failure, size:%" PRId64 " failed, reason:%s", (int64_t)(maxPoints * sizeof(VarDataOffsetT)), - strerror(errno)); + } else { + pCol->pData = ptr; + pCol->spaceSize = spaceNeeded; + if(IS_VAR_DATA_TYPE(pCol->type)) { + pCol->dataOff = POINTER_SHIFT(ptr, pCol->bytes * maxPoints); } } } @@ -330,6 +332,12 @@ SDataCols *tdNewDataCols(int maxRowSize, int maxCols, int maxRows) { tdFreeDataCols(pCols); return NULL; } + int i; + for(i = 0; i < maxCols; i++) { + pCols->cols[i].spaceSize = 0; + pCols->cols[i].pData = NULL; + pCols->cols[i].dataOff = NULL; + } pCols->maxCols = maxCols; } @@ -343,23 +351,15 @@ SDataCols *tdNewDataCols(int maxRowSize, int maxCols, int maxRows) { int tdInitDataCols(SDataCols *pCols, STSchema *pSchema) { int i; int oldMaxCols = pCols->maxCols; - if(oldMaxCols > 0) { - for(i = 0; i < oldMaxCols; i++) { - if(i >= pSchema->numOfCols || - (pCols->cols[i].spaceSize < pSchema->columns[i].bytes * pCols->maxPoints)) { - tfree(pCols->cols[i].pData); - tfree(pCols->cols[i].dataOff); - } - } - } - if (schemaNCols(pSchema) > pCols->maxCols) { + if (schemaNCols(pSchema) > oldMaxCols) { pCols->maxCols = schemaNCols(pSchema); pCols->cols = (SDataCol *)realloc(pCols->cols, sizeof(SDataCol) * pCols->maxCols); + if (pCols->cols == NULL) return -1; for(i = oldMaxCols; i < pCols->maxCols; i++) { pCols->cols[i].pData = NULL; pCols->cols[i].dataOff = NULL; + pCols->cols[i].spaceSize = 0; } - if (pCols->cols == NULL) return -1; } if (schemaTLen(pSchema) > pCols->maxRowSize) { @@ -384,7 +384,6 @@ SDataCols *tdFreeDataCols(SDataCols *pCols) { for(i = 0; i < maxCols; i++) { SDataCol *pCol = &pCols->cols[i]; tfree(pCol->pData); - tfree(pCol->dataOff); } free(pCols->cols); pCols->cols = NULL; @@ -416,12 +415,14 @@ SDataCols *tdDupDataCols(SDataCols *pDataCols, bool keepData) { if (keepData) { pRet->cols[i].len = pDataCols->cols[i].len; if (pDataCols->cols[i].len > 0) { - pRet->cols[i].spaceSize = pDataCols->cols[i].spaceSize; - pRet->cols[i].pData = malloc(pDataCols->cols[i].bytes * pDataCols->maxPoints); + int spaceSize = pDataCols->cols[i].bytes * pDataCols->maxPoints; + pRet->cols[i].spaceSize = spaceSize; + pRet->cols[i].pData = malloc(spaceSize); memcpy(pRet->cols[i].pData, pDataCols->cols[i].pData, pDataCols->cols[i].len); if (IS_VAR_DATA_TYPE(pRet->cols[i].type)) { - pRet->cols[i].dataOff = malloc(sizeof(VarDataOffsetT) * pDataCols->maxPoints); - memcpy(pRet->cols[i].dataOff, pDataCols->cols[i].dataOff, sizeof(VarDataOffsetT) * pDataCols->maxPoints); + int dataOffSize = sizeof(VarDataOffsetT) * pDataCols->maxPoints; + pRet->cols[i].dataOff = malloc(dataOffSize); + memcpy(pRet->cols[i].dataOff, pDataCols->cols[i].dataOff, dataOffSize); } } } From 7dbf526124dd8a39e6d70edf4a52735c19ce5075 Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Tue, 3 Aug 2021 22:13:46 +0800 Subject: [PATCH 52/64] [TD-5694]: refactor --- src/common/src/tdataformat.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index f50445e6e7..0082c11e4b 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -335,6 +335,7 @@ SDataCols *tdNewDataCols(int maxRowSize, int maxCols, int maxRows) { int i; for(i = 0; i < maxCols; i++) { pCols->cols[i].spaceSize = 0; + pCols->cols[i].len = 0; pCols->cols[i].pData = NULL; pCols->cols[i].dataOff = NULL; } @@ -407,21 +408,13 @@ SDataCols *tdDupDataCols(SDataCols *pDataCols, bool keepData) { pRet->cols[i].bytes = pDataCols->cols[i].bytes; pRet->cols[i].offset = pDataCols->cols[i].offset; - pRet->cols[i].spaceSize = 0; - pRet->cols[i].len = 0; - pRet->cols[i].dataOff = NULL; - pRet->cols[i].pData = NULL; - if (keepData) { pRet->cols[i].len = pDataCols->cols[i].len; - if (pDataCols->cols[i].len > 0) { - int spaceSize = pDataCols->cols[i].bytes * pDataCols->maxPoints; - pRet->cols[i].spaceSize = spaceSize; - pRet->cols[i].pData = malloc(spaceSize); + if (pRet->cols[i].len > 0) { + tdAllocMemForCol(&pRet->cols[i], pRet->maxPoints); memcpy(pRet->cols[i].pData, pDataCols->cols[i].pData, pDataCols->cols[i].len); if (IS_VAR_DATA_TYPE(pRet->cols[i].type)) { int dataOffSize = sizeof(VarDataOffsetT) * pDataCols->maxPoints; - pRet->cols[i].dataOff = malloc(dataOffSize); memcpy(pRet->cols[i].dataOff, pDataCols->cols[i].dataOff, dataOffSize); } } From 3b775c190ff6091f33adaab67fd0391eb868633c Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Tue, 3 Aug 2021 22:52:46 +0800 Subject: [PATCH 53/64] [TD-5694]: fix memory alloc --- src/common/src/tdataformat.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 0082c11e4b..c3615e64fc 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -248,10 +248,9 @@ void dataColAppendVal(SDataCol *pCol, const void *value, int numOfRows, int maxP if (numOfRows > 0) { // Find the first not null value, fill all previouse values as NULL dataColSetNEleNull(pCol, numOfRows, maxPoints); - } else { - tdAllocMemForCol(pCol, maxPoints); } } + tdAllocMemForCol(pCol, maxPoints); if (IS_VAR_DATA_TYPE(pCol->type)) { // set offset From 7c3e84b7e1febb315d512ff8ef56c0cea323b777 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Tue, 3 Aug 2021 23:47:01 +0800 Subject: [PATCH 54/64] [TD-4199] enhance performance --- src/client/src/tscServer.c | 10 +++------- src/client/src/tscUtil.c | 10 ++++++---- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index cd79049281..8231c8b299 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -2844,15 +2844,11 @@ int32_t tscGetTableMetaImpl(SSqlObj* pSql, STableMetaInfo *pTableMetaInfo, bool tNameExtractFullName(&pTableMetaInfo->name, name); size_t len = strlen(name); + if (pTableMetaInfo->tableMetaCapacity != 0) { + memset(pTableMetaInfo->pTableMeta, 0, pTableMetaInfo->tableMetaCapacity); + } taosHashGetCloneExt(tscTableMetaMap, name, len, NULL, (void **)&(pTableMetaInfo->pTableMeta), &pTableMetaInfo->tableMetaCapacity); - // TODO resize the tableMeta - //assert(size < 80 * TSDB_MAX_COLUMNS); - //if (!pSql->pBuf) { - // if (NULL == (pSql->pBuf = tcalloc(1, 80 * TSDB_MAX_COLUMNS))) { - // return TSDB_CODE_TSC_OUT_OF_MEMORY; - // } - //} STableMeta* pMeta = pTableMetaInfo->pTableMeta; if (pMeta && pMeta->id.uid > 0) { // in case of child table, here only get the diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index cf5f0b2d12..8a2fafe3e3 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -4460,17 +4460,19 @@ int32_t tscCreateTableMetaFromSTableMeta(STableMeta** ppChild, const char* name, // tableMeta exists, build child table meta according to the super table meta // the uid need to be checked in addition to the general name of the super table. if (p && p->id.uid > 0 && pChild->suid == p->id.uid) { - pChild->sversion = p->sversion; - pChild->tversion = p->tversion; - memcpy(&pChild->tableInfo, &p->tableInfo, sizeof(STableComInfo)); - int32_t totalBytes = (pChild->tableInfo.numOfColumns + pChild->tableInfo.numOfTags) * sizeof(SSchema); + int32_t totalBytes = (p->tableInfo.numOfColumns + p->tableInfo.numOfTags) * sizeof(SSchema); int32_t tableMetaSize = sizeof(STableMeta) + totalBytes; if (*tableMetaCapacity < tableMetaSize) { pChild = realloc(pChild, tableMetaSize); *tableMetaCapacity = (size_t)tableMetaSize; } + + pChild->sversion = p->sversion; + pChild->tversion = p->tversion; + memcpy(&pChild->tableInfo, &p->tableInfo, sizeof(STableComInfo)); memcpy(pChild->schema, p->schema, totalBytes); + *ppChild = pChild; tfree(p); return TSDB_CODE_SUCCESS; From 2062b768db6286653c94803ea7cceb5a580e9980 Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Wed, 4 Aug 2021 00:01:13 +0800 Subject: [PATCH 55/64] [TD-5694]: fix memory alloc --- src/common/src/tdataformat.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index c3615e64fc..c96c916a01 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -267,6 +267,7 @@ void dataColAppendVal(SDataCol *pCol, const void *value, int numOfRows, int maxP } bool isNEleNull(SDataCol *pCol, int nEle) { + if(isAllRowsNull(pCol)) return true; for (int i = 0; i < nEle; i++) { if (!isNull(tdGetColDataOfRow(pCol, i), pCol->type)) return false; } @@ -360,6 +361,15 @@ int tdInitDataCols(SDataCols *pCols, STSchema *pSchema) { pCols->cols[i].dataOff = NULL; pCols->cols[i].spaceSize = 0; } + } else if(schemaNCols(pSchema) < oldMaxCols){ + //TODO: this handling should not exist, for alloc will handle it nicely + for(i = schemaNCols(pSchema); i < oldMaxCols; i++) { + tfree(pCols->cols[i].pData); + pCols->cols[i].spaceSize = 0; + } + pCols->maxCols = schemaNCols(pSchema); + pCols->cols = (SDataCol *)realloc(pCols->cols, sizeof(SDataCol) * pCols->maxCols); + if (pCols->cols == NULL) return -1; } if (schemaTLen(pSchema) > pCols->maxRowSize) { From 97bd6a9f9212abc5a4c45e1b5f4e66b0744033f9 Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Wed, 4 Aug 2021 00:18:10 +0800 Subject: [PATCH 56/64] [TD-5694]: fix memory alloc --- src/common/src/tdataformat.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index c96c916a01..16c96bb16f 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -371,6 +371,11 @@ int tdInitDataCols(SDataCols *pCols, STSchema *pSchema) { pCols->cols = (SDataCol *)realloc(pCols->cols, sizeof(SDataCol) * pCols->maxCols); if (pCols->cols == NULL) return -1; } + for(i = 0; i < pCols->maxCols; i++) { + tfree(pCols->cols[i].pData); + pCols->cols[i].dataOff = NULL; + pCols->cols[i].spaceSize = 0; + } if (schemaTLen(pSchema) > pCols->maxRowSize) { pCols->maxRowSize = schemaTLen(pSchema); From 42db901a22ac8d438adc4ae680d29c2d736b6d4b Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Wed, 4 Aug 2021 00:51:35 +0800 Subject: [PATCH 57/64] [TD-5694]: fix --- src/common/inc/tdataformat.h | 2 +- src/common/src/tdataformat.c | 20 +++++--------------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/common/inc/tdataformat.h b/src/common/inc/tdataformat.h index 53e77430d3..fb6bab0cf2 100644 --- a/src/common/inc/tdataformat.h +++ b/src/common/inc/tdataformat.h @@ -325,7 +325,7 @@ typedef struct SDataCol { #define isAllRowsNull(pCol) ((pCol)->len == 0) static FORCE_INLINE void dataColReset(SDataCol *pDataCol) { pDataCol->len = 0; } -void tdAllocMemForCol(SDataCol *pCol, int maxPoints); +int tdAllocMemForCol(SDataCol *pCol, int maxPoints); void dataColInit(SDataCol *pDataCol, STColumn *pCol, int maxPoints); void dataColAppendVal(SDataCol *pCol, const void *value, int numOfRows, int maxPoints); diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 16c96bb16f..44a138cec4 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -22,7 +22,7 @@ static void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, int limit1, SDataCols *src2, int *iter2, int limit2, int tRows, bool forceSetNull); -void tdAllocMemForCol(SDataCol *pCol, int maxPoints) { +int tdAllocMemForCol(SDataCol *pCol, int maxPoints) { int spaceNeeded = pCol->bytes * maxPoints; if(IS_VAR_DATA_TYPE(pCol->type)) { spaceNeeded += sizeof(VarDataOffsetT) * maxPoints; @@ -30,8 +30,10 @@ void tdAllocMemForCol(SDataCol *pCol, int maxPoints) { if(pCol->spaceSize < spaceNeeded) { void* ptr = realloc(pCol->pData, spaceNeeded); if(ptr == NULL) { + ASSERT(false); uDebug("malloc failure, size:%" PRId64 " failed, reason:%s", (int64_t)pCol->spaceSize, strerror(errno)); + return -1; } else { pCol->pData = ptr; pCol->spaceSize = spaceNeeded; @@ -40,6 +42,7 @@ void tdAllocMemForCol(SDataCol *pCol, int maxPoints) { } } } + return 0; } /** @@ -361,20 +364,6 @@ int tdInitDataCols(SDataCols *pCols, STSchema *pSchema) { pCols->cols[i].dataOff = NULL; pCols->cols[i].spaceSize = 0; } - } else if(schemaNCols(pSchema) < oldMaxCols){ - //TODO: this handling should not exist, for alloc will handle it nicely - for(i = schemaNCols(pSchema); i < oldMaxCols; i++) { - tfree(pCols->cols[i].pData); - pCols->cols[i].spaceSize = 0; - } - pCols->maxCols = schemaNCols(pSchema); - pCols->cols = (SDataCol *)realloc(pCols->cols, sizeof(SDataCol) * pCols->maxCols); - if (pCols->cols == NULL) return -1; - } - for(i = 0; i < pCols->maxCols; i++) { - tfree(pCols->cols[i].pData); - pCols->cols[i].dataOff = NULL; - pCols->cols[i].spaceSize = 0; } if (schemaTLen(pSchema) > pCols->maxRowSize) { @@ -386,6 +375,7 @@ int tdInitDataCols(SDataCols *pCols, STSchema *pSchema) { for (i = 0; i < schemaNCols(pSchema); i++) { dataColInit(pCols->cols + i, schemaColAt(pSchema, i), pCols->maxPoints); + tdAllocMemForCol(pCols->cols + i, pCols->maxPoints); } return 0; From f95e07bb2eed1d2a20c4fd683b21d5686d157c6f Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Wed, 4 Aug 2021 00:55:28 +0800 Subject: [PATCH 58/64] [TD-4199] enhance performance --- src/client/src/tscSQLParser.c | 6 ++++-- src/client/src/tscServer.c | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 9022d84de1..90d0865258 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -8305,7 +8305,8 @@ static int32_t doLoadAllTableMeta(SSqlObj* pSql, SQueryInfo* pQueryInfo, SSqlNod tNameExtractFullName(&pTableMetaInfo->name, fname); STableMetaVgroupInfo* p = taosHashGet(pCmd->pTableMetaMap, fname, strnlen(fname, TSDB_TABLE_FNAME_LEN)); - pTableMetaInfo->pTableMeta = tscTableMetaDup(p->pTableMeta); + pTableMetaInfo->pTableMeta = tscTableMetaDup(p->pTableMeta); + pTableMetaInfo->tableMetaCapacity = tscGetTableMetaSize(pTableMetaInfo->pTableMeta); assert(pTableMetaInfo->pTableMeta != NULL); if (p->vgroupIdList != NULL) { @@ -8405,7 +8406,8 @@ static int32_t doValidateSubquery(SSqlNode* pSqlNode, int32_t index, SSqlObj* pS if (pTableMetaInfo1 == NULL) { return TSDB_CODE_TSC_OUT_OF_MEMORY; } - pTableMetaInfo1->pTableMeta = extractTempTableMetaFromSubquery(pSub); + pTableMetaInfo1->pTableMeta = extractTempTableMetaFromSubquery(pSub); + pTableMetaInfo1->tableMetaCapacity = tscGetTableMetaSize(pTableMetaInfo1->pTableMeta); if (subInfo->aliasName.n > 0) { if (subInfo->aliasName.n >= TSDB_TABLE_FNAME_LEN) { diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 8231c8b299..6773b00576 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -2845,7 +2845,9 @@ int32_t tscGetTableMetaImpl(SSqlObj* pSql, STableMetaInfo *pTableMetaInfo, bool size_t len = strlen(name); if (pTableMetaInfo->tableMetaCapacity != 0) { - memset(pTableMetaInfo->pTableMeta, 0, pTableMetaInfo->tableMetaCapacity); + if (pTableMetaInfo->pTableMeta != NULL) { + memset(pTableMetaInfo->pTableMeta, 0, pTableMetaInfo->tableMetaCapacity); + } } taosHashGetCloneExt(tscTableMetaMap, name, len, NULL, (void **)&(pTableMetaInfo->pTableMeta), &pTableMetaInfo->tableMetaCapacity); From cc451f1fbccdb63cae5265d7ef504761dfe5391d Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Wed, 4 Aug 2021 01:02:00 +0800 Subject: [PATCH 59/64] [TD-5694]: fix --- src/common/src/tdataformat.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 44a138cec4..9bcada27cb 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -375,6 +375,7 @@ int tdInitDataCols(SDataCols *pCols, STSchema *pSchema) { for (i = 0; i < schemaNCols(pSchema); i++) { dataColInit(pCols->cols + i, schemaColAt(pSchema, i), pCols->maxPoints); + pCols->cols[i].spaceSize = 0; tdAllocMemForCol(pCols->cols + i, pCols->maxPoints); } From 7b1fce481ae0324cfe121c902f8059f33dc89133 Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Wed, 4 Aug 2021 01:12:10 +0800 Subject: [PATCH 60/64] [TD-5694]: fix --- src/common/src/tdataformat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 9bcada27cb..c4f3dda7b4 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -25,7 +25,7 @@ static void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, i int tdAllocMemForCol(SDataCol *pCol, int maxPoints) { int spaceNeeded = pCol->bytes * maxPoints; if(IS_VAR_DATA_TYPE(pCol->type)) { - spaceNeeded += sizeof(VarDataOffsetT) * maxPoints; + spaceNeeded += sizeof(VarDataOffsetT) * maxPoints + sizeof(VarDataLenT) * maxPoints; } if(pCol->spaceSize < spaceNeeded) { void* ptr = realloc(pCol->pData, spaceNeeded); From 9d6dbf473699bf20c0d46d7a35003648152c333c Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Wed, 4 Aug 2021 01:15:29 +0800 Subject: [PATCH 61/64] [TD-5694]: fix --- src/common/src/tdataformat.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index c4f3dda7b4..3a43a90b76 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -25,7 +25,7 @@ static void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, i int tdAllocMemForCol(SDataCol *pCol, int maxPoints) { int spaceNeeded = pCol->bytes * maxPoints; if(IS_VAR_DATA_TYPE(pCol->type)) { - spaceNeeded += sizeof(VarDataOffsetT) * maxPoints + sizeof(VarDataLenT) * maxPoints; + spaceNeeded += sizeof(VarDataOffsetT) * maxPoints; } if(pCol->spaceSize < spaceNeeded) { void* ptr = realloc(pCol->pData, spaceNeeded); @@ -37,11 +37,11 @@ int tdAllocMemForCol(SDataCol *pCol, int maxPoints) { } else { pCol->pData = ptr; pCol->spaceSize = spaceNeeded; - if(IS_VAR_DATA_TYPE(pCol->type)) { - pCol->dataOff = POINTER_SHIFT(ptr, pCol->bytes * maxPoints); - } } } + if(IS_VAR_DATA_TYPE(pCol->type)) { + pCol->dataOff = POINTER_SHIFT(pCol->pData, pCol->bytes * maxPoints); + } return 0; } From 3749b3d120c1ef1941e16a3ffe5e611e884010cf Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Wed, 4 Aug 2021 03:04:43 +0800 Subject: [PATCH 62/64] [TD-5694]: fix --- src/common/src/tdataformat.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 3a43a90b76..9293139f52 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -251,9 +251,10 @@ void dataColAppendVal(SDataCol *pCol, const void *value, int numOfRows, int maxP if (numOfRows > 0) { // Find the first not null value, fill all previouse values as NULL dataColSetNEleNull(pCol, numOfRows, maxPoints); + } else { + tdAllocMemForCol(pCol, maxPoints); } } - tdAllocMemForCol(pCol, maxPoints); if (IS_VAR_DATA_TYPE(pCol->type)) { // set offset @@ -290,7 +291,6 @@ static FORCE_INLINE void dataColSetNullAt(SDataCol *pCol, int index) { } void dataColSetNEleNull(SDataCol *pCol, int nEle, int maxPoints) { - if(isAllRowsNull(pCol)) return; tdAllocMemForCol(pCol, maxPoints); if (IS_VAR_DATA_TYPE(pCol->type)) { @@ -414,9 +414,9 @@ SDataCols *tdDupDataCols(SDataCols *pDataCols, bool keepData) { pRet->cols[i].offset = pDataCols->cols[i].offset; if (keepData) { - pRet->cols[i].len = pDataCols->cols[i].len; - if (pRet->cols[i].len > 0) { + if (pDataCols->cols[i].len > 0) { tdAllocMemForCol(&pRet->cols[i], pRet->maxPoints); + pRet->cols[i].len = pDataCols->cols[i].len; memcpy(pRet->cols[i].pData, pDataCols->cols[i].pData, pDataCols->cols[i].len); if (IS_VAR_DATA_TYPE(pRet->cols[i].type)) { int dataOffSize = sizeof(VarDataOffsetT) * pDataCols->maxPoints; From 391b5c6a3a9615811e2aa4947c5b70e885e4709b Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Wed, 4 Aug 2021 03:20:16 +0800 Subject: [PATCH 63/64] [TD-5694]: finish --- src/common/src/tdataformat.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 9293139f52..72a08f1a68 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -375,8 +375,6 @@ int tdInitDataCols(SDataCols *pCols, STSchema *pSchema) { for (i = 0; i < schemaNCols(pSchema); i++) { dataColInit(pCols->cols + i, schemaColAt(pSchema, i), pCols->maxPoints); - pCols->cols[i].spaceSize = 0; - tdAllocMemForCol(pCols->cols + i, pCols->maxPoints); } return 0; From f7e8569521c5f0af68fb1c2e88726b7eef592288 Mon Sep 17 00:00:00 2001 From: Liu Jicong Date: Wed, 4 Aug 2021 03:22:04 +0800 Subject: [PATCH 64/64] [TD-5694]: finish --- src/common/src/tdataformat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/src/tdataformat.c b/src/common/src/tdataformat.c index 72a08f1a68..3f0ab7f93e 100644 --- a/src/common/src/tdataformat.c +++ b/src/common/src/tdataformat.c @@ -22,6 +22,7 @@ static void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, int limit1, SDataCols *src2, int *iter2, int limit2, int tRows, bool forceSetNull); +//TODO: change caller to use return val int tdAllocMemForCol(SDataCol *pCol, int maxPoints) { int spaceNeeded = pCol->bytes * maxPoints; if(IS_VAR_DATA_TYPE(pCol->type)) { @@ -30,7 +31,6 @@ int tdAllocMemForCol(SDataCol *pCol, int maxPoints) { if(pCol->spaceSize < spaceNeeded) { void* ptr = realloc(pCol->pData, spaceNeeded); if(ptr == NULL) { - ASSERT(false); uDebug("malloc failure, size:%" PRId64 " failed, reason:%s", (int64_t)pCol->spaceSize, strerror(errno)); return -1;