import taos import sys from util.log import * from util.sql import * from util.cases import * class TDTestCase: def init(self, conn, logSql): tdLog.debug(f"start to excute {__file__}") tdSql.init(conn.cursor()) def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring tdSql.prepare() 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.stb2 (ts timestamp, c2 int, c3 binary(16)) tags(t2 binary(16), t3 binary(16), t4 int)") maxRemainderNum=7 tbnum=101 for i in range(tbnum-1): sql = f"create table db.t{i} using db.stb1 tags({i%maxRemainderNum}, {(i-1)%maxRemainderNum}, {i%2})" tdSql.execute(sql) tdSql.execute(f"insert into db.t{i} values (now-10d, {i}, {i%3})") tdSql.execute(f"insert into db.t{i} values (now-9d, {i}, {(i-1)%3})") tdSql.execute(f"insert into db.t{i} values (now-8d, {i}, {(i-2)%3})") tdSql.execute(f"insert into db.t{i} (ts )values (now-7d)") tdSql.execute(f"create table db.t0{i} using db.stb2 tags('{i%maxRemainderNum}', '{(i-1)%maxRemainderNum}', {i%3})") tdSql.execute(f"insert into db.t0{i} values (now-10d, {i}, '{(i+1)%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} (ts )values (now-7d)") 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(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-8d, {tbnum-1}, 2)") 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-9d, {tbnum-1}, 0)") tdSql.execute(f"insert into db.t0100num values (now-8d, {tbnum-1}, 2)") tdSql.execute(f"insert into db.t0100num (ts )values (now-7d)") #========== distinct multi-data-coloumn ========== tdSql.query(f"select distinct c1 from stb1 where c1 <{tbnum}") tdSql.checkRows(tbnum) tdSql.query(f"select distinct c2 from 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.query(f"select distinct c1,c2 from t1 where c1 <{tbnum}") tdSql.checkRows(3) tdSql.query(f"select distinct c1,c1 from t1 ") tdSql.checkRows(2) tdSql.query(f"select distinct c1,c1 from t1 where c1 <{tbnum}") tdSql.checkRows(1) tdSql.query(f"select distinct c1,c2 from t1 where c1 <{tbnum} limit 3") tdSql.checkRows(3) tdSql.query(f"select distinct c1,c2 from t1 where c1 <{tbnum} limit 3 offset 2") tdSql.checkRows(1) tdSql.query(f"select distinct c3 from stb2 where c2 <{tbnum} ") tdSql.checkRows(3) tdSql.query(f"select distinct c3, c2 from stb2 where c2 <{tbnum} limit 2") tdSql.checkRows(2) tdSql.error("select distinct c5 from stb1") tdSql.error("select distinct c5 from t1") tdSql.error("select distinct c1 from db.*") tdSql.error("select c2, distinct c1 from stb1") tdSql.error("select c2, distinct c1 from t1") tdSql.error("select distinct c2 from ") tdSql.error("distinct c2 from stb1") tdSql.error("distinct c2 from t1") tdSql.error("select distinct c1, c2, c3 from stb1") tdSql.error("select distinct c1, c2, c3 from t1") tdSql.error("select distinct stb1.c1, stb1.c2, stb2.c2, stb2.c3 from stb1") tdSql.error("select distinct stb1.c1, stb1.c2, stb2.c2, stb2.c3 from t1") tdSql.error("select distinct t1.c1, t1.c2, t2.c1, t2.c2 from t1") tdSql.query(f"select distinct c1 c2, c2 c3 from stb1 where c1 <{tbnum}") tdSql.checkRows(tbnum*3) tdSql.query(f"select distinct c1 c2, c2 c3 from t1 where c1 <{tbnum}") tdSql.checkRows(3) tdSql.error("select distinct c1, c2 from stb1 order by ts") tdSql.error("select distinct c1, c2 from t1 order by ts") tdSql.error("select distinct c1, ts from stb1 group by c2") tdSql.error("select distinct c1, ts from t1 group by c2") tdSql.error("select distinct c1, max(c2) from stb1 ") tdSql.error("select distinct c1, max(c2) from t1 ") tdSql.error("select max(c2), distinct c1 from stb1 ") tdSql.error("select max(c2), distinct c1 from t1 ") tdSql.error("select distinct c1, c2 from stb1 where c1 > 3 group by t0") tdSql.error("select distinct c1, c2 from t1 where c1 > 3 group by t0") tdSql.error("select distinct c1, c2 from stb1 where c1 > 3 interval(1d) ") tdSql.error("select distinct c1, c2 from t1 where c1 > 3 interval(1d) ") tdSql.error("select distinct c1, c2 from 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("select distinct c1, c2 from 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("select distinct c1, c2 from stb1 where c1 > 3 slimit 1") tdSql.error("select distinct c1, c2 from t1 where c1 > 3 slimit 1") tdSql.query(f"select distinct c1, c2 from stb1 where c1 between {tbnum-2} and {tbnum} ") tdSql.checkRows(6) tdSql.query("select distinct c1, c2 from stb1 where c1 in (1,2,3,4,5)") tdSql.checkRows(15) tdSql.query("select distinct c1, c2 from stb1 where c1 in (100,1000,10000)") tdSql.checkRows(3) # tdSql.query(f"select distinct c1,c2 from (select * from stb1 where c1 > {tbnum-2}) ") # tdSql.checkRows(3) # tdSql.query(f"select distinct c1,c2 from (select * from t1 where c1 < {tbnum}) ") # tdSql.checkRows(3) # tdSql.query(f"select distinct c1,c2 from (select * from stb1 where t2 !=0 and t2 != 1) ") # tdSql.checkRows(0) # tdSql.error("select distinct c1, c2 from (select distinct c1, c2 from 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("select distinct c1, c2 from (select c2, c1 from stb1 where c1 > 2 ) where c1 < 4") # tdSql.checkRows(3) # tdSql.error("select distinct c1, c2 from (select c1 from 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.error("select distinct c1, c2 from (select c2, c1 from 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("select distinct c1, c2 from (select max(c1) c1, max(c2) c2 from 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("select distinct c1, c2 from (select max(c1) c1, max(c2) c2 from stb1 )") # tdSql.checkRows(1) # tdSql.query("select distinct c1, c2 from (select max(c1) c1, max(c2) c2 from t1 )") # 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.error("select distinct t1.c1, t1.c2 from t1 , 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.error("select distinct c1, c2 from (select count(c1) c1, count(c2) c2 from t1 group by ts)") # #========== suport distinct multi-tags-coloumn ========== # tdSql.query("select distinct t1 from stb1") # tdSql.checkRows(maxRemainderNum+1) # tdSql.query("select distinct t0, t1 from stb1") # tdSql.checkRows(maxRemainderNum+1) # tdSql.query("select distinct t1, t0 from stb1") # tdSql.checkRows(maxRemainderNum+1) # tdSql.query("select distinct t1, t2 from stb1") # tdSql.checkRows(maxRemainderNum*2+1) # tdSql.query("select distinct t0, t1, t2 from stb1") # tdSql.checkRows(maxRemainderNum*2+1) # tdSql.query("select distinct t0 t1, t1 t2 from stb1") # tdSql.checkRows(maxRemainderNum+1) # tdSql.query("select distinct t0, t0, t0 from stb1") # tdSql.checkRows(maxRemainderNum+1) # tdSql.query("select distinct t0, t1 from t1") # tdSql.checkRows(1) # tdSql.query("select distinct t0, t1 from t100num") # tdSql.checkRows(1) # tdSql.query("select distinct t3 from stb2") # tdSql.checkRows(maxRemainderNum+1) # tdSql.query("select distinct t2, t3 from stb2") # tdSql.checkRows(maxRemainderNum+1) # tdSql.query("select distinct t3, t2 from stb2") # tdSql.checkRows(maxRemainderNum+1) # tdSql.query("select distinct t4, t2 from stb2") # tdSql.checkRows(maxRemainderNum*3+1) # tdSql.query("select distinct t2, t3, t4 from stb2") # tdSql.checkRows(maxRemainderNum*3+1) # tdSql.query("select distinct t2 t1, t3 t2 from stb2") # tdSql.checkRows(maxRemainderNum+1) # tdSql.query("select distinct t3, t3, t3 from stb2") # tdSql.checkRows(maxRemainderNum+1) # tdSql.query("select distinct t2, t3 from t01") # tdSql.checkRows(1) # tdSql.query("select distinct t3, t4 from t0100num") # tdSql.checkRows(1) # ########## should be error ######### # tdSql.error("select distinct from stb1") # tdSql.error("select distinct t3 from stb1") # tdSql.error("select distinct t1 from db.*") # tdSql.error("select distinct t2 from ") # tdSql.error("distinct t2 from stb1") # tdSql.error("select distinct stb1") # tdSql.error("select distinct t0, t1, t2, t3 from stb1") # tdSql.error("select distinct stb1.t0, stb1.t1, stb2.t2, stb2.t3 from stb1") # tdSql.error("select dist t0 from stb1") # tdSql.error("select distinct stb2.t2, stb2.t3 from stb1") # tdSql.error("select distinct stb2.t2 t1, stb2.t3 t2 from stb1") # tdSql.error("select distinct t0, t1 from t1 where t0 < 7") # ########## add where condition ########## # tdSql.query("select distinct t0, t1 from stb1 where t1 > 3") # tdSql.checkRows(3) # tdSql.query("select distinct t0, t1 from stb1 where t1 > 3 limit 2") # tdSql.checkRows(2) # tdSql.query("select distinct t0, t1 from stb1 where t1 > 3 limit 2 offset 2") # tdSql.checkRows(1) # tdSql.query("select distinct t0, t1 from stb1 where t1 > 3 slimit 2") # tdSql.checkRows(3) # tdSql.error("select distinct t0, t1 from stb1 where c1 > 2") # tdSql.query("select distinct t0, t1 from stb1 where t1 > 3 and t1 < 5") # tdSql.checkRows(1) # tdSql.error("select distinct stb1.t0, stb1.t1 from stb1, stb2 where stb1.t2=stb2.t4") # tdSql.error("select distinct t0, t1 from stb1 where stb2.t4 > 2") # tdSql.error("select distinct t0, t1 from stb1 where t1 > 3 group by t0") # tdSql.error("select distinct t0, t1 from stb1 where t1 > 3 interval(1d) ") # tdSql.error("select distinct t0, t1 from stb1 where t1 > 3 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("select distinct t0, max(c1) from stb1 where t0 > 2") # tdSql.error("select distinct t0 from stb1 where t0 in (select t0 from stb1 where t0 > 2)") # tdSql.query("select distinct t0, t1 from stb1 where t0 in (1,2,3,4,5)") # tdSql.checkRows(5) # tdSql.query("select distinct t1 from (select t0, t1 from stb1 where t0 > 2) ") # tdSql.checkRows(4) # tdSql.error("select distinct t1 from (select distinct t0, t1 from 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") # tdSql.query("select distinct t1 from (select t0, t1 from stb1 where t0 > 2 ) where t1 < 3") # tdSql.checkRows(1) # tdSql.error("select distinct t1, t0 from (select t1 from stb1 where t0 > 2 ) where t1 < 3") # tdSql.error("select distinct t1, t0 from (select max(t1) t1, max(t0) t0 from stb1 group by t1)") # tdSql.error("select distinct t1, t0 from (select max(t1) t1, max(t0) t0 from stb1)") # tdSql.query("select distinct t1, t0 from (select t1,t0 from stb1 where t0 > 2 ) where t1 < 3") # tdSql.checkRows(1) # tdSql.error(" select distinct t1, t0 from (select t1,t0 from stb1 where t0 > 2 order by ts) where t1 < 3") # tdSql.error("select t1, t0 from (select distinct t1,t0 from stb1 where t0 > 2 ) where t1 < 3") # tdSql.error(" select distinct t1, t0 from (select t1,t0 from stb1 where t0 > 2 group by ts) where t1 < 3") # tdSql.error("select distinct stb1.t1, stb1.t2 from stb1 , stb2 where stb1.ts=stb2.ts and stb1.t2=stb2.t4") # tdSql.error("select distinct t1.t1, t1.t2 from t1 , t2 where t1.ts=t2.ts ") def stop(self): tdSql.close() tdLog.success(f"{__file__} successfully executed") tdCases.addLinux(__file__, TDTestCase()) tdCases.addWindows(__file__, TDTestCase())