homework-jianmu/tests/system-test/2-query/last+last_row.py

362 lines
21 KiB
Python

###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
from util.cases import tdCases
#from .nestedQueryInterval import *
from .nestedQuery import *
from faker import Faker
import random
class TDTestCase(TDTestCase):
def explain_scan_value(self,sql,cachemodel):
tdLog.info(cachemodel)
if cachemodel=='none':
tdSql.query(sql)
self.check_sql_result_include(sql,'Table Scan')
self.check_sql_result_not_include(sql,'Last Row Scan')
elif cachemodel=='last_row':
tdSql.query(sql)
self.check_sql_result_include(sql,'Last Row Scan')
self.check_sql_result_not_include(sql,'Table Scan')
elif cachemodel=='last_row_1':
tdSql.query("reset query cache;")
tdSql.query(sql)
self.check_sql_result_include(sql,'Last Row')
self.check_sql_result_include(sql,'Table')
elif cachemodel=='last_value':
tdSql.query(sql)
self.check_sql_result_not_include(sql,'Last Row Scan')
self.check_sql_result_include(sql,'Table Scan')
elif cachemodel=='last_value_1':
tdSql.query(sql)
self.check_sql_result_include(sql,'Last Row Scan')
self.check_sql_result_include(sql,'Table Scan')
elif cachemodel=='both':
tdSql.query(sql)
self.check_sql_result_include(sql,'Last Row Scan')
self.check_sql_result_not_include(sql,'Table Scan')
else:
tdSql.query(sql)
tdLog.info(sql)
tdLog.exit(f"explain_scan_value : checkEqual error")
def check_sql_result_include(self, sql,include_result):
result = os.popen(f"taos -s \"reset query cache; {sql}\"" )
res = result.read()
if res is None or res == '':
tdLog.info(sql)
tdLog.exit(f"check_sql_result_include : taos -s return null")
else:
if (include_result in res):
tdLog.info(f"check_sql_result_include : checkEqual success")
else :
tdLog.info(res)
tdLog.info(sql)
tdLog.exit(f"check_sql_result_include : checkEqual error")
def check_sql_result_not_include(self, sql,not_include_result):
result = os.popen(f"taos -s \"reset query cache; {sql}\"" )
res = result.read()
#tdLog.info(res)
if res is None or res == '':
tdLog.info(sql)
tdLog.exit(f"check_sql_result_not_include : taos -s return null")
else:
if (not_include_result in res):
tdLog.info(res)
tdLog.info(sql)
tdLog.exit(f"check_sql_result_not_include : checkEqual error")
else :
tdLog.info(f"check_sql_result_not_include : checkEqual success")
def cachemodel_none(self, dbname="nested"):
sql = f"explain select last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
# last(id+1)
sql = f"explain select last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
#last(id)+1
sql = f"explain select last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"none")
sql = f"explain select last(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"none")
def cachemodel_last_row(self, dbname="nested"):
sql = f"explain select last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_value")
sql = f"explain select last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_row")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_row_1")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_value")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_row")
def cachemodel_last_value(self, dbname="nested"):
sql = f"explain select last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_row")
sql = f"explain select last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_value")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_row_1")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_row")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_value")
sql = f"explain select last(q_int)+1 from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_row")
sql = f"explain select last_row(q_int)+1 from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_value")
sql = f"explain select last(q_int)+1,last_row(q_int)+1 from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_row_1")
sql = f"explain select last(q_int)+1,last(q_int)+1 from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_row")
sql = f"explain select last_row(q_int)+1,last_row(q_int)+1 from {dbname}.stable_1 "
self.explain_scan_value(sql,"last_value")
def cachemodel_both(self, dbname="nested"):
sql = f"explain select last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"both")
sql = f"explain select last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"both")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"both")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"both")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 "
self.explain_scan_value(sql,"both")
sql = f"explain select last(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"both")
sql = f"explain select last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"both")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"both")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"both")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 group by tbname"
self.explain_scan_value(sql,"both")
sql = f"explain select last(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"both")
sql = f"explain select last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"both")
sql = f"explain select last(*),last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"both")
sql = f"explain select last(*),last(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"both")
sql = f"explain select last_row(*),last_row(*) from {dbname}.stable_1 partition by tbname"
self.explain_scan_value(sql,"both")
def modify_tables(self):
fake = Faker('zh_CN')
tdSql.execute('delete from stable_1_3;')
tdSql.execute('delete from stable_1_4;')
tdSql.execute('''create table stable_1_5 using stable_1 tags('stable_1_5', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;'''
%(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1),
fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) ,
fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1)))
tdSql.execute('''create table stable_1_6 using stable_1 tags('stable_1_6', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;'''
%(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1),
fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) ,
fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1)))
tdSql.execute('''create table stable_1_7 using stable_1 tags('stable_1_7', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;'''
%(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1),
fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) ,
fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1)))
tdSql.execute('''create table stable_1_8 using stable_1 tags('stable_1_8', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;'''
%(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1),
fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) ,
fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1)))
tdSql.execute('''create table stable_1_9 using stable_1 tags('stable_1_9', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;'''
%(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1),
fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) ,
fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1)))
tdSql.execute('''create table stable_1_90 using stable_1 tags('stable_1_90', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;'''
%(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1),
fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) ,
fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1)))
tdSql.execute('''create table stable_1_91 using stable_1 tags('stable_1_91', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;'''
%(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1),
fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) ,
fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1)))
tdSql.execute('''create table stable_1_92 using stable_1 tags('stable_1_92', '%d' , '%d', '%d' , '%d' , 1 , 'binary6.%s' , 'nchar6.%s' , '%f', '%f' ,'%d') ;'''
%(fake.random_int(min=-2147483647, max=2147483647, step=1), fake.random_int(min=-9223372036854775807, max=9223372036854775807, step=1),
fake.random_int(min=-32767, max=32767, step=1) , fake.random_int(min=-127, max=127, step=1) ,
fake.pystr() ,fake.pystr() ,fake.pyfloat(),fake.pyfloat(),fake.random_int(min=-2147483647, max=2147483647, step=1)))
tdSql.execute('alter stable stable_1 add tag t_int_null INT;')
tdSql.execute('alter stable stable_1 add tag t_bigint_null BIGINT;')
tdSql.execute('alter stable stable_1 add tag t_smallint_null SMALLINT;')
tdSql.execute('alter stable stable_1 add tag t_tinyint_null TINYINT;')
tdSql.execute('alter stable stable_1 add tag t_bool_null BOOL;')
tdSql.execute('alter stable stable_1 add tag t_binary_null VARCHAR(100);')
tdSql.execute('alter stable stable_1 add tag t_nchar_null NCHAR(100);')
tdSql.execute('alter stable stable_1 add tag t_float_null FLOAT;')
tdSql.execute('alter stable stable_1 add tag t_double_null DOUBLE;')
tdSql.execute('alter stable stable_1 add tag t_ts_null TIMESTAMP;')
tdSql.execute('alter stable stable_1 drop column q_nchar8;')
tdSql.execute('alter stable stable_1 drop column q_binary8;')
tdSql.execute('alter stable stable_1 drop column q_nchar7;')
tdSql.execute('alter stable stable_1 drop column q_binary7;')
tdSql.execute('alter stable stable_1 drop column q_nchar6;')
tdSql.execute('alter stable stable_1 drop column q_binary6;')
tdSql.execute('alter stable stable_1 drop column q_nchar5;')
tdSql.execute('alter stable stable_1 drop column q_binary5;')
tdSql.execute('alter stable stable_1 drop column q_nchar4;')
tdSql.execute('alter stable stable_1 drop column q_binary4;')
def run(self):
tdSql.prepare()
startTime = time.time()
self.dropandcreateDB_random("nested", 1)
self.modify_tables()
for i in range(2):
self.cachemodel_none()
tdLog.info("last_row")
tdSql.query("alter database nested cachemodel 'last_row' ")
tdSql.query("reset query cache;")
self.cachemodel_last_row()
tdSql.query("alter database nested cachemodel 'last_value' ")
tdSql.query("reset query cache;")
self.cachemodel_last_value()
tdSql.query("alter database nested cachemodel 'both' ")
tdSql.query("reset query cache;")
self.cachemodel_both()
tdSql.query("alter database nested cachemodel 'none' ")
tdSql.query("reset query cache;")
endTime = time.time()
print("total time %ds" % (endTime - startTime))
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())