homework-jianmu/tests/system-test/2-query/count_null.py

145 lines
5.5 KiB
Python

import taos
import sys
from util.log import *
from util.sql import *
from util.cases import *
class TDTestCase:
def init(self, conn, logSql, replicaVar=1):
self.replicaVar = int(replicaVar)
tdLog.debug(f"start to excute {__file__}")
#tdSql.init(conn.cursor())
tdSql.init(conn.cursor(), logSql) # output sql.txt file
def check_results(self):
tdSql.query(f"select count(*) from tb1")
tdSql.checkData(0, 0, 20000)
tdSql.query(f"select count(c1) from tb1")
tdSql.checkData(0, 0, 0)
tdSql.query(f"select count(c2) from tb1")
tdSql.checkData(0, 0, 0)
tdSql.query(f"select count(c3) from tb1")
tdSql.checkData(0, 0, 0)
tdSql.query(f"select count(c4) from tb1")
tdSql.checkData(0, 0, 0)
tdSql.query(f"select count(c5) from tb1")
tdSql.checkData(0, 0, 0)
tdSql.query(f"select count(c6) from tb1")
tdSql.checkData(0, 0, 0)
tdSql.query(f"select count(c7) from tb1")
tdSql.checkData(0, 0, 0)
tdSql.query(f"select count(c8) from tb1")
tdSql.checkData(0, 0, 0)
tdSql.query(f"select count(*) from tb2")
tdSql.checkData(0, 0, 20000)
tdSql.query(f"select count(c1) from tb2")
tdSql.checkData(0, 0, 20000)
tdSql.query(f"select count(c2) from tb2")
tdSql.checkData(0, 0, 20000)
tdSql.query(f"select count(c3) from tb2")
tdSql.checkData(0, 0, 20000)
tdSql.query(f"select count(c4) from tb2")
tdSql.checkData(0, 0, 20000)
tdSql.query(f"select count(c5) from tb2")
tdSql.checkData(0, 0, 20000)
tdSql.query(f"select count(c6) from tb2")
tdSql.checkData(0, 0, 20000)
tdSql.query(f"select count(c7) from tb2")
tdSql.checkData(0, 0, 0)
tdSql.query(f"select count(c8) from tb2")
tdSql.checkData(0, 0, 0)
for i in range (3, 6):
tdSql.query(f"select count(*) from tb{i}")
tdSql.checkData(0, 0, 20000)
tdSql.query(f"select count(c1) from tb{i}")
tdSql.checkData(0, 0, 10000)
tdSql.query(f"select count(c2) from tb{i}")
tdSql.checkData(0, 0, 10000)
tdSql.query(f"select count(c3) from tb{i}")
tdSql.checkData(0, 0, 10000)
tdSql.query(f"select count(c4) from tb{i}")
tdSql.checkData(0, 0, 10000)
tdSql.query(f"select count(c5) from tb{i}")
tdSql.checkData(0, 0, 10000)
tdSql.query(f"select count(c6) from tb{i}")
tdSql.checkData(0, 0, 10000)
tdSql.query(f"select count(c7) from tb{i}")
tdSql.checkData(0, 0, 10000)
tdSql.query(f"select count(c8) from tb{i}")
tdSql.checkData(0, 0, 10000)
def run(self):
dbname = 'db'
tbnames = ['tb1', 'tb2', 'tb3', 'tb4', 'tb5', 'tb6']
num_rows = 20000
num_tables = 6
ts_base = 1685548800000
tdSql.prepare()
tdLog.printNoPrefix("==========step1:create table")
for i in range (num_tables):
tdSql.execute(
f'''create table if not exists {dbname}.{tbnames[i]}
(ts timestamp, c0 tinyint, c1 smallint, c2 int, c3 bigint, c4 double, c5 float, c6 bool, c7 varchar(10), c8 nchar(10))
'''
)
tdLog.printNoPrefix("==========step2:insert data")
for i in range(num_rows):
tdSql.execute(f"insert into {dbname}.{tbnames[0]} values ({ts_base + i}, null, null, null, null, null, null, null, null, null)")
for i in range(num_rows):
tdSql.execute(f"insert into {dbname}.{tbnames[1]} values ({ts_base + i}, 1, 1, 1, 1, 1, 1, 1, null, null)")
for i in range(num_rows):
if i % 2 == 0:
tdSql.execute(f"insert into {dbname}.{tbnames[2]} values ({ts_base + i}, null, null, null, null, null, null, null, null, null)")
else:
tdSql.execute(f"insert into {dbname}.{tbnames[2]} values ({ts_base + i}, 1, 1, 1, 1, 1, 1, 1, 'binary', 'nchar')")
for i in range(num_rows):
if i % 2 == 0:
tdSql.execute(f"insert into {dbname}.{tbnames[3]} values ({ts_base + i}, null, null, null, null, null, null, null, 'binary', 'nchar')")
else:
tdSql.execute(f"insert into {dbname}.{tbnames[3]} values ({ts_base + i}, 1, 1, 1, 1, 1, 1, 1, null, null)")
for i in range(num_rows):
if i < num_rows / 2:
tdSql.execute(f"insert into {dbname}.{tbnames[4]} values ({ts_base + i}, null, null, null, null, null, null, null, null, null)")
else:
tdSql.execute(f"insert into {dbname}.{tbnames[4]} values ({ts_base + i}, 1, 1, 1, 1, 1, 1, 1, 'binary', 'nchar')")
for i in range(num_rows):
if i >= num_rows / 2:
tdSql.execute(f"insert into {dbname}.{tbnames[5]} values ({ts_base + i}, null, null, null, null, null, null, null, null, null)")
else:
tdSql.execute(f"insert into {dbname}.{tbnames[5]} values ({ts_base + i}, 1, 1, 1, 1, 1, 1, 1, 'binary', 'nchar')")
tdLog.printNoPrefix("==========step3:check result in memory")
self.check_results();
tdLog.printNoPrefix("==========step3:check result from disk")
tdSql.execute(f"flush database db")
self.check_results();
def stop(self):
tdSql.close()
tdLog.success(f"{__file__} successfully executed")
tdCases.addLinux(__file__, TDTestCase())
tdCases.addWindows(__file__, TDTestCase())