2022-06-28 10:11:50 +00:00
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import sys
import os
import threading as thd
import multiprocessing as mp
from numpy . lib . function_base import insert
import taos
2022-07-01 13:11:57 +00:00
from util . dnodes import TDDnode
from util . dnodes import *
2022-06-28 10:11:50 +00:00
from util . log import *
from util . cases import *
from util . sql import *
import numpy as np
import datetime as dt
import time
# constant define
WAITS = 5 # wait seconds
class TDTestCase :
#
# --------------- main frame -------------------
#
2022-07-11 02:43:08 +00:00
clientCfgDict = { ' queryPolicy ' : ' 1 ' , ' debugFlag ' : 143 }
2022-07-01 13:11:57 +00:00
clientCfgDict [ " queryPolicy " ] = ' 1 '
2022-07-11 02:43:08 +00:00
clientCfgDict [ " debugFlag " ] = 143
2022-06-28 10:11:50 +00:00
updatecfgDict = { ' clientCfg ' : { } }
updatecfgDict = { ' debugFlag ' : 143 }
updatecfgDict [ " clientCfg " ] = clientCfgDict
def caseDescription ( self ) :
'''
limit and offset keyword function test cases ;
case1 : limit offset base function test
case2 : offset return valid
'''
2022-07-13 06:41:50 +00:00
return
2022-06-28 10:11:50 +00:00
def getBuildPath ( self ) :
selfPath = os . path . dirname ( os . path . realpath ( __file__ ) )
if ( " community " in selfPath ) :
projPath = selfPath [ : selfPath . find ( " community " ) ]
else :
projPath = selfPath [ : selfPath . find ( " tests " ) ]
for root , dirs , files in os . walk ( projPath ) :
if ( " taosd " in files or " taosd.exe " in files ) :
rootRealPath = os . path . dirname ( os . path . realpath ( root ) )
if ( " packaging " not in rootRealPath ) :
buildPath = root [ : len ( root ) - len ( " /build/bin " ) ]
break
return buildPath
# init
2022-10-31 11:03:49 +00:00
def init ( self , conn , logSql = True , replicaVar = 1 ) :
2022-11-02 09:33:44 +00:00
self . replicaVar = int ( replicaVar )
2022-06-28 10:11:50 +00:00
tdLog . debug ( " start to execute %s " % __file__ )
tdSql . init ( conn . cursor ( ) )
# tdSql.prepare()
# self.create_tables();
self . ts = 1500000000000
2022-07-13 06:41:50 +00:00
# stop
2022-06-28 10:11:50 +00:00
def stop ( self ) :
tdSql . close ( )
tdLog . success ( " %s successfully executed " % __file__ )
# --------------- case -------------------
def newcur ( self , host , cfg ) :
user = " root "
password = " taosdata "
2022-07-13 06:41:50 +00:00
port = 6030
2022-06-28 10:11:50 +00:00
con = taos . connect ( host = host , user = user , password = password , config = cfg , port = port )
cur = con . cursor ( )
print ( cur )
return cur
# create tables
def create_tables ( self , host , dbname , stbname , count ) :
buildPath = self . getBuildPath ( )
config = buildPath + " ../sim/dnode1/cfg/ "
2022-07-13 06:41:50 +00:00
2022-06-28 10:11:50 +00:00
tsql = self . newcur ( host , config )
tsql . execute ( " use %s " % dbname )
pre_create = " create table "
sql = pre_create
count = int ( count )
tdLog . debug ( " doing create one stable %s and %d child table in %s ... " % ( stbname , count , dbname ) )
# print(time.time())
exeStartTime = time . time ( )
# print(type(tcountStop),type(tcountStart))
for i in range ( 0 , count ) :
sql + = " %s _ %d using %s tags( %d ) " % ( stbname , i , stbname , i + 1 )
if i > 0 and i % 20000 == 0 :
# print(sql)
tsql . execute ( sql )
sql = pre_create
# print(time.time())
2022-07-13 06:41:50 +00:00
# end sql
2022-06-28 10:11:50 +00:00
if sql != pre_create :
# print(sql)
tsql . execute ( sql )
exeEndTime = time . time ( )
spendTime = exeEndTime - exeStartTime
speedCreate = count / spendTime
# tdLog.debug("spent %.2fs to create 1 stable and %d table, create speed is %.2f table/s... [OK]"% (spendTime,count,speedCreate))
return
def mutiThread_create_tables ( self , host , dbname , stbname , vgroups , threadNumbers , childcount ) :
buildPath = self . getBuildPath ( )
config = buildPath + " ../sim/dnode1/cfg/ "
2022-07-13 06:41:50 +00:00
2022-06-28 10:11:50 +00:00
tsql = self . newcur ( host , config )
tdLog . debug ( " create database %s " % dbname )
tsql . execute ( " drop database if exists %s " % dbname )
tsql . execute ( " create database %s vgroups %d " % ( dbname , vgroups ) )
tsql . execute ( " use %s " % dbname )
count = int ( childcount )
threads = [ ]
for i in range ( threadNumbers ) :
tsql . execute ( " create stable %s %d (ts timestamp, c1 int, c2 binary(10)) tags(t1 int) " % ( stbname , i ) )
2022-07-13 06:41:50 +00:00
threads . append ( thd . Thread ( target = self . create_tables , args = ( host , dbname , stbname + " %d " % i , count , ) ) )
2022-06-28 10:11:50 +00:00
start_time = time . time ( )
for tr in threads :
tr . start ( )
for tr in threads :
tr . join ( )
end_time = time . time ( )
spendTime = end_time - start_time
speedCreate = threadNumbers * count / spendTime
tdLog . debug ( " spent %.2f s to create %d stable and %d table, create speed is %.2f table/s... [OK] " % ( spendTime , threadNumbers , threadNumbers * count , speedCreate ) )
2022-07-13 06:41:50 +00:00
2022-06-28 10:11:50 +00:00
return
# def create_tables(self,host,dbname,stbname,vgroups,tcountStart,tcountStop):
# insert data
def insert_data ( self , host , dbname , stbname , chilCount , ts_start , rowCount ) :
buildPath = self . getBuildPath ( )
config = buildPath + " ../sim/dnode1/cfg/ "
tsql = self . newcur ( host , config )
tdLog . debug ( " ready to inser data " )
tsql . execute ( " use %s " % dbname )
pre_insert = " insert into "
sql = pre_insert
chilCount = int ( chilCount )
allRows = chilCount * rowCount
tdLog . debug ( " doing insert data into stable-index: %s rows: %d ... " % ( stbname , allRows ) )
exeStartTime = time . time ( )
for i in range ( 0 , chilCount ) :
sql + = " %s _ %d values " % ( stbname , i )
for j in range ( rowCount ) :
sql + = " ( %d , %d , ' taos_ %d ' ) " % ( ts_start + j * 1000 , j , j )
if j > 0 and j % 4000 == 0 :
# print(sql)
tsql . execute ( sql )
sql = " insert into %s _ %d values " % ( stbname , i )
2022-07-13 06:41:50 +00:00
# end sql
2022-06-28 10:11:50 +00:00
if sql != pre_insert :
# print(sql)
print ( len ( sql ) )
tsql . execute ( sql )
exeEndTime = time . time ( )
spendTime = exeEndTime - exeStartTime
speedInsert = allRows / spendTime
tdLog . debug ( " spent %.2f s to INSERT %d rows into %s , insert rate is %.2f rows/s... [OK] " % ( spendTime , allRows , stbname , speedInsert ) )
# tdLog.debug("INSERT TABLE DATA ............ [OK]")
return
def mutiThread_insert_data ( self , host , dbname , stbname , threadNumbers , chilCount , ts_start , childrowcount ) :
buildPath = self . getBuildPath ( )
config = buildPath + " ../sim/dnode1/cfg/ "
2022-07-13 06:41:50 +00:00
2022-06-28 10:11:50 +00:00
tsql = self . newcur ( host , config )
tdLog . debug ( " ready to inser data " )
tsql . execute ( " use %s " % dbname )
chilCount = int ( chilCount )
threads = [ ]
for i in range ( threadNumbers ) :
# tsql.execute("create stable %s%d(ts timestamp, c1 int, c2 binary(10)) tags(t1 int)"%(stbname,i))
2022-07-13 06:41:50 +00:00
threads . append ( thd . Thread ( target = self . insert_data , args = ( host , dbname , stbname + " %d " % i , chilCount , ts_start , childrowcount , ) ) )
2022-06-28 10:11:50 +00:00
start_time = time . time ( )
for tr in threads :
tr . start ( )
for tr in threads :
tr . join ( )
end_time = time . time ( )
spendTime = end_time - start_time
tableCounts = threadNumbers * chilCount
stableRows = chilCount * childrowcount
allRows = stableRows * threadNumbers
speedInsert = allRows / spendTime
for i in range ( threadNumbers ) :
tdSql . execute ( " use %s " % dbname )
tdSql . query ( " select count(*) from %s %d " % ( stbname , i ) )
tdSql . checkData ( 0 , 0 , stableRows )
tdLog . debug ( " spent %.2f s to insert %d rows into %d stable and %d table, speed is %.2f table/s... [OK] " % ( spendTime , allRows , threadNumbers , tableCounts , speedInsert ) )
tdLog . debug ( " INSERT TABLE DATA ............ [OK] " )
return
def taosBench ( self , jsonFile ) :
buildPath = self . getBuildPath ( )
if ( buildPath == " " ) :
tdLog . exit ( " taosd not found! " )
else :
tdLog . info ( " taosd found in %s " % buildPath )
taosBenchbin = buildPath + " /build/bin/taosBenchmark "
os . system ( " %s -f %s -y " % ( taosBenchbin , jsonFile ) )
2022-07-13 06:41:50 +00:00
2022-06-28 10:11:50 +00:00
return
def taosBenchCreate ( self , host , dropdb , dbname , stbname , vgroups , processNumbers , count ) :
2022-07-13 06:41:50 +00:00
2022-06-28 10:11:50 +00:00
# count=50000
buildPath = self . getBuildPath ( )
config = buildPath + " ../sim/dnode1/cfg/ "
tsql = self . newcur ( host , config )
# insert: create one or mutiple tables per sql and insert multiple rows per sql
tsql . execute ( " drop database if exists %s " % dbname )
tsql . execute ( " create database %s vgroups %d " % ( dbname , vgroups ) )
print ( " db has been created " )
2022-08-11 13:55:20 +00:00
# tsql.getResult("select * from information_schema.ins_databases")
2022-06-28 10:11:50 +00:00
# print(tdSql.queryResult)
tsql . execute ( " use %s " % dbname )
2022-07-13 06:41:50 +00:00
2022-06-28 10:11:50 +00:00
threads = [ ]
for i in range ( processNumbers ) :
jsonfile = " 1-insert/Vgroups %d %d .json " % ( vgroups , i )
os . system ( " cp -f 1-insert/manyVgroups.json %s " % ( jsonfile ) )
os . system ( " sed -i ' s/ \" name \" : \" db \" ,/ \" name \" : \" %s \" ,/g ' %s " % ( dbname , jsonfile ) )
os . system ( " sed -i ' s/ \" drop \" : \" no \" ,/ \" drop \" : \" %s \" ,/g ' %s " % ( dropdb , jsonfile ) )
os . system ( " sed -i ' s/ \" host \" : \" 127.0.0.1 \" ,/ \" host \" : \" %s \" ,/g ' %s " % ( host , jsonfile ) )
os . system ( " sed -i ' s/ \" childtable_count \" : 10000,/ \" childtable_count \" : %d ,/g ' %s " % ( count , jsonfile ) )
os . system ( " sed -i ' s/ \" name \" : \" stb1 \" ,/ \" name \" : \" %s %d \" ,/g ' %s " % ( stbname , i , jsonfile ) )
os . system ( " sed -i ' s/ \" childtable_prefix \" : \" stb1_ \" ,/ \" childtable_prefix \" : \" %s %d _ \" ,/g ' %s " % ( stbname , i , jsonfile ) )
2022-07-13 06:41:50 +00:00
threads . append ( mp . Process ( target = self . taosBench , args = ( " %s " % jsonfile , ) ) )
2022-06-28 10:11:50 +00:00
start_time = time . time ( )
for tr in threads :
tr . start ( )
for tr in threads :
tr . join ( )
end_time = time . time ( )
spendTime = end_time - start_time
speedCreate = count / spendTime
tdLog . debug ( " spent %.2f s to create 1 stable and %d table, create speed is %.2f table/s... [OK] " % ( spendTime , count , speedCreate ) )
return
def checkData ( self , dbname , stbname , stableCount , CtableCount , rowsPerSTable , ) :
tdSql . execute ( " use %s " % dbname )
tdSql . query ( " show stables " )
tdSql . checkRows ( stableCount )
tdSql . query ( " show tables " )
tdSql . checkRows ( CtableCount )
for i in range ( stableCount ) :
tdSql . query ( " select count(*) from %s %d " % ( stbname , i ) )
tdSql . checkData ( 0 , 0 , rowsPerSTable )
2022-07-13 06:41:50 +00:00
return
2022-07-10 08:12:09 +00:00
# test case : Switch back and forth among the three queryPolicy( 1\2\3)
2022-07-01 13:11:57 +00:00
def test_case1 ( self ) :
2022-06-28 10:11:50 +00:00
self . taosBenchCreate ( " 127.0.0.1 " , " no " , " db1 " , " stb1 " , 1 , 2 , 1 * 10 )
tdSql . execute ( " use db1; " )
2022-08-11 13:55:20 +00:00
tdSql . query ( " select * from information_schema.ins_dnodes; " )
2022-06-28 10:11:50 +00:00
dnodeId = tdSql . getData ( 0 , 0 )
print ( dnodeId )
2022-07-01 13:11:57 +00:00
tdLog . debug ( " create qnode on dnode %s " % dnodeId )
2022-06-28 10:11:50 +00:00
tdSql . execute ( " create qnode on dnode %s " % dnodeId )
tdSql . query ( " select max(c1) from stb10; " )
maxQnode = tdSql . getData ( 0 , 0 )
tdSql . query ( " select min(c1) from stb11; " )
minQnode = tdSql . getData ( 0 , 0 )
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-06-28 10:11:50 +00:00
unionQnode = tdSql . queryResult
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union all select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-06-28 10:11:50 +00:00
unionallQnode = tdSql . queryResult
2022-08-11 13:55:20 +00:00
# tdSql.query("select * from information_schema.ins_qnodes;")
2022-06-28 10:11:50 +00:00
# qnodeId=tdSql.getData(0,0)
2022-07-01 13:11:57 +00:00
tdLog . debug ( " drop qnode on dnode %s " % dnodeId )
2022-06-28 10:11:50 +00:00
tdSql . execute ( " drop qnode on dnode %s " % dnodeId )
tdSql . execute ( " reset query cache " )
tdSql . query ( " select max(c1) from stb10; " )
tdSql . checkData ( 0 , 0 , " %s " % maxQnode )
2022-07-13 06:41:50 +00:00
tdSql . query ( " select min(c1) from stb11; " )
2022-06-28 10:11:50 +00:00
tdSql . checkData ( 0 , 0 , " %s " % minQnode )
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-06-28 10:11:50 +00:00
unionVnode = tdSql . queryResult
assert unionQnode == unionVnode
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union all select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-06-28 10:11:50 +00:00
unionallVnode = tdSql . queryResult
assert unionallQnode == unionallVnode
2022-07-01 13:11:57 +00:00
queryPolicy = 2
simClientCfg = " %s /taos.cfg " % tdDnodes . getSimCfgPath ( )
cmd = ' sed -i " s/^queryPolicy.*/queryPolicy 2/g " %s ' % simClientCfg
os . system ( cmd )
# tdDnodes.stop(1)
# tdDnodes.start(1)
tdSql . execute ( ' alter local " queryPolicy " " %d " ' % queryPolicy )
tdSql . query ( " show local variables; " )
for i in range ( tdSql . queryRows ) :
if tdSql . queryResult [ i ] [ 0 ] == " queryPolicy " :
if int ( tdSql . queryResult [ i ] [ 1 ] ) == int ( queryPolicy ) :
tdLog . success ( ' alter queryPolicy to %d successfully ' % queryPolicy )
else :
tdLog . debug ( tdSql . queryResult )
tdLog . exit ( " alter queryPolicy to %d failed " % queryPolicy )
tdSql . execute ( " reset query cache " )
tdSql . execute ( " use db1; " )
2022-08-11 13:55:20 +00:00
tdSql . query ( " select * from information_schema.ins_dnodes; " )
2022-07-01 13:11:57 +00:00
dnodeId = tdSql . getData ( 0 , 0 )
tdLog . debug ( " create qnode on dnode %s " % dnodeId )
tdSql . execute ( " create qnode on dnode %s " % dnodeId )
tdSql . query ( " select max(c1) from stb10; " )
assert maxQnode == tdSql . getData ( 0 , 0 )
tdSql . query ( " select min(c1) from stb11; " )
assert minQnode == tdSql . getData ( 0 , 0 )
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-07-01 13:11:57 +00:00
assert unionQnode == tdSql . queryResult
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union all select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-07-01 13:11:57 +00:00
assert unionallQnode == tdSql . queryResult
2022-08-11 13:55:20 +00:00
# tdSql.query("select * from information_schema.ins_qnodes;")
2022-07-01 13:11:57 +00:00
# qnodeId=tdSql.getData(0,0)
tdLog . debug ( " drop qnode on dnode %s " % dnodeId )
tdSql . execute ( " drop qnode on dnode %s " % dnodeId )
tdSql . execute ( " reset query cache " )
tdSql . query ( " select max(c1) from stb10; " )
assert maxQnode == tdSql . getData ( 0 , 0 )
2022-07-13 06:41:50 +00:00
tdSql . query ( " select min(c1) from stb11; " )
assert minQnode == tdSql . getData ( 0 , 0 )
2023-03-16 02:18:06 +00:00
tdSql . error ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
tdSql . error ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union all select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-06-28 10:11:50 +00:00
# tdSql.execute("create qnode on dnode %s"%dnodeId)
2022-07-01 13:11:57 +00:00
queryPolicy = 3
simClientCfg = " %s /taos.cfg " % tdDnodes . getSimCfgPath ( )
cmd = ' sed -i " s/^queryPolicy.*/queryPolicy 2/g " %s ' % simClientCfg
os . system ( cmd )
# tdDnodes.stop(1)
# tdDnodes.start(1)
tdSql . execute ( " reset query cache " )
tdSql . execute ( ' alter local " queryPolicy " " %d " ' % queryPolicy )
tdSql . query ( " show local variables; " )
for i in range ( tdSql . queryRows ) :
if tdSql . queryResult [ i ] [ 0 ] == " queryPolicy " :
if int ( tdSql . queryResult [ i ] [ 1 ] ) == int ( queryPolicy ) :
tdLog . success ( ' alter queryPolicy to %d successfully ' % queryPolicy )
else :
tdLog . debug ( tdSql . queryResult )
tdLog . exit ( " alter queryPolicy to %d failed " % queryPolicy )
tdSql . execute ( " reset query cache " )
tdSql . execute ( " use db1; " )
2022-08-11 13:55:20 +00:00
tdSql . query ( " select * from information_schema.ins_dnodes; " )
2022-07-01 13:11:57 +00:00
dnodeId = tdSql . getData ( 0 , 0 )
tdLog . debug ( " create qnode on dnode %s " % dnodeId )
tdSql . execute ( " create qnode on dnode %s " % dnodeId )
tdSql . query ( " select max(c1) from stb10; " )
assert maxQnode == tdSql . getData ( 0 , 0 )
tdSql . query ( " select min(c1) from stb11; " )
assert minQnode == tdSql . getData ( 0 , 0 )
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-07-14 08:27:26 +00:00
assert unionQnode == tdSql . queryResult
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union all select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-07-14 08:27:26 +00:00
assert unionallQnode == tdSql . queryResult
queryPolicy = 1
tdSql . execute ( ' alter local " queryPolicy " " %d " ' % queryPolicy )
tdSql . query ( " show local variables; " )
for i in range ( tdSql . queryRows ) :
if tdSql . queryResult [ i ] [ 0 ] == " queryPolicy " :
if int ( tdSql . queryResult [ i ] [ 1 ] ) == int ( queryPolicy ) :
tdLog . success ( ' alter queryPolicy to %d successfully ' % queryPolicy )
else :
tdLog . debug ( tdSql . queryResult )
tdLog . exit ( " alter queryPolicy to %d failed " % queryPolicy )
tdSql . execute ( " reset query cache " )
tdSql . execute ( " use db1; " )
2022-08-11 13:55:20 +00:00
tdSql . query ( " select * from information_schema.ins_dnodes; " )
2022-07-14 08:27:26 +00:00
dnodeId = tdSql . getData ( 0 , 0 )
tdSql . query ( " select max(c1) from stb10; " )
assert maxQnode == tdSql . getData ( 0 , 0 )
tdSql . query ( " select min(c1) from stb11; " )
assert minQnode == tdSql . getData ( 0 , 0 )
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-07-01 13:11:57 +00:00
assert unionQnode == tdSql . queryResult
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union all select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-07-01 13:11:57 +00:00
assert unionallQnode == tdSql . queryResult
2022-07-10 08:12:09 +00:00
# test case : queryPolicy = 2
2022-07-01 13:11:57 +00:00
def test_case2 ( self ) :
self . taosBenchCreate ( " 127.0.0.1 " , " no " , " db1 " , " stb1 " , 10 , 2 , 1 * 10 )
2022-08-11 13:55:20 +00:00
tdSql . query ( " select * from information_schema.ins_qnodes " )
2022-07-01 13:11:57 +00:00
if tdSql . queryRows == 1 :
tdLog . debug ( " drop qnode on dnode 1 " )
tdSql . execute ( " drop qnode on dnode 1 " )
queryPolicy = 2
simClientCfg = " %s /taos.cfg " % tdDnodes . getSimCfgPath ( )
cmd = ' sed -i " s/^queryPolicy.*/queryPolicy 2/g " %s ' % simClientCfg
os . system ( cmd )
# tdDnodes.stop(1)
# tdDnodes.start(1)
tdSql . execute ( " reset query cache " )
tdSql . execute ( ' alter local " queryPolicy " " %d " ' % queryPolicy )
tdSql . query ( " show local variables; " )
for i in range ( tdSql . queryRows ) :
if tdSql . queryResult [ i ] [ 0 ] == " queryPolicy " :
if int ( tdSql . queryResult [ i ] [ 1 ] ) == int ( queryPolicy ) :
tdLog . success ( ' alter queryPolicy to %d successfully ' % queryPolicy )
else :
tdLog . debug ( tdSql . queryResult )
tdLog . exit ( " alter queryPolicy to %d failed " % queryPolicy )
tdSql . execute ( " use db1; " )
tdSql . error ( " select max(c1) from stb10; " )
2022-07-13 06:41:50 +00:00
tdSql . error ( " select min(c1) from stb11; " )
2023-03-16 02:18:06 +00:00
tdSql . error ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
tdSql . error ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union all select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-07-01 13:11:57 +00:00
tdSql . query ( " select max(c1) from stb10_0; " )
tdSql . query ( " select min(c1) from stb11_0; " )
2022-07-10 08:12:09 +00:00
# test case : queryPolicy = 3
2022-07-01 13:11:57 +00:00
2022-07-10 08:12:09 +00:00
def test_case3 ( self ) :
2022-07-01 13:11:57 +00:00
tdSql . execute ( ' alter local " queryPolicy " " 3 " ' )
tdLog . debug ( " create qnode on dnode 1 " )
tdSql . execute ( " create qnode on dnode 1 " )
tdSql . execute ( " use db1; " )
2022-08-11 13:55:20 +00:00
tdSql . query ( " select * from information_schema.ins_dnodes; " )
2022-07-01 13:11:57 +00:00
dnodeId = tdSql . getData ( 0 , 0 )
print ( dnodeId )
tdSql . query ( " select max(c1) from stb10; " )
maxQnode = tdSql . getData ( 0 , 0 )
tdSql . query ( " select min(c1) from stb11; " )
minQnode = tdSql . getData ( 0 , 0 )
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-07-01 13:11:57 +00:00
unionQnode = tdSql . queryResult
2023-03-16 02:18:06 +00:00
tdSql . query ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union all select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-07-01 13:11:57 +00:00
unionallQnode = tdSql . queryResult
2022-08-11 13:55:20 +00:00
# tdSql.query("select * from information_schema.ins_qnodes;")
2022-07-01 13:11:57 +00:00
# qnodeId=tdSql.getData(0,0)
tdLog . debug ( " drop qnode on dnode %s " % dnodeId )
tdSql . execute ( " drop qnode on dnode %s " % dnodeId )
tdSql . execute ( " reset query cache " )
tdSql . error ( " select max(c1) from stb10; " )
2022-07-13 06:41:50 +00:00
tdSql . error ( " select min(c1) from stb11; " )
2023-03-16 02:18:06 +00:00
tdSql . error ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
tdSql . error ( " select c0,c1 from(select c0,c1 from stb11_1 where (c0>1000) union all select c0,c1 from stb11_1 where c0>2000) order by c0,c1; " )
2022-07-01 13:11:57 +00:00
2022-07-13 06:41:50 +00:00
# run case
2022-06-28 10:11:50 +00:00
def run ( self ) :
# test qnode
2022-07-13 06:41:50 +00:00
tdLog . debug ( " test_case1 ............ [start] " )
2022-07-01 13:11:57 +00:00
self . test_case1 ( )
2022-07-10 08:12:09 +00:00
tdLog . debug ( " test_case1 ............ [OK] " )
2022-07-13 06:41:50 +00:00
tdLog . debug ( " test_case2 ............ [start] " )
2022-07-01 13:11:57 +00:00
self . test_case2 ( )
2022-07-10 08:12:09 +00:00
tdLog . debug ( " test_case2 ............ [OK] " )
2022-07-13 06:41:50 +00:00
tdLog . debug ( " test_case3 ............ [start] " )
2022-07-01 13:11:57 +00:00
self . test_case3 ( )
2022-07-10 08:12:09 +00:00
tdLog . debug ( " test_case3 ............ [OK] " )
2022-07-01 13:11:57 +00:00
# tdLog.debug(" LIMIT test_case3 ............ [OK]")
2022-06-28 10:11:50 +00:00
2022-07-05 12:30:42 +00:00
def stop ( self ) :
tdSql . close ( )
tdLog . success ( f " { __file__ } successfully executed " )
2022-06-28 10:11:50 +00:00
2022-07-13 06:41:50 +00:00
return
2022-06-28 10:11:50 +00:00
#
# add case with filename
#
tdCases . addWindows ( __file__ , TDTestCase ( ) )
2022-07-11 02:43:08 +00:00
tdCases . addLinux ( __file__ , TDTestCase ( ) )