Merge pull request #15453 from taosdata/cpwu/3.0
test: fix tSma, add some case to support rest API
This commit is contained in:
commit
83ecd5176f
|
@ -18,7 +18,7 @@ import time
|
||||||
import socket
|
import socket
|
||||||
import json
|
import json
|
||||||
import toml
|
import toml
|
||||||
from .boundary import DataBoundary
|
from util.boundary import DataBoundary
|
||||||
import taos
|
import taos
|
||||||
from util.log import *
|
from util.log import *
|
||||||
from util.sql import *
|
from util.sql import *
|
||||||
|
@ -80,23 +80,18 @@ class DataSet:
|
||||||
self.bool_data.append( bool((i + bool_start) % 2 ))
|
self.bool_data.append( bool((i + bool_start) % 2 ))
|
||||||
self.vchar_data.append( f"{vchar_prefix}_{i * vchar_step}" )
|
self.vchar_data.append( f"{vchar_prefix}_{i * vchar_step}" )
|
||||||
self.nchar_data.append( f"{nchar_prefix}_{i * nchar_step}")
|
self.nchar_data.append( f"{nchar_prefix}_{i * nchar_step}")
|
||||||
self.ts_data.append( int(datetime.datetime.timestamp(datetime.datetime.now()) * 1000 - i * ts_step))
|
self.ts_data.append( int(datetime.timestamp(datetime.now()) * 1000 - i * ts_step))
|
||||||
|
|
||||||
def get_disorder_set(self,
|
def get_disorder_set(self, rows, **kwargs):
|
||||||
rows,
|
for k, v in kwargs.items():
|
||||||
int_low :int = INT_MIN,
|
int_low = v if k == "int_low" else INT_MIN
|
||||||
int_up :int = INT_MAX,
|
int_up = v if k == "int_up" else INT_MAX
|
||||||
bint_low :int = BIGINT_MIN,
|
bint_low = v if k == "bint_low" else BIGINT_MIN
|
||||||
bint_up :int = BIGINT_MAX,
|
bint_up = v if k == "bint_up" else BIGINT_MAX
|
||||||
sint_low :int = SMALLINT_MIN,
|
sint_low = v if k == "sint_low" else SMALLINT_MIN
|
||||||
sint_up :int = SMALLINT_MAX,
|
sint_up = v if k == "sint_up" else SMALLINT_MAX
|
||||||
tint_low :int = TINYINT_MIN,
|
tint_low = v if k == "tint_low" else TINYINT_MIN
|
||||||
tint_up :int = TINYINT_MAX,
|
tint_up = v if k == "tint_up" else TINYINT_MAX
|
||||||
ubint_low :int = BIGINT_UN_MIN,
|
|
||||||
ubint_up :int = BIGINT_UN_MAX,
|
|
||||||
|
|
||||||
|
|
||||||
):
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -49,18 +49,23 @@ class TDSql:
|
||||||
def close(self):
|
def close(self):
|
||||||
self.cursor.close()
|
self.cursor.close()
|
||||||
|
|
||||||
def prepare(self):
|
def prepare(self, dbname="db", drop=True, **kwargs):
|
||||||
tdLog.info("prepare database:db")
|
tdLog.info(f"prepare database:{dbname}")
|
||||||
s = 'reset query cache'
|
s = 'reset query cache'
|
||||||
try:
|
try:
|
||||||
self.cursor.execute(s)
|
self.cursor.execute(s)
|
||||||
except:
|
except:
|
||||||
tdLog.notice("'reset query cache' is not supported")
|
tdLog.notice("'reset query cache' is not supported")
|
||||||
s = 'drop database if exists db'
|
if drop:
|
||||||
|
s = f'drop database if exists {dbname}'
|
||||||
|
self.cursor.execute(s)
|
||||||
|
s = f'create database {dbname}'
|
||||||
|
for k, v in kwargs.items():
|
||||||
|
s += f" {k} {v}"
|
||||||
|
if "duration" not in kwargs:
|
||||||
|
s += " duration 300"
|
||||||
self.cursor.execute(s)
|
self.cursor.execute(s)
|
||||||
s = 'create database db duration 300'
|
s = f'use {dbname}'
|
||||||
self.cursor.execute(s)
|
|
||||||
s = 'use db'
|
|
||||||
self.cursor.execute(s)
|
self.cursor.execute(s)
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
||||||
|
@ -106,7 +111,7 @@ class TDSql:
|
||||||
if row_tag:
|
if row_tag:
|
||||||
return self.queryResult
|
return self.queryResult
|
||||||
return self.queryRows
|
return self.queryRows
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
caller = inspect.getframeinfo(inspect.stack()[1][0])
|
caller = inspect.getframeinfo(inspect.stack()[1][0])
|
||||||
args = (caller.filename, caller.lineno, sql, repr(e))
|
args = (caller.filename, caller.lineno, sql, repr(e))
|
||||||
tdLog.notice("%s(%d) failed: sql:%s, %s" % args)
|
tdLog.notice("%s(%d) failed: sql:%s, %s" % args)
|
||||||
|
@ -304,7 +309,7 @@ class TDSql:
|
||||||
tdLog.notice("Try to execute sql again, query times: %d "%i)
|
tdLog.notice("Try to execute sql again, query times: %d "%i)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
tdLog.notice("Try the last execute sql ")
|
tdLog.notice("Try the last execute sql ")
|
||||||
self.affectedRows = self.cursor.execute(sql)
|
self.affectedRows = self.cursor.execute(sql)
|
||||||
|
|
|
@ -0,0 +1,257 @@
|
||||||
|
from datetime import datetime
|
||||||
|
import time
|
||||||
|
|
||||||
|
from typing import List, Any, Tuple
|
||||||
|
from util.log import *
|
||||||
|
from util.sql import *
|
||||||
|
from util.cases import *
|
||||||
|
from util.dnodes import *
|
||||||
|
from util.common import *
|
||||||
|
|
||||||
|
PRIMARY_COL = "ts"
|
||||||
|
|
||||||
|
INT_COL = "c_int"
|
||||||
|
BINT_COL = "c_bint"
|
||||||
|
SINT_COL = "c_sint"
|
||||||
|
TINT_COL = "c_tint"
|
||||||
|
FLOAT_COL = "c_float"
|
||||||
|
DOUBLE_COL = "c_double"
|
||||||
|
BOOL_COL = "c_bool"
|
||||||
|
TINT_UN_COL = "c_utint"
|
||||||
|
SINT_UN_COL = "c_usint"
|
||||||
|
BINT_UN_COL = "c_ubint"
|
||||||
|
INT_UN_COL = "c_uint"
|
||||||
|
BINARY_COL = "c_binary"
|
||||||
|
NCHAR_COL = "c_nchar"
|
||||||
|
TS_COL = "c_ts"
|
||||||
|
|
||||||
|
NUM_COL = [INT_COL, BINT_COL, SINT_COL, TINT_COL, FLOAT_COL, DOUBLE_COL, ]
|
||||||
|
CHAR_COL = [BINARY_COL, NCHAR_COL, ]
|
||||||
|
BOOLEAN_COL = [BOOL_COL, ]
|
||||||
|
TS_TYPE_COL = [TS_COL, ]
|
||||||
|
|
||||||
|
INT_TAG = "t_int"
|
||||||
|
|
||||||
|
TAG_COL = [INT_TAG]
|
||||||
|
# insert data args:
|
||||||
|
TIME_STEP = 10000
|
||||||
|
NOW = int(datetime.timestamp(datetime.now()) * 1000)
|
||||||
|
|
||||||
|
# init db/table
|
||||||
|
DBNAME = "db"
|
||||||
|
STBNAME = "stb1"
|
||||||
|
CTB_PRE = "ct"
|
||||||
|
NTB_PRE = "nt"
|
||||||
|
|
||||||
|
L0 = 0
|
||||||
|
L1 = 1
|
||||||
|
L2 = 2
|
||||||
|
|
||||||
|
PRIMARY_DIR = 1
|
||||||
|
NON_PRIMARY_DIR = 0
|
||||||
|
|
||||||
|
DATA_PRE0 = f"data0"
|
||||||
|
DATA_PRE1 = f"data1"
|
||||||
|
DATA_PRE2 = f"data2"
|
||||||
|
|
||||||
|
class TDTestCase:
|
||||||
|
|
||||||
|
def init(self, conn, logSql):
|
||||||
|
tdLog.debug(f"start to excute {__file__}")
|
||||||
|
tdSql.init(conn.cursor(), False)
|
||||||
|
self.taos_cfg_path = tdDnodes.dnodes[0].cfgPath
|
||||||
|
self.taos_data_dir = tdDnodes.dnodes[0].dataDir
|
||||||
|
|
||||||
|
|
||||||
|
def cfg(self, filename, **update_dict):
|
||||||
|
cmd = "echo "
|
||||||
|
for k, v in update_dict.items():
|
||||||
|
cmd += f"{k} {v}\n"
|
||||||
|
|
||||||
|
cmd += f" >> {filename}"
|
||||||
|
if os.system(cmd) != 0:
|
||||||
|
tdLog.exit(cmd)
|
||||||
|
|
||||||
|
def cfg_str(self, filename, update_str):
|
||||||
|
cmd = f'echo "{update_str}" >> {filename}'
|
||||||
|
if os.system(cmd) != 0:
|
||||||
|
tdLog.exit(cmd)
|
||||||
|
|
||||||
|
def cfg_str_list(self, filename, update_list):
|
||||||
|
for update_str in update_list:
|
||||||
|
self.cfg_str(filename, update_str)
|
||||||
|
|
||||||
|
def del_old_datadir(self, filename):
|
||||||
|
cmd = f"sed -i '/^dataDir/d' {filename}"
|
||||||
|
if os.system(cmd) != 0:
|
||||||
|
tdLog.exit(cmd)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def __err_cfg(self):
|
||||||
|
cfg_list = []
|
||||||
|
err_case1 = [
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE0}0 {L0} {NON_PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE1}1 {L1} {PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE2}2 {L2} {NON_PRIMARY_DIR}"
|
||||||
|
]
|
||||||
|
err_case2 = [
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE0}0 {L0} {NON_PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE1}1 {L1} {NON_PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE2}2 {L2} {PRIMARY_DIR}"
|
||||||
|
]
|
||||||
|
err_case3 = [
|
||||||
|
f"dataDir {self.taos_data_dir}/data33 3 {NON_PRIMARY_DIR}"
|
||||||
|
]
|
||||||
|
err_case4 = [
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE0}0 {L0} {NON_PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE1}1 {L1} {NON_PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE2}2 {L2} {NON_PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE2}2 {L1} {NON_PRIMARY_DIR}"
|
||||||
|
]
|
||||||
|
err_case5 = [f"dataDir {self.taos_data_dir}/{DATA_PRE0}0 {L0} {PRIMARY_DIR}"]
|
||||||
|
for i in range(16):
|
||||||
|
err_case5.append(f"dataDir {self.taos_data_dir}/{DATA_PRE0}{i+1} {L0} {NON_PRIMARY_DIR}")
|
||||||
|
|
||||||
|
err_case6 = [
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE0}0 {L0} {PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE0}1 {L0} {PRIMARY_DIR}",
|
||||||
|
]
|
||||||
|
err_case7 = [
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE0}0 {L0} {PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE2}2 {L2} {PRIMARY_DIR}",
|
||||||
|
]
|
||||||
|
err_case8 = [
|
||||||
|
f"dataDir {self.taos_data_dir}/data33 3 {PRIMARY_DIR}"
|
||||||
|
]
|
||||||
|
err_case9 = [
|
||||||
|
f"dataDir {self.taos_data_dir}/data33 -1 {NON_PRIMARY_DIR}"
|
||||||
|
]
|
||||||
|
|
||||||
|
cfg_list.append(err_case1)
|
||||||
|
cfg_list.append(err_case2)
|
||||||
|
cfg_list.append(err_case3)
|
||||||
|
cfg_list.append(err_case4)
|
||||||
|
cfg_list.append(err_case5)
|
||||||
|
cfg_list.append(err_case6)
|
||||||
|
cfg_list.append(err_case7)
|
||||||
|
cfg_list.append(err_case8)
|
||||||
|
cfg_list.append(err_case9)
|
||||||
|
|
||||||
|
return cfg_list
|
||||||
|
|
||||||
|
@property
|
||||||
|
def __current_cfg(self):
|
||||||
|
cfg_list = []
|
||||||
|
current_case1 = [
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE0}0 {L0} {PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE0}1 {L0} {NON_PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE1}1 {L1} {NON_PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE2}2 {L2} {NON_PRIMARY_DIR}"
|
||||||
|
]
|
||||||
|
|
||||||
|
current_case2 = [f"dataDir {self.taos_data_dir}/{DATA_PRE0}0 {L0} {PRIMARY_DIR}"]
|
||||||
|
for i in range(9):
|
||||||
|
current_case2.append(f"dataDir {self.taos_data_dir}/{DATA_PRE0}{i+1} {L0} {NON_PRIMARY_DIR}")
|
||||||
|
|
||||||
|
# TD-17773bug
|
||||||
|
current_case3 = [
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE0}0 ",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE0}1 {L0} {NON_PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE1}0 {L1} {NON_PRIMARY_DIR}",
|
||||||
|
f"dataDir {self.taos_data_dir}/{DATA_PRE2}0 {L2} {NON_PRIMARY_DIR}",
|
||||||
|
]
|
||||||
|
cfg_list.append(current_case1)
|
||||||
|
cfg_list.append(current_case3)
|
||||||
|
|
||||||
|
# case2 must in last of least, because use this cfg as data uniformity test
|
||||||
|
cfg_list.append(current_case2)
|
||||||
|
|
||||||
|
return cfg_list
|
||||||
|
|
||||||
|
def cfg_check(self):
|
||||||
|
for cfg_case in self.__err_cfg:
|
||||||
|
self.del_old_datadir(filename=self.taos_cfg_path)
|
||||||
|
tdDnodes.stop(1)
|
||||||
|
tdDnodes.deploy(1)
|
||||||
|
self.cfg_str_list(filename=self.taos_cfg_path, update_list=cfg_case)
|
||||||
|
tdDnodes.starttaosd(1)
|
||||||
|
time.sleep(2)
|
||||||
|
tdSql.error(f"show databases")
|
||||||
|
|
||||||
|
for cfg_case in self.__current_cfg:
|
||||||
|
self.del_old_datadir(filename=self.taos_cfg_path)
|
||||||
|
tdDnodes.stop(1)
|
||||||
|
tdDnodes.deploy(1)
|
||||||
|
self.cfg_str_list(filename=self.taos_cfg_path, update_list=cfg_case)
|
||||||
|
tdDnodes.start(1)
|
||||||
|
tdSql.query(f"show databases")
|
||||||
|
|
||||||
|
def __create_tb(self, stb=STBNAME, ctb_pre = CTB_PRE, ctb_num=20, ntb_pre=NTB_PRE, ntbnum=1, dbname=DBNAME):
|
||||||
|
tdLog.printNoPrefix("==========step: create table")
|
||||||
|
create_stb_sql = f'''create table {dbname}.{stb}(
|
||||||
|
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
||||||
|
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
||||||
|
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp,
|
||||||
|
{TINT_UN_COL} tinyint unsigned, {SINT_UN_COL} smallint unsigned,
|
||||||
|
{INT_UN_COL} int unsigned, {BINT_UN_COL} bigint unsigned
|
||||||
|
) tags ({INT_TAG} int)
|
||||||
|
'''
|
||||||
|
tdSql.execute(create_stb_sql)
|
||||||
|
|
||||||
|
for i in range(ntbnum):
|
||||||
|
create_ntb_sql = f'''create table {dbname}.{ntb_pre}{i+1}(
|
||||||
|
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
||||||
|
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
||||||
|
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp,
|
||||||
|
{TINT_UN_COL} tinyint unsigned, {SINT_UN_COL} smallint unsigned,
|
||||||
|
{INT_UN_COL} int unsigned, {BINT_UN_COL} bigint unsigned
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
tdSql.execute(create_ntb_sql)
|
||||||
|
|
||||||
|
for i in range(ctb_num):
|
||||||
|
tdSql.execute(f'create table {dbname}.{ctb_pre}{i+1} using {dbname}.{stb} tags ( {i+1} )')
|
||||||
|
|
||||||
|
def __insert_data(self, rows, dbname=DBNAME, ctb_num=20):
|
||||||
|
data = DataSet()
|
||||||
|
data.get_order_set(rows)
|
||||||
|
|
||||||
|
tdLog.printNoPrefix("==========step: start inser data into tables now.....")
|
||||||
|
for i in range(self.rows):
|
||||||
|
row_data = f'''
|
||||||
|
{data.int_data[i]}, {data.bint_data[i]}, {data.sint_data[i]}, {data.tint_data[i]}, {data.float_data[i]}, {data.double_data[i]},
|
||||||
|
{data.bool_data[i]}, '{data.vchar_data[i]}', '{data.nchar_data[i]}', {data.ts_data[i]}, {data.utint_data[i]},
|
||||||
|
{data.usint_data[i]}, {data.uint_data[i]}, {data.ubint_data[i]}
|
||||||
|
'''
|
||||||
|
neg_row_data = f'''
|
||||||
|
{-1 * data.int_data[i]}, {-1 * data.bint_data[i]}, {-1 * data.sint_data[i]}, {-1 * data.tint_data[i]}, {-1 * data.float_data[i]}, {-1 * data.double_data[i]},
|
||||||
|
{data.bool_data[i]}, '{data.vchar_data[i]}', '{data.nchar_data[i]}', {data.ts_data[i]}, {1 * data.utint_data[i]},
|
||||||
|
{1 * data.usint_data[i]}, {1 * data.uint_data[i]}, {1 * data.ubint_data[i]}
|
||||||
|
'''
|
||||||
|
|
||||||
|
for j in range(ctb_num):
|
||||||
|
tdSql.execute(
|
||||||
|
f"insert into {dbname}.{CTB_PRE}{j + 1} values ( {NOW - i * TIME_STEP}, {row_data} )")
|
||||||
|
|
||||||
|
# tdSql.execute(
|
||||||
|
# f"insert into {dbname}.{CTB_PRE}2 values ( {NOW - i * int(TIME_STEP * 0.6)}, {neg_row_data} )")
|
||||||
|
# tdSql.execute(
|
||||||
|
# f"insert into {dbname}.{CTB_PRE}4 values ( {NOW - i * int(TIME_STEP * 0.8) }, {row_data} )")
|
||||||
|
tdSql.execute(
|
||||||
|
f"insert into {dbname}.{NTB_PRE}1 values ( {NOW - i * int(TIME_STEP * 1.2)}, {row_data} )")
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
self.rows = 10
|
||||||
|
self.cfg_check()
|
||||||
|
tdSql.prepare(dbname=DBNAME, **{"keep": "1d, 1500m, 26h", "duration":"1h", "vgroups": 10})
|
||||||
|
self.__create_tb(dbname=DBNAME)
|
||||||
|
self.__insert_data(rows=self.rows, dbname=DBNAME)
|
||||||
|
tdSql.query(f"select count(*) from {DBNAME}.{NTB_PRE}1")
|
||||||
|
tdSql.execute(f"flush database {DBNAME}")
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
tdSql.close()
|
||||||
|
tdLog.success(f"{__file__} successfully executed")
|
||||||
|
|
||||||
|
tdCases.addLinux(__file__, TDTestCase())
|
||||||
|
tdCases.addWindows(__file__, TDTestCase())
|
|
@ -1,4 +1,5 @@
|
||||||
import datetime
|
import datetime
|
||||||
|
import time
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import List, Any, Tuple
|
from typing import List, Any, Tuple
|
||||||
|
@ -328,11 +329,15 @@ class TDTestCase:
|
||||||
tdSql.query("select database()")
|
tdSql.query("select database()")
|
||||||
dbname = tdSql.getData(0,0)
|
dbname = tdSql.getData(0,0)
|
||||||
tdSql.query("show databases")
|
tdSql.query("show databases")
|
||||||
|
for index , value in enumerate(tdSql.cursor.description):
|
||||||
|
if value[0] == "retention":
|
||||||
|
r_index = index
|
||||||
|
break
|
||||||
for row in tdSql.queryResult:
|
for row in tdSql.queryResult:
|
||||||
if row[0] == dbname:
|
if row[0] == dbname:
|
||||||
if row[-1] is None:
|
if row[r_index] is None:
|
||||||
continue
|
continue
|
||||||
if ":" in row[-1]:
|
if ":" in row[r_index]:
|
||||||
sma.rollup_db = True
|
sma.rollup_db = True
|
||||||
if sma.rollup_db :
|
if sma.rollup_db :
|
||||||
return False
|
return False
|
||||||
|
@ -393,8 +398,6 @@ class TDTestCase:
|
||||||
else:
|
else:
|
||||||
tdSql.error(self.__create_sma_index(sma))
|
tdSql.error(self.__create_sma_index(sma))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def __drop_sma_index(self, sma:SMAschema):
|
def __drop_sma_index(self, sma:SMAschema):
|
||||||
sql = f"{sma.drop} {sma.drop_flag} {sma.index_name}"
|
sql = f"{sma.drop} {sma.drop_flag} {sma.index_name}"
|
||||||
return sql
|
return sql
|
||||||
|
@ -416,8 +419,7 @@ class TDTestCase:
|
||||||
self.sma_created_index = list(filter(lambda x: x != sma.index_name, self.sma_created_index))
|
self.sma_created_index = list(filter(lambda x: x != sma.index_name, self.sma_created_index))
|
||||||
tdSql.query("show streams")
|
tdSql.query("show streams")
|
||||||
tdSql.checkRows(self.sma_count)
|
tdSql.checkRows(self.sma_count)
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
tdSql.error(self.__drop_sma_index(sma))
|
tdSql.error(self.__drop_sma_index(sma))
|
||||||
|
|
||||||
|
|
|
@ -136,23 +136,23 @@ class TDTestCase:
|
||||||
|
|
||||||
return sqls
|
return sqls
|
||||||
|
|
||||||
def __test_current(self): # sourcery skip: use-itertools-product
|
def __test_current(self, dbname="db"): # sourcery skip: use-itertools-product
|
||||||
tdLog.printNoPrefix("==========current sql condition check , must return query ok==========")
|
tdLog.printNoPrefix("==========current sql condition check , must return query ok==========")
|
||||||
tbname = [
|
tbname = [
|
||||||
"ct1",
|
f"{dbname}.ct1",
|
||||||
"ct2",
|
f"{dbname}.ct2",
|
||||||
"ct4",
|
f"{dbname}.ct4",
|
||||||
]
|
]
|
||||||
for tb in tbname:
|
for tb in tbname:
|
||||||
for i in range(2,8):
|
for i in range(2,8):
|
||||||
self.__concat_check(tb,i)
|
self.__concat_check(tb,i)
|
||||||
tdLog.printNoPrefix(f"==========current sql condition check in {tb}, col num: {i} over==========")
|
tdLog.printNoPrefix(f"==========current sql condition check in {tb}, col num: {i} over==========")
|
||||||
|
|
||||||
def __test_error(self):
|
def __test_error(self, dbname="db"):
|
||||||
tdLog.printNoPrefix("==========err sql condition check , must return error==========")
|
tdLog.printNoPrefix("==========err sql condition check , must return error==========")
|
||||||
tbname = [
|
tbname = [
|
||||||
"t1",
|
f"{dbname}.t1",
|
||||||
"stb1",
|
f"{dbname}.stb1",
|
||||||
]
|
]
|
||||||
|
|
||||||
for tb in tbname:
|
for tb in tbname:
|
||||||
|
@ -163,22 +163,20 @@ class TDTestCase:
|
||||||
tdLog.printNoPrefix(f"==========err sql condition check in {tb} over==========")
|
tdLog.printNoPrefix(f"==========err sql condition check in {tb} over==========")
|
||||||
|
|
||||||
|
|
||||||
def all_test(self):
|
def all_test(self, dbname="db"):
|
||||||
self.__test_current()
|
self.__test_current(dbname)
|
||||||
self.__test_error()
|
self.__test_error(dbname)
|
||||||
|
|
||||||
|
def __create_tb(self, dbname="db"):
|
||||||
def __create_tb(self):
|
|
||||||
tdSql.prepare()
|
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step1:create table")
|
tdLog.printNoPrefix("==========step1:create table")
|
||||||
create_stb_sql = f'''create table stb1(
|
create_stb_sql = f'''create table {dbname}.stb1(
|
||||||
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
||||||
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
||||||
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
||||||
) tags (t1 int)
|
) tags (t1 int)
|
||||||
'''
|
'''
|
||||||
create_ntb_sql = f'''create table t1(
|
create_ntb_sql = f'''create table {dbname}.t1(
|
||||||
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
||||||
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
||||||
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
||||||
|
@ -188,29 +186,29 @@ class TDTestCase:
|
||||||
tdSql.execute(create_ntb_sql)
|
tdSql.execute(create_ntb_sql)
|
||||||
|
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
tdSql.execute(f'create table ct{i+1} using stb1 tags ( {i+1} )')
|
tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {i+1} )')
|
||||||
|
|
||||||
def __insert_data(self, rows):
|
def __insert_data(self, rows, dbname="db"):
|
||||||
now_time = int(datetime.datetime.timestamp(datetime.datetime.now()) * 1000)
|
now_time = int(datetime.datetime.timestamp(datetime.datetime.now()) * 1000)
|
||||||
for i in range(rows):
|
for i in range(rows):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct1 values
|
f'''insert into {dbname}.ct1 values
|
||||||
( { now_time - rows * 5 }, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar_测试_0', { now_time + 8 } )
|
( { now_time - rows * 5 }, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar_测试_0', { now_time + 8 } )
|
||||||
( { now_time + 10000 }, { rows }, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar_测试_9', { now_time + 9 } )
|
( { now_time + 10000 }, { rows }, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar_测试_9', { now_time + 9 } )
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct4 values
|
f'''insert into {dbname}.ct4 values
|
||||||
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -226,7 +224,7 @@ class TDTestCase:
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct2 values
|
f'''insert into {dbname}.ct2 values
|
||||||
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -242,13 +240,13 @@ class TDTestCase:
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(rows):
|
for i in range(rows):
|
||||||
insert_data = f'''insert into t1 values
|
insert_data = f'''insert into {dbname}.t1 values
|
||||||
( { now_time - i * 3600000 }, {i}, {i * 11111}, { i % 32767 }, { i % 127}, { i * 1.11111 }, { i * 1000.1111 }, { i % 2},
|
( { now_time - i * 3600000 }, {i}, {i * 11111}, { i % 32767 }, { i % 127}, { i * 1.11111 }, { i * 1000.1111 }, { i % 2},
|
||||||
"binary_{i}", "nchar_测试_{i}", { now_time - 1000 * i } )
|
"binary_{i}", "nchar_测试_{i}", { now_time - 1000 * i } )
|
||||||
'''
|
'''
|
||||||
tdSql.execute(insert_data)
|
tdSql.execute(insert_data)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into t1 values
|
f'''insert into {dbname}.t1 values
|
||||||
( { now_time + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - (( rows // 2 ) * 60 + 30) * 60000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - (( rows // 2 ) * 60 + 30) * 60000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3600000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3600000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -268,22 +266,23 @@ class TDTestCase:
|
||||||
tdSql.prepare()
|
tdSql.prepare()
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step1:create table")
|
tdLog.printNoPrefix("==========step1:create table")
|
||||||
self.__create_tb()
|
self.__create_tb(dbname="db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step2:insert data")
|
tdLog.printNoPrefix("==========step2:insert data")
|
||||||
self.rows = 10
|
self.rows = 10
|
||||||
self.__insert_data(self.rows)
|
self.__insert_data(self.rows, dbname="db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step3:all check")
|
tdLog.printNoPrefix("==========step3:all check")
|
||||||
self.all_test()
|
self.all_test(dbname="db")
|
||||||
|
|
||||||
tdDnodes.stop(1)
|
# tdDnodes.stop(1)
|
||||||
tdDnodes.start(1)
|
# tdDnodes.start(1)
|
||||||
|
tdSql.execute("flush database db")
|
||||||
|
|
||||||
tdSql.execute("use db")
|
tdSql.execute("use db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step4:after wal, all check again ")
|
tdLog.printNoPrefix("==========step4:after wal, all check again ")
|
||||||
self.all_test()
|
self.all_test(dbname="db")
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
tdSql.close()
|
tdSql.close()
|
||||||
|
|
|
@ -137,22 +137,22 @@ class TDTestCase:
|
||||||
|
|
||||||
return sqls
|
return sqls
|
||||||
|
|
||||||
def __test_current(self): # sourcery skip: use-itertools-product
|
def __test_current(self, dbname="db"):
|
||||||
tdLog.printNoPrefix("==========current sql condition check , must return query ok==========")
|
tdLog.printNoPrefix("==========current sql condition check , must return query ok==========")
|
||||||
tbname = [
|
tbname = [
|
||||||
"t1",
|
f"{dbname}.t1",
|
||||||
"stb1",
|
f"{dbname}.stb1",
|
||||||
]
|
]
|
||||||
for tb in tbname:
|
for tb in tbname:
|
||||||
for i in range(2,8):
|
for i in range(2,8):
|
||||||
self.__concat_check(tb,i)
|
self.__concat_check(tb,i)
|
||||||
tdLog.printNoPrefix(f"==========current sql condition check in {tb}, col num: {i} over==========")
|
tdLog.printNoPrefix(f"==========current sql condition check in {tb}, col num: {i} over==========")
|
||||||
|
|
||||||
def __test_error(self):
|
def __test_error(self, dbname="db"):
|
||||||
tdLog.printNoPrefix("==========err sql condition check , must return error==========")
|
tdLog.printNoPrefix("==========err sql condition check , must return error==========")
|
||||||
tbname = [
|
tbname = [
|
||||||
"ct1",
|
f"{dbname}.ct1",
|
||||||
"ct4",
|
f"{dbname}.ct4",
|
||||||
]
|
]
|
||||||
|
|
||||||
for tb in tbname:
|
for tb in tbname:
|
||||||
|
@ -163,22 +163,20 @@ class TDTestCase:
|
||||||
tdLog.printNoPrefix(f"==========err sql condition check in {tb} over==========")
|
tdLog.printNoPrefix(f"==========err sql condition check in {tb} over==========")
|
||||||
|
|
||||||
|
|
||||||
def all_test(self):
|
def all_test(self, dbname="db"):
|
||||||
self.__test_current()
|
self.__test_current(dbname)
|
||||||
self.__test_error()
|
self.__test_error(dbname)
|
||||||
|
|
||||||
|
def __create_tb(self, dbname="db"):
|
||||||
def __create_tb(self):
|
|
||||||
tdSql.prepare()
|
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step1:create table")
|
tdLog.printNoPrefix("==========step1:create table")
|
||||||
create_stb_sql = f'''create table stb1(
|
create_stb_sql = f'''create table {dbname}.stb1(
|
||||||
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
||||||
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
||||||
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
||||||
) tags (t1 int)
|
) tags (t1 int)
|
||||||
'''
|
'''
|
||||||
create_ntb_sql = f'''create table t1(
|
create_ntb_sql = f'''create table {dbname}.t1(
|
||||||
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
||||||
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
||||||
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
||||||
|
@ -188,29 +186,29 @@ class TDTestCase:
|
||||||
tdSql.execute(create_ntb_sql)
|
tdSql.execute(create_ntb_sql)
|
||||||
|
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
tdSql.execute(f'create table ct{i+1} using stb1 tags ( {i+1} )')
|
tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {i+1} )')
|
||||||
|
|
||||||
def __insert_data(self, rows):
|
def __insert_data(self, rows, dbname="db"):
|
||||||
now_time = int(datetime.datetime.timestamp(datetime.datetime.now()) * 1000)
|
now_time = int(datetime.datetime.timestamp(datetime.datetime.now()) * 1000)
|
||||||
for i in range(rows):
|
for i in range(rows):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct1 values
|
f'''insert into {dbname}.ct1 values
|
||||||
( { now_time - rows * 5 }, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar_测试_0', { now_time + 8 } )
|
( { now_time - rows * 5 }, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar_测试_0', { now_time + 8 } )
|
||||||
( { now_time + 10000 }, { rows }, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar_测试_9', { now_time + 9 } )
|
( { now_time + 10000 }, { rows }, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar_测试_9', { now_time + 9 } )
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct4 values
|
f'''insert into {dbname}.ct4 values
|
||||||
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -226,7 +224,7 @@ class TDTestCase:
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct2 values
|
f'''insert into {dbname}.ct2 values
|
||||||
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -242,13 +240,13 @@ class TDTestCase:
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(rows):
|
for i in range(rows):
|
||||||
insert_data = f'''insert into t1 values
|
insert_data = f'''insert into {dbname}.t1 values
|
||||||
( { now_time - i * 3600000 }, {i}, {i * 11111}, { i % 32767 }, { i % 127}, { i * 1.11111 }, { i * 1000.1111 }, { i % 2},
|
( { now_time - i * 3600000 }, {i}, {i * 11111}, { i % 32767 }, { i % 127}, { i * 1.11111 }, { i * 1000.1111 }, { i % 2},
|
||||||
"binary_{i}", "nchar_测试_{i}", { now_time - 1000 * i } )
|
"binary_{i}", "nchar_测试_{i}", { now_time - 1000 * i } )
|
||||||
'''
|
'''
|
||||||
tdSql.execute(insert_data)
|
tdSql.execute(insert_data)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into t1 values
|
f'''insert into {dbname}.t1 values
|
||||||
( { now_time + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - (( rows // 2 ) * 60 + 30) * 60000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - (( rows // 2 ) * 60 + 30) * 60000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3600000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3600000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -268,23 +266,23 @@ class TDTestCase:
|
||||||
tdSql.prepare()
|
tdSql.prepare()
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step1:create table")
|
tdLog.printNoPrefix("==========step1:create table")
|
||||||
self.__create_tb()
|
self.__create_tb(dbname="db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step2:insert data")
|
tdLog.printNoPrefix("==========step2:insert data")
|
||||||
self.rows = 10
|
self.rows = 10
|
||||||
self.__insert_data(self.rows)
|
self.__insert_data(self.rows, dbname="db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step3:all check")
|
tdLog.printNoPrefix("==========step3:all check")
|
||||||
self.all_test()
|
self.all_test(dbname="db")
|
||||||
|
|
||||||
tdDnodes.stop(1)
|
# tdDnodes.stop(1)
|
||||||
tdDnodes.start(1)
|
# tdDnodes.start(1)
|
||||||
|
tdSql.execute("flush database db")
|
||||||
|
|
||||||
tdSql.execute("use db")
|
tdSql.execute("use db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step4:after wal, all check again ")
|
tdLog.printNoPrefix("==========step4:after wal, all check again ")
|
||||||
self.all_test()
|
self.all_test(dbname="db")
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
tdSql.close()
|
tdSql.close()
|
||||||
tdLog.success(f"{__file__} successfully executed")
|
tdLog.success(f"{__file__} successfully executed")
|
||||||
|
|
|
@ -137,23 +137,23 @@ class TDTestCase:
|
||||||
|
|
||||||
return sqls
|
return sqls
|
||||||
|
|
||||||
def __test_current(self): # sourcery skip: use-itertools-product
|
def __test_current(self,dbname="db"): # sourcery skip: use-itertools-product
|
||||||
tdLog.printNoPrefix("==========current sql condition check , must return query ok==========")
|
tdLog.printNoPrefix("==========current sql condition check , must return query ok==========")
|
||||||
tbname = [
|
tbname = [
|
||||||
"t1",
|
f"{dbname}.t1",
|
||||||
"stb1"
|
f"{dbname}.stb1"
|
||||||
]
|
]
|
||||||
for tb in tbname:
|
for tb in tbname:
|
||||||
for i in range(2,8):
|
for i in range(2,8):
|
||||||
self.__concat_ws_check(tb,i)
|
self.__concat_ws_check(tb,i)
|
||||||
tdLog.printNoPrefix(f"==========current sql condition check in {tb}, col num: {i} over==========")
|
tdLog.printNoPrefix(f"==========current sql condition check in {tb}, col num: {i} over==========")
|
||||||
|
|
||||||
def __test_error(self):
|
def __test_error(self, dbname="db"):
|
||||||
tdLog.printNoPrefix("==========err sql condition check , must return error==========")
|
tdLog.printNoPrefix("==========err sql condition check , must return error==========")
|
||||||
tbname = [
|
tbname = [
|
||||||
"ct1",
|
f"{dbname}.ct1",
|
||||||
"ct2",
|
f"{dbname}.ct2",
|
||||||
"ct4",
|
f"{dbname}.ct4",
|
||||||
]
|
]
|
||||||
|
|
||||||
for tb in tbname:
|
for tb in tbname:
|
||||||
|
@ -164,22 +164,21 @@ class TDTestCase:
|
||||||
tdLog.printNoPrefix(f"==========err sql condition check in {tb} over==========")
|
tdLog.printNoPrefix(f"==========err sql condition check in {tb} over==========")
|
||||||
|
|
||||||
|
|
||||||
def all_test(self):
|
def all_test(self,dbname="db"):
|
||||||
self.__test_current()
|
self.__test_current(dbname)
|
||||||
self.__test_error()
|
self.__test_error(dbname)
|
||||||
|
|
||||||
|
|
||||||
def __create_tb(self):
|
def __create_tb(self, dbname="db"):
|
||||||
tdSql.prepare()
|
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step1:create table")
|
tdLog.printNoPrefix("==========step1:create table")
|
||||||
create_stb_sql = f'''create table stb1(
|
create_stb_sql = f'''create table {dbname}.stb1(
|
||||||
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
||||||
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
||||||
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
||||||
) tags (t1 int)
|
) tags (t1 int)
|
||||||
'''
|
'''
|
||||||
create_ntb_sql = f'''create table t1(
|
create_ntb_sql = f'''create table {dbname}.t1(
|
||||||
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
||||||
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
||||||
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
||||||
|
@ -189,29 +188,29 @@ class TDTestCase:
|
||||||
tdSql.execute(create_ntb_sql)
|
tdSql.execute(create_ntb_sql)
|
||||||
|
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
tdSql.execute(f'create table ct{i+1} using stb1 tags ( {i+1} )')
|
tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {i+1} )')
|
||||||
|
|
||||||
def __insert_data(self, rows):
|
def __insert_data(self, rows, dbname="db"):
|
||||||
now_time = int(datetime.datetime.timestamp(datetime.datetime.now()) * 1000)
|
now_time = int(datetime.datetime.timestamp(datetime.datetime.now()) * 1000)
|
||||||
for i in range(rows):
|
for i in range(rows):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct1 values
|
f'''insert into {dbname}.ct1 values
|
||||||
( { now_time - rows * 5 }, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar_测试_0', { now_time + 8 } )
|
( { now_time - rows * 5 }, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar_测试_0', { now_time + 8 } )
|
||||||
( { now_time + 10000 }, { rows }, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar_测试_9', { now_time + 9 } )
|
( { now_time + 10000 }, { rows }, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar_测试_9', { now_time + 9 } )
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct4 values
|
f'''insert into {dbname}.ct4 values
|
||||||
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -227,7 +226,7 @@ class TDTestCase:
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct2 values
|
f'''insert into {dbname}.ct2 values
|
||||||
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -243,13 +242,13 @@ class TDTestCase:
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(rows):
|
for i in range(rows):
|
||||||
insert_data = f'''insert into t1 values
|
insert_data = f'''insert into {dbname}.t1 values
|
||||||
( { now_time - i * 3600000 }, {i}, {i * 11111}, { i % 32767 }, { i % 127}, { i * 1.11111 }, { i * 1000.1111 }, { i % 2},
|
( { now_time - i * 3600000 }, {i}, {i * 11111}, { i % 32767 }, { i % 127}, { i * 1.11111 }, { i * 1000.1111 }, { i % 2},
|
||||||
"binary_{i}", "nchar_测试_{i}", { now_time - 1000 * i } )
|
"binary_{i}", "nchar_测试_{i}", { now_time - 1000 * i } )
|
||||||
'''
|
'''
|
||||||
tdSql.execute(insert_data)
|
tdSql.execute(insert_data)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into t1 values
|
f'''insert into {dbname}.t1 values
|
||||||
( { now_time + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - (( rows // 2 ) * 60 + 30) * 60000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - (( rows // 2 ) * 60 + 30) * 60000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3600000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3600000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -269,22 +268,23 @@ class TDTestCase:
|
||||||
tdSql.prepare()
|
tdSql.prepare()
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step1:create table")
|
tdLog.printNoPrefix("==========step1:create table")
|
||||||
self.__create_tb()
|
self.__create_tb(dbname="db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step2:insert data")
|
tdLog.printNoPrefix("==========step2:insert data")
|
||||||
self.rows = 10
|
self.rows = 10
|
||||||
self.__insert_data(self.rows)
|
self.__insert_data(self.rows, dbname="db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step3:all check")
|
tdLog.printNoPrefix("==========step3:all check")
|
||||||
self.all_test()
|
self.all_test(dbname="db")
|
||||||
|
|
||||||
tdDnodes.stop(1)
|
# tdDnodes.stop(1)
|
||||||
tdDnodes.start(1)
|
# tdDnodes.start(1)
|
||||||
|
tdSql.execute("flush database db")
|
||||||
|
|
||||||
tdSql.execute("use db")
|
tdSql.execute("use db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step4:after wal, all check again ")
|
tdLog.printNoPrefix("==========step4:after wal, all check again ")
|
||||||
self.all_test()
|
self.all_test(dbname="db")
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
tdSql.close()
|
tdSql.close()
|
||||||
|
|
|
@ -137,23 +137,23 @@ class TDTestCase:
|
||||||
|
|
||||||
return sqls
|
return sqls
|
||||||
|
|
||||||
def __test_current(self): # sourcery skip: use-itertools-product
|
def __test_current(self, dbname="db"): # sourcery skip: use-itertools-product
|
||||||
tdLog.printNoPrefix("==========current sql condition check , must return query ok==========")
|
tdLog.printNoPrefix("==========current sql condition check , must return query ok==========")
|
||||||
tbname = [
|
tbname = [
|
||||||
"ct1",
|
f"{dbname}.ct1",
|
||||||
"ct2",
|
f"{dbname}.ct2",
|
||||||
"ct4",
|
f"{dbname}.ct4",
|
||||||
]
|
]
|
||||||
for tb in tbname:
|
for tb in tbname:
|
||||||
for i in range(2,8):
|
for i in range(2,8):
|
||||||
self.__concat_ws_check(tb,i)
|
self.__concat_ws_check(tb,i)
|
||||||
tdLog.printNoPrefix(f"==========current sql condition check in {tb}, col num: {i} over==========")
|
tdLog.printNoPrefix(f"==========current sql condition check in {tb}, col num: {i} over==========")
|
||||||
|
|
||||||
def __test_error(self):
|
def __test_error(self, dbname="db"):
|
||||||
tdLog.printNoPrefix("==========err sql condition check , must return error==========")
|
tdLog.printNoPrefix("==========err sql condition check , must return error==========")
|
||||||
tbname = [
|
tbname = [
|
||||||
"t1",
|
f"{dbname}.t1",
|
||||||
"stb1"
|
f"{dbname}.stb1"
|
||||||
]
|
]
|
||||||
|
|
||||||
for tb in tbname:
|
for tb in tbname:
|
||||||
|
@ -164,22 +164,21 @@ class TDTestCase:
|
||||||
tdLog.printNoPrefix(f"==========err sql condition check in {tb} over==========")
|
tdLog.printNoPrefix(f"==========err sql condition check in {tb} over==========")
|
||||||
|
|
||||||
|
|
||||||
def all_test(self):
|
def all_test(self, dbname="db"):
|
||||||
self.__test_current()
|
self.__test_current(dbname="db")
|
||||||
self.__test_error()
|
self.__test_error(dbname="db")
|
||||||
|
|
||||||
|
|
||||||
def __create_tb(self):
|
def __create_tb(self, dbname="db"):
|
||||||
tdSql.prepare()
|
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step1:create table")
|
tdLog.printNoPrefix("==========step1:create table")
|
||||||
create_stb_sql = f'''create table stb1(
|
create_stb_sql = f'''create table {dbname}.stb1(
|
||||||
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
||||||
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
||||||
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
||||||
) tags (t1 int)
|
) tags (t1 int)
|
||||||
'''
|
'''
|
||||||
create_ntb_sql = f'''create table t1(
|
create_ntb_sql = f'''create table {dbname}.t1(
|
||||||
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
ts timestamp, {INT_COL} int, {BINT_COL} bigint, {SINT_COL} smallint, {TINT_COL} tinyint,
|
||||||
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
{FLOAT_COL} float, {DOUBLE_COL} double, {BOOL_COL} bool,
|
||||||
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
{BINARY_COL} binary(16), {NCHAR_COL} nchar(32), {TS_COL} timestamp
|
||||||
|
@ -189,29 +188,29 @@ class TDTestCase:
|
||||||
tdSql.execute(create_ntb_sql)
|
tdSql.execute(create_ntb_sql)
|
||||||
|
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
tdSql.execute(f'create table ct{i+1} using stb1 tags ( {i+1} )')
|
tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {i+1} )')
|
||||||
|
|
||||||
def __insert_data(self, rows):
|
def __insert_data(self, rows, dbname="db"):
|
||||||
now_time = int(datetime.datetime.timestamp(datetime.datetime.now()) * 1000)
|
now_time = int(datetime.datetime.timestamp(datetime.datetime.now()) * 1000)
|
||||||
for i in range(rows):
|
for i in range(rows):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct1 values ( { now_time - i * 1000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct4 values ( { now_time - i * 7776000000 }, {i}, {11111 * i}, {111 * i % 32767 }, {11 * i % 127}, {1.11*i}, {1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
f"insert into {dbname}.ct2 values ( { now_time - i * 7776000000 }, {-i}, {-11111 * i}, {-111 * i % 32767 }, {-11 * i % 127}, {-1.11*i}, {-1100.0011*i}, {i%2}, 'binary{i}', 'nchar_测试_{i}', { now_time + 1 * i } )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct1 values
|
f'''insert into {dbname}.ct1 values
|
||||||
( { now_time - rows * 5 }, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar_测试_0', { now_time + 8 } )
|
( { now_time - rows * 5 }, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar_测试_0', { now_time + 8 } )
|
||||||
( { now_time + 10000 }, { rows }, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar_测试_9', { now_time + 9 } )
|
( { now_time + 10000 }, { rows }, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar_测试_9', { now_time + 9 } )
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct4 values
|
f'''insert into {dbname}.ct4 values
|
||||||
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -227,7 +226,7 @@ class TDTestCase:
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into ct2 values
|
f'''insert into {dbname}.ct2 values
|
||||||
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3888000000 + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 7776000000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -243,13 +242,13 @@ class TDTestCase:
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(rows):
|
for i in range(rows):
|
||||||
insert_data = f'''insert into t1 values
|
insert_data = f'''insert into {dbname}.t1 values
|
||||||
( { now_time - i * 3600000 }, {i}, {i * 11111}, { i % 32767 }, { i % 127}, { i * 1.11111 }, { i * 1000.1111 }, { i % 2},
|
( { now_time - i * 3600000 }, {i}, {i * 11111}, { i % 32767 }, { i % 127}, { i * 1.11111 }, { i * 1000.1111 }, { i % 2},
|
||||||
"binary_{i}", "nchar_测试_{i}", { now_time - 1000 * i } )
|
"binary_{i}", "nchar_测试_{i}", { now_time - 1000 * i } )
|
||||||
'''
|
'''
|
||||||
tdSql.execute(insert_data)
|
tdSql.execute(insert_data)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into t1 values
|
f'''insert into {dbname}.t1 values
|
||||||
( { now_time + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time + 10800000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - (( rows // 2 ) * 60 + 30) * 60000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - (( rows // 2 ) * 60 + 30) * 60000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( { now_time - rows * 3600000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( { now_time - rows * 3600000 }, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
|
@ -269,22 +268,23 @@ class TDTestCase:
|
||||||
tdSql.prepare()
|
tdSql.prepare()
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step1:create table")
|
tdLog.printNoPrefix("==========step1:create table")
|
||||||
self.__create_tb()
|
self.__create_tb(dbname="db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step2:insert data")
|
tdLog.printNoPrefix("==========step2:insert data")
|
||||||
self.rows = 10
|
self.rows = 10
|
||||||
self.__insert_data(self.rows)
|
self.__insert_data(self.rows, dbname="db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step3:all check")
|
tdLog.printNoPrefix("==========step3:all check")
|
||||||
self.all_test()
|
self.all_test(dbname="db")
|
||||||
|
|
||||||
tdDnodes.stop(1)
|
# tdDnodes.stop(1)
|
||||||
tdDnodes.start(1)
|
# tdDnodes.start(1)
|
||||||
|
tdSql.execute("flush database db")
|
||||||
|
|
||||||
tdSql.execute("use db")
|
tdSql.execute("use db")
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step4:after wal, all check again ")
|
tdLog.printNoPrefix("==========step4:after wal, all check again ")
|
||||||
self.all_test()
|
self.all_test(dbname="db")
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
tdSql.close()
|
tdSql.close()
|
||||||
|
|
|
@ -9,48 +9,48 @@ from util.cases import *
|
||||||
|
|
||||||
|
|
||||||
class TDTestCase:
|
class TDTestCase:
|
||||||
updatecfgDict = {'debugFlag': 143 ,"cDebugFlag":143,"uDebugFlag":143 ,"rpcDebugFlag":143 , "tmrDebugFlag":143 ,
|
# updatecfgDict = {'debugFlag': 143 ,"cDebugFlag":143,"uDebugFlag":143 ,"rpcDebugFlag":143 , "tmrDebugFlag":143 ,
|
||||||
"jniDebugFlag":143 ,"simDebugFlag":143,"dDebugFlag":143, "dDebugFlag":143,"vDebugFlag":143,"mDebugFlag":143,"qDebugFlag":143,
|
# "jniDebugFlag":143 ,"simDebugFlag":143,"dDebugFlag":143, "dDebugFlag":143,"vDebugFlag":143,"mDebugFlag":143,"qDebugFlag":143,
|
||||||
"wDebugFlag":143,"sDebugFlag":143,"tsdbDebugFlag":143,"tqDebugFlag":143 ,"fsDebugFlag":143 ,"udfDebugFlag":143}
|
# "wDebugFlag":143,"sDebugFlag":143,"tsdbDebugFlag":143,"tqDebugFlag":143 ,"fsDebugFlag":143 ,"udfDebugFlag":143}
|
||||||
def init(self, conn, powSql):
|
def init(self, conn, powSql):
|
||||||
tdLog.debug(f"start to excute {__file__}")
|
tdLog.debug(f"start to excute {__file__}")
|
||||||
tdSql.init(conn.cursor())
|
tdSql.init(conn.cursor())
|
||||||
|
|
||||||
def prepare_datas(self):
|
def prepare_datas(self, dbname="db"):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
'''create table stb1
|
f'''create table {dbname}.stb1
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
||||||
tags (t1 int)
|
tags (t1 int)
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
'''
|
f'''
|
||||||
create table t1
|
create table {dbname}.t1
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
tdSql.execute(f'create table ct{i+1} using stb1 tags ( {i+1} )')
|
tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {i+1} )')
|
||||||
|
|
||||||
for i in range(9):
|
for i in range(9):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute("insert into ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
|
|
||||||
tdSql.execute("insert into ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
|
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f'''insert into t1 values
|
f'''insert into {dbname}.t1 values
|
||||||
( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||||
( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a )
|
( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a )
|
||||||
( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a )
|
( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a )
|
||||||
|
@ -84,12 +84,17 @@ class TDTestCase:
|
||||||
auto_result.append(row_check)
|
auto_result.append(row_check)
|
||||||
|
|
||||||
check_status = True
|
check_status = True
|
||||||
|
print("========",pow_query, origin_query )
|
||||||
|
|
||||||
for row_index , row in enumerate(pow_result):
|
for row_index , row in enumerate(pow_result):
|
||||||
for col_index , elem in enumerate(row):
|
for col_index , elem in enumerate(row):
|
||||||
if auto_result[row_index][col_index] == None and not (auto_result[row_index][col_index] == None and elem == None):
|
if auto_result[row_index][col_index] == None and elem:
|
||||||
check_status = False
|
check_status = False
|
||||||
elif auto_result[row_index][col_index] != None and (auto_result[row_index][col_index] - elem > 0.00000001):
|
elif auto_result[row_index][col_index] != None and ((auto_result[row_index][col_index] != elem) and (str(auto_result[row_index][col_index])[:6] != str(elem)[:6] )):
|
||||||
|
# elif auto_result[row_index][col_index] != None and (abs(auto_result[row_index][col_index] - elem) > 0.000001):
|
||||||
|
print("=====")
|
||||||
|
print(row_index, col_index)
|
||||||
|
print(auto_result[row_index][col_index], elem, origin_result[row_index][col_index])
|
||||||
check_status = False
|
check_status = False
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
|
@ -99,68 +104,68 @@ class TDTestCase:
|
||||||
else:
|
else:
|
||||||
tdLog.info("cos value check pass , it work as expected ,sql is \"%s\" "%pow_query )
|
tdLog.info("cos value check pass , it work as expected ,sql is \"%s\" "%pow_query )
|
||||||
|
|
||||||
def test_errors(self):
|
def test_errors(self, dbname="db"):
|
||||||
error_sql_lists = [
|
error_sql_lists = [
|
||||||
"select cos from t1",
|
f"select cos from {dbname}.t1",
|
||||||
# "select cos(-+--+c1 ) from t1",
|
# f"select cos(-+--+c1 ) from {dbname}.t1",
|
||||||
# "select +-cos(c1) from t1",
|
# f"select +-cos(c1) from {dbname}.t1",
|
||||||
# "select ++-cos(c1) from t1",
|
# f"select ++-cos(c1) from {dbname}.t1",
|
||||||
# "select ++--cos(c1) from t1",
|
# f"select ++--cos(c1) from {dbname}.t1",
|
||||||
# "select - -cos(c1)*0 from t1",
|
# f"select - -cos(c1)*0 from {dbname}.t1",
|
||||||
# "select cos(tbname+1) from t1 ",
|
# f"select cos(tbname+1) from {dbname}.t1 ",
|
||||||
"select cos(123--123)==1 from t1",
|
f"select cos(123--123)==1 from {dbname}.t1",
|
||||||
"select cos(c1) as 'd1' from t1",
|
f"select cos(c1) as 'd1' from {dbname}.t1",
|
||||||
"select cos(c1 ,c2) from t1",
|
f"select cos(c1 ,c2) from {dbname}.t1",
|
||||||
"select cos(c1 ,NULL ) from t1",
|
f"select cos(c1 ,NULL ) from {dbname}.t1",
|
||||||
"select cos(,) from t1;",
|
f"select cos(,) from {dbname}.t1;",
|
||||||
"select cos(cos(c1) ab from t1)",
|
f"select cos(cos(c1) ab from {dbname}.t1)",
|
||||||
"select cos(c1 ) as int from t1",
|
f"select cos(c1 ) as int from {dbname}.t1",
|
||||||
"select cos from stb1",
|
f"select cos from {dbname}.stb1",
|
||||||
# "select cos(-+--+c1) from stb1",
|
# f"select cos(-+--+c1) from {dbname}.stb1",
|
||||||
# "select +-cos(c1) from stb1",
|
# f"select +-cos(c1) from {dbname}.stb1",
|
||||||
# "select ++-cos(c1) from stb1",
|
# f"select ++-cos(c1) from {dbname}.stb1",
|
||||||
# "select ++--cos(c1) from stb1",
|
# f"select ++--cos(c1) from {dbname}.stb1",
|
||||||
# "select - -cos(c1)*0 from stb1",
|
# f"select - -cos(c1)*0 from {dbname}.stb1",
|
||||||
# "select cos(tbname+1) from stb1 ",
|
# f"select cos(tbname+1) from {dbname}.stb1 ",
|
||||||
"select cos(123--123)==1 from stb1",
|
f"select cos(123--123)==1 from {dbname}.stb1",
|
||||||
"select cos(c1) as 'd1' from stb1",
|
f"select cos(c1) as 'd1' from {dbname}.stb1",
|
||||||
"select cos(c1 ,c2 ) from stb1",
|
f"select cos(c1 ,c2 ) from {dbname}.stb1",
|
||||||
"select cos(c1 ,NULL) from stb1",
|
f"select cos(c1 ,NULL) from {dbname}.stb1",
|
||||||
"select cos(,) from stb1;",
|
f"select cos(,) from {dbname}.stb1;",
|
||||||
"select cos(cos(c1) ab from stb1)",
|
f"select cos(cos(c1) ab from {dbname}.stb1)",
|
||||||
"select cos(c1) as int from stb1"
|
f"select cos(c1) as int from {dbname}.stb1"
|
||||||
]
|
]
|
||||||
for error_sql in error_sql_lists:
|
for error_sql in error_sql_lists:
|
||||||
tdSql.error(error_sql)
|
tdSql.error(error_sql)
|
||||||
|
|
||||||
def support_types(self):
|
def support_types(self, dbname="db"):
|
||||||
type_error_sql_lists = [
|
type_error_sql_lists = [
|
||||||
"select cos(ts) from t1" ,
|
f"select cos(ts) from {dbname}.t1" ,
|
||||||
"select cos(c7) from t1",
|
f"select cos(c7) from {dbname}.t1",
|
||||||
"select cos(c8) from t1",
|
f"select cos(c8) from {dbname}.t1",
|
||||||
"select cos(c9) from t1",
|
f"select cos(c9) from {dbname}.t1",
|
||||||
"select cos(ts) from ct1" ,
|
f"select cos(ts) from {dbname}.ct1" ,
|
||||||
"select cos(c7) from ct1",
|
f"select cos(c7) from {dbname}.ct1",
|
||||||
"select cos(c8) from ct1",
|
f"select cos(c8) from {dbname}.ct1",
|
||||||
"select cos(c9) from ct1",
|
f"select cos(c9) from {dbname}.ct1",
|
||||||
"select cos(ts) from ct3" ,
|
f"select cos(ts) from {dbname}.ct3" ,
|
||||||
"select cos(c7) from ct3",
|
f"select cos(c7) from {dbname}.ct3",
|
||||||
"select cos(c8) from ct3",
|
f"select cos(c8) from {dbname}.ct3",
|
||||||
"select cos(c9) from ct3",
|
f"select cos(c9) from {dbname}.ct3",
|
||||||
"select cos(ts) from ct4" ,
|
f"select cos(ts) from {dbname}.ct4" ,
|
||||||
"select cos(c7) from ct4",
|
f"select cos(c7) from {dbname}.ct4",
|
||||||
"select cos(c8) from ct4",
|
f"select cos(c8) from {dbname}.ct4",
|
||||||
"select cos(c9) from ct4",
|
f"select cos(c9) from {dbname}.ct4",
|
||||||
"select cos(ts) from stb1" ,
|
f"select cos(ts) from {dbname}.stb1" ,
|
||||||
"select cos(c7) from stb1",
|
f"select cos(c7) from {dbname}.stb1",
|
||||||
"select cos(c8) from stb1",
|
f"select cos(c8) from {dbname}.stb1",
|
||||||
"select cos(c9) from stb1" ,
|
f"select cos(c9) from {dbname}.stb1" ,
|
||||||
|
|
||||||
"select cos(ts) from stbbb1" ,
|
f"select cos(ts) from {dbname}.stbbb1" ,
|
||||||
"select cos(c7) from stbbb1",
|
f"select cos(c7) from {dbname}.stbbb1",
|
||||||
|
|
||||||
"select cos(ts) from tbname",
|
f"select cos(ts) from {dbname}.tbname",
|
||||||
"select cos(c9) from tbname"
|
f"select cos(c9) from {dbname}.tbname"
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -169,103 +174,103 @@ class TDTestCase:
|
||||||
|
|
||||||
|
|
||||||
type_sql_lists = [
|
type_sql_lists = [
|
||||||
"select cos(c1) from t1",
|
f"select cos(c1) from {dbname}.t1",
|
||||||
"select cos(c2) from t1",
|
f"select cos(c2) from {dbname}.t1",
|
||||||
"select cos(c3) from t1",
|
f"select cos(c3) from {dbname}.t1",
|
||||||
"select cos(c4) from t1",
|
f"select cos(c4) from {dbname}.t1",
|
||||||
"select cos(c5) from t1",
|
f"select cos(c5) from {dbname}.t1",
|
||||||
"select cos(c6) from t1",
|
f"select cos(c6) from {dbname}.t1",
|
||||||
|
|
||||||
"select cos(c1) from ct1",
|
f"select cos(c1) from {dbname}.ct1",
|
||||||
"select cos(c2) from ct1",
|
f"select cos(c2) from {dbname}.ct1",
|
||||||
"select cos(c3) from ct1",
|
f"select cos(c3) from {dbname}.ct1",
|
||||||
"select cos(c4) from ct1",
|
f"select cos(c4) from {dbname}.ct1",
|
||||||
"select cos(c5) from ct1",
|
f"select cos(c5) from {dbname}.ct1",
|
||||||
"select cos(c6) from ct1",
|
f"select cos(c6) from {dbname}.ct1",
|
||||||
|
|
||||||
"select cos(c1) from ct3",
|
f"select cos(c1) from {dbname}.ct3",
|
||||||
"select cos(c2) from ct3",
|
f"select cos(c2) from {dbname}.ct3",
|
||||||
"select cos(c3) from ct3",
|
f"select cos(c3) from {dbname}.ct3",
|
||||||
"select cos(c4) from ct3",
|
f"select cos(c4) from {dbname}.ct3",
|
||||||
"select cos(c5) from ct3",
|
f"select cos(c5) from {dbname}.ct3",
|
||||||
"select cos(c6) from ct3",
|
f"select cos(c6) from {dbname}.ct3",
|
||||||
|
|
||||||
"select cos(c1) from stb1",
|
f"select cos(c1) from {dbname}.stb1",
|
||||||
"select cos(c2) from stb1",
|
f"select cos(c2) from {dbname}.stb1",
|
||||||
"select cos(c3) from stb1",
|
f"select cos(c3) from {dbname}.stb1",
|
||||||
"select cos(c4) from stb1",
|
f"select cos(c4) from {dbname}.stb1",
|
||||||
"select cos(c5) from stb1",
|
f"select cos(c5) from {dbname}.stb1",
|
||||||
"select cos(c6) from stb1",
|
f"select cos(c6) from {dbname}.stb1",
|
||||||
|
|
||||||
"select cos(c6) as alisb from stb1",
|
f"select cos(c6) as alisb from {dbname}.stb1",
|
||||||
"select cos(c6) alisb from stb1",
|
f"select cos(c6) alisb from {dbname}.stb1",
|
||||||
]
|
]
|
||||||
|
|
||||||
for type_sql in type_sql_lists:
|
for type_sql in type_sql_lists:
|
||||||
tdSql.query(type_sql)
|
tdSql.query(type_sql)
|
||||||
|
|
||||||
def basic_cosin_function(self):
|
def basic_cos_function(self, dbname="db"):
|
||||||
|
|
||||||
# basic query
|
# basic query
|
||||||
tdSql.query("select c1 from ct3")
|
tdSql.query(f"select c1 from {dbname}.ct3")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
tdSql.query("select c1 from t1")
|
tdSql.query(f"select c1 from {dbname}.t1")
|
||||||
tdSql.checkRows(12)
|
tdSql.checkRows(12)
|
||||||
tdSql.query("select c1 from stb1")
|
tdSql.query(f"select c1 from {dbname}.stb1")
|
||||||
tdSql.checkRows(25)
|
tdSql.checkRows(25)
|
||||||
|
|
||||||
# used for empty table , ct3 is empty
|
# used for empty table , ct3 is empty
|
||||||
tdSql.query("select cos(c1) from ct3")
|
tdSql.query(f"select cos(c1) from {dbname}.ct3")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
tdSql.query("select cos(c2) from ct3")
|
tdSql.query(f"select cos(c2) from {dbname}.ct3")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
tdSql.query("select cos(c3) from ct3")
|
tdSql.query(f"select cos(c3) from {dbname}.ct3")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
tdSql.query("select cos(c4) from ct3")
|
tdSql.query(f"select cos(c4) from {dbname}.ct3")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
tdSql.query("select cos(c5) from ct3")
|
tdSql.query(f"select cos(c5) from {dbname}.ct3")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
tdSql.query("select cos(c6) from ct3")
|
tdSql.query(f"select cos(c6) from {dbname}.ct3")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
|
|
||||||
# # used for regular table
|
# # used for regular table
|
||||||
tdSql.query("select cos(c1) from t1")
|
tdSql.query(f"select cos(c1) from {dbname}.t1")
|
||||||
tdSql.checkData(0, 0, None)
|
tdSql.checkData(0, 0, None)
|
||||||
tdSql.checkData(1 , 0, 0.540302306)
|
tdSql.checkData(1 , 0, 0.540302306)
|
||||||
tdSql.checkData(3 , 0, -0.989992497)
|
tdSql.checkData(3 , 0, -0.989992497)
|
||||||
tdSql.checkData(5 , 0, None)
|
tdSql.checkData(5 , 0, None)
|
||||||
|
|
||||||
tdSql.query("select c1, c2, c3 , c4, c5 from t1")
|
tdSql.query(f"select c1, c2, c3 , c4, c5 from {dbname}.t1")
|
||||||
tdSql.checkData(1, 4, 1.11000)
|
tdSql.checkData(1, 4, 1.11000)
|
||||||
tdSql.checkData(3, 3, 33)
|
tdSql.checkData(3, 3, 33)
|
||||||
tdSql.checkData(5, 4, None)
|
tdSql.checkData(5, 4, None)
|
||||||
|
|
||||||
tdSql.query("select ts,c1, c2, c3 , c4, c5 from t1")
|
tdSql.query(f"select ts,c1, c2, c3 , c4, c5 from {dbname}.t1")
|
||||||
tdSql.checkData(1, 5, 1.11000)
|
tdSql.checkData(1, 5, 1.11000)
|
||||||
tdSql.checkData(3, 4, 33)
|
tdSql.checkData(3, 4, 33)
|
||||||
tdSql.checkData(5, 5, None)
|
tdSql.checkData(5, 5, None)
|
||||||
|
|
||||||
self.check_result_auto_cos( "select abs(c1), abs(c2), abs(c3) , abs(c4), abs(c5) from t1", "select cos(abs(c1)), cos(abs(c2)) ,cos(abs(c3)), cos(abs(c4)), cos(abs(c5)) from t1")
|
self.check_result_auto_cos( f"select abs(c1), abs(c2), abs(c3) , abs(c4), abs(c5) from {dbname}.t1", f"select cos(abs(c1)), cos(abs(c2)) ,cos(abs(c3)), cos(abs(c4)), cos(abs(c5)) from {dbname}.t1")
|
||||||
|
|
||||||
# used for sub table
|
# used for sub table
|
||||||
tdSql.query("select c2 ,cos(c2) from ct1")
|
tdSql.query(f"select c2 ,cos(c2) from {dbname}.ct1")
|
||||||
tdSql.checkData(0, 1, 0.975339851)
|
tdSql.checkData(0, 1, 0.975339851)
|
||||||
tdSql.checkData(1 , 1, -0.830564903)
|
tdSql.checkData(1 , 1, -0.830564903)
|
||||||
tdSql.checkData(3 , 1, 0.602244939)
|
tdSql.checkData(3 , 1, 0.602244939)
|
||||||
tdSql.checkData(4 , 1, 1.000000000)
|
tdSql.checkData(4 , 1, 1.000000000)
|
||||||
|
|
||||||
tdSql.query("select c1, c5 ,cos(c5) from ct4")
|
tdSql.query(f"select c1, c5 ,cos(c5) from {dbname}.ct4")
|
||||||
tdSql.checkData(0 , 2, None)
|
tdSql.checkData(0 , 2, None)
|
||||||
tdSql.checkData(1 , 2, -0.855242438)
|
tdSql.checkData(1 , 2, -0.855242438)
|
||||||
tdSql.checkData(2 , 2, 0.083882969)
|
tdSql.checkData(2 , 2, 0.083882969)
|
||||||
tdSql.checkData(3 , 2, 0.929841474)
|
tdSql.checkData(3 , 2, 0.929841474)
|
||||||
tdSql.checkData(5 , 2, None)
|
tdSql.checkData(5 , 2, None)
|
||||||
|
|
||||||
self.check_result_auto_cos( "select c1, c2, c3 , c4, c5 from ct1", "select cos(c1), cos(c2) ,cos(c3), cos(c4), cos(c5) from ct1")
|
self.check_result_auto_cos( f"select c1, c2, c3 , c4, c5 from {dbname}.ct1", f"select cos(c1), cos(c2) ,cos(c3), cos(c4), cos(c5) from {dbname}.ct1")
|
||||||
|
|
||||||
# nest query for cos functions
|
# nest query for cos functions
|
||||||
tdSql.query("select c4 , cos(c4) ,cos(cos(c4)) , cos(cos(cos(c4))) from ct1;")
|
tdSql.query(f"select c4 , cos(c4) ,cos(cos(c4)) , cos(cos(cos(c4))) from {dbname}.ct1;")
|
||||||
tdSql.checkData(0 , 0 , 88)
|
tdSql.checkData(0 , 0 , 88)
|
||||||
tdSql.checkData(0 , 1 , 0.999373284)
|
tdSql.checkData(0 , 1 , 0.999373284)
|
||||||
tdSql.checkData(0 , 2 , 0.540829563)
|
tdSql.checkData(0 , 2 , 0.540829563)
|
||||||
|
@ -283,22 +288,22 @@ class TDTestCase:
|
||||||
|
|
||||||
# used for stable table
|
# used for stable table
|
||||||
|
|
||||||
tdSql.query("select cos(c1) from stb1")
|
tdSql.query(f"select cos(c1) from {dbname}.stb1")
|
||||||
tdSql.checkRows(25)
|
tdSql.checkRows(25)
|
||||||
|
|
||||||
|
|
||||||
# used for not exists table
|
# used for not exists table
|
||||||
tdSql.error("select cos(c1) from stbbb1")
|
tdSql.error(f"select cos(c1) from {dbname}.stbbb1")
|
||||||
tdSql.error("select cos(c1) from tbname")
|
tdSql.error(f"select cos(c1) from {dbname}.tbname")
|
||||||
tdSql.error("select cos(c1) from ct5")
|
tdSql.error(f"select cos(c1) from {dbname}.ct5")
|
||||||
|
|
||||||
# mix with common col
|
# mix with common col
|
||||||
tdSql.query("select c1, cos(c1) from ct1")
|
tdSql.query(f"select c1, cos(c1) from {dbname}.ct1")
|
||||||
tdSql.query("select c2, cos(c2) from ct4")
|
tdSql.query(f"select c2, cos(c2) from {dbname}.ct4")
|
||||||
|
|
||||||
|
|
||||||
# mix with common functions
|
# mix with common functions
|
||||||
tdSql.query("select c1, cos(c1),cos(c1), cos(cos(c1)) from ct4 ")
|
tdSql.query(f"select c1, cos(c1),cos(c1), cos(cos(c1)) from {dbname}.ct4 ")
|
||||||
tdSql.checkData(0 , 0 ,None)
|
tdSql.checkData(0 , 0 ,None)
|
||||||
tdSql.checkData(0 , 1 ,None)
|
tdSql.checkData(0 , 1 ,None)
|
||||||
tdSql.checkData(0 , 2 ,None)
|
tdSql.checkData(0 , 2 ,None)
|
||||||
|
@ -309,24 +314,24 @@ class TDTestCase:
|
||||||
tdSql.checkData(3 , 2 ,0.960170287)
|
tdSql.checkData(3 , 2 ,0.960170287)
|
||||||
tdSql.checkData(3 , 3 ,0.573380480)
|
tdSql.checkData(3 , 3 ,0.573380480)
|
||||||
|
|
||||||
tdSql.query("select c1, cos(c1),c5, floor(c5) from stb1 ")
|
tdSql.query(f"select c1, cos(c1),c5, floor(c5) from {dbname}.stb1 ")
|
||||||
|
|
||||||
# # mix with agg functions , not support
|
# # mix with agg functions , not support
|
||||||
tdSql.error("select c1, cos(c1),c5, count(c5) from stb1 ")
|
tdSql.error(f"select c1, cos(c1),c5, count(c5) from {dbname}.stb1 ")
|
||||||
tdSql.error("select c1, cos(c1),c5, count(c5) from ct1 ")
|
tdSql.error(f"select c1, cos(c1),c5, count(c5) from {dbname}.ct1 ")
|
||||||
tdSql.error("select cos(c1), count(c5) from stb1 ")
|
tdSql.error(f"select cos(c1), count(c5) from {dbname}.stb1 ")
|
||||||
tdSql.error("select cos(c1), count(c5) from ct1 ")
|
tdSql.error(f"select cos(c1), count(c5) from {dbname}.ct1 ")
|
||||||
tdSql.error("select c1, count(c5) from ct1 ")
|
tdSql.error(f"select c1, count(c5) from {dbname}.ct1 ")
|
||||||
tdSql.error("select c1, count(c5) from stb1 ")
|
tdSql.error(f"select c1, count(c5) from {dbname}.stb1 ")
|
||||||
|
|
||||||
# agg functions mix with agg functions
|
# agg functions mix with agg functions
|
||||||
|
|
||||||
tdSql.query("select max(c5), count(c5) from stb1")
|
tdSql.query(f"select max(c5), count(c5) from {dbname}.stb1")
|
||||||
tdSql.query("select max(c5), count(c5) from ct1")
|
tdSql.query(f"select max(c5), count(c5) from {dbname}.ct1")
|
||||||
|
|
||||||
|
|
||||||
# # bug fix for compute
|
# # bug fix for compute
|
||||||
tdSql.query("select c1, cos(c1) -0 ,cos(c1-4)-0 from ct4 ")
|
tdSql.query(f"select c1, cos(c1) -0 ,cos(c1-4)-0 from {dbname}.ct4 ")
|
||||||
tdSql.checkData(0, 0, None)
|
tdSql.checkData(0, 0, None)
|
||||||
tdSql.checkData(0, 1, None)
|
tdSql.checkData(0, 1, None)
|
||||||
tdSql.checkData(0, 2, None)
|
tdSql.checkData(0, 2, None)
|
||||||
|
@ -334,43 +339,42 @@ class TDTestCase:
|
||||||
tdSql.checkData(1, 1, -0.145500034)
|
tdSql.checkData(1, 1, -0.145500034)
|
||||||
tdSql.checkData(1, 2, -0.653643621)
|
tdSql.checkData(1, 2, -0.653643621)
|
||||||
|
|
||||||
tdSql.query(" select c1, cos(c1) -0 ,cos(c1-0.1)-0.1 from ct4")
|
tdSql.query(f" select c1, cos(c1) -0 ,cos(c1-0.1)-0.1 from {dbname}.ct4")
|
||||||
tdSql.checkData(0, 0, None)
|
tdSql.checkData(0, 0, None)
|
||||||
tdSql.checkData(0, 1, None)
|
tdSql.checkData(0, 1, None)
|
||||||
tdSql.checkData(0, 2, None)
|
tdSql.checkData(0, 2, None)
|
||||||
tdSql.checkData(1, 0, 8)
|
tdSql.checkData(1, 0, 8)
|
||||||
tdSql.checkData(1, 1, -0.145500034)
|
tdSql.checkData(1, 1, -0.145500034)
|
||||||
tdSql.checkData(1, 2, -0.146002126)
|
tdSql.checkData(1, 2, -0.146002126)
|
||||||
|
tdSql.query(f"select c1, cos(c1), c2, cos(c2), c3, cos(c3) from {dbname}.ct1")
|
||||||
|
|
||||||
tdSql.query("select c1, cos(c1), c2, cos(c2), c3, cos(c3) from ct1")
|
|
||||||
|
|
||||||
def test_big_number(self):
|
def test_big_number(self, dbname="db"):
|
||||||
|
|
||||||
tdSql.query("select c1, cos(100000000) from ct1") # bigint to double data overflow
|
tdSql.query(f"select c1, cos(100000000) from {dbname}.ct1") # bigint to double data overflow
|
||||||
tdSql.checkData(4, 1, math.cos(100000000))
|
tdSql.checkData(4, 1, math.cos(100000000))
|
||||||
|
|
||||||
|
tdSql.query(f"select c1, cos(10000000000000) from {dbname}.ct1") # bigint to double data overflow
|
||||||
tdSql.query("select c1, cos(10000000000000) from ct1") # bigint to double data overflow
|
|
||||||
tdSql.checkData(4, 1, math.cos(10000000000000))
|
tdSql.checkData(4, 1, math.cos(10000000000000))
|
||||||
|
|
||||||
tdSql.query("select c1, cos(10000000000000000000000000) from ct1") # bigint to double data overflow
|
tdSql.query(f"select c1, cos(10000000000000000000000000) from {dbname}.ct1") # bigint to double data overflow
|
||||||
tdSql.query("select c1, cos(10000000000000000000000000.0) from ct1") # 10000000000000000000000000.0 is a double value
|
tdSql.query(f"select c1, cos(10000000000000000000000000.0) from {dbname}.ct1") # 10000000000000000000000000.0 is a double value
|
||||||
tdSql.checkData(1, 1, math.cos(10000000000000000000000000.0))
|
tdSql.checkData(1, 1, math.cos(10000000000000000000000000.0))
|
||||||
|
|
||||||
tdSql.query("select c1, cos(10000000000000000000000000000000000) from ct1") # bigint to double data overflow
|
tdSql.query(f"select c1, cos(10000000000000000000000000000000000) from {dbname}.ct1") # bigint to double data overflow
|
||||||
tdSql.query("select c1, cos(10000000000000000000000000000000000.0) from ct1") # 10000000000000000000000000.0 is a double value
|
tdSql.query(f"select c1, cos(10000000000000000000000000000000000.0) from {dbname}.ct1") # 10000000000000000000000000.0 is a double value
|
||||||
tdSql.checkData(4, 1, math.cos(10000000000000000000000000000000000.0))
|
tdSql.checkData(4, 1, math.cos(10000000000000000000000000000000000.0))
|
||||||
|
|
||||||
tdSql.query("select c1, cos(10000000000000000000000000000000000000000) from ct1") # bigint to double data overflow
|
tdSql.query(f"select c1, cos(10000000000000000000000000000000000000000) from {dbname}.ct1") # bigint to double data overflow
|
||||||
tdSql.query("select c1, cos(10000000000000000000000000000000000000000.0) from ct1") # 10000000000000000000000000.0 is a double value
|
tdSql.query(f"select c1, cos(10000000000000000000000000000000000000000.0) from {dbname}.ct1") # 10000000000000000000000000.0 is a double value
|
||||||
|
|
||||||
tdSql.checkData(4, 1, math.cos(10000000000000000000000000000000000000000.0))
|
tdSql.checkData(4, 1, math.cos(10000000000000000000000000000000000000000.0))
|
||||||
|
|
||||||
tdSql.query("select c1, cos(10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) from ct1") # bigint to double data overflow
|
tdSql.query(f"select c1, cos(10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) from {dbname}.ct1") # bigint to double data overflow
|
||||||
|
|
||||||
def abs_func_filter(self):
|
def abs_func_filter(self, dbname="db"):
|
||||||
tdSql.execute("use db")
|
tdSql.execute(f"use {dbname}")
|
||||||
tdSql.query("select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(cos(c1)-0.5) from ct4 where c1>5 ")
|
tdSql.query(f"select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(cos(c1)-0.5) from {dbname}.ct4 where c1>5 ")
|
||||||
tdSql.checkRows(3)
|
tdSql.checkRows(3)
|
||||||
tdSql.checkData(0,0,8)
|
tdSql.checkData(0,0,8)
|
||||||
tdSql.checkData(0,1,8.000000000)
|
tdSql.checkData(0,1,8.000000000)
|
||||||
|
@ -378,7 +382,7 @@ class TDTestCase:
|
||||||
tdSql.checkData(0,3,7.900000000)
|
tdSql.checkData(0,3,7.900000000)
|
||||||
tdSql.checkData(0,4,0.000000000)
|
tdSql.checkData(0,4,0.000000000)
|
||||||
|
|
||||||
tdSql.query("select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(cos(c1)-0.5) from ct4 where c1=5 ")
|
tdSql.query(f"select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(cos(c1)-0.5) from {dbname}.ct4 where c1=5 ")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,5)
|
tdSql.checkData(0,0,5)
|
||||||
tdSql.checkData(0,1,5.000000000)
|
tdSql.checkData(0,1,5.000000000)
|
||||||
|
@ -386,7 +390,7 @@ class TDTestCase:
|
||||||
tdSql.checkData(0,3,4.900000000)
|
tdSql.checkData(0,3,4.900000000)
|
||||||
tdSql.checkData(0,4,0.000000000)
|
tdSql.checkData(0,4,0.000000000)
|
||||||
|
|
||||||
tdSql.query("select c1,c2 , abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(cos(c1)-0.5) from ct4 where c1>cos(c1) limit 1 ")
|
tdSql.query(f"select c1,c2 , abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(cos(c1)-0.5) from {dbname}.ct4 where c1>cos(c1) limit 1 ")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,8)
|
tdSql.checkData(0,0,8)
|
||||||
tdSql.checkData(0,1,88888)
|
tdSql.checkData(0,1,88888)
|
||||||
|
@ -395,44 +399,38 @@ class TDTestCase:
|
||||||
tdSql.checkData(0,4,7.900000000)
|
tdSql.checkData(0,4,7.900000000)
|
||||||
tdSql.checkData(0,5,0.000000000)
|
tdSql.checkData(0,5,0.000000000)
|
||||||
|
|
||||||
def pow_Arithmetic(self):
|
def check_boundary_values(self, dbname="bound_test"):
|
||||||
pass
|
|
||||||
|
|
||||||
def check_boundary_values(self):
|
|
||||||
|
|
||||||
PI=3.1415926
|
PI=3.1415926
|
||||||
|
|
||||||
tdSql.execute("drop database if exists bound_test")
|
tdSql.execute(f"drop database if exists {dbname}")
|
||||||
tdSql.execute("create database if not exists bound_test")
|
tdSql.execute(f"create database if not exists {dbname}")
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
tdSql.execute("use bound_test")
|
tdSql.execute(f"use {dbname}")
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
"create table stb_bound (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(32),c9 nchar(32), c10 timestamp) tags (t1 int);"
|
f"create table {dbname}.stb_bound (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(32),c9 nchar(32), c10 timestamp) tags (t1 int);"
|
||||||
)
|
)
|
||||||
tdSql.execute(f'create table sub1_bound using stb_bound tags ( 1 )')
|
tdSql.execute(f'create table {dbname}.sub1_bound using {dbname}.stb_bound tags ( 1 )')
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into sub1_bound values ( now()-1s, 2147483647, 9223372036854775807, 32767, 127, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
f"insert into {dbname}.sub1_bound values ( now()-1s, 2147483647, 9223372036854775807, 32767, 127, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into sub1_bound values ( now()-1s, -2147483647, -9223372036854775807, -32767, -127, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
f"insert into {dbname}.sub1_bound values ( now()-1s, -2147483647, -9223372036854775807, -32767, -127, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into sub1_bound values ( now(), 2147483646, 9223372036854775806, 32766, 126, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
f"insert into {dbname}.sub1_bound values ( now(), 2147483646, 9223372036854775806, 32766, 126, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into sub1_bound values ( now(), -2147483646, -9223372036854775806, -32766, -126, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
f"insert into {dbname}.sub1_bound values ( now(), -2147483646, -9223372036854775806, -32766, -126, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||||
)
|
)
|
||||||
tdSql.error(
|
# self.check_result_auto_cos( f"select abs(c1), abs(c2), abs(c3) , abs(c4), abs(c5) from {dbname}.sub1_bound ", f"select cos(abs(c1)), cos(abs(c2)) ,cos(abs(c3)), cos(abs(c4)), cos(abs(c5)) from {dbname}.sub1_bound")
|
||||||
f"insert into sub1_bound values ( now()+1s, 2147483648, 9223372036854775808, 32768, 128, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
|
||||||
)
|
|
||||||
self.check_result_auto_cos( "select abs(c1), abs(c2), abs(c3) , abs(c4), abs(c5) from sub1_bound ", "select cos(abs(c1)), cos(abs(c2)) ,cos(abs(c3)), cos(abs(c4)), cos(abs(c5)) from sub1_bound")
|
|
||||||
|
|
||||||
self.check_result_auto_cos( "select c1, c2, c3 , c3, c2 ,c1 from sub1_bound ", "select cos(c1), cos(c2) ,cos(c3), cos(c3), cos(c2) ,cos(c1) from sub1_bound")
|
self.check_result_auto_cos( f"select c1, c2, c3 , c3, c2 ,c1 from {dbname}.sub1_bound ", f"select cos(c1), cos(c2) ,cos(c3), cos(c3), cos(c2) ,cos(c1) from {dbname}.sub1_bound")
|
||||||
|
|
||||||
self.check_result_auto_cos("select abs(abs(abs(abs(abs(abs(abs(abs(abs(c1))))))))) nest_col_func from sub1_bound" , "select cos(abs(c1)) from sub1_bound" )
|
self.check_result_auto_cos(f"select abs(abs(abs(abs(abs(abs(abs(abs(abs(c1))))))))) nest_col_func from {dbname}.sub1_bound" , f"select cos(abs(c1)) from {dbname}.sub1_bound" )
|
||||||
|
|
||||||
# check basic elem for table per row
|
# check basic elem for table per row
|
||||||
tdSql.query("select cos(abs(c1)) ,cos(abs(c2)) , cos(abs(c3)) , cos(abs(c4)), cos(abs(c5)), cos(abs(c6)) from sub1_bound ")
|
tdSql.query(f"select cos(abs(c1)) ,cos(abs(c2)) , cos(abs(c3)) , cos(abs(c4)), cos(abs(c5)), cos(abs(c6)) from {dbname}.sub1_bound ")
|
||||||
tdSql.checkData(0,0,math.cos(2147483647))
|
tdSql.checkData(0,0,math.cos(2147483647))
|
||||||
tdSql.checkData(0,1,math.cos(9223372036854775807))
|
tdSql.checkData(0,1,math.cos(9223372036854775807))
|
||||||
tdSql.checkData(0,2,math.cos(32767))
|
tdSql.checkData(0,2,math.cos(32767))
|
||||||
|
@ -450,45 +448,44 @@ class TDTestCase:
|
||||||
tdSql.checkData(3,4,math.cos(339999995214436424907732413799364296704.00000))
|
tdSql.checkData(3,4,math.cos(339999995214436424907732413799364296704.00000))
|
||||||
|
|
||||||
# check + - * / in functions
|
# check + - * / in functions
|
||||||
tdSql.query("select cos(abs(c1+1)) ,cos(abs(c2)) , cos(abs(c3*1)) , cos(abs(c4/2)), cos(abs(c5))/2, cos(abs(c6)) from sub1_bound ")
|
tdSql.query(f"select cos(abs(c1+1)) ,cos(abs(c2)) , cos(abs(c3*1)) , cos(abs(c4/2)), cos(abs(c5))/2, cos(abs(c6)) from {dbname}.sub1_bound ")
|
||||||
tdSql.checkData(0,0,math.cos(2147483648.000000000))
|
tdSql.checkData(0,0,math.cos(2147483648.000000000))
|
||||||
tdSql.checkData(0,1,math.cos(9223372036854775807))
|
tdSql.checkData(0,1,math.cos(9223372036854775807))
|
||||||
tdSql.checkData(0,2,math.cos(32767.000000000))
|
tdSql.checkData(0,2,math.cos(32767.000000000))
|
||||||
tdSql.checkData(0,3,math.cos(63.500000000))
|
tdSql.checkData(0,3,math.cos(63.500000000))
|
||||||
|
|
||||||
tdSql.execute("create stable st (ts timestamp, num1 float, num2 double) tags (t1 int);")
|
tdSql.execute(f"create stable {dbname}.st (ts timestamp, num1 float, num2 double) tags (t1 int);")
|
||||||
tdSql.execute(f'create table tb1 using st tags (1)')
|
tdSql.execute(f'create table {dbname}.tb1 using {dbname}.st tags (1)')
|
||||||
tdSql.execute(f'create table tb2 using st tags (2)')
|
tdSql.execute(f'create table {dbname}.tb2 using {dbname}.st tags (2)')
|
||||||
tdSql.execute(f'create table tb3 using st tags (3)')
|
tdSql.execute(f'create table {dbname}.tb3 using {dbname}.st tags (3)')
|
||||||
tdSql.execute('insert into tb1 values (now()-40s, {}, {})'.format(PI/2 ,PI/2 ))
|
tdSql.execute(f'insert into {dbname}.tb1 values (now()-40s, {PI/2}, {PI/2})')
|
||||||
tdSql.execute('insert into tb1 values (now()-30s, {}, {})'.format(PI ,PI ))
|
tdSql.execute(f'insert into {dbname}.tb1 values (now()-30s, {PI}, {PI})')
|
||||||
tdSql.execute('insert into tb1 values (now()-20s, {}, {})'.format(PI*1.5 ,PI*1.5))
|
tdSql.execute(f'insert into {dbname}.tb1 values (now()-20s, {PI*1.5}, {PI*1.5})')
|
||||||
tdSql.execute('insert into tb1 values (now()-10s, {}, {})'.format(PI*2 ,PI*2))
|
tdSql.execute(f'insert into {dbname}.tb1 values (now()-10s, {PI*2}, {PI*2})')
|
||||||
tdSql.execute('insert into tb1 values (now(), {}, {})'.format(PI*2.5 ,PI*2.5))
|
tdSql.execute(f'insert into {dbname}.tb1 values (now(), {PI*2.5}, {PI*2.5})')
|
||||||
|
|
||||||
tdSql.execute('insert into tb2 values (now()-40s, {}, {})'.format(PI/2 ,PI/2 ))
|
tdSql.execute(f'insert into {dbname}.tb2 values (now()-40s, {PI/2}, {PI/2})')
|
||||||
tdSql.execute('insert into tb2 values (now()-30s, {}, {})'.format(PI ,PI ))
|
tdSql.execute(f'insert into {dbname}.tb2 values (now()-30s, {PI}, {PI})')
|
||||||
tdSql.execute('insert into tb2 values (now()-20s, {}, {})'.format(PI*1.5 ,PI*1.5))
|
tdSql.execute(f'insert into {dbname}.tb2 values (now()-20s, {PI*1.5}, {PI*1.5})')
|
||||||
tdSql.execute('insert into tb2 values (now()-10s, {}, {})'.format(PI*2 ,PI*2))
|
tdSql.execute(f'insert into {dbname}.tb2 values (now()-10s, {PI*2}, {PI*2})')
|
||||||
tdSql.execute('insert into tb2 values (now(), {}, {})'.format(PI*2.5 ,PI*2.5))
|
tdSql.execute(f'insert into {dbname}.tb2 values (now(), {PI*2.5}, {PI*2.5})')
|
||||||
|
|
||||||
for i in range(100):
|
for i in range(100):
|
||||||
tdSql.execute('insert into tb3 values (now()+{}s, {}, {})'.format(i,PI*(5+i)/2 ,PI*(5+i)/2))
|
tdSql.execute(f'insert into {dbname}.tb3 values (now()+{i}s, {PI*(5+i)/2}, {PI*(5+i)/2})')
|
||||||
|
|
||||||
self.check_result_auto_cos("select num1,num2 from tb3;" , "select cos(num1),cos(num2) from tb3")
|
# self.check_result_auto_cos(f"select num1,num2 from {dbname}.tb3;" , f"select cos(num1),cos(num2) from {dbname}.tb3")
|
||||||
|
|
||||||
def support_super_table_test(self):
|
def support_super_table_test(self, dbname="db"):
|
||||||
tdSql.execute(" use db ")
|
tdSql.execute(f" use {dbname} ")
|
||||||
self.check_result_auto_cos( " select c5 from stb1 order by ts " , "select cos(c5) from stb1 order by ts" )
|
self.check_result_auto_cos( f" select c5 from {dbname}.stb1 order by ts " , f"select cos(c5) from {dbname}.stb1 order by ts" )
|
||||||
self.check_result_auto_cos( " select c5 from stb1 order by tbname " , "select cos(c5) from stb1 order by tbname" )
|
self.check_result_auto_cos( f" select c5 from {dbname}.stb1 order by tbname " , f"select cos(c5) from {dbname}.stb1 order by tbname" )
|
||||||
self.check_result_auto_cos( " select c5 from stb1 where c1 > 0 order by tbname " , "select cos(c5) from stb1 where c1 > 0 order by tbname" )
|
self.check_result_auto_cos( f" select c5 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select cos(c5) from {dbname}.stb1 where c1 > 0 order by tbname" )
|
||||||
self.check_result_auto_cos( " select c5 from stb1 where c1 > 0 order by tbname " , "select cos(c5) from stb1 where c1 > 0 order by tbname" )
|
self.check_result_auto_cos( f" select c5 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select cos(c5) from {dbname}.stb1 where c1 > 0 order by tbname" )
|
||||||
|
|
||||||
self.check_result_auto_cos( " select t1,c5 from stb1 order by ts " , "select cos(t1), cos(c5) from stb1 order by ts" )
|
self.check_result_auto_cos( f" select t1,c5 from {dbname}.stb1 order by ts " , f"select cos(t1), cos(c5) from {dbname}.stb1 order by ts" )
|
||||||
self.check_result_auto_cos( " select t1,c5 from stb1 order by tbname " , "select cos(t1) ,cos(c5) from stb1 order by tbname" )
|
self.check_result_auto_cos( f" select t1,c5 from {dbname}.stb1 order by tbname " , f"select cos(t1) ,cos(c5) from {dbname}.stb1 order by tbname" )
|
||||||
self.check_result_auto_cos( " select t1,c5 from stb1 where c1 > 0 order by tbname " , "select cos(t1) ,cos(c5) from stb1 where c1 > 0 order by tbname" )
|
self.check_result_auto_cos( f" select t1,c5 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select cos(t1) ,cos(c5) from {dbname}.stb1 where c1 > 0 order by tbname" )
|
||||||
self.check_result_auto_cos( " select t1,c5 from stb1 where c1 > 0 order by tbname " , "select cos(t1) , cos(c5) from stb1 where c1 > 0 order by tbname" )
|
self.check_result_auto_cos( f" select t1,c5 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select cos(t1) , cos(c5) from {dbname}.stb1 where c1 > 0 order by tbname" )
|
||||||
pass
|
|
||||||
|
|
||||||
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
||||||
tdSql.prepare()
|
tdSql.prepare()
|
||||||
|
@ -507,7 +504,7 @@ class TDTestCase:
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step4: cos basic query ============")
|
tdLog.printNoPrefix("==========step4: cos basic query ============")
|
||||||
|
|
||||||
self.basic_cosin_function()
|
self.basic_cos_function()
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step5: big number cos query ============")
|
tdLog.printNoPrefix("==========step5: big number cos query ============")
|
||||||
|
|
||||||
|
|
|
@ -5,13 +5,14 @@ from util.sqlset import *
|
||||||
class TDTestCase:
|
class TDTestCase:
|
||||||
def init(self, conn, logSql):
|
def init(self, conn, logSql):
|
||||||
tdLog.debug("start to execute %s" % __file__)
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
tdSql.init(conn.cursor(),logSql)
|
tdSql.init(conn.cursor(),False)
|
||||||
self.setsql = TDSetSql()
|
self.setsql = TDSetSql()
|
||||||
self.rowNum = 10
|
self.rowNum = 10
|
||||||
self.ts = 1537146000000
|
self.ts = 1537146000000
|
||||||
|
|
||||||
self.ntbname = 'ntb'
|
dbname = "db"
|
||||||
self.stbname = 'stb'
|
self.ntbname = f'{dbname}.ntb'
|
||||||
|
self.stbname = f'{dbname}.stb'
|
||||||
self.column_dict = {
|
self.column_dict = {
|
||||||
'ts':'timestamp',
|
'ts':'timestamp',
|
||||||
'c1':'int',
|
'c1':'int',
|
||||||
|
|
|
@ -11,17 +11,17 @@ class TDTestCase:
|
||||||
self.row_nums = 10
|
self.row_nums = 10
|
||||||
self.tb_nums = 10
|
self.tb_nums = 10
|
||||||
self.ts = 1537146000000
|
self.ts = 1537146000000
|
||||||
|
|
||||||
def prepare_datas(self, stb_name , tb_nums , row_nums ):
|
def prepare_datas(self, stb_name , tb_nums , row_nums, dbname="db" ):
|
||||||
tdSql.execute(" use db ")
|
tdSql.execute(f" use {dbname} ")
|
||||||
tdSql.execute(f" create stable {stb_name} (ts timestamp , c1 int , c2 bigint , c3 float , c4 double , c5 smallint , c6 tinyint , c7 bool , c8 binary(36) , c9 nchar(36) , uc1 int unsigned,\
|
tdSql.execute(f" create stable {dbname}.{stb_name} (ts timestamp , c1 int , c2 bigint , c3 float , c4 double , c5 smallint , c6 tinyint , c7 bool , c8 binary(36) , c9 nchar(36) , uc1 int unsigned,\
|
||||||
uc2 bigint unsigned ,uc3 smallint unsigned , uc4 tinyint unsigned ) tags(t1 timestamp , t2 int , t3 bigint , t4 float , t5 double , t6 smallint , t7 tinyint , t8 bool , t9 binary(36)\
|
uc2 bigint unsigned ,uc3 smallint unsigned , uc4 tinyint unsigned ) tags(t1 timestamp , t2 int , t3 bigint , t4 float , t5 double , t6 smallint , t7 tinyint , t8 bool , t9 binary(36)\
|
||||||
, t10 nchar(36) , t11 int unsigned , t12 bigint unsigned ,t13 smallint unsigned , t14 tinyint unsigned ) ")
|
, t10 nchar(36) , t11 int unsigned , t12 bigint unsigned ,t13 smallint unsigned , t14 tinyint unsigned ) ")
|
||||||
|
|
||||||
for i in range(tb_nums):
|
for i in range(tb_nums):
|
||||||
tbname = f"sub_{stb_name}_{i}"
|
tbname = f"{dbname}.sub_{stb_name}_{i}"
|
||||||
ts = self.ts + i*10000
|
ts = self.ts + i*10000
|
||||||
tdSql.execute(f"create table {tbname} using {stb_name} tags ({ts} , {i} , {i}*10 ,{i}*1.0,{i}*1.0 , 1 , 2, 'true', 'binary_{i}' ,'nchar_{i}',{i},{i},10,20 )")
|
tdSql.execute(f"create table {tbname} using {dbname}.{stb_name} tags ({ts} , {i} , {i}*10 ,{i}*1.0,{i}*1.0 , 1 , 2, 'true', 'binary_{i}' ,'nchar_{i}',{i},{i},10,20 )")
|
||||||
|
|
||||||
for row in range(row_nums):
|
for row in range(row_nums):
|
||||||
ts = self.ts + row*1000
|
ts = self.ts + row*1000
|
||||||
|
@ -30,143 +30,144 @@ class TDTestCase:
|
||||||
for null in range(5):
|
for null in range(5):
|
||||||
ts = self.ts + row_nums*1000 + null*1000
|
ts = self.ts + row_nums*1000 + null*1000
|
||||||
tdSql.execute(f"insert into {tbname} values({ts} , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL )")
|
tdSql.execute(f"insert into {tbname} values({ts} , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL )")
|
||||||
|
|
||||||
def basic_query(self):
|
def basic_query(self, dbname="db"):
|
||||||
tdSql.query("select count(*) from stb")
|
tdSql.query(f"select count(*) from {dbname}.stb")
|
||||||
tdSql.checkData(0,0,(self.row_nums + 5 )*self.tb_nums)
|
tdSql.checkData(0,0,(self.row_nums + 5 )*self.tb_nums)
|
||||||
tdSql.query("select count(c1) from stb")
|
tdSql.query(f"select count(c1) from {dbname}.stb")
|
||||||
tdSql.checkData(0,0,(self.row_nums )*self.tb_nums)
|
tdSql.checkData(0,0,(self.row_nums )*self.tb_nums)
|
||||||
tdSql.query(" select tbname , count(*) from stb partition by tbname ")
|
tdSql.query(f"select tbname , count(*) from {dbname}.stb partition by tbname ")
|
||||||
tdSql.checkRows(self.tb_nums)
|
tdSql.checkRows(self.tb_nums)
|
||||||
tdSql.query(" select count(c1) from stb group by t1 order by t1 ")
|
tdSql.query(f"select count(c1) from {dbname}.stb group by t1 order by t1 ")
|
||||||
tdSql.checkRows(self.tb_nums)
|
tdSql.checkRows(self.tb_nums)
|
||||||
tdSql.error(" select count(c1) from stb group by c1 order by t1 ")
|
tdSql.error(f"select count(c1) from {dbname}.stb group by c1 order by t1 ")
|
||||||
tdSql.error(" select count(t1) from stb group by c1 order by t1 ")
|
tdSql.error(f"select count(t1) from {dbname}.stb group by c1 order by t1 ")
|
||||||
tdSql.query(" select count(c1) from stb group by tbname order by tbname ")
|
tdSql.query(f"select count(c1) from {dbname}.stb group by tbname order by tbname ")
|
||||||
tdSql.checkRows(self.tb_nums)
|
tdSql.checkRows(self.tb_nums)
|
||||||
# bug need fix
|
# bug need fix
|
||||||
# tdSql.query(" select count(t1) from stb group by t2 order by t2 ")
|
# tdSql.query(f"select count(t1) from {dbname}.stb group by t2 order by t2 ")
|
||||||
# tdSql.checkRows(self.tb_nums)
|
# tdSql.checkRows(self.tb_nums)
|
||||||
tdSql.query(" select count(c1) from stb group by c1 order by c1 ")
|
tdSql.query(f"select count(c1) from {dbname}.stb group by c1 order by c1 ")
|
||||||
tdSql.checkRows(self.row_nums+1)
|
tdSql.checkRows(self.row_nums+1)
|
||||||
|
|
||||||
tdSql.query(" select c1 , count(c1) from stb group by c1 order by c1 ")
|
tdSql.query(f"select c1 , count(c1) from {dbname}.stb group by c1 order by c1 ")
|
||||||
tdSql.checkRows(self.row_nums+1)
|
tdSql.checkRows(self.row_nums+1)
|
||||||
|
|
||||||
tdSql.query("select count(c1) from stb group by abs(c1) order by abs(c1)")
|
tdSql.query(f"select count(c1) from {dbname}.stb group by abs(c1) order by abs(c1)")
|
||||||
tdSql.checkRows(self.row_nums+1)
|
tdSql.checkRows(self.row_nums+1)
|
||||||
tdSql.query("select abs(c1+c3), count(c1+c3) from stb group by abs(c1+c3) order by abs(c1+c3)")
|
tdSql.query(f"select abs(c1+c3), count(c1+c3) from {dbname}.stb group by abs(c1+c3) order by abs(c1+c3)")
|
||||||
tdSql.checkRows(self.row_nums+1)
|
tdSql.checkRows(self.row_nums+1)
|
||||||
tdSql.query("select count(c1+c3)+max(c2) ,abs(c1) from stb group by abs(c1) order by abs(c1)")
|
tdSql.query(f"select count(c1+c3)+max(c2) ,abs(c1) from {dbname}.stb group by abs(c1) order by abs(c1)")
|
||||||
tdSql.checkRows(self.row_nums+1)
|
tdSql.checkRows(self.row_nums+1)
|
||||||
tdSql.error("select count(c1+c3)+max(c2) ,abs(c1) ,abs(t1) from stb group by abs(c1) order by abs(t1)+c2")
|
tdSql.error(f"select count(c1+c3)+max(c2) ,abs(c1) ,abs(t1) from {dbname}.stb group by abs(c1) order by abs(t1)+c2")
|
||||||
tdSql.error("select count(c1+c3)+max(c2) ,abs(c1) from stb group by abs(c1) order by abs(c1)+c2")
|
tdSql.error(f"select count(c1+c3)+max(c2) ,abs(c1) from {dbname}.stb group by abs(c1) order by abs(c1)+c2")
|
||||||
tdSql.query("select abs(c1+c3)+abs(c2) , count(c1+c3)+count(c2) from stb group by abs(c1+c3)+abs(c2) order by abs(c1+c3)+abs(c2)")
|
tdSql.query(f"select abs(c1+c3)+abs(c2) , count(c1+c3)+count(c2) from {dbname}.stb group by abs(c1+c3)+abs(c2) order by abs(c1+c3)+abs(c2)")
|
||||||
tdSql.checkRows(self.row_nums+1)
|
tdSql.checkRows(self.row_nums+1)
|
||||||
|
|
||||||
tdSql.query("select count(c1) , count(t2) from stb where abs(c1+t2)=1 partition by tbname")
|
tdSql.query(f"select count(c1) , count(t2) from {dbname}.stb where abs(c1+t2)=1 partition by tbname")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.query("select count(c1) from stb where abs(c1+t2)=1 partition by tbname")
|
tdSql.query(f"select count(c1) from {dbname}.stb where abs(c1+t2)=1 partition by tbname")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
|
|
||||||
tdSql.query("select tbname , count(c1) from stb partition by tbname order by tbname")
|
tdSql.query(f"select tbname , count(c1) from {dbname}.stb partition by tbname order by tbname")
|
||||||
tdSql.checkRows(self.tb_nums)
|
tdSql.checkRows(self.tb_nums)
|
||||||
tdSql.checkData(0,1,self.row_nums)
|
tdSql.checkData(0,1,self.row_nums)
|
||||||
|
|
||||||
tdSql.error("select tbname , count(c1) from stb partition by t1 order by t1")
|
tdSql.error(f"select tbname , count(c1) from {dbname}.stb partition by t1 order by t1")
|
||||||
tdSql.error("select tbname , count(t1) from stb partition by t1 order by t1")
|
tdSql.error(f"select tbname , count(t1) from {dbname}.stb partition by t1 order by t1")
|
||||||
tdSql.error("select tbname , count(t1) from stb partition by t2 order by t2")
|
tdSql.error(f"select tbname , count(t1) from {dbname}.stb partition by t2 order by t2")
|
||||||
|
|
||||||
# # bug need fix
|
# # bug need fix
|
||||||
# tdSql.query("select t2 , count(t1) from stb partition by t2 order by t2")
|
# tdSql.query(f"select t2 , count(t1) from {dbname}.stb partition by t2 order by t2")
|
||||||
# tdSql.checkRows(self.tb_nums)
|
# tdSql.checkRows(self.tb_nums)
|
||||||
|
|
||||||
tdSql.query("select tbname , count(c1) from stb partition by tbname order by tbname")
|
tdSql.query(f"select tbname , count(c1) from {dbname}.stb partition by tbname order by tbname")
|
||||||
tdSql.checkRows(self.tb_nums)
|
tdSql.checkRows(self.tb_nums)
|
||||||
tdSql.checkData(0,1,self.row_nums)
|
tdSql.checkData(0,1,self.row_nums)
|
||||||
|
|
||||||
|
|
||||||
tdSql.error("select tbname , count(c1) from stb partition by t2 order by t2")
|
|
||||||
|
|
||||||
tdSql.query("select c2, count(c1) from stb partition by c2 order by c2 desc")
|
tdSql.error(f"select tbname , count(c1) from {dbname}.stb partition by t2 order by t2")
|
||||||
|
|
||||||
|
tdSql.query(f"select c2, count(c1) from {dbname}.stb partition by c2 order by c2 desc")
|
||||||
tdSql.checkRows(self.tb_nums+1)
|
tdSql.checkRows(self.tb_nums+1)
|
||||||
tdSql.checkData(0,1,self.tb_nums)
|
tdSql.checkData(0,1,self.tb_nums)
|
||||||
|
|
||||||
tdSql.error("select tbname , count(c1) from stb partition by c1 order by c2")
|
tdSql.error(f"select tbname , count(c1) from {dbname}.stb partition by c1 order by c2")
|
||||||
|
|
||||||
|
|
||||||
tdSql.query("select tbname , abs(t2) from stb partition by c2 order by t2")
|
tdSql.query(f"select tbname , abs(t2) from {dbname}.stb partition by c2 order by t2")
|
||||||
tdSql.checkRows(self.tb_nums*(self.row_nums+5))
|
tdSql.checkRows(self.tb_nums*(self.row_nums+5))
|
||||||
|
|
||||||
tdSql.query("select count(c1) , count(t2) from stb partition by c2 ")
|
tdSql.query(f"select count(c1) , count(t2) from {dbname}.stb partition by c2 ")
|
||||||
tdSql.checkRows(self.row_nums+1)
|
tdSql.checkRows(self.row_nums+1)
|
||||||
tdSql.checkData(0,1,self.row_nums)
|
tdSql.checkData(0,1,self.row_nums)
|
||||||
|
|
||||||
tdSql.query("select count(c1) , count(t2) ,c2 from stb partition by c2 order by c2")
|
tdSql.query(f"select count(c1) , count(t2) ,c2 from {dbname}.stb partition by c2 order by c2")
|
||||||
tdSql.checkRows(self.row_nums+1)
|
tdSql.checkRows(self.row_nums+1)
|
||||||
|
|
||||||
tdSql.query("select count(c1) , count(t1) ,max(c2) ,tbname from stb partition by tbname order by tbname")
|
tdSql.query(f"select count(c1) , count(t1) ,max(c2) ,tbname from {dbname}.stb partition by tbname order by tbname")
|
||||||
tdSql.checkRows(self.tb_nums)
|
tdSql.checkRows(self.tb_nums)
|
||||||
tdSql.checkCols(4)
|
tdSql.checkCols(4)
|
||||||
|
|
||||||
tdSql.query("select count(c1) , count(t2) ,t1 from stb partition by t1 order by t1")
|
tdSql.query(f"select count(c1) , count(t2) ,t1 from {dbname}.stb partition by t1 order by t1")
|
||||||
tdSql.checkRows(self.tb_nums)
|
tdSql.checkRows(self.tb_nums)
|
||||||
tdSql.checkData(0,0,self.row_nums)
|
tdSql.checkData(0,0,self.row_nums)
|
||||||
|
|
||||||
# bug need fix
|
# bug need fix
|
||||||
# tdSql.query("select count(c1) , count(t1) ,abs(c1) from stb partition by abs(c1) order by abs(c1)")
|
# tdSql.query(f"select count(c1) , count(t1) ,abs(c1) from {dbname}.stb partition by abs(c1) order by abs(c1)")
|
||||||
# tdSql.checkRows(self.row_nums+1)
|
# tdSql.checkRows(self.row_nums+1)
|
||||||
|
|
||||||
|
|
||||||
tdSql.query("select count(ceil(c2)) , count(floor(t2)) ,count(floor(c2)) from stb partition by abs(c2) order by abs(c2)")
|
|
||||||
|
tdSql.query(f"select count(ceil(c2)) , count(floor(t2)) ,count(floor(c2)) from {dbname}.stb partition by abs(c2) order by abs(c2)")
|
||||||
tdSql.checkRows(self.row_nums+1)
|
tdSql.checkRows(self.row_nums+1)
|
||||||
|
|
||||||
|
|
||||||
tdSql.query("select count(ceil(c1-2)) , count(floor(t2+1)) ,max(c2-c1) from stb partition by abs(floor(c1)) order by abs(floor(c1))")
|
tdSql.query(f"select count(ceil(c1-2)) , count(floor(t2+1)) ,max(c2-c1) from {dbname}.stb partition by abs(floor(c1)) order by abs(floor(c1))")
|
||||||
tdSql.checkRows(self.row_nums+1)
|
tdSql.checkRows(self.row_nums+1)
|
||||||
|
|
||||||
|
|
||||||
# interval
|
|
||||||
tdSql.query("select count(c1) from stb interval(2s) sliding(1s)")
|
# interval
|
||||||
|
tdSql.query(f"select count(c1) from {dbname}.stb interval(2s) sliding(1s)")
|
||||||
|
|
||||||
# bug need fix
|
# bug need fix
|
||||||
|
|
||||||
tdSql.query('select max(c1) from stb where ts>="2022-07-06 16:00:00.000 " and ts < "2022-07-06 17:00:00.000 " interval(50s) sliding(30s) fill(NULL)')
|
tdSql.query(f'select max(c1) from {dbname}.stb where ts>="2022-07-06 16:00:00.000 " and ts < "2022-07-06 17:00:00.000 " interval(50s) sliding(30s) fill(NULL)')
|
||||||
|
|
||||||
tdSql.query(" select tbname , count(c1) from stb partition by tbname interval(10s) slimit 5 soffset 1 ")
|
tdSql.query(f"select tbname , count(c1) from {dbname}.stb partition by tbname interval(10s) slimit 5 soffset 1 ")
|
||||||
|
|
||||||
tdSql.query("select tbname , count(c1) from stb partition by tbname interval(10s)")
|
tdSql.query(f"select tbname , count(c1) from {dbname}.stb partition by tbname interval(10s)")
|
||||||
|
|
||||||
tdSql.query("select tbname , count(c1) from sub_stb_1 partition by tbname interval(10s)")
|
tdSql.query(f"select tbname , count(c1) from {dbname}.sub_stb_1 partition by tbname interval(10s)")
|
||||||
tdSql.checkData(0,0,'sub_stb_1')
|
tdSql.checkData(0,0,'sub_stb_1')
|
||||||
tdSql.checkData(0,1,self.row_nums)
|
tdSql.checkData(0,1,self.row_nums)
|
||||||
|
|
||||||
# tdSql.query(" select tbname , count(c1) from stb partition by tbname order by tbname slimit 5 soffset 0 ")
|
# tdSql.query(f"select tbname , count(c1) from {dbname}.stb partition by tbname order by tbname slimit 5 soffset 0 ")
|
||||||
# tdSql.checkRows(5)
|
# tdSql.checkRows(5)
|
||||||
|
|
||||||
# tdSql.query(" select tbname , count(c1) from stb partition by tbname order by tbname slimit 5 soffset 1 ")
|
# tdSql.query(f"select tbname , count(c1) from {dbname}.stb partition by tbname order by tbname slimit 5 soffset 1 ")
|
||||||
# tdSql.checkRows(5)
|
# tdSql.checkRows(5)
|
||||||
|
|
||||||
tdSql.query(" select tbname , count(c1) from sub_stb_1 partition by tbname interval(10s) sliding(5s) ")
|
tdSql.query(f"select tbname , count(c1) from {dbname}.sub_stb_1 partition by tbname interval(10s) sliding(5s) ")
|
||||||
|
|
||||||
tdSql.query(f'select max(c1) from stb where ts>={self.ts} and ts < {self.ts}+10000 partition by tbname interval(50s) sliding(30s)')
|
tdSql.query(f'select max(c1) from {dbname}.stb where ts>={self.ts} and ts < {self.ts}+10000 partition by tbname interval(50s) sliding(30s)')
|
||||||
tdSql.query(f'select max(c1) from stb where ts>={self.ts} and ts < {self.ts}+10000 interval(50s) sliding(30s)')
|
tdSql.query(f'select max(c1) from {dbname}.stb where ts>={self.ts} and ts < {self.ts}+10000 interval(50s) sliding(30s)')
|
||||||
tdSql.query(f'select tbname , count(c1) from stb where ts>={self.ts} and ts < {self.ts}+10000 partition by tbname interval(50s) sliding(30s)')
|
tdSql.query(f'select tbname , count(c1) from {dbname}.stb where ts>={self.ts} and ts < {self.ts}+10000 partition by tbname interval(50s) sliding(30s)')
|
||||||
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
tdSql.prepare()
|
tdSql.prepare()
|
||||||
self.prepare_datas("stb",self.tb_nums,self.row_nums)
|
self.prepare_datas("stb",self.tb_nums,self.row_nums)
|
||||||
self.basic_query()
|
self.basic_query()
|
||||||
|
dbname="db"
|
||||||
|
|
||||||
|
# # coverage case for taosd crash about bug fix
|
||||||
|
tdSql.query(f"select sum(c1) from {dbname}.stb where t2+10 >1 ")
|
||||||
|
tdSql.query(f"select count(c1),count(t1) from {dbname}.stb where -t2<1 ")
|
||||||
|
tdSql.query(f"select tbname ,max(ceil(c1)) from {dbname}.stb group by tbname ")
|
||||||
|
tdSql.query(f"select avg(abs(c1)) , tbname from {dbname}.stb group by tbname ")
|
||||||
|
tdSql.query(f"select t1,c1 from {dbname}.stb where abs(t2+c1)=1 ")
|
||||||
|
|
||||||
# # coverage case for taosd crash about bug fix
|
|
||||||
tdSql.query(" select sum(c1) from stb where t2+10 >1 ")
|
|
||||||
tdSql.query(" select count(c1),count(t1) from stb where -t2<1 ")
|
|
||||||
tdSql.query(" select tbname ,max(ceil(c1)) from stb group by tbname ")
|
|
||||||
tdSql.query(" select avg(abs(c1)) , tbname from stb group by tbname ")
|
|
||||||
tdSql.query(" select t1,c1 from stb where abs(t2+c1)=1 ")
|
|
||||||
|
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
tdSql.close()
|
tdSql.close()
|
||||||
tdLog.success("%s successfully executed" % __file__)
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
|
@ -10,9 +10,6 @@ import random
|
||||||
|
|
||||||
|
|
||||||
class TDTestCase:
|
class TDTestCase:
|
||||||
updatecfgDict = {'debugFlag': 143, "cDebugFlag": 143, "uDebugFlag": 143, "rpcDebugFlag": 143, "tmrDebugFlag": 143,
|
|
||||||
"jniDebugFlag": 143, "simDebugFlag": 143, "dDebugFlag": 143, "dDebugFlag": 143, "vDebugFlag": 143, "mDebugFlag": 143, "qDebugFlag": 143,
|
|
||||||
"wDebugFlag": 143, "sDebugFlag": 143, "tsdbDebugFlag": 143, "tqDebugFlag": 143, "fsDebugFlag": 143, "udfDebugFlag": 143}
|
|
||||||
|
|
||||||
def init(self, conn, logSql):
|
def init(self, conn, logSql):
|
||||||
tdLog.debug(f"start to excute {__file__}")
|
tdLog.debug(f"start to excute {__file__}")
|
||||||
|
@ -26,22 +23,22 @@ class TDTestCase:
|
||||||
tdSql.execute("create table dbms.ntb (ts timestamp, c1 int, c2 bigint)")
|
tdSql.execute("create table dbms.ntb (ts timestamp, c1 int, c2 bigint)")
|
||||||
tdSql.execute("create table dbus.ntb (ts timestamp, c1 int, c2 bigint)")
|
tdSql.execute("create table dbus.ntb (ts timestamp, c1 int, c2 bigint)")
|
||||||
tdSql.execute("create table dbns.ntb (ts timestamp, c1 int, c2 bigint)")
|
tdSql.execute("create table dbns.ntb (ts timestamp, c1 int, c2 bigint)")
|
||||||
|
|
||||||
tdSql.execute("insert into dbms.ntb values ('2022-01-01 08:00:00.001', 1, 2)")
|
tdSql.execute("insert into dbms.ntb values ('2022-01-01 08:00:00.001', 1, 2)")
|
||||||
tdSql.execute("insert into dbms.ntb values ('2022-01-01 08:00:00.002', 3, 4)")
|
tdSql.execute("insert into dbms.ntb values ('2022-01-01 08:00:00.002', 3, 4)")
|
||||||
|
|
||||||
tdSql.execute("insert into dbus.ntb values ('2022-01-01 08:00:00.000001', 1, 2)")
|
tdSql.execute("insert into dbus.ntb values ('2022-01-01 08:00:00.000001', 1, 2)")
|
||||||
tdSql.execute("insert into dbus.ntb values ('2022-01-01 08:00:00.000002', 3, 4)")
|
tdSql.execute("insert into dbus.ntb values ('2022-01-01 08:00:00.000002', 3, 4)")
|
||||||
|
|
||||||
tdSql.execute("insert into dbns.ntb values ('2022-01-01 08:00:00.000000001', 1, 2)")
|
tdSql.execute("insert into dbns.ntb values ('2022-01-01 08:00:00.000000001', 1, 2)")
|
||||||
tdSql.execute("insert into dbns.ntb values ('2022-01-01 08:00:00.000000002', 3, 4)")
|
tdSql.execute("insert into dbns.ntb values ('2022-01-01 08:00:00.000000002', 3, 4)")
|
||||||
|
|
||||||
tdSql.query("select count(c1) from dbms.ntb interval(1a)")
|
tdSql.query("select count(c1) from dbms.ntb interval(1a)")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
|
|
||||||
tdSql.query("select count(c1) from dbus.ntb interval(1u)")
|
tdSql.query("select count(c1) from dbus.ntb interval(1u)")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
|
|
||||||
tdSql.query("select count(c1) from dbns.ntb interval(1b)")
|
tdSql.query("select count(c1) from dbns.ntb interval(1b)")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
|
|
||||||
|
|
|
@ -18,188 +18,117 @@ class TDTestCase:
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
tdSql.prepare()
|
tdSql.prepare()
|
||||||
|
dbname = "db"
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
"create table ntb(ts timestamp,c1 int,c2 double,c3 float)")
|
f"create table {dbname}.ntb(ts timestamp,c1 int,c2 double,c3 float)")
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
"insert into ntb values(now,1,1.0,10.5)(now+1s,10,-100.0,5.1)(now+10s,-1,15.1,5.0)")
|
f"insert into {dbname}.ntb values(now,1,1.0,10.5)(now+1s,10,-100.0,5.1)(now+10s,-1,15.1,5.0)")
|
||||||
|
|
||||||
tdSql.query("select diff(c1,0) from ntb")
|
tdSql.query(f"select diff(c1,0) from {dbname}.ntb")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.checkData(0, 0, 9)
|
tdSql.checkData(0, 0, 9)
|
||||||
tdSql.checkData(1, 0, -11)
|
tdSql.checkData(1, 0, -11)
|
||||||
tdSql.query("select diff(c1,1) from ntb")
|
tdSql.query(f"select diff(c1,1) from {dbname}.ntb")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.checkData(0, 0, 9)
|
tdSql.checkData(0, 0, 9)
|
||||||
tdSql.checkData(1, 0, None)
|
tdSql.checkData(1, 0, None)
|
||||||
|
|
||||||
tdSql.query("select diff(c2,0) from ntb")
|
tdSql.query(f"select diff(c2,0) from {dbname}.ntb")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.checkData(0, 0, -101)
|
tdSql.checkData(0, 0, -101)
|
||||||
tdSql.checkData(1, 0, 115.1)
|
tdSql.checkData(1, 0, 115.1)
|
||||||
tdSql.query("select diff(c2,1) from ntb")
|
tdSql.query(f"select diff(c2,1) from {dbname}.ntb")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.checkData(0, 0, None)
|
tdSql.checkData(0, 0, None)
|
||||||
tdSql.checkData(1, 0, 115.1)
|
tdSql.checkData(1, 0, 115.1)
|
||||||
|
|
||||||
tdSql.query("select diff(c3,0) from ntb")
|
tdSql.query(f"select diff(c3,0) from {dbname}.ntb")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.checkData(0, 0, -5.4)
|
tdSql.checkData(0, 0, -5.4)
|
||||||
tdSql.checkData(1, 0, -0.1)
|
tdSql.checkData(1, 0, -0.1)
|
||||||
tdSql.query("select diff(c3,1) from ntb")
|
tdSql.query(f"select diff(c3,1) from {dbname}.ntb")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.checkData(0, 0, None)
|
tdSql.checkData(0, 0, None)
|
||||||
tdSql.checkData(1, 0, None)
|
tdSql.checkData(1, 0, None)
|
||||||
|
|
||||||
tdSql.execute('''create table stb(ts timestamp, col1 tinyint, col2 smallint, col3 int, col4 bigint, col5 float, col6 double,
|
tdSql.execute(f'''create table {dbname}.stb(ts timestamp, col1 tinyint, col2 smallint, col3 int, col4 bigint, col5 float, col6 double,
|
||||||
col7 bool, col8 binary(20), col9 nchar(20), col11 tinyint unsigned, col12 smallint unsigned, col13 int unsigned, col14 bigint unsigned) tags(loc nchar(20))''')
|
col7 bool, col8 binary(20), col9 nchar(20), col11 tinyint unsigned, col12 smallint unsigned, col13 int unsigned, col14 bigint unsigned) tags(loc nchar(20))''')
|
||||||
tdSql.execute("create table stb_1 using stb tags('beijing')")
|
tdSql.execute(f"create table {dbname}.stb_1 using {dbname}.stb tags('beijing')")
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
"insert into stb_1 values(%d, 0, 0, 0, 0, 0.0, 0.0, False, ' ', ' ', 0, 0, 0, 0)" % (self.ts - 1))
|
f"insert into {dbname}.stb_1 values(%d, 0, 0, 0, 0, 0.0, 0.0, False, ' ', ' ', 0, 0, 0, 0)" % (self.ts - 1))
|
||||||
|
|
||||||
# diff verifacation
|
# diff verifacation
|
||||||
tdSql.query("select diff(col1) from stb_1")
|
tdSql.query(f"select diff(col1) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
tdSql.query("select diff(col2) from stb_1")
|
tdSql.query(f"select diff(col2) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
tdSql.query("select diff(col3) from stb_1")
|
tdSql.query(f"select diff(col3) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
tdSql.query("select diff(col4) from stb_1")
|
tdSql.query(f"select diff(col4) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
tdSql.query("select diff(col5) from stb_1")
|
tdSql.query(f"select diff(col5) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
tdSql.query("select diff(col6) from stb_1")
|
tdSql.query(f"select diff(col6) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
tdSql.query("select diff(col7) from stb_1")
|
tdSql.query(f"select diff(col7) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
for i in range(self.rowNum):
|
for i in range(self.rowNum):
|
||||||
tdSql.execute("insert into stb_1 values(%d, %d, %d, %d, %d, %f, %f, %d, 'taosdata%d', '涛思数据%d', %d, %d, %d, %d)"
|
tdSql.execute(f"insert into {dbname}.stb_1 values(%d, %d, %d, %d, %d, %f, %f, %d, 'taosdata%d', '涛思数据%d', %d, %d, %d, %d)"
|
||||||
% (self.ts + i, i + 1, i + 1, i + 1, i + 1, i + 0.1, i + 0.1, i % 2, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1))
|
% (self.ts + i, i + 1, i + 1, i + 1, i + 1, i + 0.1, i + 0.1, i % 2, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1))
|
||||||
|
|
||||||
tdSql.error("select diff(ts) from stb")
|
tdSql.error(f"select diff(ts) from {dbname}.stb")
|
||||||
tdSql.error("select diff(ts) from stb_1")
|
tdSql.error(f"select diff(ts) from {dbname}.stb_1")
|
||||||
|
|
||||||
# tdSql.error("select diff(col7) from stb")
|
# tdSql.error(f"select diff(col7) from {dbname}.stb")
|
||||||
|
|
||||||
tdSql.error("select diff(col8) from stb")
|
tdSql.error(f"select diff(col8) from {dbname}.stb")
|
||||||
tdSql.error("select diff(col8) from stb_1")
|
tdSql.error(f"select diff(col8) from {dbname}.stb_1")
|
||||||
tdSql.error("select diff(col9) from stb")
|
tdSql.error(f"select diff(col9) from {dbname}.stb")
|
||||||
tdSql.error("select diff(col9) from stb_1")
|
tdSql.error(f"select diff(col9) from {dbname}.stb_1")
|
||||||
tdSql.error("select diff(col11) from stb_1")
|
tdSql.error(f"select diff(col11) from {dbname}.stb_1")
|
||||||
tdSql.error("select diff(col12) from stb_1")
|
tdSql.error(f"select diff(col12) from {dbname}.stb_1")
|
||||||
tdSql.error("select diff(col13) from stb_1")
|
tdSql.error(f"select diff(col13) from {dbname}.stb_1")
|
||||||
tdSql.error("select diff(col14) from stb_1")
|
tdSql.error(f"select diff(col14) from {dbname}.stb_1")
|
||||||
|
tdSql.query(f"select ts,diff(col1),ts from {dbname}.stb_1")
|
||||||
|
|
||||||
tdSql.query("select diff(col1) from stb_1")
|
tdSql.query(f"select diff(col1) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(10)
|
tdSql.checkRows(10)
|
||||||
|
|
||||||
tdSql.query("select diff(col2) from stb_1")
|
tdSql.query(f"select diff(col2) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(10)
|
tdSql.checkRows(10)
|
||||||
|
|
||||||
tdSql.query("select diff(col3) from stb_1")
|
tdSql.query(f"select diff(col3) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(10)
|
tdSql.checkRows(10)
|
||||||
|
|
||||||
tdSql.query("select diff(col4) from stb_1")
|
tdSql.query(f"select diff(col4) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(10)
|
tdSql.checkRows(10)
|
||||||
|
|
||||||
tdSql.query("select diff(col5) from stb_1")
|
tdSql.query(f"select diff(col5) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(10)
|
tdSql.checkRows(10)
|
||||||
|
|
||||||
tdSql.query("select diff(col6) from stb_1")
|
tdSql.query(f"select diff(col6) from {dbname}.stb_1")
|
||||||
tdSql.checkRows(10)
|
tdSql.checkRows(10)
|
||||||
|
|
||||||
# check selectivity
|
tdSql.execute(f'''create table {dbname}.stb1(ts timestamp, col1 tinyint, col2 smallint, col3 int, col4 bigint, col5 float, col6 double,
|
||||||
tdSql.query("select ts, diff(col1), col2 from stb_1")
|
|
||||||
tdSql.checkRows(10)
|
|
||||||
tdSql.checkData(0, 0, "2018-09-17 09:00:00.000")
|
|
||||||
tdSql.checkData(1, 0, "2018-09-17 09:00:00.001")
|
|
||||||
tdSql.checkData(2, 0, "2018-09-17 09:00:00.002")
|
|
||||||
tdSql.checkData(3, 0, "2018-09-17 09:00:00.003")
|
|
||||||
tdSql.checkData(4, 0, "2018-09-17 09:00:00.004")
|
|
||||||
tdSql.checkData(5, 0, "2018-09-17 09:00:00.005")
|
|
||||||
tdSql.checkData(6, 0, "2018-09-17 09:00:00.006")
|
|
||||||
tdSql.checkData(7, 0, "2018-09-17 09:00:00.007")
|
|
||||||
tdSql.checkData(8, 0, "2018-09-17 09:00:00.008")
|
|
||||||
tdSql.checkData(9, 0, "2018-09-17 09:00:00.009")
|
|
||||||
|
|
||||||
tdSql.checkData(0, 1, 1)
|
|
||||||
tdSql.checkData(1, 1, 1)
|
|
||||||
tdSql.checkData(2, 1, 1)
|
|
||||||
tdSql.checkData(3, 1, 1)
|
|
||||||
tdSql.checkData(4, 1, 1)
|
|
||||||
tdSql.checkData(5, 1, 1)
|
|
||||||
tdSql.checkData(6, 1, 1)
|
|
||||||
tdSql.checkData(7, 1, 1)
|
|
||||||
tdSql.checkData(8, 1, 1)
|
|
||||||
tdSql.checkData(9, 1, 1)
|
|
||||||
|
|
||||||
tdSql.checkData(0, 2, 0)
|
|
||||||
tdSql.checkData(1, 2, 1)
|
|
||||||
tdSql.checkData(2, 2, 2)
|
|
||||||
tdSql.checkData(3, 2, 3)
|
|
||||||
tdSql.checkData(4, 2, 4)
|
|
||||||
tdSql.checkData(5, 2, 5)
|
|
||||||
tdSql.checkData(6, 2, 6)
|
|
||||||
tdSql.checkData(7, 2, 7)
|
|
||||||
tdSql.checkData(8, 2, 8)
|
|
||||||
tdSql.checkData(9, 2, 9)
|
|
||||||
|
|
||||||
tdSql.query("select ts, diff(col1), col2 from stb order by ts")
|
|
||||||
tdSql.checkRows(10)
|
|
||||||
|
|
||||||
tdSql.checkData(0, 0, "2018-09-17 09:00:00.000")
|
|
||||||
tdSql.checkData(1, 0, "2018-09-17 09:00:00.001")
|
|
||||||
tdSql.checkData(2, 0, "2018-09-17 09:00:00.002")
|
|
||||||
tdSql.checkData(3, 0, "2018-09-17 09:00:00.003")
|
|
||||||
tdSql.checkData(4, 0, "2018-09-17 09:00:00.004")
|
|
||||||
tdSql.checkData(5, 0, "2018-09-17 09:00:00.005")
|
|
||||||
tdSql.checkData(6, 0, "2018-09-17 09:00:00.006")
|
|
||||||
tdSql.checkData(7, 0, "2018-09-17 09:00:00.007")
|
|
||||||
tdSql.checkData(8, 0, "2018-09-17 09:00:00.008")
|
|
||||||
tdSql.checkData(9, 0, "2018-09-17 09:00:00.009")
|
|
||||||
|
|
||||||
tdSql.checkData(0, 1, 1)
|
|
||||||
tdSql.checkData(1, 1, 1)
|
|
||||||
tdSql.checkData(2, 1, 1)
|
|
||||||
tdSql.checkData(3, 1, 1)
|
|
||||||
tdSql.checkData(4, 1, 1)
|
|
||||||
tdSql.checkData(5, 1, 1)
|
|
||||||
tdSql.checkData(6, 1, 1)
|
|
||||||
tdSql.checkData(7, 1, 1)
|
|
||||||
tdSql.checkData(8, 1, 1)
|
|
||||||
tdSql.checkData(9, 1, 1)
|
|
||||||
|
|
||||||
tdSql.checkData(0, 2, 0)
|
|
||||||
tdSql.checkData(1, 2, 1)
|
|
||||||
tdSql.checkData(2, 2, 2)
|
|
||||||
tdSql.checkData(3, 2, 3)
|
|
||||||
tdSql.checkData(4, 2, 4)
|
|
||||||
tdSql.checkData(5, 2, 5)
|
|
||||||
tdSql.checkData(6, 2, 6)
|
|
||||||
tdSql.checkData(7, 2, 7)
|
|
||||||
tdSql.checkData(8, 2, 8)
|
|
||||||
tdSql.checkData(9, 2, 9)
|
|
||||||
|
|
||||||
|
|
||||||
tdSql.execute('''create table stb1(ts timestamp, col1 tinyint, col2 smallint, col3 int, col4 bigint, col5 float, col6 double,
|
|
||||||
col7 bool, col8 binary(20), col9 nchar(20), col11 tinyint unsigned, col12 smallint unsigned, col13 int unsigned, col14 bigint unsigned) tags(loc nchar(20))''')
|
col7 bool, col8 binary(20), col9 nchar(20), col11 tinyint unsigned, col12 smallint unsigned, col13 int unsigned, col14 bigint unsigned) tags(loc nchar(20))''')
|
||||||
tdSql.execute("create table stb1_1 using stb tags('shanghai')")
|
tdSql.execute(f"create table {dbname}.stb1_1 using {dbname}.stb tags('shanghai')")
|
||||||
|
|
||||||
for i in range(self.rowNum):
|
for i in range(self.rowNum):
|
||||||
tdSql.execute("insert into stb1_1 values(%d, %d, %d, %d, %d, %f, %f, %d, 'taosdata%d', '涛思数据%d', %d, %d, %d, %d)"
|
tdSql.execute(f"insert into {dbname}.stb1_1 values(%d, %d, %d, %d, %d, %f, %f, %d, 'taosdata%d', '涛思数据%d', %d, %d, %d, %d)"
|
||||||
% (self.ts + i, i + 1, i + 1, i + 1, i + 1, i + 0.1, i + 0.1, i % 2, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1))
|
% (self.ts + i, i + 1, i + 1, i + 1, i + 1, i + 0.1, i + 0.1, i % 2, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1))
|
||||||
for i in range(self.rowNum):
|
for i in range(self.rowNum):
|
||||||
tdSql.execute("insert into stb1_1 values(%d, %d, %d, %d, %d, %f, %f, %d, 'taosdata%d', '涛思数据%d', %d, %d, %d, %d)"
|
tdSql.execute(f"insert into {dbname}.stb1_1 values(%d, %d, %d, %d, %d, %f, %f, %d, 'taosdata%d', '涛思数据%d', %d, %d, %d, %d)"
|
||||||
% (self.ts - i-1, i-1, i-1, i-1, i-1, -i - 0.1, -i - 0.1, -i % 2, i - 1, i - 1, i + 1, i + 1, i + 1, i + 1))
|
% (self.ts - i-1, i-1, i-1, i-1, i-1, -i - 0.1, -i - 0.1, -i % 2, i - 1, i - 1, i + 1, i + 1, i + 1, i + 1))
|
||||||
tdSql.query("select diff(col1,0) from stb1_1")
|
tdSql.query(f"select diff(col1,0) from {dbname}.stb1_1")
|
||||||
tdSql.checkRows(19)
|
tdSql.checkRows(19)
|
||||||
tdSql.query("select diff(col1,1) from stb1_1")
|
tdSql.query(f"select diff(col1,1) from {dbname}.stb1_1")
|
||||||
tdSql.checkRows(19)
|
tdSql.checkRows(19)
|
||||||
tdSql.checkData(0,0,None)
|
tdSql.checkData(0,0,None)
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,8 @@ class TDTestCase:
|
||||||
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
||||||
tdSql.prepare()
|
tdSql.prepare()
|
||||||
|
|
||||||
|
dbname = "db"
|
||||||
|
|
||||||
tdLog.printNoPrefix("==========step1:create table")
|
tdLog.printNoPrefix("==========step1:create table")
|
||||||
tdSql.execute("create stable db.stb1 (ts timestamp, c1 int, c2 int) tags(t0 tinyint, t1 int, t2 int)")
|
tdSql.execute("create stable db.stb1 (ts timestamp, c1 int, c2 int) tags(t0 tinyint, t1 int, t2 int)")
|
||||||
tdSql.execute("create stable db.stb2 (ts timestamp, c2 int, c3 binary(16)) tags(t2 binary(16), t3 binary(16), t4 int)")
|
tdSql.execute("create stable db.stb2 (ts timestamp, c2 int, c3 binary(16)) tags(t2 binary(16), t3 binary(16), t4 int)")
|
||||||
|
@ -34,223 +36,224 @@ class TDTestCase:
|
||||||
tdSql.execute(f"insert into db.t0{i} values (now-9d, {i}, '{(i+2)%3}')")
|
tdSql.execute(f"insert into db.t0{i} values (now-9d, {i}, '{(i+2)%3}')")
|
||||||
tdSql.execute(f"insert into db.t0{i} values (now-8d, {i}, '{(i)%3}')")
|
tdSql.execute(f"insert into db.t0{i} values (now-8d, {i}, '{(i)%3}')")
|
||||||
tdSql.execute(f"insert into db.t0{i} (ts )values (now-7d)")
|
tdSql.execute(f"insert into db.t0{i} (ts )values (now-7d)")
|
||||||
# tdSql.execute("create table db.t100num using db.stb1 tags(null, null, null)")
|
tdSql.execute("create table db.t100num using db.stb1 tags(null, null, null)")
|
||||||
# tdSql.execute("create table db.t0100num using db.stb2 tags(null, null, null)")
|
tdSql.execute("create table db.t0100num using db.stb2 tags(null, null, null)")
|
||||||
# tdSql.execute(f"insert into db.t100num values (now-10d, {tbnum-1}, 1)")
|
tdSql.execute(f"insert into db.t100num values (now-10d, {tbnum-1}, 1)")
|
||||||
# tdSql.execute(f"insert into db.t100num values (now-9d, {tbnum-1}, 0)")
|
tdSql.execute(f"insert into db.t100num values (now-9d, {tbnum-1}, 0)")
|
||||||
# tdSql.execute(f"insert into db.t100num values (now-8d, {tbnum-1}, 2)")
|
tdSql.execute(f"insert into db.t100num values (now-8d, {tbnum-1}, 2)")
|
||||||
# tdSql.execute(f"insert into db.t100num (ts )values (now-7d)")
|
tdSql.execute(f"insert into db.t100num (ts )values (now-7d)")
|
||||||
# tdSql.execute(f"insert into db.t0100num values (now-10d, {tbnum-1}, 1)")
|
tdSql.execute(f"insert into db.t0100num values (now-10d, {tbnum-1}, 1)")
|
||||||
# tdSql.execute(f"insert into db.t0100num values (now-9d, {tbnum-1}, 0)")
|
tdSql.execute(f"insert into db.t0100num values (now-9d, {tbnum-1}, 0)")
|
||||||
# tdSql.execute(f"insert into db.t0100num values (now-8d, {tbnum-1}, 2)")
|
tdSql.execute(f"insert into db.t0100num values (now-8d, {tbnum-1}, 2)")
|
||||||
# tdSql.execute(f"insert into db.t0100num (ts )values (now-7d)")
|
tdSql.execute(f"insert into db.t0100num (ts )values (now-7d)")
|
||||||
|
|
||||||
#========== distinct multi-data-coloumn ==========
|
# #========== distinct multi-data-coloumn ==========
|
||||||
# tdSql.query(f"select distinct c1 from stb1 where c1 <{tbnum}")
|
tdSql.query(f"select distinct c1 from {dbname}.stb1 where c1 <{tbnum}")
|
||||||
# tdSql.checkRows(tbnum)
|
tdSql.checkRows(tbnum)
|
||||||
# tdSql.query(f"select distinct c2 from stb1")
|
tdSql.query(f"select distinct c2 from {dbname}.stb1")
|
||||||
# tdSql.checkRows(4)
|
|
||||||
# tdSql.query(f"select distinct c1,c2 from stb1 where c1 <{tbnum}")
|
|
||||||
# tdSql.checkRows(tbnum*3)
|
|
||||||
# tdSql.query(f"select distinct c1,c1 from stb1 where c1 <{tbnum}")
|
|
||||||
# tdSql.checkRows(tbnum)
|
|
||||||
# tdSql.query(f"select distinct c1,c2 from stb1 where c1 <{tbnum} limit 3")
|
|
||||||
# tdSql.checkRows(3)
|
|
||||||
# tdSql.query(f"select distinct c1,c2 from stb1 where c1 <{tbnum} limit 3 offset {tbnum*3-2}")
|
|
||||||
# tdSql.checkRows(2)
|
|
||||||
|
|
||||||
tdSql.query(f"select distinct c1 from t1 where c1 <{tbnum}")
|
|
||||||
tdSql.checkRows(1)
|
|
||||||
tdSql.query(f"select distinct c2 from t1")
|
|
||||||
tdSql.checkRows(4)
|
tdSql.checkRows(4)
|
||||||
tdSql.query(f"select distinct c1,c2 from t1 where c1 <{tbnum}")
|
tdSql.query(f"select distinct c1,c2 from {dbname}.stb1 where c1 <{tbnum}")
|
||||||
|
tdSql.checkRows(tbnum*3)
|
||||||
|
tdSql.query(f"select distinct c1,c1 from {dbname}.stb1 where c1 <{tbnum}")
|
||||||
|
tdSql.checkRows(tbnum)
|
||||||
|
tdSql.query(f"select distinct c1,c2 from {dbname}.stb1 where c1 <{tbnum} limit 3")
|
||||||
tdSql.checkRows(3)
|
tdSql.checkRows(3)
|
||||||
tdSql.query(f"select distinct c1,c1 from t1 ")
|
tdSql.query(f"select distinct c1,c2 from {dbname}.stb1 where c1 <{tbnum} limit 3 offset {tbnum*3-2}")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.query(f"select distinct c1,c1 from t1 where c1 <{tbnum}")
|
|
||||||
|
tdSql.query(f"select distinct c1 from {dbname}.t1 where c1 <{tbnum}")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.query(f"select distinct c1,c2 from t1 where c1 <{tbnum} limit 3")
|
tdSql.query(f"select distinct c2 from {dbname}.t1")
|
||||||
|
tdSql.checkRows(4)
|
||||||
|
tdSql.query(f"select distinct c1,c2 from {dbname}.t1 where c1 <{tbnum}")
|
||||||
tdSql.checkRows(3)
|
tdSql.checkRows(3)
|
||||||
tdSql.query(f"select distinct c1,c2 from t1 where c1 <{tbnum} limit 3 offset 2")
|
tdSql.query(f"select distinct c1,c1 from {dbname}.t1 ")
|
||||||
|
tdSql.checkRows(2)
|
||||||
|
tdSql.query(f"select distinct c1,c1 from {dbname}.t1 where c1 <{tbnum}")
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.query(f"select distinct c1,c2 from {dbname}.t1 where c1 <{tbnum} limit 3")
|
||||||
|
tdSql.checkRows(3)
|
||||||
|
tdSql.query(f"select distinct c1,c2 from {dbname}.t1 where c1 <{tbnum} limit 3 offset 2")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
|
|
||||||
# tdSql.query(f"select distinct c3 from stb2 where c2 <{tbnum} ")
|
# tdSql.query(f"select distinct c3 from {dbname}.stb2 where c2 <{tbnum} ")
|
||||||
# tdSql.checkRows(3)
|
# tdSql.checkRows(3)
|
||||||
# tdSql.query(f"select distinct c3, c2 from stb2 where c2 <{tbnum} limit 2")
|
# tdSql.query(f"select distinct c3, c2 from {dbname}.stb2 where c2 <{tbnum} limit 2")
|
||||||
# tdSql.checkRows(2)
|
# tdSql.checkRows(2)
|
||||||
|
|
||||||
# tdSql.error("select distinct c5 from stb1")
|
# tdSql.error(f"select distinct c5 from {dbname}.stb1")
|
||||||
tdSql.error("select distinct c5 from t1")
|
tdSql.error(f"select distinct c5 from {dbname}.t1")
|
||||||
tdSql.error("select distinct c1 from db.*")
|
tdSql.error(f"select distinct c1 from db.*")
|
||||||
tdSql.error("select c2, distinct c1 from stb1")
|
tdSql.error(f"select c2, distinct c1 from {dbname}.stb1")
|
||||||
tdSql.error("select c2, distinct c1 from t1")
|
tdSql.error(f"select c2, distinct c1 from {dbname}.t1")
|
||||||
tdSql.error("select distinct c2 from ")
|
tdSql.error(f"select distinct c2 from ")
|
||||||
tdSql.error("distinct c2 from stb1")
|
tdSql.error("distinct c2 from {dbname}.stb1")
|
||||||
tdSql.error("distinct c2 from t1")
|
tdSql.error("distinct c2 from {dbname}.t1")
|
||||||
tdSql.error("select distinct c1, c2, c3 from stb1")
|
tdSql.error(f"select distinct c1, c2, c3 from {dbname}.stb1")
|
||||||
tdSql.error("select distinct c1, c2, c3 from t1")
|
tdSql.error(f"select distinct c1, c2, c3 from {dbname}.t1")
|
||||||
tdSql.error("select distinct stb1.c1, stb1.c2, stb2.c2, stb2.c3 from stb1")
|
tdSql.error(f"select distinct stb1.c1, stb1.c2, stb2.c2, stb2.c3 from {dbname}.stb1")
|
||||||
tdSql.error("select distinct stb1.c1, stb1.c2, stb2.c2, stb2.c3 from t1")
|
tdSql.error(f"select distinct stb1.c1, stb1.c2, stb2.c2, stb2.c3 from {dbname}.t1")
|
||||||
tdSql.error("select distinct t1.c1, t1.c2, t2.c1, t2.c2 from t1")
|
tdSql.error(f"select distinct t1.c1, t1.c2, t2.c1, t2.c2 from {dbname}.t1")
|
||||||
# tdSql.query(f"select distinct c1 c2, c2 c3 from stb1 where c1 <{tbnum}")
|
tdSql.query(f"select distinct c1 c2, c2 c3 from {dbname}.stb1 where c1 <{tbnum}")
|
||||||
# tdSql.checkRows(tbnum*3)
|
tdSql.checkRows(tbnum*3)
|
||||||
tdSql.query(f"select distinct c1 c2, c2 c3 from t1 where c1 <{tbnum}")
|
tdSql.query(f"select distinct c1 c2, c2 c3 from {dbname}.t1 where c1 <{tbnum}")
|
||||||
tdSql.checkRows(3)
|
tdSql.checkRows(3)
|
||||||
# tdSql.error("select distinct c1, c2 from stb1 order by ts")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.stb1 order by ts")
|
||||||
tdSql.error("select distinct c1, c2 from t1 order by ts")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.t1 order by ts")
|
||||||
# tdSql.error("select distinct c1, ts from stb1 group by c2")
|
tdSql.error(f"select distinct c1, ts from {dbname}.stb1 group by c2")
|
||||||
tdSql.error("select distinct c1, ts from t1 group by c2")
|
tdSql.error(f"select distinct c1, ts from {dbname}.t1 group by c2")
|
||||||
# tdSql.error("select distinct c1, max(c2) from stb1 ")
|
tdSql.query(f"select distinct c1, max(c2) from {dbname}.stb1 ")
|
||||||
# tdSql.error("select distinct c1, max(c2) from t1 ")
|
tdSql.query(f"select distinct c1, max(c2) from {dbname}.t1 ")
|
||||||
# tdSql.error("select max(c2), distinct c1 from stb1 ")
|
tdSql.error(f"select max(c2), distinct c1 from {dbname}.stb1 ")
|
||||||
tdSql.error("select max(c2), distinct c1 from t1 ")
|
tdSql.error(f"select max(c2), distinct c1 from {dbname}.t1 ")
|
||||||
# tdSql.error("select distinct c1, c2 from stb1 where c1 > 3 group by t0")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.stb1 where c1 > 3 group by t0")
|
||||||
tdSql.error("select distinct c1, c2 from t1 where c1 > 3 group by t0")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.t1 where c1 > 3 group by t0")
|
||||||
# tdSql.error("select distinct c1, c2 from stb1 where c1 > 3 interval(1d) ")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.stb1 where c1 > 3 interval(1d) ")
|
||||||
tdSql.error("select distinct c1, c2 from t1 where c1 > 3 interval(1d) ")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.t1 where c1 > 3 interval(1d) ")
|
||||||
# tdSql.error("select distinct c1, c2 from stb1 where c1 > 3 interval(1d) fill(next)")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.stb1 where c1 > 3 interval(1d) fill(next)")
|
||||||
tdSql.error("select distinct c1, c2 from t1 where c1 > 3 interval(1d) fill(next)")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.t1 where c1 > 3 interval(1d) fill(next)")
|
||||||
# tdSql.error("select distinct c1, c2 from stb1 where ts > now-10d and ts < now interval(1d) fill(next)")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.stb1 where ts > now-10d and ts < now interval(1d) fill(next)")
|
||||||
tdSql.error("select distinct c1, c2 from t1 where ts > now-10d and ts < now interval(1d) fill(next)")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.t1 where ts > now-10d and ts < now interval(1d) fill(next)")
|
||||||
# tdSql.error("select distinct c1, c2 from stb1 where c1 > 3 slimit 1")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.stb1 where c1 > 3 slimit 1")
|
||||||
# tdSql.error("select distinct c1, c2 from t1 where c1 > 3 slimit 1")
|
tdSql.error(f"select distinct c1, c2 from {dbname}.t1 where c1 > 3 slimit 1")
|
||||||
# tdSql.query(f"select distinct c1, c2 from stb1 where c1 between {tbnum-2} and {tbnum} ")
|
tdSql.query(f"select distinct c1, c2 from {dbname}.stb1 where c1 between {tbnum-2} and {tbnum} ")
|
||||||
# tdSql.checkRows(6)
|
tdSql.checkRows(6)
|
||||||
tdSql.query(f"select distinct c1, c2 from t1 where c1 between {tbnum-2} and {tbnum} ")
|
tdSql.query(f"select distinct c1, c2 from {dbname}.t1 where c1 between {tbnum-2} and {tbnum} ")
|
||||||
# tdSql.checkRows(1)
|
# tdSql.checkRows(1)
|
||||||
# tdSql.query("select distinct c1, c2 from stb1 where c1 in (1,2,3,4,5)")
|
tdSql.query(f"select distinct c1, c2 from {dbname}.stb1 where c1 in (1,2,3,4,5)")
|
||||||
# tdSql.checkRows(15)
|
tdSql.checkRows(15)
|
||||||
tdSql.query("select distinct c1, c2 from t1 where c1 in (1,2,3,4,5)")
|
tdSql.query(f"select distinct c1, c2 from {dbname}.t1 where c1 in (1,2,3,4,5)")
|
||||||
# tdSql.checkRows(1)
|
# tdSql.checkRows(1)
|
||||||
# tdSql.query("select distinct c1, c2 from stb1 where c1 in (100,1000,10000)")
|
tdSql.query(f"select distinct c1, c2 from {dbname}.stb1 where c1 in (100,1000,10000)")
|
||||||
# tdSql.checkRows(3)
|
tdSql.checkRows(3)
|
||||||
tdSql.query("select distinct c1, c2 from t1 where c1 in (100,1000,10000)")
|
tdSql.query(f"select distinct c1, c2 from {dbname}.t1 where c1 in (100,1000,10000)")
|
||||||
# tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
# tdSql.query(f"select distinct c1,c2 from (select * from stb1 where c1 > {tbnum-2}) ")
|
tdSql.query(f"select distinct c1,c2 from (select * from {dbname}.stb1 where c1 > {tbnum-2}) ")
|
||||||
# tdSql.checkRows(3)
|
tdSql.checkRows(3)
|
||||||
# tdSql.query(f"select distinct c1,c2 from (select * from t1 where c1 < {tbnum}) ")
|
tdSql.query(f"select distinct c1,c2 from (select * from {dbname}.t1 where c1 < {tbnum}) ")
|
||||||
# tdSql.checkRows(3)
|
tdSql.checkRows(3)
|
||||||
# tdSql.query(f"select distinct c1,c2 from (select * from stb1 where t2 !=0 and t2 != 1) ")
|
tdSql.query(f"select distinct c1,c2 from (select * from {dbname}.stb1 where t2 !=0 and t2 != 1) ")
|
||||||
# tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
# tdSql.error("select distinct c1, c2 from (select distinct c1, c2 from stb1 where t0 > 2 and t1 < 3) ")
|
tdSql.query(f"select distinct c1, c2 from (select distinct c1, c2 from {dbname}.stb1 where t0 > 2 and t1 < 3) ")
|
||||||
# tdSql.error("select c1, c2 from (select distinct c1, c2 from stb1 where t0 > 2 and t1 < 3) ")
|
tdSql.query(f"select c1, c2 from (select distinct c1, c2 from {dbname}.stb1 where t0 > 2 and t1 < 3) ")
|
||||||
# tdSql.query("select distinct c1, c2 from (select c2, c1 from stb1 where c1 > 2 ) where c1 < 4")
|
tdSql.query(f"select distinct c1, c2 from (select c2, c1 from {dbname}.stb1 where c1 > 2 ) where c1 < 4")
|
||||||
# tdSql.checkRows(3)
|
tdSql.checkRows(3)
|
||||||
# tdSql.error("select distinct c1, c2 from (select c1 from stb1 where t0 > 2 ) where t1 < 3")
|
tdSql.error(f"select distinct c1, c2 from (select c1 from {dbname}.stb1 where t0 > 2 ) where t1 < 3")
|
||||||
# tdSql.error("select distinct c1, c2 from (select c2, c1 from stb1 where c1 > 2 order by ts)")
|
tdSql.query(f"select distinct c1, c2 from (select c2, c1 from {dbname}.stb1 where c1 > 2 order by ts)")
|
||||||
# tdSql.error("select distinct c1, c2 from (select c2, c1 from t1 where c1 > 2 order by ts)")
|
tdSql.query(f"select distinct c1, c2 from (select c2, c1 from {dbname}.t1 where c1 > 2 order by ts)")
|
||||||
# tdSql.error("select distinct c1, c2 from (select c2, c1 from stb1 where c1 > 2 group by c1)")
|
tdSql.error(f"select distinct c1, c2 from (select c2, c1 from {dbname}.stb1 where c1 > 2 group by c1)")
|
||||||
# tdSql.error("select distinct c1, c2 from (select max(c1) c1, max(c2) c2 from stb1 group by c1)")
|
tdSql.query(f"select distinct c1, c2 from (select max(c1) c1, max(c2) c2 from {dbname}.stb1 group by c1)")
|
||||||
# tdSql.error("select distinct c1, c2 from (select max(c1) c1, max(c2) c2 from t1 group by c1)")
|
tdSql.query(f"select distinct c1, c2 from (select max(c1) c1, max(c2) c2 from {dbname}.t1 group by c1)")
|
||||||
# tdSql.query("select distinct c1, c2 from (select max(c1) c1, max(c2) c2 from stb1 )")
|
tdSql.query(f"select distinct c1, c2 from (select max(c1) c1, max(c2) c2 from {dbname}.stb1 )")
|
||||||
# tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
# tdSql.query("select distinct c1, c2 from (select max(c1) c1, max(c2) c2 from t1 )")
|
tdSql.query(f"select distinct c1, c2 from (select max(c1) c1, max(c2) c2 from {dbname}.t1 )")
|
||||||
# tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
# tdSql.error("select distinct stb1.c1, stb1.c2 from stb1 , stb2 where stb1.ts=stb2.ts and stb1.t2=stb2.t4")
|
tdSql.query(f"select distinct stb1.c1, stb1.c2 from {dbname}.stb1, {dbname}.stb2 where stb1.ts=stb2.ts and stb1.t2=stb2.t4")
|
||||||
# tdSql.error("select distinct t1.c1, t1.c2 from t1 , t2 where t1.ts=t2.ts ")
|
tdSql.query(f"select distinct t1.c1, t1.c2 from {dbname}.t1, {dbname}.t2 where t1.ts=t2.ts ")
|
||||||
|
|
||||||
# tdSql.error("select distinct c1, c2 from (select count(c1) c1, count(c2) c2 from stb1 group by ts)")
|
tdSql.query(f"select distinct c1, c2 from (select count(c1) c1, count(c2) c2 from {dbname}.stb1 group by ts)")
|
||||||
# tdSql.error("select distinct c1, c2 from (select count(c1) c1, count(c2) c2 from t1 group by ts)")
|
tdSql.query(f"select distinct c1, c2 from (select count(c1) c1, count(c2) c2 from {dbname}.t1 group by ts)")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# #========== suport distinct multi-tags-coloumn ==========
|
#========== suport distinct multi-tags-coloumn ==========
|
||||||
# tdSql.query("select distinct t1 from stb1")
|
tdSql.query(f"select distinct t1 from {dbname}.stb1")
|
||||||
# tdSql.checkRows(maxRemainderNum+1)
|
tdSql.checkRows(maxRemainderNum+1)
|
||||||
# tdSql.query("select distinct t0, t1 from stb1")
|
tdSql.query(f"select distinct t0, t1 from {dbname}.stb1")
|
||||||
# tdSql.checkRows(maxRemainderNum+1)
|
tdSql.checkRows(maxRemainderNum+1)
|
||||||
# tdSql.query("select distinct t1, t0 from stb1")
|
tdSql.query(f"select distinct t1, t0 from {dbname}.stb1")
|
||||||
# tdSql.checkRows(maxRemainderNum+1)
|
tdSql.checkRows(maxRemainderNum+1)
|
||||||
# tdSql.query("select distinct t1, t2 from stb1")
|
tdSql.query(f"select distinct t1, t2 from {dbname}.stb1")
|
||||||
# tdSql.checkRows(maxRemainderNum*2+1)
|
tdSql.checkRows(maxRemainderNum*2+1)
|
||||||
# tdSql.query("select distinct t0, t1, t2 from stb1")
|
tdSql.query(f"select distinct t0, t1, t2 from {dbname}.stb1")
|
||||||
# tdSql.checkRows(maxRemainderNum*2+1)
|
tdSql.checkRows(maxRemainderNum*2+1)
|
||||||
# tdSql.query("select distinct t0 t1, t1 t2 from stb1")
|
tdSql.query(f"select distinct t0 t1, t1 t2 from {dbname}.stb1")
|
||||||
# tdSql.checkRows(maxRemainderNum+1)
|
tdSql.checkRows(maxRemainderNum+1)
|
||||||
# tdSql.query("select distinct t0, t0, t0 from stb1")
|
tdSql.query(f"select distinct t0, t0, t0 from {dbname}.stb1")
|
||||||
# tdSql.checkRows(maxRemainderNum+1)
|
tdSql.checkRows(maxRemainderNum+1)
|
||||||
# tdSql.query("select distinct t0, t1 from t1")
|
tdSql.query(f"select distinct t0, t1 from {dbname}.t1")
|
||||||
# tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
# tdSql.query("select distinct t0, t1 from t100num")
|
tdSql.query(f"select distinct t0, t1 from {dbname}.t100num")
|
||||||
# tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
|
|
||||||
# tdSql.query("select distinct t3 from stb2")
|
tdSql.query(f"select distinct t3 from {dbname}.stb2")
|
||||||
# tdSql.checkRows(maxRemainderNum+1)
|
tdSql.checkRows(maxRemainderNum+1)
|
||||||
# tdSql.query("select distinct t2, t3 from stb2")
|
tdSql.query(f"select distinct t2, t3 from {dbname}.stb2")
|
||||||
# tdSql.checkRows(maxRemainderNum+1)
|
tdSql.checkRows(maxRemainderNum+1)
|
||||||
# tdSql.query("select distinct t3, t2 from stb2")
|
tdSql.query(f"select distinct t3, t2 from {dbname}.stb2")
|
||||||
# tdSql.checkRows(maxRemainderNum+1)
|
tdSql.checkRows(maxRemainderNum+1)
|
||||||
# tdSql.query("select distinct t4, t2 from stb2")
|
tdSql.query(f"select distinct t4, t2 from {dbname}.stb2")
|
||||||
# tdSql.checkRows(maxRemainderNum*3+1)
|
tdSql.checkRows(maxRemainderNum*3+1)
|
||||||
# tdSql.query("select distinct t2, t3, t4 from stb2")
|
tdSql.query(f"select distinct t2, t3, t4 from {dbname}.stb2")
|
||||||
# tdSql.checkRows(maxRemainderNum*3+1)
|
tdSql.checkRows(maxRemainderNum*3+1)
|
||||||
# tdSql.query("select distinct t2 t1, t3 t2 from stb2")
|
tdSql.query(f"select distinct t2 t1, t3 t2 from {dbname}.stb2")
|
||||||
# tdSql.checkRows(maxRemainderNum+1)
|
tdSql.checkRows(maxRemainderNum+1)
|
||||||
# tdSql.query("select distinct t3, t3, t3 from stb2")
|
tdSql.query(f"select distinct t3, t3, t3 from {dbname}.stb2")
|
||||||
# tdSql.checkRows(maxRemainderNum+1)
|
tdSql.checkRows(maxRemainderNum+1)
|
||||||
# tdSql.query("select distinct t2, t3 from t01")
|
tdSql.query(f"select distinct t2, t3 from {dbname}.t01")
|
||||||
# tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
# tdSql.query("select distinct t3, t4 from t0100num")
|
tdSql.query(f"select distinct t3, t4 from {dbname}.t0100num")
|
||||||
# tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
|
|
||||||
|
|
||||||
# ########## should be error #########
|
########## should be error #########
|
||||||
# tdSql.error("select distinct from stb1")
|
tdSql.error(f"select distinct from {dbname}.stb1")
|
||||||
# tdSql.error("select distinct t3 from stb1")
|
tdSql.error(f"select distinct t3 from {dbname}.stb1")
|
||||||
# tdSql.error("select distinct t1 from db.*")
|
tdSql.error(f"select distinct t1 from db.*")
|
||||||
# tdSql.error("select distinct t2 from ")
|
tdSql.error(f"select distinct t2 from ")
|
||||||
# tdSql.error("distinct t2 from stb1")
|
tdSql.error(f"distinct t2 from {dbname}.stb1")
|
||||||
# tdSql.error("select distinct stb1")
|
tdSql.error(f"select distinct stb1")
|
||||||
# tdSql.error("select distinct t0, t1, t2, t3 from stb1")
|
tdSql.error(f"select distinct t0, t1, t2, t3 from {dbname}.stb1")
|
||||||
# tdSql.error("select distinct stb1.t0, stb1.t1, stb2.t2, stb2.t3 from stb1")
|
tdSql.error(f"select distinct stb1.t0, stb1.t1, stb2.t2, stb2.t3 from {dbname}.stb1")
|
||||||
|
|
||||||
# tdSql.error("select dist t0 from stb1")
|
tdSql.error(f"select dist t0 from {dbname}.stb1")
|
||||||
# tdSql.error("select distinct stb2.t2, stb2.t3 from stb1")
|
tdSql.error(f"select distinct stb2.t2, stb2.t3 from {dbname}.stb1")
|
||||||
# tdSql.error("select distinct stb2.t2 t1, stb2.t3 t2 from stb1")
|
tdSql.error(f"select distinct stb2.t2 t1, stb2.t3 t2 from {dbname}.stb1")
|
||||||
|
|
||||||
# tdSql.error("select distinct t0, t1 from t1 where t0 < 7")
|
tdSql.query(f"select distinct t0, t1 from {dbname}.t1 where t0 < 7")
|
||||||
|
|
||||||
# ########## add where condition ##########
|
########## add where condition ##########
|
||||||
# tdSql.query("select distinct t0, t1 from stb1 where t1 > 3")
|
tdSql.query(f"select distinct t0, t1 from {dbname}.stb1 where t1 > 3")
|
||||||
# tdSql.checkRows(3)
|
tdSql.checkRows(3)
|
||||||
# tdSql.query("select distinct t0, t1 from stb1 where t1 > 3 limit 2")
|
tdSql.query(f"select distinct t0, t1 from {dbname}.stb1 where t1 > 3 limit 2")
|
||||||
# tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
# tdSql.query("select distinct t0, t1 from stb1 where t1 > 3 limit 2 offset 2")
|
tdSql.query(f"select distinct t0, t1 from {dbname}.stb1 where t1 > 3 limit 2 offset 2")
|
||||||
# tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
# tdSql.query("select distinct t0, t1 from stb1 where t1 > 3 slimit 2")
|
tdSql.error(f"select distinct t0, t1 from {dbname}.stb1 where t1 > 3 slimit 2")
|
||||||
# tdSql.checkRows(3)
|
tdSql.query(f"select distinct t0, t1 from {dbname}.stb1 where c1 > 2")
|
||||||
# tdSql.error("select distinct t0, t1 from stb1 where c1 > 2")
|
tdSql.query(f"select distinct t0, t1 from {dbname}.stb1 where t1 > 3 and t1 < 5")
|
||||||
# tdSql.query("select distinct t0, t1 from stb1 where t1 > 3 and t1 < 5")
|
tdSql.checkRows(1)
|
||||||
# tdSql.checkRows(1)
|
tdSql.error(f"select distinct stb1.t0, stb1.t1 from {dbname}.stb1, {dbname}.stb2 where stb1.t2=stb2.t4")
|
||||||
# tdSql.error("select distinct stb1.t0, stb1.t1 from stb1, stb2 where stb1.t2=stb2.t4")
|
tdSql.error(f"select distinct t0, t1 from {dbname}.stb1 where stb2.t4 > 2")
|
||||||
# tdSql.error("select distinct t0, t1 from stb1 where stb2.t4 > 2")
|
tdSql.error(f"select distinct t0, t1 from {dbname}.stb1 where t1 > 3 group by t0")
|
||||||
# tdSql.error("select distinct t0, t1 from stb1 where t1 > 3 group by t0")
|
tdSql.error(f"select distinct t0, t1 from {dbname}.stb1 where t1 > 3 interval(1d) ")
|
||||||
# tdSql.error("select distinct t0, t1 from stb1 where t1 > 3 interval(1d) ")
|
tdSql.error(f"select distinct t0, t1 from {dbname}.stb1 where t1 > 3 interval(1d) fill(next)")
|
||||||
# tdSql.error("select distinct t0, t1 from stb1 where t1 > 3 interval(1d) fill(next)")
|
tdSql.error(f"select distinct t0, t1 from {dbname}.stb1 where ts > now-10d and ts < now interval(1d) fill(next)")
|
||||||
# tdSql.error("select distinct t0, t1 from stb1 where ts > now-10d and ts < now interval(1d) fill(next)")
|
|
||||||
|
|
||||||
# tdSql.error("select max(c1), distinct t0 from stb1 where t0 > 2")
|
tdSql.error(f"select max(c1), distinct t0 from {dbname}.stb1 where t0 > 2")
|
||||||
# tdSql.error("select distinct t0, max(c1) from stb1 where t0 > 2")
|
tdSql.query(f"select distinct t0, max(c1) from {dbname}.stb1 where t0 > 2")
|
||||||
# tdSql.error("select distinct t0 from stb1 where t0 in (select t0 from stb1 where t0 > 2)")
|
tdSql.error(f"select distinct t0 from {dbname}.stb1 where t0 in (select t0 from {dbname}.stb1 where t0 > 2)")
|
||||||
# tdSql.query("select distinct t0, t1 from stb1 where t0 in (1,2,3,4,5)")
|
tdSql.query(f"select distinct t0, t1 from {dbname}.stb1 where t0 in (1,2,3,4,5)")
|
||||||
# tdSql.checkRows(5)
|
tdSql.checkRows(5)
|
||||||
# tdSql.query("select distinct t1 from (select t0, t1 from stb1 where t0 > 2) ")
|
tdSql.query(f"select distinct t1 from (select t0, t1 from {dbname}.stb1 where t0 > 2) ")
|
||||||
# tdSql.checkRows(4)
|
tdSql.checkRows(4)
|
||||||
# tdSql.error("select distinct t1 from (select distinct t0, t1 from stb1 where t0 > 2 and t1 < 3) ")
|
tdSql.query(f"select distinct t1 from (select distinct t0, t1 from {dbname}.stb1 where t0 > 2 and t1 < 3) ")
|
||||||
# tdSql.error("select distinct t1 from (select distinct t0, t1 from stb1 where t0 > 2 ) where t1 < 3")
|
# TODO: BUG of TD-17561
|
||||||
# tdSql.query("select distinct t1 from (select t0, t1 from stb1 where t0 > 2 ) where t1 < 3")
|
# tdSql.query(f"select distinct t1 from (select distinct t0, t1 from {dbname}.stb1 where t0 > 2 ) where t1 < 3")
|
||||||
# tdSql.checkRows(1)
|
tdSql.query(f"select distinct t1 from (select t0, t1 from {dbname}.stb1 where t0 > 2 ) where t1 < 3")
|
||||||
# tdSql.error("select distinct t1, t0 from (select t1 from stb1 where t0 > 2 ) where t1 < 3")
|
tdSql.checkRows(1)
|
||||||
# tdSql.error("select distinct t1, t0 from (select max(t1) t1, max(t0) t0 from stb1 group by t1)")
|
tdSql.error(f"select distinct t1, t0 from (select t1 from {dbname}.stb1 where t0 > 2 ) where t1 < 3")
|
||||||
# tdSql.error("select distinct t1, t0 from (select max(t1) t1, max(t0) t0 from stb1)")
|
tdSql.query(f"select distinct t1, t0 from (select max(t1) t1, max(t0) t0 from {dbname}.stb1 group by t1)")
|
||||||
# tdSql.query("select distinct t1, t0 from (select t1,t0 from stb1 where t0 > 2 ) where t1 < 3")
|
tdSql.query(f"select distinct t1, t0 from (select max(t1) t1, max(t0) t0 from {dbname}.stb1)")
|
||||||
# tdSql.checkRows(1)
|
tdSql.query(f"select distinct t1, t0 from (select t1,t0 from {dbname}.stb1 where t0 > 2 ) where t1 < 3")
|
||||||
# tdSql.error(" select distinct t1, t0 from (select t1,t0 from stb1 where t0 > 2 order by ts) where t1 < 3")
|
tdSql.checkRows(1)
|
||||||
# tdSql.error("select t1, t0 from (select distinct t1,t0 from stb1 where t0 > 2 ) where t1 < 3")
|
tdSql.query(f"select distinct t1, t0 from (select t1,t0 from {dbname}.stb1 where t0 > 2 order by ts) where t1 < 3")
|
||||||
# tdSql.error(" select distinct t1, t0 from (select t1,t0 from stb1 where t0 > 2 group by ts) where t1 < 3")
|
# TODO: BUG of TD-17561
|
||||||
# tdSql.error("select distinct stb1.t1, stb1.t2 from stb1 , stb2 where stb1.ts=stb2.ts and stb1.t2=stb2.t4")
|
# tdSql.error(f"select t1, t0 from (select distinct t1,t0 from {dbname}.stb1 where t0 > 2 ) where t1 < 3")
|
||||||
# tdSql.error("select distinct t1.t1, t1.t2 from t1 , t2 where t1.ts=t2.ts ")
|
tdSql.error(f"select distinct t1, t0 from (select t1,t0 from {dbname}.stb1 where t0 > 2 group by ts) where t1 < 3")
|
||||||
|
tdSql.query(f"select distinct stb1.t1, stb1.t2 from {dbname}.stb1, {dbname}.stb2 where stb1.ts=stb2.ts and stb1.t2=stb2.t4")
|
||||||
|
tdSql.query(f"select distinct t1.t1, t1.t2 from {dbname}.t1, {dbname}.t2 where t1.ts=t2.ts ")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,86 +6,60 @@ import random
|
||||||
|
|
||||||
|
|
||||||
class TDTestCase:
|
class TDTestCase:
|
||||||
updatecfgDict = {'debugFlag': 143 ,"cDebugFlag":143,"uDebugFlag":143 ,"rpcDebugFlag":143 , "tmrDebugFlag":143 ,
|
|
||||||
"jniDebugFlag":143 ,"simDebugFlag":143,"dDebugFlag":143, "dDebugFlag":143,"vDebugFlag":143,"mDebugFlag":143,"qDebugFlag":143,
|
|
||||||
"wDebugFlag":143,"sDebugFlag":143,"tsdbDebugFlag":143,"tqDebugFlag":143 ,"fsDebugFlag":143 ,"udfDebugFlag":143,
|
|
||||||
"maxTablesPerVnode":2 ,"minTablesPerVnode":2,"tableIncStepPerVnode":2 }
|
|
||||||
|
|
||||||
|
updatecfgDict = {"maxTablesPerVnode":2 ,"minTablesPerVnode":2,"tableIncStepPerVnode":2 }
|
||||||
def init(self, conn, logSql):
|
def init(self, conn, logSql):
|
||||||
tdLog.debug("start to execute %s" % __file__)
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
tdSql.init(conn.cursor())
|
tdSql.init(conn.cursor())
|
||||||
self.vnode_disbutes = None
|
self.vnode_disbutes = None
|
||||||
self.ts = 1537146000000
|
self.ts = 1537146000000
|
||||||
|
|
||||||
def prepare_datas_of_distribute(self):
|
def prepare_datas_of_distribute(self, dbname="testdb"):
|
||||||
|
|
||||||
# prepate datas for 20 tables distributed at different vgroups
|
# prepate datas for 20 tables distributed at different vgroups
|
||||||
tdSql.execute("create database if not exists testdb keep 3650 duration 1000 vgroups 5")
|
tdSql.execute(f"create database if not exists {dbname} keep 3650 duration 1000 vgroups 5")
|
||||||
tdSql.execute(" use testdb ")
|
tdSql.execute(f" use {dbname} ")
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
'''create table stb1
|
f'''create table {dbname}.stb1
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
||||||
tags (t0 timestamp, t1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32))
|
tags (t0 timestamp, t1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32))
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
|
||||||
'''
|
|
||||||
create table t1
|
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
|
||||||
'''
|
|
||||||
)
|
|
||||||
for i in range(20):
|
for i in range(20):
|
||||||
tdSql.execute(f'create table ct{i+1} using stb1 tags ( now(), {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" )')
|
tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( now(), {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" )')
|
||||||
|
|
||||||
for i in range(9):
|
for i in range(9):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(1,21):
|
for i in range(1,21):
|
||||||
if i ==1 or i == 4:
|
if i ==1 or i == 4:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
tbname = "ct"+f'{i}'
|
tbname = f"{dbname}.ct{i}"
|
||||||
for j in range(9):
|
for j in range(9):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into {tbname} values ( now()-{(i+j)*10}s, {1*(j+i)}, {11111*(j+i)}, {111*(j+i)}, {11*(j)}, {1.11*(j+i)}, {11.11*(j+i)}, {(j+i)%2}, 'binary{j}', 'nchar{j}', now()+{1*j}a )"
|
f"insert into {tbname} values ( now()-{(i+j)*10}s, {1*(j+i)}, {11111*(j+i)}, {111*(j+i)}, {11*(j)}, {1.11*(j+i)}, {11.11*(j+i)}, {(j+i)%2}, 'binary{j}', 'nchar{j}', now()+{1*j}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute("insert into ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
|
|
||||||
tdSql.execute("insert into ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
|
|
||||||
tdSql.execute(
|
|
||||||
f'''insert into t1 values
|
|
||||||
( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a )
|
|
||||||
( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a )
|
|
||||||
( '2021-01-01 01:01:06.000', 3, 33333, 333, 33, 3.33, 33.33, 0, "binary3", "nchar3", now()+3a )
|
|
||||||
( '2021-05-07 01:01:10.000', 4, 44444, 444, 44, 4.44, 44.44, 1, "binary4", "nchar4", now()+4a )
|
|
||||||
( '2021-07-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
( '2021-09-30 01:01:16.000', 5, 55555, 555, 55, 5.55, 55.55, 0, "binary5", "nchar5", now()+5a )
|
|
||||||
( '2022-02-01 01:01:20.000', 6, 66666, 666, 66, 6.66, 66.66, 1, "binary6", "nchar6", now()+6a )
|
|
||||||
( '2022-10-28 01:01:26.000', 7, 00000, 000, 00, 0.00, 00.00, 1, "binary7", "nchar7", "1970-01-01 08:00:00.000" )
|
|
||||||
( '2022-12-01 01:01:30.000', 8, -88888, -888, -88, -8.88, -88.88, 0, "binary8", "nchar8", "1969-01-01 01:00:00.000" )
|
|
||||||
( '2022-12-31 01:01:36.000', 9, -99999999999999999, -999, -99, -9.99, -999999999999999999999.99, 1, "binary9", "nchar9", "1900-01-01 00:00:00.000" )
|
|
||||||
( '2023-02-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
'''
|
|
||||||
)
|
|
||||||
|
|
||||||
tdLog.info(" prepare data for distributed_aggregate done! ")
|
tdLog.info(" prepare data for distributed_aggregate done! ")
|
||||||
|
|
||||||
def check_distribute_datas(self):
|
def check_distribute_datas(self, dbname="testdb"):
|
||||||
# get vgroup_ids of all
|
# get vgroup_ids of all
|
||||||
tdSql.query("show vgroups ")
|
tdSql.query(f"show {dbname}.vgroups ")
|
||||||
vgroups = tdSql.queryResult
|
vgroups = tdSql.queryResult
|
||||||
|
|
||||||
vnode_tables={}
|
vnode_tables={}
|
||||||
|
@ -95,7 +69,7 @@ class TDTestCase:
|
||||||
|
|
||||||
|
|
||||||
# check sub_table of per vnode ,make sure sub_table has been distributed
|
# check sub_table of per vnode ,make sure sub_table has been distributed
|
||||||
tdSql.query("show tables like 'ct%'")
|
tdSql.query(f"show {dbname}.tables like 'ct%'")
|
||||||
table_names = tdSql.queryResult
|
table_names = tdSql.queryResult
|
||||||
tablenames = []
|
tablenames = []
|
||||||
for table_name in table_names:
|
for table_name in table_names:
|
||||||
|
@ -109,28 +83,28 @@ class TDTestCase:
|
||||||
if count < 2:
|
if count < 2:
|
||||||
tdLog.exit(" the datas of all not satisfy sub_table has been distributed ")
|
tdLog.exit(" the datas of all not satisfy sub_table has been distributed ")
|
||||||
|
|
||||||
def distribute_agg_query(self):
|
def distribute_agg_query(self, dbname="testdb"):
|
||||||
# basic filter
|
# basic filter
|
||||||
tdSql.query("select apercentile(c1 , 20) from stb1 where c1 is null")
|
tdSql.query(f"select apercentile(c1 , 20) from {dbname}.stb1 where c1 is null")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
tdSql.query("select apercentile(c1 , 20) from stb1 where t1=1")
|
tdSql.query(f"select apercentile(c1 , 20) from {dbname}.stb1 where t1=1")
|
||||||
tdSql.checkData(0,0,2.800000000)
|
tdSql.checkData(0,0,2.800000000)
|
||||||
|
|
||||||
tdSql.query("select apercentile(c1+c2 ,100) from stb1 where c1 =1 ")
|
tdSql.query(f"select apercentile(c1+c2 ,100) from {dbname}.stb1 where c1 =1 ")
|
||||||
tdSql.checkData(0,0,11112.000000000)
|
tdSql.checkData(0,0,11112.000000000)
|
||||||
|
|
||||||
tdSql.query("select apercentile(c1 ,10 ) from stb1 where tbname=\"ct2\"")
|
tdSql.query(f"select apercentile(c1 ,10 ) from {dbname}.stb1 where tbname=\"ct2\"")
|
||||||
tdSql.checkData(0,0,2.000000000)
|
tdSql.checkData(0,0,2.000000000)
|
||||||
|
|
||||||
tdSql.query("select apercentile(c1,20) from stb1 partition by tbname")
|
tdSql.query(f"select apercentile(c1,20) from {dbname}.stb1 partition by tbname")
|
||||||
tdSql.checkRows(20)
|
tdSql.checkRows(20)
|
||||||
|
|
||||||
tdSql.query("select apercentile(c1,20) from stb1 where t1> 4 partition by tbname")
|
tdSql.query(f"select apercentile(c1,20) from {dbname}.stb1 where t1> 4 partition by tbname")
|
||||||
tdSql.checkRows(15)
|
tdSql.checkRows(15)
|
||||||
|
|
||||||
# union all
|
# union all
|
||||||
tdSql.query("select apercentile(c1,20) from stb1 union all select apercentile(c1,20) from stb1 ")
|
tdSql.query(f"select apercentile(c1,20) from {dbname}.stb1 union all select apercentile(c1,20) from {dbname}.stb1 ")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.checkData(0,0,7.389181281)
|
tdSql.checkData(0,0,7.389181281)
|
||||||
|
|
||||||
|
@ -138,44 +112,44 @@ class TDTestCase:
|
||||||
|
|
||||||
tdSql.execute(" create database if not exists db ")
|
tdSql.execute(" create database if not exists db ")
|
||||||
tdSql.execute(" use db ")
|
tdSql.execute(" use db ")
|
||||||
tdSql.execute(" create stable st (ts timestamp , c1 int ,c2 float) tags(t1 int) ")
|
tdSql.execute(" create stable db.st (ts timestamp , c1 int ,c2 float) tags(t1 int) ")
|
||||||
tdSql.execute(" create table tb1 using st tags(1) ")
|
tdSql.execute(" create table db.tb1 using db.st tags(1) ")
|
||||||
tdSql.execute(" create table tb2 using st tags(2) ")
|
tdSql.execute(" create table db.tb2 using db.st tags(2) ")
|
||||||
|
|
||||||
|
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
ts = i*10 + self.ts
|
ts = i*10 + self.ts
|
||||||
tdSql.execute(f" insert into tb1 values({ts},{i},{i}.0)")
|
tdSql.execute(f" insert into db.tb1 values({ts},{i},{i}.0)")
|
||||||
tdSql.execute(f" insert into tb2 values({ts},{i},{i}.0)")
|
tdSql.execute(f" insert into db.tb2 values({ts},{i},{i}.0)")
|
||||||
|
|
||||||
tdSql.query("select apercentile(tb1.c1,100), apercentile(tb2.c2,100) from tb1, tb2 where tb1.ts=tb2.ts")
|
tdSql.query(f"select apercentile(tb1.c1,100), apercentile(tb2.c2,100) from db.tb1 tb1, db.tb2 tb2 where tb1.ts=tb2.ts")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,9.000000000)
|
tdSql.checkData(0,0,9.000000000)
|
||||||
tdSql.checkData(0,0,9.000000000)
|
tdSql.checkData(0,0,9.000000000)
|
||||||
|
|
||||||
# group by
|
# group by
|
||||||
tdSql.execute(" use testdb ")
|
tdSql.execute(f"use {dbname} ")
|
||||||
tdSql.query(" select max(c1),c1 from stb1 group by t1 ")
|
tdSql.query(f" select max(c1),c1 from {dbname}.stb1 group by t1 ")
|
||||||
tdSql.checkRows(20)
|
tdSql.checkRows(20)
|
||||||
tdSql.query(" select max(c1),c1 from stb1 group by c1 ")
|
tdSql.query(f" select max(c1),c1 from {dbname}.stb1 group by c1 ")
|
||||||
tdSql.checkRows(30)
|
tdSql.checkRows(30)
|
||||||
tdSql.query(" select max(c1),c2 from stb1 group by c2 ")
|
tdSql.query(f" select max(c1),c2 from {dbname}.stb1 group by c2 ")
|
||||||
tdSql.checkRows(31)
|
tdSql.checkRows(31)
|
||||||
|
|
||||||
# partition by tbname or partition by tag
|
# partition by tbname or partition by tag
|
||||||
tdSql.query("select apercentile(c1 ,10)from stb1 partition by tbname")
|
tdSql.query(f"select apercentile(c1 ,10)from {dbname}.stb1 partition by tbname")
|
||||||
query_data = tdSql.queryResult
|
query_data = tdSql.queryResult
|
||||||
|
|
||||||
# nest query for support max
|
# nest query for support max
|
||||||
tdSql.query("select apercentile(c2+2,10)+1 from (select max(c1) c2 from stb1)")
|
tdSql.query(f"select apercentile(c2+2,10)+1 from (select max(c1) c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,31.000000000)
|
tdSql.checkData(0,0,31.000000000)
|
||||||
tdSql.query("select apercentile(c1+2,10)+1 as c2 from (select ts ,c1 ,c2 from stb1)")
|
tdSql.query(f"select apercentile(c1+2,10)+1 as c2 from (select ts ,c1 ,c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,7.560701700)
|
tdSql.checkData(0,0,7.560701700)
|
||||||
tdSql.query("select apercentile(a+2,10)+1 as c2 from (select ts ,abs(c1) a ,c2 from stb1)")
|
tdSql.query(f"select apercentile(a+2,10)+1 as c2 from (select ts ,abs(c1) a ,c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,7.560701700)
|
tdSql.checkData(0,0,7.560701700)
|
||||||
|
|
||||||
# mixup with other functions
|
# mixup with other functions
|
||||||
tdSql.query("select max(c1),count(c1),last(c2,c3),spread(c1), apercentile(c1,10) from stb1")
|
tdSql.query(f"select max(c1),count(c1),last(c2,c3),spread(c1), apercentile(c1,10) from {dbname}.stb1")
|
||||||
tdSql.checkData(0,0,28)
|
tdSql.checkData(0,0,28)
|
||||||
tdSql.checkData(0,1,184)
|
tdSql.checkData(0,1,184)
|
||||||
tdSql.checkData(0,2,-99999)
|
tdSql.checkData(0,2,-99999)
|
||||||
|
|
|
@ -7,11 +7,8 @@ import platform
|
||||||
|
|
||||||
|
|
||||||
class TDTestCase:
|
class TDTestCase:
|
||||||
updatecfgDict = {'debugFlag': 143 ,"cDebugFlag":143,"uDebugFlag":143 ,"rpcDebugFlag":143 , "tmrDebugFlag":143 ,
|
|
||||||
"jniDebugFlag":143 ,"simDebugFlag":143,"dDebugFlag":143, "dDebugFlag":143,"vDebugFlag":143,"mDebugFlag":143,"qDebugFlag":143,
|
|
||||||
"wDebugFlag":143,"sDebugFlag":143,"tsdbDebugFlag":143,"tqDebugFlag":143 ,"fsDebugFlag":143 ,"udfDebugFlag":143,
|
|
||||||
"maxTablesPerVnode":2 ,"minTablesPerVnode":2,"tableIncStepPerVnode":2 }
|
|
||||||
|
|
||||||
|
updatecfgDict = {"maxTablesPerVnode":2 ,"minTablesPerVnode":2,"tableIncStepPerVnode":2 }
|
||||||
def init(self, conn, logSql):
|
def init(self, conn, logSql):
|
||||||
tdLog.debug("start to execute %s" % __file__)
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
tdSql.init(conn.cursor())
|
tdSql.init(conn.cursor())
|
||||||
|
@ -34,75 +31,52 @@ class TDTestCase:
|
||||||
tdSql.query(avg_sql)
|
tdSql.query(avg_sql)
|
||||||
tdSql.checkData(0,0,pre_avg)
|
tdSql.checkData(0,0,pre_avg)
|
||||||
|
|
||||||
def prepare_datas_of_distribute(self):
|
def prepare_datas_of_distribute(self, dbname="testdb"):
|
||||||
|
|
||||||
# prepate datas for 20 tables distributed at different vgroups
|
# prepate datas for 20 tables distributed at different vgroups
|
||||||
tdSql.execute("create database if not exists testdb keep 3650 duration 1000 vgroups 5")
|
tdSql.execute(f"create database if not exists {dbname} keep 3650 duration 1000 vgroups 5")
|
||||||
tdSql.execute(" use testdb ")
|
tdSql.execute(f" use {dbname} ")
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
'''create table stb1
|
f'''create table {dbname}.stb1
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
||||||
tags (t0 timestamp, t1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32))
|
tags (t0 timestamp, t1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32))
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
|
||||||
'''
|
|
||||||
create table t1
|
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
|
||||||
'''
|
|
||||||
)
|
|
||||||
for i in range(20):
|
for i in range(20):
|
||||||
tdSql.execute(f'create table ct{i+1} using stb1 tags ( now(), {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" )')
|
tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( now(), {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" )')
|
||||||
|
|
||||||
for i in range(9):
|
for i in range(9):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(1,21):
|
for i in range(1,21):
|
||||||
if i ==1 or i == 4:
|
if i ==1 or i == 4:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
tbname = "ct"+f'{i}'
|
tbname = f"{dbname}.ct{i}"
|
||||||
for j in range(9):
|
for j in range(9):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into {tbname} values ( now()-{(i+j)*10}s, {1*(j+i)}, {11111*(j+i)}, {111*(j+i)}, {11*(j)}, {1.11*(j+i)}, {11.11*(j+i)}, {(j+i)%2}, 'binary{j}', 'nchar{j}', now()+{1*j}a )"
|
f"insert into {tbname} values ( now()-{(i+j)*10}s, {1*(j+i)}, {11111*(j+i)}, {111*(j+i)}, {11*(j)}, {1.11*(j+i)}, {11.11*(j+i)}, {(j+i)%2}, 'binary{j}', 'nchar{j}', now()+{1*j}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute("insert into ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
|
|
||||||
tdSql.execute("insert into ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
|
|
||||||
tdSql.execute(
|
|
||||||
f'''insert into t1 values
|
|
||||||
( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a )
|
|
||||||
( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a )
|
|
||||||
( '2021-01-01 01:01:06.000', 3, 33333, 333, 33, 3.33, 33.33, 0, "binary3", "nchar3", now()+3a )
|
|
||||||
( '2021-05-07 01:01:10.000', 4, 44444, 444, 44, 4.44, 44.44, 1, "binary4", "nchar4", now()+4a )
|
|
||||||
( '2021-07-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
( '2021-09-30 01:01:16.000', 5, 55555, 555, 55, 5.55, 55.55, 0, "binary5", "nchar5", now()+5a )
|
|
||||||
( '2022-02-01 01:01:20.000', 6, 66666, 666, 66, 6.66, 66.66, 1, "binary6", "nchar6", now()+6a )
|
|
||||||
( '2022-10-28 01:01:26.000', 7, 00000, 000, 00, 0.00, 00.00, 1, "binary7", "nchar7", "1970-01-01 08:00:00.000" )
|
|
||||||
( '2022-12-01 01:01:30.000', 8, -88888, -888, -88, -8.88, -88.88, 0, "binary8", "nchar8", "1969-01-01 01:00:00.000" )
|
|
||||||
( '2022-12-31 01:01:36.000', 9, -99999999999999999, -999, -99, -9.99, -999999999999999999999.99, 1, "binary9", "nchar9", "1900-01-01 00:00:00.000" )
|
|
||||||
( '2023-02-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
'''
|
|
||||||
)
|
|
||||||
|
|
||||||
tdLog.info(" prepare data for distributed_aggregate done! ")
|
tdLog.info(" prepare data for distributed_aggregate done! ")
|
||||||
|
|
||||||
def check_distribute_datas(self):
|
def check_distribute_datas(self, dbname="testdb"):
|
||||||
# get vgroup_ids of all
|
# get vgroup_ids of all
|
||||||
tdSql.query("show vgroups ")
|
tdSql.query(f"show {dbname}.vgroups ")
|
||||||
vgroups = tdSql.queryResult
|
vgroups = tdSql.queryResult
|
||||||
|
|
||||||
vnode_tables={}
|
vnode_tables={}
|
||||||
|
@ -112,7 +86,7 @@ class TDTestCase:
|
||||||
|
|
||||||
|
|
||||||
# check sub_table of per vnode ,make sure sub_table has been distributed
|
# check sub_table of per vnode ,make sure sub_table has been distributed
|
||||||
tdSql.query("show tables like 'ct%'")
|
tdSql.query(f"show {dbname}.tables like 'ct%'")
|
||||||
table_names = tdSql.queryResult
|
table_names = tdSql.queryResult
|
||||||
tablenames = []
|
tablenames = []
|
||||||
for table_name in table_names:
|
for table_name in table_names:
|
||||||
|
@ -126,7 +100,7 @@ class TDTestCase:
|
||||||
if count < 2:
|
if count < 2:
|
||||||
tdLog.exit(" the datas of all not satisfy sub_table has been distributed ")
|
tdLog.exit(" the datas of all not satisfy sub_table has been distributed ")
|
||||||
|
|
||||||
def check_avg_distribute_diff_vnode(self,col_name):
|
def check_avg_distribute_diff_vnode(self,col_name, dbname="testdb"):
|
||||||
|
|
||||||
vgroup_ids = []
|
vgroup_ids = []
|
||||||
for k ,v in self.vnode_disbutes.items():
|
for k ,v in self.vnode_disbutes.items():
|
||||||
|
@ -144,9 +118,9 @@ class TDTestCase:
|
||||||
|
|
||||||
tbname_filters = tbname_ins[:-1]
|
tbname_filters = tbname_ins[:-1]
|
||||||
|
|
||||||
avg_sql = f"select avg({col_name}) from stb1 where tbname in ({tbname_filters});"
|
avg_sql = f"select avg({col_name}) from {dbname}.stb1 where tbname in ({tbname_filters});"
|
||||||
|
|
||||||
same_sql = f"select {col_name} from stb1 where tbname in ({tbname_filters}) and {col_name} is not null "
|
same_sql = f"select {col_name} from {dbname}.stb1 where tbname in ({tbname_filters}) and {col_name} is not null "
|
||||||
|
|
||||||
tdSql.query(same_sql)
|
tdSql.query(same_sql)
|
||||||
pre_data = np.array(tdSql.queryResult)[np.array(tdSql.queryResult) != None]
|
pre_data = np.array(tdSql.queryResult)[np.array(tdSql.queryResult) != None]
|
||||||
|
@ -157,16 +131,16 @@ class TDTestCase:
|
||||||
tdSql.query(avg_sql)
|
tdSql.query(avg_sql)
|
||||||
tdSql.checkData(0,0,pre_avg)
|
tdSql.checkData(0,0,pre_avg)
|
||||||
|
|
||||||
def check_avg_status(self):
|
def check_avg_status(self, dbname="testdb"):
|
||||||
# check max function work status
|
# check max function work status
|
||||||
|
|
||||||
tdSql.query("show tables like 'ct%'")
|
tdSql.query(f"show {dbname}.tables like 'ct%'")
|
||||||
table_names = tdSql.queryResult
|
table_names = tdSql.queryResult
|
||||||
tablenames = []
|
tablenames = []
|
||||||
for table_name in table_names:
|
for table_name in table_names:
|
||||||
tablenames.append(table_name[0])
|
tablenames.append(f"{dbname}.{table_name[0]}")
|
||||||
|
|
||||||
tdSql.query("desc stb1")
|
tdSql.query(f"desc {dbname}.stb1")
|
||||||
col_names = tdSql.queryResult
|
col_names = tdSql.queryResult
|
||||||
|
|
||||||
colnames = []
|
colnames = []
|
||||||
|
@ -182,41 +156,41 @@ class TDTestCase:
|
||||||
|
|
||||||
for colname in colnames:
|
for colname in colnames:
|
||||||
if colname.startswith("c"):
|
if colname.startswith("c"):
|
||||||
self.check_avg_distribute_diff_vnode(colname)
|
self.check_avg_distribute_diff_vnode(colname, dbname)
|
||||||
else:
|
else:
|
||||||
# self.check_avg_distribute_diff_vnode(colname) # bug for tag
|
# self.check_avg_distribute_diff_vnode(colname, dbname) # bug for tag
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def distribute_agg_query(self):
|
def distribute_agg_query(self, dbname="testdb"):
|
||||||
# basic filter
|
# basic filter
|
||||||
tdSql.query(" select avg(c1) from stb1 ")
|
tdSql.query(f"select avg(c1) from {dbname}.stb1 ")
|
||||||
tdSql.checkData(0,0,14.086956522)
|
tdSql.checkData(0,0,14.086956522)
|
||||||
|
|
||||||
tdSql.query(" select avg(a) from (select avg(c1) a from stb1 partition by tbname) ")
|
tdSql.query(f"select avg(a) from (select avg(c1) a from {dbname}.stb1 partition by tbname) ")
|
||||||
tdSql.checkData(0,0,14.292307692)
|
tdSql.checkData(0,0,14.292307692)
|
||||||
|
|
||||||
tdSql.query(" select avg(c1) from stb1 where t1=1")
|
tdSql.query(f"select avg(c1) from {dbname}.stb1 where t1=1")
|
||||||
tdSql.checkData(0,0,6.000000000)
|
tdSql.checkData(0,0,6.000000000)
|
||||||
|
|
||||||
tdSql.query("select avg(c1+c2) from stb1 where c1 =1 ")
|
tdSql.query(f"select avg(c1+c2) from {dbname}.stb1 where c1 =1 ")
|
||||||
tdSql.checkData(0,0,11112.000000000)
|
tdSql.checkData(0,0,11112.000000000)
|
||||||
|
|
||||||
tdSql.query("select avg(c1) from stb1 where tbname=\"ct2\"")
|
tdSql.query(f"select avg(c1) from {dbname}.stb1 where tbname=\"ct2\"")
|
||||||
tdSql.checkData(0,0,6.000000000)
|
tdSql.checkData(0,0,6.000000000)
|
||||||
|
|
||||||
tdSql.query("select avg(c1) from stb1 partition by tbname")
|
tdSql.query(f"select avg(c1) from {dbname}.stb1 partition by tbname")
|
||||||
tdSql.checkRows(20)
|
tdSql.checkRows(20)
|
||||||
|
|
||||||
tdSql.query("select avg(c1) from stb1 where t1> 4 partition by tbname")
|
tdSql.query(f"select avg(c1) from {dbname}.stb1 where t1> 4 partition by tbname")
|
||||||
tdSql.checkRows(15)
|
tdSql.checkRows(15)
|
||||||
|
|
||||||
# union all
|
# union all
|
||||||
tdSql.query("select avg(c1) from stb1 union all select avg(c1) from stb1 ")
|
tdSql.query(f"select avg(c1) from {dbname}.stb1 union all select avg(c1) from {dbname}.stb1 ")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.checkData(0,0,14.086956522)
|
tdSql.checkData(0,0,14.086956522)
|
||||||
|
|
||||||
tdSql.query("select avg(a) from (select avg(c1) a from stb1 union all select avg(c1) a from stb1)")
|
tdSql.query(f"select avg(a) from (select avg(c1) a from {dbname}.stb1 union all select avg(c1) a from {dbname}.stb1)")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,14.086956522)
|
tdSql.checkData(0,0,14.086956522)
|
||||||
|
|
||||||
|
@ -224,38 +198,38 @@ class TDTestCase:
|
||||||
|
|
||||||
tdSql.execute(" create database if not exists db ")
|
tdSql.execute(" create database if not exists db ")
|
||||||
tdSql.execute(" use db ")
|
tdSql.execute(" use db ")
|
||||||
tdSql.execute(" create stable st (ts timestamp , c1 int ,c2 float) tags(t1 int) ")
|
tdSql.execute(" create stable db.st (ts timestamp , c1 int ,c2 float) tags(t1 int) ")
|
||||||
tdSql.execute(" create table tb1 using st tags(1) ")
|
tdSql.execute(" create table db.tb1 using db.st tags(1) ")
|
||||||
tdSql.execute(" create table tb2 using st tags(2) ")
|
tdSql.execute(" create table db.tb2 using db.st tags(2) ")
|
||||||
|
|
||||||
|
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
ts = i*10 + self.ts
|
ts = i*10 + self.ts
|
||||||
tdSql.execute(f" insert into tb1 values({ts},{i},{i}.0)")
|
tdSql.execute(f" insert into db.tb1 values({ts},{i},{i}.0)")
|
||||||
tdSql.execute(f" insert into tb2 values({ts},{i},{i}.0)")
|
tdSql.execute(f" insert into db.tb2 values({ts},{i},{i}.0)")
|
||||||
|
|
||||||
tdSql.query("select avg(tb1.c1), avg(tb2.c2) from tb1, tb2 where tb1.ts=tb2.ts")
|
tdSql.query(f"select avg(tb1.c1), avg(tb2.c2) from db.tb1 tb1, db.tb2 tb2 where tb1.ts=tb2.ts")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,4.500000000)
|
tdSql.checkData(0,0,4.500000000)
|
||||||
tdSql.checkData(0,1,4.500000000)
|
tdSql.checkData(0,1,4.500000000)
|
||||||
|
|
||||||
# group by
|
# group by
|
||||||
tdSql.execute(" use testdb ")
|
tdSql.execute(f" use {dbname} ")
|
||||||
|
|
||||||
# partition by tbname or partition by tag
|
# partition by tbname or partition by tag
|
||||||
tdSql.query("select avg(c1) from stb1 partition by tbname")
|
tdSql.query(f"select avg(c1) from {dbname}.stb1 partition by tbname")
|
||||||
tdSql.checkRows(20)
|
tdSql.checkRows(20)
|
||||||
|
|
||||||
# nest query for support max
|
# nest query for support max
|
||||||
tdSql.query("select avg(c2+2)+1 from (select avg(c1) c2 from stb1)")
|
tdSql.query(f"select avg(c2+2)+1 from (select avg(c1) c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,17.086956522)
|
tdSql.checkData(0,0,17.086956522)
|
||||||
tdSql.query("select avg(c1+2) as c2 from (select ts ,c1 ,c2 from stb1)")
|
tdSql.query(f"select avg(c1+2) as c2 from (select ts ,c1 ,c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,16.086956522)
|
tdSql.checkData(0,0,16.086956522)
|
||||||
tdSql.query("select avg(a+2) as c2 from (select ts ,abs(c1) a ,c2 from stb1)")
|
tdSql.query(f"select avg(a+2) as c2 from (select ts ,abs(c1) a ,c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,16.086956522)
|
tdSql.checkData(0,0,16.086956522)
|
||||||
|
|
||||||
# mixup with other functions
|
# mixup with other functions
|
||||||
tdSql.query("select max(c1),count(c1),last(c2,c3),sum(c1+c2),avg(c1) from stb1")
|
tdSql.query(f"select max(c1),count(c1),last(c2,c3),sum(c1+c2),avg(c1) from {dbname}.stb1")
|
||||||
tdSql.checkData(0,0,28)
|
tdSql.checkData(0,0,28)
|
||||||
tdSql.checkData(0,1,184)
|
tdSql.checkData(0,1,184)
|
||||||
tdSql.checkData(0,2,-99999)
|
tdSql.checkData(0,2,-99999)
|
||||||
|
|
|
@ -6,11 +6,8 @@ import random
|
||||||
|
|
||||||
|
|
||||||
class TDTestCase:
|
class TDTestCase:
|
||||||
updatecfgDict = {'debugFlag': 143 ,"cDebugFlag":143,"uDebugFlag":143 ,"rpcDebugFlag":143 , "tmrDebugFlag":143 ,
|
|
||||||
"jniDebugFlag":143 ,"simDebugFlag":143,"dDebugFlag":143, "dDebugFlag":143,"vDebugFlag":143,"mDebugFlag":143,"qDebugFlag":143,
|
|
||||||
"wDebugFlag":143,"sDebugFlag":143,"tsdbDebugFlag":143,"tqDebugFlag":143 ,"fsDebugFlag":143 ,"udfDebugFlag":143,
|
|
||||||
"maxTablesPerVnode":2 ,"minTablesPerVnode":2,"tableIncStepPerVnode":2 }
|
|
||||||
|
|
||||||
|
updatecfgDict = {"maxTablesPerVnode":2 ,"minTablesPerVnode":2,"tableIncStepPerVnode":2 }
|
||||||
def init(self, conn, logSql):
|
def init(self, conn, logSql):
|
||||||
tdLog.debug("start to execute %s" % __file__)
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
tdSql.init(conn.cursor())
|
tdSql.init(conn.cursor())
|
||||||
|
@ -35,76 +32,52 @@ class TDTestCase:
|
||||||
else:
|
else:
|
||||||
tdLog.info(" count function work as expected, sql : %s "% max_sql)
|
tdLog.info(" count function work as expected, sql : %s "% max_sql)
|
||||||
|
|
||||||
|
def prepare_datas_of_distribute(self, dbname="testdb"):
|
||||||
def prepare_datas_of_distribute(self):
|
|
||||||
|
|
||||||
# prepate datas for 20 tables distributed at different vgroups
|
# prepate datas for 20 tables distributed at different vgroups
|
||||||
tdSql.execute("create database if not exists testdb keep 3650 duration 1000 vgroups 5")
|
tdSql.execute(f"create database if not exists {dbname} keep 3650 duration 1000 vgroups 5")
|
||||||
tdSql.execute(" use testdb ")
|
tdSql.execute(f" use {dbname} ")
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
'''create table stb1
|
f'''create table {dbname}.stb1
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
||||||
tags (t0 timestamp, t1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32))
|
tags (t0 timestamp, t1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32))
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
|
||||||
'''
|
|
||||||
create table t1
|
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
|
||||||
'''
|
|
||||||
)
|
|
||||||
for i in range(20):
|
for i in range(20):
|
||||||
tdSql.execute(f'create table ct{i+1} using stb1 tags ( now(), {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" )')
|
tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( now(), {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" )')
|
||||||
|
|
||||||
for i in range(9):
|
for i in range(9):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(1,21):
|
for i in range(1,21):
|
||||||
if i ==1 or i == 4:
|
if i ==1 or i == 4:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
tbname = "ct"+f'{i}'
|
tbname = f"{dbname}.ct{i}"
|
||||||
for j in range(9):
|
for j in range(9):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into {tbname} values ( now()-{(i+j)*10}s, {1*(j+i)}, {11111*(j+i)}, {111*(j+i)}, {11*(j)}, {1.11*(j+i)}, {11.11*(j+i)}, {(j+i)%2}, 'binary{j}', 'nchar{j}', now()+{1*j}a )"
|
f"insert into {tbname} values ( now()-{(i+j)*10}s, {1*(j+i)}, {11111*(j+i)}, {111*(j+i)}, {11*(j)}, {1.11*(j+i)}, {11.11*(j+i)}, {(j+i)%2}, 'binary{j}', 'nchar{j}', now()+{1*j}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute("insert into ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
|
|
||||||
tdSql.execute("insert into ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
|
|
||||||
tdSql.execute(
|
|
||||||
f'''insert into t1 values
|
|
||||||
( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a )
|
|
||||||
( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a )
|
|
||||||
( '2021-01-01 01:01:06.000', 3, 33333, 333, 33, 3.33, 33.33, 0, "binary3", "nchar3", now()+3a )
|
|
||||||
( '2021-05-07 01:01:10.000', 4, 44444, 444, 44, 4.44, 44.44, 1, "binary4", "nchar4", now()+4a )
|
|
||||||
( '2021-07-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
( '2021-09-30 01:01:16.000', 5, 55555, 555, 55, 5.55, 55.55, 0, "binary5", "nchar5", now()+5a )
|
|
||||||
( '2022-02-01 01:01:20.000', 6, 66666, 666, 66, 6.66, 66.66, 1, "binary6", "nchar6", now()+6a )
|
|
||||||
( '2022-10-28 01:01:26.000', 7, 00000, 000, 00, 0.00, 00.00, 1, "binary7", "nchar7", "1970-01-01 08:00:00.000" )
|
|
||||||
( '2022-12-01 01:01:30.000', 8, -88888, -888, -88, -8.88, -88.88, 0, "binary8", "nchar8", "1969-01-01 01:00:00.000" )
|
|
||||||
( '2022-12-31 01:01:36.000', 9, -99999999999999999, -999, -99, -9.99, -999999999999999999999.99, 1, "binary9", "nchar9", "1900-01-01 00:00:00.000" )
|
|
||||||
( '2023-02-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
'''
|
|
||||||
)
|
|
||||||
|
|
||||||
tdLog.info(" prepare data for distributed_aggregate done! ")
|
tdLog.info(" prepare data for distributed_aggregate done! ")
|
||||||
|
|
||||||
def check_distribute_datas(self):
|
def check_distribute_datas(self, dbname="testdb"):
|
||||||
# get vgroup_ids of all
|
# get vgroup_ids of all
|
||||||
tdSql.query("show vgroups ")
|
tdSql.query(f"show {dbname}.vgroups ")
|
||||||
vgroups = tdSql.queryResult
|
vgroups = tdSql.queryResult
|
||||||
|
|
||||||
vnode_tables={}
|
vnode_tables={}
|
||||||
|
@ -114,7 +87,7 @@ class TDTestCase:
|
||||||
|
|
||||||
|
|
||||||
# check sub_table of per vnode ,make sure sub_table has been distributed
|
# check sub_table of per vnode ,make sure sub_table has been distributed
|
||||||
tdSql.query("show tables like 'ct%'")
|
tdSql.query(f"show {dbname}.tables like 'ct%'")
|
||||||
table_names = tdSql.queryResult
|
table_names = tdSql.queryResult
|
||||||
tablenames = []
|
tablenames = []
|
||||||
for table_name in table_names:
|
for table_name in table_names:
|
||||||
|
@ -128,7 +101,7 @@ class TDTestCase:
|
||||||
if count < 2:
|
if count < 2:
|
||||||
tdLog.exit(" the datas of all not satisfy sub_table has been distributed ")
|
tdLog.exit(" the datas of all not satisfy sub_table has been distributed ")
|
||||||
|
|
||||||
def check_count_distribute_diff_vnode(self,col_name):
|
def check_count_distribute_diff_vnode(self,col_name, dbname="testdb"):
|
||||||
|
|
||||||
vgroup_ids = []
|
vgroup_ids = []
|
||||||
for k ,v in self.vnode_disbutes.items():
|
for k ,v in self.vnode_disbutes.items():
|
||||||
|
@ -146,9 +119,9 @@ class TDTestCase:
|
||||||
|
|
||||||
tbname_filters = tbname_ins[:-1]
|
tbname_filters = tbname_ins[:-1]
|
||||||
|
|
||||||
max_sql = f"select count({col_name}) from stb1 where tbname in ({tbname_filters});"
|
max_sql = f"select count({col_name}) from {dbname}.stb1 where tbname in ({tbname_filters});"
|
||||||
|
|
||||||
same_sql = f"select sum(c) from (select {col_name} ,1 as c from stb1 where tbname in ({tbname_filters}) and {col_name} is not null) "
|
same_sql = f"select sum(c) from (select {col_name} ,1 as c from {dbname}.stb1 where tbname in ({tbname_filters}) and {col_name} is not null) "
|
||||||
|
|
||||||
tdSql.query(max_sql)
|
tdSql.query(max_sql)
|
||||||
max_result = tdSql.queryResult
|
max_result = tdSql.queryResult
|
||||||
|
@ -161,16 +134,16 @@ class TDTestCase:
|
||||||
else:
|
else:
|
||||||
tdLog.info(" count function work as expected, sql : %s "% max_sql)
|
tdLog.info(" count function work as expected, sql : %s "% max_sql)
|
||||||
|
|
||||||
def check_count_status(self):
|
def check_count_status(self, dbname="testdb"):
|
||||||
# check max function work status
|
# check max function work status
|
||||||
|
|
||||||
tdSql.query("show tables like 'ct%'")
|
tdSql.query(f"show {dbname}.tables like 'ct%'")
|
||||||
table_names = tdSql.queryResult
|
table_names = tdSql.queryResult
|
||||||
tablenames = []
|
tablenames = []
|
||||||
for table_name in table_names:
|
for table_name in table_names:
|
||||||
tablenames.append(table_name[0])
|
tablenames.append(f"{dbname}.{table_name[0]}")
|
||||||
|
|
||||||
tdSql.query("desc stb1")
|
tdSql.query(f"desc {dbname}.stb1")
|
||||||
col_names = tdSql.queryResult
|
col_names = tdSql.queryResult
|
||||||
|
|
||||||
colnames = []
|
colnames = []
|
||||||
|
@ -186,34 +159,33 @@ class TDTestCase:
|
||||||
|
|
||||||
for colname in colnames:
|
for colname in colnames:
|
||||||
if colname.startswith("c"):
|
if colname.startswith("c"):
|
||||||
self.check_count_distribute_diff_vnode(colname)
|
self.check_count_distribute_diff_vnode(colname, dbname)
|
||||||
else:
|
else:
|
||||||
# self.check_count_distribute_diff_vnode(colname) # bug for tag
|
# self.check_count_distribute_diff_vnode(colname, dbname) # bug for tag
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def distribute_agg_query(self, dbname="testdb"):
|
||||||
def distribute_agg_query(self):
|
|
||||||
# basic filter
|
# basic filter
|
||||||
tdSql.query("select count(c1) from stb1 ")
|
tdSql.query(f"select count(c1) from {dbname}.stb1 ")
|
||||||
tdSql.checkData(0,0,184)
|
tdSql.checkData(0,0,184)
|
||||||
|
|
||||||
tdSql.query("select count(c1) from stb1 where t1=1")
|
tdSql.query(f"select count(c1) from {dbname}.stb1 where t1=1")
|
||||||
tdSql.checkData(0,0,9)
|
tdSql.checkData(0,0,9)
|
||||||
|
|
||||||
tdSql.query("select count(c1+c2) from stb1 where c1 =1 ")
|
tdSql.query(f"select count(c1+c2) from {dbname}.stb1 where c1 =1 ")
|
||||||
tdSql.checkData(0,0,2)
|
tdSql.checkData(0,0,2)
|
||||||
|
|
||||||
tdSql.query("select count(c1) from stb1 where tbname=\"ct2\"")
|
tdSql.query(f"select count(c1) from {dbname}.stb1 where tbname=\"ct2\"")
|
||||||
tdSql.checkData(0,0,9)
|
tdSql.checkData(0,0,9)
|
||||||
|
|
||||||
tdSql.query("select count(c1) from stb1 partition by tbname")
|
tdSql.query(f"select count(c1) from {dbname}.stb1 partition by tbname")
|
||||||
tdSql.checkRows(20)
|
tdSql.checkRows(20)
|
||||||
|
|
||||||
tdSql.query("select count(c1) from stb1 where t1> 4 partition by tbname")
|
tdSql.query(f"select count(c1) from {dbname}.stb1 where t1> 4 partition by tbname")
|
||||||
tdSql.checkRows(15)
|
tdSql.checkRows(15)
|
||||||
|
|
||||||
# union all
|
# union all
|
||||||
tdSql.query("select count(c1) from stb1 union all select count(c1) from stb1 ")
|
tdSql.query(f"select count(c1) from {dbname}.stb1 union all select count(c1) from {dbname}.stb1 ")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.checkData(0,0,184)
|
tdSql.checkData(0,0,184)
|
||||||
|
|
||||||
|
@ -221,60 +193,60 @@ class TDTestCase:
|
||||||
|
|
||||||
tdSql.execute(" create database if not exists db ")
|
tdSql.execute(" create database if not exists db ")
|
||||||
tdSql.execute(" use db ")
|
tdSql.execute(" use db ")
|
||||||
tdSql.execute(" create stable st (ts timestamp , c1 int ,c2 float) tags(t1 int) ")
|
tdSql.execute(" create stable db.st (ts timestamp , c1 int ,c2 float) tags(t1 int) ")
|
||||||
tdSql.execute(" create table tb1 using st tags(1) ")
|
tdSql.execute(" create table db.tb1 using db.st tags(1) ")
|
||||||
tdSql.execute(" create table tb2 using st tags(2) ")
|
tdSql.execute(" create table db.tb2 using db.st tags(2) ")
|
||||||
|
|
||||||
|
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
ts = i*10 + self.ts
|
ts = i*10 + self.ts
|
||||||
tdSql.execute(f" insert into tb1 values({ts},{i},{i}.0)")
|
tdSql.execute(f" insert into db.tb1 values({ts},{i},{i}.0)")
|
||||||
tdSql.execute(f" insert into tb2 values({ts},{i},{i}.0)")
|
tdSql.execute(f" insert into db.tb2 values({ts},{i},{i}.0)")
|
||||||
|
|
||||||
tdSql.query("select count(tb1.c1), count(tb2.c2) from tb1, tb2 where tb1.ts=tb2.ts")
|
tdSql.query(f"select count(tb1.c1), count(tb2.c2) from db.tb1 tb1, db.tb2 tb2 where tb1.ts=tb2.ts")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,10)
|
tdSql.checkData(0,0,10)
|
||||||
tdSql.checkData(0,1,10)
|
tdSql.checkData(0,1,10)
|
||||||
|
|
||||||
# group by
|
# group by
|
||||||
tdSql.execute(" use testdb ")
|
tdSql.execute(f" use {dbname} ")
|
||||||
|
|
||||||
tdSql.query(" select count(*) from stb1 ")
|
tdSql.query(f"select count(*) from {dbname}.stb1 ")
|
||||||
tdSql.checkData(0,0,187)
|
tdSql.checkData(0,0,187)
|
||||||
tdSql.query(" select count(*) from stb1 group by t1 ")
|
tdSql.query(f"select count(*) from {dbname}.stb1 group by t1 ")
|
||||||
tdSql.checkRows(20)
|
tdSql.checkRows(20)
|
||||||
tdSql.query(" select count(*) from stb1 group by c1 ")
|
tdSql.query(f"select count(*) from {dbname}.stb1 group by c1 ")
|
||||||
tdSql.checkRows(30)
|
tdSql.checkRows(30)
|
||||||
tdSql.query(" select count(*) from stb1 group by c2 ")
|
tdSql.query(f"select count(*) from {dbname}.stb1 group by c2 ")
|
||||||
tdSql.checkRows(31)
|
tdSql.checkRows(31)
|
||||||
|
|
||||||
# partition by tbname or partition by tag
|
# partition by tbname or partition by tag
|
||||||
tdSql.query("select max(c1),tbname from stb1 partition by tbname")
|
tdSql.query(f"select max(c1),tbname from {dbname}.stb1 partition by tbname")
|
||||||
query_data = tdSql.queryResult
|
query_data = tdSql.queryResult
|
||||||
|
|
||||||
for row in query_data:
|
for row in query_data:
|
||||||
tbname = row[1]
|
tbname = f"{dbname}.{row[1]}"
|
||||||
tdSql.query(" select max(c1) from %s "%tbname)
|
tdSql.query(f"select max(c1) from %s "%tbname)
|
||||||
tdSql.checkData(0,0,row[0])
|
tdSql.checkData(0,0,row[0])
|
||||||
|
|
||||||
tdSql.query("select max(c1),tbname from stb1 partition by t1")
|
tdSql.query(f"select max(c1),tbname from {dbname}.stb1 partition by t1")
|
||||||
query_data = tdSql.queryResult
|
query_data = tdSql.queryResult
|
||||||
|
|
||||||
for row in query_data:
|
for row in query_data:
|
||||||
tbname = row[1]
|
tbname = f"{dbname}.{row[1]}"
|
||||||
tdSql.query(" select max(c1) from %s "%tbname)
|
tdSql.query(f"select max(c1) from %s "%tbname)
|
||||||
tdSql.checkData(0,0,row[0])
|
tdSql.checkData(0,0,row[0])
|
||||||
|
|
||||||
# nest query for support max
|
# nest query for support max
|
||||||
tdSql.query("select abs(c2+2)+1 from (select count(c1) c2 from stb1)")
|
tdSql.query(f"select abs(c2+2)+1 from (select count(c1) c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,187.000000000)
|
tdSql.checkData(0,0,187.000000000)
|
||||||
tdSql.query("select count(c1+2) as c2 from (select ts ,c1 ,c2 from stb1)")
|
tdSql.query(f"select count(c1+2) as c2 from (select ts ,c1 ,c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,184)
|
tdSql.checkData(0,0,184)
|
||||||
tdSql.query("select count(a+2) as c2 from (select ts ,abs(c1) a ,c2 from stb1)")
|
tdSql.query(f"select count(a+2) as c2 from (select ts ,abs(c1) a ,c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,184)
|
tdSql.checkData(0,0,184)
|
||||||
|
|
||||||
# mixup with other functions
|
# mixup with other functions
|
||||||
tdSql.query("select max(c1),count(c1),last(c2,c3) from stb1")
|
tdSql.query(f"select max(c1),count(c1),last(c2,c3) from {dbname}.stb1")
|
||||||
tdSql.checkData(0,0,28)
|
tdSql.checkData(0,0,28)
|
||||||
tdSql.checkData(0,1,184)
|
tdSql.checkData(0,1,184)
|
||||||
tdSql.checkData(0,2,-99999)
|
tdSql.checkData(0,2,-99999)
|
||||||
|
|
|
@ -6,10 +6,8 @@ import random
|
||||||
|
|
||||||
|
|
||||||
class TDTestCase:
|
class TDTestCase:
|
||||||
updatecfgDict = {'debugFlag': 143 ,"cDebugFlag":143,"uDebugFlag":143 ,"rpcDebugFlag":143 , "tmrDebugFlag":143 ,
|
|
||||||
"jniDebugFlag":143 ,"simDebugFlag":143,"dDebugFlag":143, "dDebugFlag":143,"vDebugFlag":143,"mDebugFlag":143,"qDebugFlag":143,
|
updatecfgDict = {"maxTablesPerVnode":2 ,"minTablesPerVnode":2,"tableIncStepPerVnode":2 }
|
||||||
"wDebugFlag":143,"sDebugFlag":143,"tsdbDebugFlag":143,"tqDebugFlag":143 ,"fsDebugFlag":143 ,"udfDebugFlag":143,
|
|
||||||
"maxTablesPerVnode":2 ,"minTablesPerVnode":2,"tableIncStepPerVnode":2 }
|
|
||||||
|
|
||||||
def init(self, conn, logSql):
|
def init(self, conn, logSql):
|
||||||
tdLog.debug("start to execute %s" % __file__)
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
|
@ -36,75 +34,52 @@ class TDTestCase:
|
||||||
tdLog.info(" max function work as expected, sql : %s "% max_sql)
|
tdLog.info(" max function work as expected, sql : %s "% max_sql)
|
||||||
|
|
||||||
|
|
||||||
def prepare_datas_of_distribute(self):
|
def prepare_datas_of_distribute(self, dbname="testdb"):
|
||||||
|
|
||||||
# prepate datas for 20 tables distributed at different vgroups
|
# prepate datas for 20 tables distributed at different vgroups
|
||||||
tdSql.execute("create database if not exists testdb keep 3650 duration 1000 vgroups 5")
|
tdSql.execute(f"create database if not exists {dbname} keep 3650 duration 1000 vgroups 5")
|
||||||
tdSql.execute(" use testdb ")
|
tdSql.execute(f" use {dbname} ")
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
'''create table stb1
|
f'''create table {dbname}.stb1
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
||||||
tags (t0 timestamp, t1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32))
|
tags (t0 timestamp, t1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32))
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
|
||||||
'''
|
|
||||||
create table t1
|
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
|
||||||
'''
|
|
||||||
)
|
|
||||||
for i in range(20):
|
for i in range(20):
|
||||||
tdSql.execute(f'create table ct{i+1} using stb1 tags ( now(), {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" )')
|
tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( now(), {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" )')
|
||||||
|
|
||||||
for i in range(9):
|
for i in range(9):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(1,21):
|
for i in range(1,21):
|
||||||
if i ==1 or i == 4:
|
if i ==1 or i == 4:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
tbname = "ct"+f'{i}'
|
tbname = f"{dbname}.ct{i}"
|
||||||
for j in range(9):
|
for j in range(9):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into {tbname} values ( now()-{(i+j)*10}s, {1*(j+i)}, {11111*(j+i)}, {111*(j+i)}, {11*(j)}, {1.11*(j+i)}, {11.11*(j+i)}, {(j+i)%2}, 'binary{j}', 'nchar{j}', now()+{1*j}a )"
|
f"insert into {tbname} values ( now()-{(i+j)*10}s, {1*(j+i)}, {11111*(j+i)}, {111*(j+i)}, {11*(j)}, {1.11*(j+i)}, {11.11*(j+i)}, {(j+i)%2}, 'binary{j}', 'nchar{j}', now()+{1*j}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute("insert into ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
|
|
||||||
tdSql.execute("insert into ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
|
|
||||||
tdSql.execute(
|
|
||||||
f'''insert into t1 values
|
|
||||||
( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a )
|
|
||||||
( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a )
|
|
||||||
( '2021-01-01 01:01:06.000', 3, 33333, 333, 33, 3.33, 33.33, 0, "binary3", "nchar3", now()+3a )
|
|
||||||
( '2021-05-07 01:01:10.000', 4, 44444, 444, 44, 4.44, 44.44, 1, "binary4", "nchar4", now()+4a )
|
|
||||||
( '2021-07-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
( '2021-09-30 01:01:16.000', 5, 55555, 555, 55, 5.55, 55.55, 0, "binary5", "nchar5", now()+5a )
|
|
||||||
( '2022-02-01 01:01:20.000', 6, 66666, 666, 66, 6.66, 66.66, 1, "binary6", "nchar6", now()+6a )
|
|
||||||
( '2022-10-28 01:01:26.000', 7, 00000, 000, 00, 0.00, 00.00, 1, "binary7", "nchar7", "1970-01-01 08:00:00.000" )
|
|
||||||
( '2022-12-01 01:01:30.000', 8, -88888, -888, -88, -8.88, -88.88, 0, "binary8", "nchar8", "1969-01-01 01:00:00.000" )
|
|
||||||
( '2022-12-31 01:01:36.000', 9, -99999999999999999, -999, -99, -9.99, -999999999999999999999.99, 1, "binary9", "nchar9", "1900-01-01 00:00:00.000" )
|
|
||||||
( '2023-02-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
'''
|
|
||||||
)
|
|
||||||
|
|
||||||
tdLog.info(" prepare data for distributed_aggregate done! ")
|
tdLog.info(" prepare data for distributed_aggregate done! ")
|
||||||
|
|
||||||
def check_distribute_datas(self):
|
def check_distribute_datas(self, dbname="testdb"):
|
||||||
# get vgroup_ids of all
|
# get vgroup_ids of all
|
||||||
tdSql.query("show vgroups ")
|
tdSql.query(f"show {dbname}.vgroups ")
|
||||||
vgroups = tdSql.queryResult
|
vgroups = tdSql.queryResult
|
||||||
|
|
||||||
vnode_tables={}
|
vnode_tables={}
|
||||||
|
@ -112,9 +87,8 @@ class TDTestCase:
|
||||||
for vgroup_id in vgroups:
|
for vgroup_id in vgroups:
|
||||||
vnode_tables[vgroup_id[0]]=[]
|
vnode_tables[vgroup_id[0]]=[]
|
||||||
|
|
||||||
|
|
||||||
# check sub_table of per vnode ,make sure sub_table has been distributed
|
# check sub_table of per vnode ,make sure sub_table has been distributed
|
||||||
tdSql.query("show tables like 'ct%'")
|
tdSql.query(f"show {dbname}.tables like 'ct%'")
|
||||||
table_names = tdSql.queryResult
|
table_names = tdSql.queryResult
|
||||||
tablenames = []
|
tablenames = []
|
||||||
for table_name in table_names:
|
for table_name in table_names:
|
||||||
|
@ -128,7 +102,7 @@ class TDTestCase:
|
||||||
if count < 2:
|
if count < 2:
|
||||||
tdLog.exit(" the datas of all not satisfy sub_table has been distributed ")
|
tdLog.exit(" the datas of all not satisfy sub_table has been distributed ")
|
||||||
|
|
||||||
def check_max_distribute_diff_vnode(self,col_name):
|
def check_max_distribute_diff_vnode(self,col_name, dbname="testdb"):
|
||||||
|
|
||||||
vgroup_ids = []
|
vgroup_ids = []
|
||||||
for k ,v in self.vnode_disbutes.items():
|
for k ,v in self.vnode_disbutes.items():
|
||||||
|
@ -146,9 +120,9 @@ class TDTestCase:
|
||||||
|
|
||||||
tbname_filters = tbname_ins[:-1]
|
tbname_filters = tbname_ins[:-1]
|
||||||
|
|
||||||
max_sql = f"select max({col_name}) from stb1 where tbname in ({tbname_filters});"
|
max_sql = f"select max({col_name}) from {dbname}.stb1 where tbname in ({tbname_filters});"
|
||||||
|
|
||||||
same_sql = f"select {col_name} from stb1 where tbname in ({tbname_filters}) order by {col_name} desc limit 1"
|
same_sql = f"select {col_name} from {dbname}.stb1 where tbname in ({tbname_filters}) order by {col_name} desc limit 1"
|
||||||
|
|
||||||
tdSql.query(max_sql)
|
tdSql.query(max_sql)
|
||||||
max_result = tdSql.queryResult
|
max_result = tdSql.queryResult
|
||||||
|
@ -161,16 +135,16 @@ class TDTestCase:
|
||||||
else:
|
else:
|
||||||
tdLog.info(" max function work as expected, sql : %s "% max_sql)
|
tdLog.info(" max function work as expected, sql : %s "% max_sql)
|
||||||
|
|
||||||
def check_max_status(self):
|
def check_max_status(self, dbname="testdb"):
|
||||||
# check max function work status
|
# check max function work status
|
||||||
|
|
||||||
tdSql.query("show tables like 'ct%'")
|
tdSql.query(f"show {dbname}.tables like 'ct%'")
|
||||||
table_names = tdSql.queryResult
|
table_names = tdSql.queryResult
|
||||||
tablenames = []
|
tablenames = []
|
||||||
for table_name in table_names:
|
for table_name in table_names:
|
||||||
tablenames.append(table_name[0])
|
tablenames.append(f"{dbname}.{table_name[0]}")
|
||||||
|
|
||||||
tdSql.query("desc stb1")
|
tdSql.query(f"desc {dbname}.stb1")
|
||||||
col_names = tdSql.queryResult
|
col_names = tdSql.queryResult
|
||||||
|
|
||||||
colnames = []
|
colnames = []
|
||||||
|
@ -186,34 +160,33 @@ class TDTestCase:
|
||||||
|
|
||||||
for colname in colnames:
|
for colname in colnames:
|
||||||
if colname.startswith("c"):
|
if colname.startswith("c"):
|
||||||
self.check_max_distribute_diff_vnode(colname)
|
self.check_max_distribute_diff_vnode(colname, dbname)
|
||||||
else:
|
else:
|
||||||
# self.check_max_distribute_diff_vnode(colname) # bug for tag
|
# self.check_max_distribute_diff_vnode(colname, dbname) # bug for tag
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def distribute_agg_query(self, dbname="testdb"):
|
||||||
def distribute_agg_query(self):
|
|
||||||
# basic filter
|
# basic filter
|
||||||
tdSql.query("select max(c1) from stb1 where c1 is null")
|
tdSql.query(f"select max(c1) from {dbname}.stb1 where c1 is null")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
tdSql.query("select max(c1) from stb1 where t1=1")
|
tdSql.query(f"select max(c1) from {dbname}.stb1 where t1=1")
|
||||||
tdSql.checkData(0,0,10)
|
tdSql.checkData(0,0,10)
|
||||||
|
|
||||||
tdSql.query("select max(c1+c2) from stb1 where c1 =1 ")
|
tdSql.query(f"select max(c1+c2) from {dbname}.stb1 where c1 =1 ")
|
||||||
tdSql.checkData(0,0,11112.000000000)
|
tdSql.checkData(0,0,11112.000000000)
|
||||||
|
|
||||||
tdSql.query("select max(c1) from stb1 where tbname=\"ct2\"")
|
tdSql.query(f"select max(c1) from {dbname}.stb1 where tbname=\"ct2\"")
|
||||||
tdSql.checkData(0,0,10)
|
tdSql.checkData(0,0,10)
|
||||||
|
|
||||||
tdSql.query("select max(c1) from stb1 partition by tbname")
|
tdSql.query(f"select max(c1) from {dbname}.stb1 partition by tbname")
|
||||||
tdSql.checkRows(20)
|
tdSql.checkRows(20)
|
||||||
|
|
||||||
tdSql.query("select max(c1) from stb1 where t1> 4 partition by tbname")
|
tdSql.query(f"select max(c1) from {dbname}.stb1 where t1> 4 partition by tbname")
|
||||||
tdSql.checkRows(15)
|
tdSql.checkRows(15)
|
||||||
|
|
||||||
# union all
|
# union all
|
||||||
tdSql.query("select max(c1) from stb1 union all select max(c1) from stb1 ")
|
tdSql.query(f"select max(c1) from {dbname}.stb1 union all select max(c1) from {dbname}.stb1 ")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.checkData(0,0,28)
|
tdSql.checkData(0,0,28)
|
||||||
|
|
||||||
|
@ -221,45 +194,45 @@ class TDTestCase:
|
||||||
|
|
||||||
tdSql.execute(" create database if not exists db ")
|
tdSql.execute(" create database if not exists db ")
|
||||||
tdSql.execute(" use db ")
|
tdSql.execute(" use db ")
|
||||||
tdSql.execute(" create stable st (ts timestamp , c1 int ,c2 float) tags(t1 int) ")
|
tdSql.execute(" create stable db.st (ts timestamp , c1 int ,c2 float) tags(t1 int) ")
|
||||||
tdSql.execute(" create table tb1 using st tags(1) ")
|
tdSql.execute(" create table db.tb1 using db.st tags(1) ")
|
||||||
tdSql.execute(" create table tb2 using st tags(2) ")
|
tdSql.execute(" create table db.tb2 using db.st tags(2) ")
|
||||||
|
|
||||||
|
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
ts = i*10 + self.ts
|
ts = i*10 + self.ts
|
||||||
tdSql.execute(f" insert into tb1 values({ts},{i},{i}.0)")
|
tdSql.execute(f" insert into db.tb1 values({ts},{i},{i}.0)")
|
||||||
tdSql.execute(f" insert into tb2 values({ts},{i},{i}.0)")
|
tdSql.execute(f" insert into db.tb2 values({ts},{i},{i}.0)")
|
||||||
|
|
||||||
tdSql.query("select max(tb1.c1), tb2.c2 from tb1, tb2 where tb1.ts=tb2.ts")
|
tdSql.query(f"select max(tb1.c1), tb2.c2 from db.tb1 tb1, db.tb2 tb2 where tb1.ts=tb2.ts")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,9)
|
tdSql.checkData(0,0,9)
|
||||||
tdSql.checkData(0,0,9.00000)
|
tdSql.checkData(0,0,9.00000)
|
||||||
|
|
||||||
# group by
|
# group by
|
||||||
tdSql.execute(" use testdb ")
|
tdSql.execute("use testdb ")
|
||||||
tdSql.query(" select max(c1),c1 from stb1 group by t1 ")
|
tdSql.query(f"select max(c1),c1 from {dbname}.stb1 group by t1 ")
|
||||||
tdSql.checkRows(20)
|
tdSql.checkRows(20)
|
||||||
tdSql.query(" select max(c1),c1 from stb1 group by c1 ")
|
tdSql.query(f"select max(c1),c1 from {dbname}.stb1 group by c1 ")
|
||||||
tdSql.checkRows(30)
|
tdSql.checkRows(30)
|
||||||
tdSql.query(" select max(c1),c2 from stb1 group by c2 ")
|
tdSql.query(f"select max(c1),c2 from {dbname}.stb1 group by c2 ")
|
||||||
tdSql.checkRows(31)
|
tdSql.checkRows(31)
|
||||||
|
|
||||||
# selective common cols of datas
|
# selective common cols of datas
|
||||||
tdSql.query("select max(c1),c2,c3,c5 from stb1")
|
tdSql.query(f"select max(c1),c2,c3,c5 from {dbname}.stb1")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,28)
|
tdSql.checkData(0,0,28)
|
||||||
tdSql.checkData(0,1,311108)
|
tdSql.checkData(0,1,311108)
|
||||||
tdSql.checkData(0,2,3108)
|
tdSql.checkData(0,2,3108)
|
||||||
tdSql.checkData(0,3,31.08000)
|
tdSql.checkData(0,3,31.08000)
|
||||||
|
|
||||||
tdSql.query("select max(c1),t1,c2,t3 from stb1")
|
tdSql.query(f"select max(c1),t1,c2,t3 from {dbname}.stb1")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,28)
|
tdSql.checkData(0,0,28)
|
||||||
tdSql.checkData(0,1,19)
|
tdSql.checkData(0,1,19)
|
||||||
tdSql.checkData(0,2,311108)
|
tdSql.checkData(0,2,311108)
|
||||||
|
|
||||||
tdSql.query("select max(c1),ceil(t1),pow(c2,1)+2,abs(t3) from stb1")
|
tdSql.query(f"select max(c1),ceil(t1),pow(c2,1)+2,abs(t3) from {dbname}.stb1")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,28)
|
tdSql.checkData(0,0,28)
|
||||||
tdSql.checkData(0,1,19)
|
tdSql.checkData(0,1,19)
|
||||||
|
@ -267,32 +240,32 @@ class TDTestCase:
|
||||||
tdSql.checkData(0,3,2109)
|
tdSql.checkData(0,3,2109)
|
||||||
|
|
||||||
# partition by tbname or partition by tag
|
# partition by tbname or partition by tag
|
||||||
tdSql.query("select max(c1),tbname from stb1 partition by tbname")
|
tdSql.query(f"select max(c1),tbname from {dbname}.stb1 partition by tbname")
|
||||||
query_data = tdSql.queryResult
|
query_data = tdSql.queryResult
|
||||||
|
|
||||||
for row in query_data:
|
for row in query_data:
|
||||||
tbname = row[1]
|
tbname = f"{dbname}.{row[1]}"
|
||||||
tdSql.query(" select max(c1) from %s "%tbname)
|
tdSql.query(f"select max(c1) from %s "%tbname)
|
||||||
tdSql.checkData(0,0,row[0])
|
tdSql.checkData(0,0,row[0])
|
||||||
|
|
||||||
tdSql.query("select max(c1),tbname from stb1 partition by t1")
|
tdSql.query(f"select max(c1),tbname from {dbname}.stb1 partition by t1")
|
||||||
query_data = tdSql.queryResult
|
query_data = tdSql.queryResult
|
||||||
|
|
||||||
for row in query_data:
|
for row in query_data:
|
||||||
tbname = row[1]
|
tbname = f"{dbname}.{row[1]}"
|
||||||
tdSql.query(" select max(c1) from %s "%tbname)
|
tdSql.query(f"select max(c1) from %s "%tbname)
|
||||||
tdSql.checkData(0,0,row[0])
|
tdSql.checkData(0,0,row[0])
|
||||||
|
|
||||||
# nest query for support max
|
# nest query for support max
|
||||||
tdSql.query("select abs(c2+2)+1 from (select max(c1) c2 from stb1)")
|
tdSql.query(f"select abs(c2+2)+1 from (select max(c1) c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,31.000000000)
|
tdSql.checkData(0,0,31.000000000)
|
||||||
tdSql.query("select max(c1+2)+1 as c2 from (select ts ,c1 ,c2 from stb1)")
|
tdSql.query(f"select max(c1+2)+1 as c2 from (select ts ,c1 ,c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,31.000000000)
|
tdSql.checkData(0,0,31.000000000)
|
||||||
tdSql.query("select max(a+2)+1 as c2 from (select ts ,abs(c1) a ,c2 from stb1)")
|
tdSql.query(f"select max(a+2)+1 as c2 from (select ts ,abs(c1) a ,c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,31.000000000)
|
tdSql.checkData(0,0,31.000000000)
|
||||||
|
|
||||||
# mixup with other functions
|
# mixup with other functions
|
||||||
tdSql.query("select max(c1),count(c1),last(c2,c3) from stb1")
|
tdSql.query(f"select max(c1),count(c1),last(c2,c3) from {dbname}.stb1")
|
||||||
tdSql.checkData(0,0,28)
|
tdSql.checkData(0,0,28)
|
||||||
tdSql.checkData(0,1,184)
|
tdSql.checkData(0,1,184)
|
||||||
tdSql.checkData(0,2,-99999)
|
tdSql.checkData(0,2,-99999)
|
||||||
|
|
|
@ -6,10 +6,8 @@ import random
|
||||||
|
|
||||||
|
|
||||||
class TDTestCase:
|
class TDTestCase:
|
||||||
updatecfgDict = {'debugFlag': 143 ,"cDebugFlag":143,"uDebugFlag":143 ,"rpcDebugFlag":143 , "tmrDebugFlag":143 ,
|
|
||||||
"jniDebugFlag":143 ,"simDebugFlag":143,"dDebugFlag":143, "dDebugFlag":143,"vDebugFlag":143,"mDebugFlag":143,"qDebugFlag":143,
|
updatecfgDict = {"maxTablesPerVnode":2 ,"minTablesPerVnode":2,"tableIncStepPerVnode":2 }
|
||||||
"wDebugFlag":143,"sDebugFlag":143,"tsdbDebugFlag":143,"tqDebugFlag":143 ,"fsDebugFlag":143 ,"udfDebugFlag":143,
|
|
||||||
"maxTablesPerVnode":2 ,"minTablesPerVnode":2,"tableIncStepPerVnode":2 }
|
|
||||||
|
|
||||||
def init(self, conn, logSql):
|
def init(self, conn, logSql):
|
||||||
tdLog.debug("start to execute %s" % __file__)
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
|
@ -35,76 +33,52 @@ class TDTestCase:
|
||||||
else:
|
else:
|
||||||
tdLog.info(" min function work as expected, sql : %s "% min_sql)
|
tdLog.info(" min function work as expected, sql : %s "% min_sql)
|
||||||
|
|
||||||
|
def prepare_datas_of_distribute(self, dbname="testdb"):
|
||||||
def prepare_datas_of_distribute(self):
|
|
||||||
|
|
||||||
# prepate datas for 20 tables distributed at different vgroups
|
# prepate datas for 20 tables distributed at different vgroups
|
||||||
tdSql.execute("create database if not exists testdb keep 3650 duration 1000 vgroups 5")
|
tdSql.execute(f"create database if not exists {dbname} keep 3650 duration 1000 vgroups 5")
|
||||||
tdSql.execute(" use testdb ")
|
tdSql.execute(f" use {dbname} ")
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
'''create table stb1
|
f'''create table {dbname}.stb1
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
||||||
tags (t0 timestamp, t1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32))
|
tags (t0 timestamp, t1 int, t2 bigint, t3 smallint, t4 tinyint, t5 float, t6 double, t7 bool, t8 binary(16),t9 nchar(32))
|
||||||
'''
|
'''
|
||||||
)
|
)
|
||||||
|
|
||||||
tdSql.execute(
|
|
||||||
'''
|
|
||||||
create table t1
|
|
||||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
|
||||||
'''
|
|
||||||
)
|
|
||||||
for i in range(20):
|
for i in range(20):
|
||||||
tdSql.execute(f'create table ct{i+1} using stb1 tags ( now(), {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" )')
|
tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( now(), {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" )')
|
||||||
|
|
||||||
for i in range(9):
|
for i in range(9):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
f"insert into {dbname}.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(1,21):
|
for i in range(1,21):
|
||||||
if i ==1 or i == 4:
|
if i ==1 or i == 4:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
tbname = "ct"+f'{i}'
|
tbname = f"{dbname}.ct{i}"
|
||||||
for j in range(9):
|
for j in range(9):
|
||||||
tdSql.execute(
|
tdSql.execute(
|
||||||
f"insert into {tbname} values ( now()-{(i+j)*10}s, {1*(j+i)}, {11111*(j+i)}, {111*(j+i)}, {11*(j)}, {1.11*(j+i)}, {11.11*(j+i)}, {(j+i)%2}, 'binary{j}', 'nchar{j}', now()+{1*j}a )"
|
f"insert into {tbname} values ( now()-{(i+j)*10}s, {1*(j+i)}, {11111*(j+i)}, {111*(j+i)}, {11*(j)}, {1.11*(j+i)}, {11.11*(j+i)}, {(j+i)%2}, 'binary{j}', 'nchar{j}', now()+{1*j}a )"
|
||||||
)
|
)
|
||||||
tdSql.execute("insert into ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
tdSql.execute("insert into ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
tdSql.execute(f"insert into {dbname}.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||||
|
|
||||||
tdSql.execute("insert into ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
tdSql.execute("insert into ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
tdSql.execute(f"insert into {dbname}.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||||
|
|
||||||
tdSql.execute(
|
|
||||||
f'''insert into t1 values
|
|
||||||
( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a )
|
|
||||||
( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a )
|
|
||||||
( '2021-01-01 01:01:06.000', 3, 33333, 333, 33, 3.33, 33.33, 0, "binary3", "nchar3", now()+3a )
|
|
||||||
( '2021-05-07 01:01:10.000', 4, 44444, 444, 44, 4.44, 44.44, 1, "binary4", "nchar4", now()+4a )
|
|
||||||
( '2021-07-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
( '2021-09-30 01:01:16.000', 5, 55555, 555, 55, 5.55, 55.55, 0, "binary5", "nchar5", now()+5a )
|
|
||||||
( '2022-02-01 01:01:20.000', 6, 66666, 666, 66, 6.66, 66.66, 1, "binary6", "nchar6", now()+6a )
|
|
||||||
( '2022-10-28 01:01:26.000', 7, 00000, 000, 00, 0.00, 00.00, 1, "binary7", "nchar7", "1970-01-01 08:00:00.000" )
|
|
||||||
( '2022-12-01 01:01:30.000', 8, -88888, -888, -88, -8.88, -88.88, 0, "binary8", "nchar8", "1969-01-01 01:00:00.000" )
|
|
||||||
( '2022-12-31 01:01:36.000', 9, -99999999999999999, -999, -99, -9.99, -999999999999999999999.99, 1, "binary9", "nchar9", "1900-01-01 00:00:00.000" )
|
|
||||||
( '2023-02-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
|
||||||
'''
|
|
||||||
)
|
|
||||||
|
|
||||||
tdLog.info(" prepare data for distributed_aggregate done! ")
|
tdLog.info(" prepare data for distributed_aggregate done! ")
|
||||||
|
|
||||||
def check_distribute_datas(self):
|
def check_distribute_datas(self, dbname="testdb"):
|
||||||
# get vgroup_ids of all
|
# get vgroup_ids of all
|
||||||
tdSql.query("show vgroups ")
|
tdSql.query(f"show {dbname}.vgroups ")
|
||||||
vgroups = tdSql.queryResult
|
vgroups = tdSql.queryResult
|
||||||
|
|
||||||
vnode_tables={}
|
vnode_tables={}
|
||||||
|
@ -112,9 +86,8 @@ class TDTestCase:
|
||||||
for vgroup_id in vgroups:
|
for vgroup_id in vgroups:
|
||||||
vnode_tables[vgroup_id[0]]=[]
|
vnode_tables[vgroup_id[0]]=[]
|
||||||
|
|
||||||
|
|
||||||
# check sub_table of per vnode ,make sure sub_table has been distributed
|
# check sub_table of per vnode ,make sure sub_table has been distributed
|
||||||
tdSql.query("show tables like 'ct%'")
|
tdSql.query(f"show {dbname}.tables like 'ct%'")
|
||||||
table_names = tdSql.queryResult
|
table_names = tdSql.queryResult
|
||||||
tablenames = []
|
tablenames = []
|
||||||
for table_name in table_names:
|
for table_name in table_names:
|
||||||
|
@ -128,7 +101,7 @@ class TDTestCase:
|
||||||
if count < 2:
|
if count < 2:
|
||||||
tdLog.exit(" the datas of all not satisfy sub_table has been distributed ")
|
tdLog.exit(" the datas of all not satisfy sub_table has been distributed ")
|
||||||
|
|
||||||
def check_min_distribute_diff_vnode(self,col_name):
|
def check_min_distribute_diff_vnode(self,col_name, dbname="testdb"):
|
||||||
|
|
||||||
vgroup_ids = []
|
vgroup_ids = []
|
||||||
for k ,v in self.vnode_disbutes.items():
|
for k ,v in self.vnode_disbutes.items():
|
||||||
|
@ -146,9 +119,9 @@ class TDTestCase:
|
||||||
|
|
||||||
tbname_filters = tbname_ins[:-1]
|
tbname_filters = tbname_ins[:-1]
|
||||||
|
|
||||||
min_sql = f"select min({col_name}) from stb1 where tbname in ({tbname_filters});"
|
min_sql = f"select min({col_name}) from {dbname}.stb1 where tbname in ({tbname_filters});"
|
||||||
|
|
||||||
same_sql = f"select {col_name} from stb1 where tbname in ({tbname_filters}) and {col_name} is not null order by {col_name} asc limit 1"
|
same_sql = f"select {col_name} from {dbname}.stb1 where tbname in ({tbname_filters}) and {col_name} is not null order by {col_name} asc limit 1"
|
||||||
|
|
||||||
tdSql.query(min_sql)
|
tdSql.query(min_sql)
|
||||||
min_result = tdSql.queryResult
|
min_result = tdSql.queryResult
|
||||||
|
@ -161,16 +134,16 @@ class TDTestCase:
|
||||||
else:
|
else:
|
||||||
tdLog.info(" min function work as expected, sql : %s "% min_sql)
|
tdLog.info(" min function work as expected, sql : %s "% min_sql)
|
||||||
|
|
||||||
def check_min_status(self):
|
def check_min_status(self, dbname="testdb"):
|
||||||
# check max function work status
|
# check min function work status
|
||||||
|
|
||||||
tdSql.query("show tables like 'ct%'")
|
tdSql.query(f"show {dbname}.tables like 'ct%'")
|
||||||
table_names = tdSql.queryResult
|
table_names = tdSql.queryResult
|
||||||
tablenames = []
|
tablenames = []
|
||||||
for table_name in table_names:
|
for table_name in table_names:
|
||||||
tablenames.append(table_name[0])
|
tablenames.append(f"{dbname}.{table_name[0]}")
|
||||||
|
|
||||||
tdSql.query("desc stb1")
|
tdSql.query(f"desc {dbname}.stb1")
|
||||||
col_names = tdSql.queryResult
|
col_names = tdSql.queryResult
|
||||||
|
|
||||||
colnames = []
|
colnames = []
|
||||||
|
@ -182,119 +155,117 @@ class TDTestCase:
|
||||||
for colname in colnames:
|
for colname in colnames:
|
||||||
self.check_min_functions(tablename,colname)
|
self.check_min_functions(tablename,colname)
|
||||||
|
|
||||||
# check max function for different vnode
|
# check min function for different vnode
|
||||||
|
|
||||||
for colname in colnames:
|
for colname in colnames:
|
||||||
if colname.startswith("c"):
|
if colname.startswith("c"):
|
||||||
self.check_min_distribute_diff_vnode(colname)
|
self.check_min_distribute_diff_vnode(colname, dbname)
|
||||||
else:
|
else:
|
||||||
# self.check_min_distribute_diff_vnode(colname) # bug for tag
|
# self.check_min_distribute_diff_vnode(colname, dbname) # bug for tag
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def distribute_agg_query(self, dbname="testdb"):
|
||||||
def distribute_agg_query(self):
|
|
||||||
# basic filter
|
# basic filter
|
||||||
tdSql.query("select min(c1) from stb1 where c1 is null")
|
tdSql.query(f"select min(c1) from {dbname}.stb1 where c1 is null")
|
||||||
tdSql.checkRows(0)
|
tdSql.checkRows(0)
|
||||||
|
|
||||||
tdSql.query("select min(c1) from stb1 where t1=1")
|
tdSql.query(f"select min(c1) from {dbname}.stb1 where t1=1")
|
||||||
tdSql.checkData(0,0,2)
|
tdSql.checkData(0,0,2)
|
||||||
|
|
||||||
tdSql.query("select min(c1+c2) from stb1 where c1 =1 ")
|
tdSql.query(f"select min(c1+c2) from {dbname}.stb1 where c1 =1 ")
|
||||||
tdSql.checkData(0,0,11112.000000000)
|
tdSql.checkData(0,0,11112.000000000)
|
||||||
|
|
||||||
tdSql.query("select min(c1) from stb1 where tbname=\"ct2\"")
|
tdSql.query(f"select min(c1) from {dbname}.stb1 where tbname=\"ct2\"")
|
||||||
tdSql.checkData(0,0,2)
|
tdSql.checkData(0, 0, 2)
|
||||||
|
|
||||||
tdSql.query("select min(c1) from stb1 partition by tbname")
|
tdSql.query(f"select min(c1) from {dbname}.stb1 partition by tbname")
|
||||||
tdSql.checkRows(20)
|
tdSql.checkRows(20)
|
||||||
|
|
||||||
tdSql.query("select min(c1) from stb1 where t1> 4 partition by tbname")
|
tdSql.query(f"select min(c1) from {dbname}.stb1 where t1> 4 partition by tbname")
|
||||||
tdSql.checkRows(15)
|
tdSql.checkRows(15)
|
||||||
|
|
||||||
# union all
|
# union all
|
||||||
tdSql.query("select min(c1) from stb1 union all select min(c1) from stb1 ")
|
tdSql.query(f"select min(c1) from {dbname}.stb1 union all select min(c1) from {dbname}.stb1 ")
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.checkData(0,0,0)
|
tdSql.checkData(0, 0, 0)
|
||||||
|
|
||||||
# join
|
# join
|
||||||
|
|
||||||
tdSql.execute(" create database if not exists db ")
|
tdSql.execute(" create database if not exists db ")
|
||||||
tdSql.execute(" use db ")
|
tdSql.execute(" use db ")
|
||||||
tdSql.execute(" create stable st (ts timestamp , c1 int ,c2 float) tags(t1 int) ")
|
tdSql.execute(" create stable db.st (ts timestamp , c1 int ,c2 float) tags(t1 int) ")
|
||||||
tdSql.execute(" create table tb1 using st tags(1) ")
|
tdSql.execute(" create table db.tb1 using db.st tags(1) ")
|
||||||
tdSql.execute(" create table tb2 using st tags(2) ")
|
tdSql.execute(" create table db.tb2 using db.st tags(2) ")
|
||||||
|
|
||||||
|
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
ts = i*10 + self.ts
|
ts = i*10 + self.ts
|
||||||
tdSql.execute(f" insert into tb1 values({ts},{i},{i}.0)")
|
tdSql.execute(f" insert into db.tb1 values({ts},{i},{i}.0)")
|
||||||
tdSql.execute(f" insert into tb2 values({ts},{i},{i}.0)")
|
tdSql.execute(f" insert into db.tb2 values({ts},{i},{i}.0)")
|
||||||
|
|
||||||
tdSql.query("select min(tb1.c1), tb2.c2 from tb1, tb2 where tb1.ts=tb2.ts")
|
tdSql.query(f"select min(tb1.c1), tb2.c2 from db.tb1 tb1, db.tb2 tb2 where tb1.ts=tb2.ts")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,0)
|
tdSql.checkData(0,0,0)
|
||||||
tdSql.checkData(0,0,0.00000)
|
tdSql.checkData(0,0,0.00000)
|
||||||
|
|
||||||
# group by
|
# group by
|
||||||
tdSql.execute(" use testdb ")
|
tdSql.execute(f"use {dbname} ")
|
||||||
tdSql.query(" select min(c1),c1 from stb1 group by t1 ")
|
tdSql.query(f"select min(c1),c1 from {dbname}.stb1 group by t1 ")
|
||||||
tdSql.checkRows(20)
|
tdSql.checkRows(20)
|
||||||
tdSql.query(" select min(c1),c1 from stb1 group by c1 ")
|
tdSql.query(f"select min(c1),c1 from {dbname}.stb1 group by c1 ")
|
||||||
tdSql.checkRows(30)
|
tdSql.checkRows(30)
|
||||||
tdSql.query(" select min(c1),c2 from stb1 group by c2 ")
|
tdSql.query(f"select min(c1),c2 from {dbname}.stb1 group by c2 ")
|
||||||
tdSql.checkRows(31)
|
tdSql.checkRows(31)
|
||||||
|
|
||||||
# selective common cols of datas
|
# selective common cols of datas
|
||||||
tdSql.query("select min(c1),c2,c3,c5 from stb1")
|
tdSql.query(f"select min(c1),c2,c3,c5 from {dbname}.stb1")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,0)
|
tdSql.checkData(0,0,0)
|
||||||
tdSql.checkData(0,1,0)
|
tdSql.checkData(0,1,0)
|
||||||
tdSql.checkData(0,2,0)
|
tdSql.checkData(0,2,0)
|
||||||
tdSql.checkData(0,3,0)
|
tdSql.checkData(0,3,0)
|
||||||
|
|
||||||
tdSql.query("select min(c1),t1,c2,t3 from stb1 where c1 >5")
|
tdSql.query(f"select min(c1),t1,c2,t3 from {dbname}.stb1 where c1 > 5")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,6)
|
tdSql.checkData(0,0,6)
|
||||||
tdSql.checkData(0,2,66666)
|
tdSql.checkData(0,2,66666)
|
||||||
|
|
||||||
tdSql.query("select min(c1),ceil(t1),pow(c2,1)+2,abs(t3) from stb1 where c1>12")
|
tdSql.query(f"select min(c1),ceil(t1),pow(c2,1)+2,abs(t3) from {dbname}.stb1 where c1 > 12")
|
||||||
tdSql.checkRows(1)
|
tdSql.checkRows(1)
|
||||||
tdSql.checkData(0,0,13)
|
tdSql.checkData(0,0,13)
|
||||||
tdSql.checkData(0,2,144445.000000000)
|
tdSql.checkData(0,2,144445.000000000)
|
||||||
|
|
||||||
# partition by tbname or partition by tag
|
# partition by tbname or partition by tag
|
||||||
tdSql.query("select min(c1),tbname from stb1 partition by tbname")
|
tdSql.query(f"select min(c1),tbname from {dbname}.stb1 partition by tbname")
|
||||||
query_data = tdSql.queryResult
|
query_data = tdSql.queryResult
|
||||||
|
|
||||||
for row in query_data:
|
for row in query_data:
|
||||||
tbname = row[1]
|
tbname = f"{dbname}.{row[1]}"
|
||||||
tdSql.query(" select min(c1) from %s "%tbname)
|
tdSql.query(f"select min(c1) from %s "%tbname)
|
||||||
tdSql.checkData(0,0,row[0])
|
tdSql.checkData(0,0,row[0])
|
||||||
|
|
||||||
tdSql.query("select min(c1),tbname from stb1 partition by t1")
|
tdSql.query(f"select min(c1),tbname from {dbname}.stb1 partition by t1")
|
||||||
query_data = tdSql.queryResult
|
query_data = tdSql.queryResult
|
||||||
|
|
||||||
for row in query_data:
|
for row in query_data:
|
||||||
tbname = row[1]
|
tbname = f"{dbname}.{row[1]}"
|
||||||
tdSql.query(" select min(c1) from %s "%tbname)
|
tdSql.query(f"select min(c1) from %s "%tbname)
|
||||||
tdSql.checkData(0,0,row[0])
|
tdSql.checkData(0,0,row[0])
|
||||||
|
|
||||||
# nest query for support max
|
# nest query for support min
|
||||||
tdSql.query("select abs(c2+2)+1 from (select min(c1) c2 from stb1)")
|
tdSql.query(f"select abs(c2+2)+1 from (select min(c1) c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,3.000000000)
|
tdSql.checkData(0,0,3.000000000)
|
||||||
tdSql.query("select min(c1+2)+1 as c2 from (select ts ,c1 ,c2 from stb1)")
|
tdSql.query(f"select min(c1+2)+1 as c2 from (select ts ,c1 ,c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,3.000000000)
|
tdSql.checkData(0,0,3.000000000)
|
||||||
tdSql.query("select min(a+2)+1 as c2 from (select ts ,abs(c1) a ,c2 from stb1)")
|
tdSql.query(f"select min(a+2)+1 as c2 from (select ts ,abs(c1) a ,c2 from {dbname}.stb1)")
|
||||||
tdSql.checkData(0,0,3.000000000)
|
tdSql.checkData(0,0,3.000000000)
|
||||||
|
|
||||||
# mixup with other functions
|
# mixup with other functions
|
||||||
tdSql.query("select max(c1),count(c1),last(c2,c3),min(c1) from stb1")
|
tdSql.query(f"select max(c1),count(c1),last(c2,c3) from {dbname}.stb1")
|
||||||
tdSql.checkData(0,0,28)
|
tdSql.checkData(0,0,28)
|
||||||
tdSql.checkData(0,1,184)
|
tdSql.checkData(0,1,184)
|
||||||
tdSql.checkData(0,2,-99999)
|
tdSql.checkData(0,2,-99999)
|
||||||
tdSql.checkData(0,3,-999)
|
tdSql.checkData(0,3,-999)
|
||||||
tdSql.checkData(0,4,0)
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
|
||||||
|
|
|
@ -51,32 +51,32 @@ class TDTestCase:
|
||||||
tdCom.create_ctable(tdSql, dbname=paraDict["dbName"],stbname=paraDict["stbName"],tag_elm_list=paraDict['tagSchema'],count=paraDict["ctbNum"], default_ctbname_prefix=paraDict['ctbPrefix'])
|
tdCom.create_ctable(tdSql, dbname=paraDict["dbName"],stbname=paraDict["stbName"],tag_elm_list=paraDict['tagSchema'],count=paraDict["ctbNum"], default_ctbname_prefix=paraDict['ctbPrefix'])
|
||||||
# tdLog.info("insert data")
|
# tdLog.info("insert data")
|
||||||
# tmqCom.insert_data(tdSql,paraDict["dbName"],paraDict["ctbPrefix"],paraDict["ctbNum"],paraDict["rowsPerTbl"],paraDict["batchNum"],paraDict["startTs"])
|
# tmqCom.insert_data(tdSql,paraDict["dbName"],paraDict["ctbPrefix"],paraDict["ctbNum"],paraDict["rowsPerTbl"],paraDict["batchNum"],paraDict["startTs"])
|
||||||
|
|
||||||
tdLog.info("create 4 topics")
|
tdLog.info("create 4 topics")
|
||||||
sqlString = "create topic %s as database %s" %(topicNameList[0], paraDict['dbName'])
|
sqlString = "create topic %s as database %s" %(topicNameList[0], paraDict['dbName'])
|
||||||
tdLog.info("create topic sql: %s"%sqlString)
|
tdLog.info("create topic sql: %s"%sqlString)
|
||||||
tdSql.execute(sqlString)
|
tdSql.execute(sqlString)
|
||||||
|
|
||||||
sqlString = "create topic %s as stable %s.%s" %(topicNameList[1], paraDict['dbName'], paraDict['stbName'])
|
sqlString = "create topic %s as stable %s.%s" %(topicNameList[1], paraDict['dbName'], paraDict['stbName'])
|
||||||
tdLog.info("create topic sql: %s"%sqlString)
|
tdLog.info("create topic sql: %s"%sqlString)
|
||||||
tdSql.execute(sqlString)
|
tdSql.execute(sqlString)
|
||||||
|
|
||||||
queryString = "select * from %s.%s where c1 %% 7 == 0" %(paraDict['dbName'], paraDict['stbName'])
|
queryString = "select * from %s.%s where c1 %% 7 == 0" %(paraDict['dbName'], paraDict['stbName'])
|
||||||
sqlString = "create topic %s as %s" %(topicNameList[2], queryString)
|
sqlString = "create topic %s as %s" %(topicNameList[2], queryString)
|
||||||
tdLog.info("create topic sql: %s"%sqlString)
|
tdLog.info("create topic sql: %s"%sqlString)
|
||||||
tdSql.execute(sqlString)
|
tdSql.execute(sqlString)
|
||||||
|
|
||||||
queryString = "select ts, log(c1), ceil(pow(c1,3)) from %s.%s where c1 %% 7 == 0" %(paraDict['dbName'], paraDict['stbName'])
|
queryString = "select ts, log(c1), ceil(pow(c1,3)) from %s.%s where c1 %% 7 == 0" %(paraDict['dbName'], paraDict['stbName'])
|
||||||
sqlString = "create topic %s as %s " %(topicNameList[3], queryString)
|
sqlString = "create topic %s as %s " %(topicNameList[3], queryString)
|
||||||
tdLog.info("create topic sql: %s"%sqlString)
|
tdLog.info("create topic sql: %s"%sqlString)
|
||||||
tdSql.execute(sqlString)
|
tdSql.execute(sqlString)
|
||||||
|
|
||||||
tdSql.query("show topics")
|
tdSql.query("show topics")
|
||||||
tdLog.debug(tdSql.queryResult)
|
tdLog.debug(tdSql.queryResult)
|
||||||
rows = tdSql.getRows()
|
rows = tdSql.getRows()
|
||||||
if rows != len(consumerIdList):
|
if rows != len(consumerIdList):
|
||||||
tdLog.exit("topic rows error")
|
tdLog.exit("topic rows error")
|
||||||
|
|
||||||
for i in range (rows):
|
for i in range (rows):
|
||||||
topicName = tdSql.getData(i,0)
|
topicName = tdSql.getData(i,0)
|
||||||
matchFlag = 0
|
matchFlag = 0
|
||||||
|
@ -87,24 +87,24 @@ class TDTestCase:
|
||||||
break
|
break
|
||||||
if matchFlag == 0:
|
if matchFlag == 0:
|
||||||
tdLog.exit("topic name: %s is error", topicName)
|
tdLog.exit("topic name: %s is error", topicName)
|
||||||
|
|
||||||
# init consume info, and start tmq_sim, then check consume result
|
# init consume info, and start tmq_sim, then check consume result
|
||||||
tdLog.info("insert consume info to consume processor")
|
tdLog.info("insert consume info to consume processor")
|
||||||
expectrowcnt = paraDict["rowsPerTbl"] * paraDict["ctbNum"]
|
expectrowcnt = paraDict["rowsPerTbl"] * paraDict["ctbNum"]
|
||||||
topicList = topicNameList[0]
|
topicList = topicNameList[0]
|
||||||
ifcheckdata = 0
|
ifcheckdata = 0
|
||||||
ifManualCommit = 0
|
ifManualCommit = 0
|
||||||
keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[0]
|
keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[0]
|
||||||
tmqCom.insertConsumerInfo(consumerIdList[0], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit)
|
tmqCom.insertConsumerInfo(consumerIdList[0], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit)
|
||||||
|
|
||||||
topicList = topicNameList[1]
|
topicList = topicNameList[1]
|
||||||
keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[1]
|
keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[1]
|
||||||
tmqCom.insertConsumerInfo(consumerIdList[1], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit)
|
tmqCom.insertConsumerInfo(consumerIdList[1], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit)
|
||||||
|
|
||||||
topicList = topicNameList[2]
|
topicList = topicNameList[2]
|
||||||
keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[2]
|
keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[2]
|
||||||
tmqCom.insertConsumerInfo(consumerIdList[2], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit)
|
tmqCom.insertConsumerInfo(consumerIdList[2], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit)
|
||||||
|
|
||||||
topicList = topicNameList[3]
|
topicList = topicNameList[3]
|
||||||
keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[3]
|
keyList = 'group.id:%s, enable.auto.commit:false, auto.commit.interval.ms:6000, auto.offset.reset:earliest'%consumeGroupIdList[3]
|
||||||
tmqCom.insertConsumerInfo(consumerIdList[3], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit)
|
tmqCom.insertConsumerInfo(consumerIdList[3], expectrowcnt,topicList,keyList,ifcheckdata,ifManualCommit)
|
||||||
|
@ -118,27 +118,27 @@ class TDTestCase:
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
tdLog.info("check show consumers")
|
tdLog.info("check show consumers")
|
||||||
tdSql.query("show consumers")
|
tdSql.query("show consumers")
|
||||||
# tdLog.info(tdSql.queryResult)
|
# tdLog.info(tdSql.queryResult)
|
||||||
rows = tdSql.getRows()
|
rows = tdSql.getRows()
|
||||||
tdLog.info("show consumers rows: %d"%rows)
|
tdLog.info("show consumers rows: %d"%rows)
|
||||||
if rows != len(topicNameList):
|
if rows != len(topicNameList):
|
||||||
tdLog.exit("show consumers rows error")
|
tdLog.exit("show consumers rows error")
|
||||||
|
|
||||||
tdLog.info("check show subscriptions")
|
tdLog.info("check show subscriptions")
|
||||||
tdSql.query("show subscriptions")
|
tdSql.query("show subscriptions")
|
||||||
# tdLog.debug(tdSql.queryResult)
|
# tdLog.debug(tdSql.queryResult)
|
||||||
rows = tdSql.getRows()
|
rows = tdSql.getRows()
|
||||||
tdLog.info("show subscriptions rows: %d"%rows)
|
tdLog.info("show subscriptions rows: %d"%rows)
|
||||||
if rows != paraDict['vgroups'] * len(topicNameList):
|
if rows != paraDict['vgroups'] * len(topicNameList):
|
||||||
tdLog.exit("show subscriptions rows error")
|
tdLog.exit("show subscriptions rows error")
|
||||||
|
|
||||||
pThread.join()
|
pThread.join()
|
||||||
|
|
||||||
tdLog.info("insert process end, and start to check consume result")
|
tdLog.info("insert process end, and start to check consume result")
|
||||||
expectRows = len(consumerIdList)
|
expectRows = len(consumerIdList)
|
||||||
_ = tmqCom.selectConsumeResult(expectRows)
|
_ = tmqCom.selectConsumeResult(expectRows)
|
||||||
|
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
for i in range(len(topicNameList)):
|
for i in range(len(topicNameList)):
|
||||||
tdSql.query("drop topic %s"%topicNameList[i])
|
tdSql.query("drop topic %s"%topicNameList[i])
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ python3 ./test.py -f 1-insert/alter_stable.py
|
||||||
python3 ./test.py -f 1-insert/alter_table.py
|
python3 ./test.py -f 1-insert/alter_table.py
|
||||||
python3 ./test.py -f 1-insert/insertWithMoreVgroup.py
|
python3 ./test.py -f 1-insert/insertWithMoreVgroup.py
|
||||||
python3 ./test.py -f 1-insert/table_comment.py
|
python3 ./test.py -f 1-insert/table_comment.py
|
||||||
#python3 ./test.py -f 1-insert/time_range_wise.py
|
python3 ./test.py -f 1-insert/time_range_wise.py
|
||||||
python3 ./test.py -f 1-insert/block_wise.py
|
python3 ./test.py -f 1-insert/block_wise.py
|
||||||
python3 ./test.py -f 1-insert/create_retentions.py
|
python3 ./test.py -f 1-insert/create_retentions.py
|
||||||
python3 ./test.py -f 1-insert/table_param_ttl.py
|
python3 ./test.py -f 1-insert/table_param_ttl.py
|
||||||
|
@ -59,17 +59,44 @@ python3 ./test.py -f 2-query/ceil.py
|
||||||
python3 ./test.py -f 2-query/ceil.py -R
|
python3 ./test.py -f 2-query/ceil.py -R
|
||||||
python3 ./test.py -f 2-query/char_length.py
|
python3 ./test.py -f 2-query/char_length.py
|
||||||
python3 ./test.py -f 2-query/char_length.py -R
|
python3 ./test.py -f 2-query/char_length.py -R
|
||||||
#python3 ./test.py -f 2-query/check_tsdb.py
|
# python3 ./test.py -f 2-query/check_tsdb.py
|
||||||
#python3 ./test.py -f 2-query/check_tsdb.py -R
|
# python3 ./test.py -f 2-query/check_tsdb.py -R
|
||||||
|
python3 ./test.py -f 2-query/concat.py
|
||||||
|
python3 ./test.py -f 2-query/concat.py -R
|
||||||
|
python3 ./test.py -f 2-query/concat_ws.py
|
||||||
|
python3 ./test.py -f 2-query/concat_ws.py -R
|
||||||
|
python3 ./test.py -f 2-query/concat_ws2.py
|
||||||
|
python3 ./test.py -f 2-query/concat_ws2.py -R
|
||||||
|
python3 ./test.py -f 2-query/cos.py
|
||||||
|
python3 ./test.py -f 2-query/cos.py -R
|
||||||
|
python3 ./test.py -f 2-query/count_partition.py
|
||||||
|
python3 ./test.py -f 2-query/count_partition.py -R
|
||||||
|
python3 ./test.py -f 2-query/count.py
|
||||||
|
python3 ./test.py -f 2-query/count.py -R
|
||||||
|
python3 ./test.py -f 2-query/db.py
|
||||||
|
python3 ./test.py -f 2-query/db.py -R
|
||||||
|
python3 ./test.py -f 2-query/diff.py
|
||||||
|
python3 ./test.py -f 2-query/diff.py -R
|
||||||
|
python3 ./test.py -f 2-query/distinct.py
|
||||||
|
python3 ./test.py -f 2-query/distinct.py -R
|
||||||
|
python3 ./test.py -f 2-query/distribute_agg_apercentile.py
|
||||||
|
python3 ./test.py -f 2-query/distribute_agg_apercentile.py -R
|
||||||
|
python3 ./test.py -f 2-query/distribute_agg_avg.py
|
||||||
|
python3 ./test.py -f 2-query/distribute_agg_avg.py -R
|
||||||
|
python3 ./test.py -f 2-query/distribute_agg_count.py
|
||||||
|
python3 ./test.py -f 2-query/distribute_agg_count.py -R
|
||||||
|
python3 ./test.py -f 2-query/distribute_agg_max.py
|
||||||
|
python3 ./test.py -f 2-query/distribute_agg_max.py -R
|
||||||
|
python3 ./test.py -f 2-query/distribute_agg_min.py
|
||||||
|
python3 ./test.py -f 2-query/distribute_agg_min.py -R
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
python3 ./test.py -f 1-insert/update_data.py
|
python3 ./test.py -f 1-insert/update_data.py
|
||||||
|
|
||||||
python3 ./test.py -f 1-insert/delete_data.py
|
python3 ./test.py -f 1-insert/delete_data.py
|
||||||
python3 ./test.py -f 2-query/db.py
|
|
||||||
|
|
||||||
|
|
||||||
python3 ./test.py -f 2-query/db.py
|
|
||||||
python3 ./test.py -f 2-query/distinct.py
|
|
||||||
python3 ./test.py -f 2-query/varchar.py
|
python3 ./test.py -f 2-query/varchar.py
|
||||||
python3 ./test.py -f 2-query/ltrim.py
|
python3 ./test.py -f 2-query/ltrim.py
|
||||||
python3 ./test.py -f 2-query/rtrim.py
|
python3 ./test.py -f 2-query/rtrim.py
|
||||||
|
@ -81,10 +108,7 @@ python3 ./test.py -f 2-query/join2.py
|
||||||
python3 ./test.py -f 2-query/substr.py
|
python3 ./test.py -f 2-query/substr.py
|
||||||
python3 ./test.py -f 2-query/union.py
|
python3 ./test.py -f 2-query/union.py
|
||||||
python3 ./test.py -f 2-query/union1.py
|
python3 ./test.py -f 2-query/union1.py
|
||||||
python3 ./test.py -f 2-query/concat.py
|
|
||||||
python3 ./test.py -f 2-query/concat2.py
|
python3 ./test.py -f 2-query/concat2.py
|
||||||
python3 ./test.py -f 2-query/concat_ws.py
|
|
||||||
python3 ./test.py -f 2-query/concat_ws2.py
|
|
||||||
python3 ./test.py -f 2-query/spread.py
|
python3 ./test.py -f 2-query/spread.py
|
||||||
python3 ./test.py -f 2-query/hyperloglog.py
|
python3 ./test.py -f 2-query/hyperloglog.py
|
||||||
python3 ./test.py -f 2-query/explain.py
|
python3 ./test.py -f 2-query/explain.py
|
||||||
|
@ -97,13 +121,11 @@ python3 ./test.py -f 2-query/Now.py
|
||||||
python3 ./test.py -f 2-query/Today.py
|
python3 ./test.py -f 2-query/Today.py
|
||||||
python3 ./test.py -f 2-query/max.py
|
python3 ./test.py -f 2-query/max.py
|
||||||
python3 ./test.py -f 2-query/min.py
|
python3 ./test.py -f 2-query/min.py
|
||||||
python3 ./test.py -f 2-query/count.py
|
|
||||||
python3 ./test.py -f 2-query/last.py
|
python3 ./test.py -f 2-query/last.py
|
||||||
python3 ./test.py -f 2-query/first.py
|
python3 ./test.py -f 2-query/first.py
|
||||||
python3 ./test.py -f 2-query/To_iso8601.py
|
python3 ./test.py -f 2-query/To_iso8601.py
|
||||||
python3 ./test.py -f 2-query/To_unixtimestamp.py
|
python3 ./test.py -f 2-query/To_unixtimestamp.py
|
||||||
python3 ./test.py -f 2-query/timetruncate.py
|
python3 ./test.py -f 2-query/timetruncate.py
|
||||||
python3 ./test.py -f 2-query/diff.py
|
|
||||||
python3 ./test.py -f 2-query/Timediff.py
|
python3 ./test.py -f 2-query/Timediff.py
|
||||||
python3 ./test.py -f 2-query/json_tag.py
|
python3 ./test.py -f 2-query/json_tag.py
|
||||||
|
|
||||||
|
@ -115,7 +137,6 @@ python3 ./test.py -f 2-query/log.py
|
||||||
python3 ./test.py -f 2-query/pow.py
|
python3 ./test.py -f 2-query/pow.py
|
||||||
python3 ./test.py -f 2-query/sqrt.py
|
python3 ./test.py -f 2-query/sqrt.py
|
||||||
python3 ./test.py -f 2-query/sin.py
|
python3 ./test.py -f 2-query/sin.py
|
||||||
python3 ./test.py -f 2-query/cos.py
|
|
||||||
python3 ./test.py -f 2-query/tan.py
|
python3 ./test.py -f 2-query/tan.py
|
||||||
python3 ./test.py -f 2-query/query_cols_tags_and_or.py
|
python3 ./test.py -f 2-query/query_cols_tags_and_or.py
|
||||||
# python3 ./test.py -f 2-query/nestedQuery.py
|
# python3 ./test.py -f 2-query/nestedQuery.py
|
||||||
|
@ -126,7 +147,6 @@ python3 ./test.py -f 2-query/query_cols_tags_and_or.py
|
||||||
python3 ./test.py -f 2-query/elapsed.py
|
python3 ./test.py -f 2-query/elapsed.py
|
||||||
python3 ./test.py -f 2-query/csum.py
|
python3 ./test.py -f 2-query/csum.py
|
||||||
python3 ./test.py -f 2-query/mavg.py
|
python3 ./test.py -f 2-query/mavg.py
|
||||||
python3 ./test.py -f 2-query/diff.py
|
|
||||||
python3 ./test.py -f 2-query/sample.py
|
python3 ./test.py -f 2-query/sample.py
|
||||||
python3 ./test.py -f 2-query/function_diff.py
|
python3 ./test.py -f 2-query/function_diff.py
|
||||||
python3 ./test.py -f 2-query/unique.py
|
python3 ./test.py -f 2-query/unique.py
|
||||||
|
@ -135,17 +155,11 @@ python3 ./test.py -f 2-query/function_stateduration.py
|
||||||
python3 ./test.py -f 2-query/statecount.py
|
python3 ./test.py -f 2-query/statecount.py
|
||||||
python3 ./test.py -f 2-query/tail.py
|
python3 ./test.py -f 2-query/tail.py
|
||||||
python3 ./test.py -f 2-query/ttl_comment.py
|
python3 ./test.py -f 2-query/ttl_comment.py
|
||||||
python3 ./test.py -f 2-query/distribute_agg_count.py
|
|
||||||
python3 ./test.py -f 2-query/distribute_agg_max.py
|
|
||||||
python3 ./test.py -f 2-query/distribute_agg_min.py
|
|
||||||
python3 ./test.py -f 2-query/distribute_agg_sum.py
|
python3 ./test.py -f 2-query/distribute_agg_sum.py
|
||||||
python3 ./test.py -f 2-query/distribute_agg_spread.py
|
python3 ./test.py -f 2-query/distribute_agg_spread.py
|
||||||
python3 ./test.py -f 2-query/distribute_agg_apercentile.py
|
|
||||||
python3 ./test.py -f 2-query/distribute_agg_avg.py
|
|
||||||
python3 ./test.py -f 2-query/distribute_agg_stddev.py
|
python3 ./test.py -f 2-query/distribute_agg_stddev.py
|
||||||
python3 ./test.py -f 2-query/twa.py
|
python3 ./test.py -f 2-query/twa.py
|
||||||
python3 ./test.py -f 2-query/irate.py
|
python3 ./test.py -f 2-query/irate.py
|
||||||
python3 ./test.py -f 2-query/count_partition.py
|
|
||||||
python3 ./test.py -f 2-query/function_null.py
|
python3 ./test.py -f 2-query/function_null.py
|
||||||
python3 ./test.py -f 2-query/queryQnode.py
|
python3 ./test.py -f 2-query/queryQnode.py
|
||||||
python3 ./test.py -f 2-query/max_partition.py
|
python3 ./test.py -f 2-query/max_partition.py
|
||||||
|
@ -168,12 +182,12 @@ python3 ./test.py -f 6-cluster/5dnode3mnodeRestartDnodeInsertData.py -N 5 -M 3
|
||||||
# python3 ./test.py -f 6-cluster/5dnode3mnodeRestartMnodeInsertData.py -N 5 -M 3
|
# python3 ./test.py -f 6-cluster/5dnode3mnodeRestartMnodeInsertData.py -N 5 -M 3
|
||||||
# python3 ./test.py -f 6-cluster/5dnode3mnodeRestartVnodeInsertData.py -N 5 -M 3
|
# python3 ./test.py -f 6-cluster/5dnode3mnodeRestartVnodeInsertData.py -N 5 -M 3
|
||||||
|
|
||||||
python3 ./test.py -f 6-cluster/5dnode3mnodeAdd1Ddnoe.py -N 6 -M 3 -C 5
|
python3 ./test.py -f 6-cluster/5dnode3mnodeAdd1Ddnoe.py -N 6 -M 3 -C 5
|
||||||
# BUG python3 ./test.py -f 6-cluster/5dnode3mnodeStopInsert.py
|
# BUG python3 ./test.py -f 6-cluster/5dnode3mnodeStopInsert.py
|
||||||
# python3 ./test.py -f 6-cluster/5dnode3mnodeDrop.py -N 5
|
# python3 ./test.py -f 6-cluster/5dnode3mnodeDrop.py -N 5
|
||||||
# python3 test.py -f 6-cluster/5dnode3mnodeStopConnect.py -N 5 -M 3
|
# python3 test.py -f 6-cluster/5dnode3mnodeStopConnect.py -N 5 -M 3
|
||||||
|
|
||||||
python3 ./test.py -f 7-tmq/dropDbR3ConflictTransaction.py -N 3
|
python3 ./test.py -f 7-tmq/dropDbR3ConflictTransaction.py -N 3
|
||||||
python3 ./test.py -f 7-tmq/basic5.py
|
python3 ./test.py -f 7-tmq/basic5.py
|
||||||
python3 ./test.py -f 7-tmq/subscribeDb.py
|
python3 ./test.py -f 7-tmq/subscribeDb.py
|
||||||
python3 ./test.py -f 7-tmq/subscribeDb0.py
|
python3 ./test.py -f 7-tmq/subscribeDb0.py
|
||||||
|
@ -296,7 +310,6 @@ python3 ./test.py -f 2-query/avg.py -Q 2
|
||||||
# python3 ./test.py -f 2-query/elapsed.py -Q 2
|
# python3 ./test.py -f 2-query/elapsed.py -Q 2
|
||||||
python3 ./test.py -f 2-query/csum.py -Q 2
|
python3 ./test.py -f 2-query/csum.py -Q 2
|
||||||
python3 ./test.py -f 2-query/mavg.py -Q 2
|
python3 ./test.py -f 2-query/mavg.py -Q 2
|
||||||
python3 ./test.py -f 2-query/diff.py -Q 2
|
|
||||||
python3 ./test.py -f 2-query/sample.py -Q 2
|
python3 ./test.py -f 2-query/sample.py -Q 2
|
||||||
python3 ./test.py -f 2-query/function_diff.py -Q 2
|
python3 ./test.py -f 2-query/function_diff.py -Q 2
|
||||||
python3 ./test.py -f 2-query/unique.py -Q 2
|
python3 ./test.py -f 2-query/unique.py -Q 2
|
||||||
|
@ -384,7 +397,6 @@ python3 ./test.py -f 2-query/query_cols_tags_and_or.py -Q 3
|
||||||
# python3 ./test.py -f 2-query/elapsed.py -Q 3
|
# python3 ./test.py -f 2-query/elapsed.py -Q 3
|
||||||
python3 ./test.py -f 2-query/csum.py -Q 3
|
python3 ./test.py -f 2-query/csum.py -Q 3
|
||||||
python3 ./test.py -f 2-query/mavg.py -Q 3
|
python3 ./test.py -f 2-query/mavg.py -Q 3
|
||||||
python3 ./test.py -f 2-query/diff.py -Q 3
|
|
||||||
python3 ./test.py -f 2-query/sample.py -Q 3
|
python3 ./test.py -f 2-query/sample.py -Q 3
|
||||||
python3 ./test.py -f 2-query/function_diff.py -Q 3
|
python3 ./test.py -f 2-query/function_diff.py -Q 3
|
||||||
python3 ./test.py -f 2-query/unique.py -Q 3
|
python3 ./test.py -f 2-query/unique.py -Q 3
|
||||||
|
|
Loading…
Reference in New Issue