2021-06-07 12:44:07 +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
2021-06-10 07:51:55 +00:00
import os
2021-06-07 12:44:07 +00:00
import taos
from util . log import tdLog
from util . cases import tdCases
from util . sql import tdSql
from util . dnodes import tdDnodes
import random
class TDTestCase :
def init ( self , conn , logSql ) :
tdLog . debug ( " start to execute %s " % __file__ )
tdSql . init ( conn . cursor ( ) , logSql )
self . ts1 = 1593548685000
self . ts2 = 1593548785000
def run ( self ) :
# tdSql.execute("drop database db ")
tdSql . prepare ( )
tdSql . execute ( " create table st (ts timestamp, num int, value int , t_instance int) tags (loc nchar(30)) " )
2021-06-09 08:25:49 +00:00
node = 5
number = 10
for n in range ( node ) :
for m in range ( number ) :
dt = m * 300000 + n * 60000 # collecting'frequency is 10s
args1 = ( n , n , self . ts1 + dt , n , 100 + 2 * m + 2 * n , 10 + m + n )
# args2=(n,self.ts2+dt,n,120+n,15+n)
tdSql . execute ( " insert into t %d using st tags( ' beijing %d ' ) values( %d , %d , %d , %d ) " % args1 )
# tdSql.execute("insert into t1 using st tags('shanghai') values(%d, %d, %d, %d)" % args2)
2021-06-07 12:44:07 +00:00
2021-06-09 08:25:49 +00:00
# interval function
2021-06-07 12:44:07 +00:00
tdSql . query ( " select avg(value) from st interval(10m) " )
2021-06-09 11:26:17 +00:00
# print(tdSql.queryResult)
2021-06-09 08:25:49 +00:00
tdSql . checkRows ( 6 )
2021-06-07 12:44:07 +00:00
tdSql . checkData ( 0 , 0 , " 2020-07-01 04:20:00 " )
2021-06-09 08:25:49 +00:00
tdSql . checkData ( 1 , 1 , 107.4 )
# subquery with interval
tdSql . query ( " select avg(avg_val) from(select avg(value) as avg_val from st where loc= ' beijing0 ' interval(10m)); " )
tdSql . checkData ( 0 , 0 , 109.0 )
# subquery with interval and select two Column in parent query
2021-06-09 11:26:17 +00:00
tdSql . error ( " select ts,avg(avg_val) from(select avg(value) as avg_val from st where loc= ' beijing0 ' interval(10m)); " )
2021-06-09 08:25:49 +00:00
# subquery with interval and sliding
tdSql . query ( " select avg(value) as avg_val from st where loc= ' beijing0 ' interval(8m) sliding(30s) limit 1; " )
tdSql . checkData ( 0 , 0 , " 2020-07-01 04:17:00 " )
2021-06-09 11:26:17 +00:00
tdSql . checkData ( 0 , 1 , 100 )
2021-06-09 08:25:49 +00:00
tdSql . query ( " select avg(avg_val) from(select avg(value) as avg_val from st where loc= ' beijing1 ' interval(8m) sliding(30s)); " )
tdSql . checkData ( 0 , 0 , 111 )
2021-06-07 12:44:07 +00:00
2021-06-09 08:25:49 +00:00
# subquery with interval and offset
tdSql . query ( " select avg(value) as avg_val from st where loc= ' beijing0 ' interval(5m,1m); " )
tdSql . checkData ( 0 , 0 , " 2020-07-01 04:21:00 " )
2021-06-09 11:26:17 +00:00
tdSql . checkData ( 0 , 1 , 100 )
tdSql . query ( " select avg(avg_val) from(select avg(value) as avg_val from st where loc= ' beijing0 ' interval(5m,1m) group by loc); " )
tdSql . checkData ( 0 , 0 , 109 )
2021-06-09 08:25:49 +00:00
# subquery with interval,sliding and group by ; parent query with interval
tdSql . query ( " select avg(value) as avg_val from st where loc= ' beijing0 ' interval(8m) sliding(1m) group by loc limit 1 offset 52 ; " )
tdSql . checkData ( 0 , 0 , " 2020-07-01 05:09:00 " )
tdSql . checkData ( 0 , 1 , 118 )
2021-06-09 11:26:17 +00:00
tdSql . query ( " select avg(avg_val) as ncst from(select avg(value) as avg_val from st where loc!= ' beijing0 ' interval(8m) sliding(1m) group by loc ) interval(5m); " )
tdSql . checkData ( 1 , 1 , 105 )
2021-06-09 08:25:49 +00:00
# # subquery and parent query with interval and sliding
2021-06-09 11:26:17 +00:00
tdSql . query ( " select avg(avg_val) from(select avg(value) as avg_val from st where loc= ' beijing1 ' interval(8m) sliding(5m)) interval(10m) sliding(2m); " )
tdSql . checkData ( 29 , 0 , " 2020-07-01 05:10:00.000 " )
2021-06-09 08:25:49 +00:00
# subquery and parent query with top and bottom
2021-06-22 10:42:31 +00:00
tdSql . query ( " select top(avg_val,2) from(select avg(value) as avg_val,num from st where loc!= ' beijing0 ' group by num) order by avg_val desc; " )
tdSql . checkData ( 0 , 1 , 117 )
tdSql . query ( " select bottom(avg_val,3) from(select avg(value) as avg_val,num from st where loc!= ' beijing0 ' group by num) order by avg_val asc; " )
tdSql . checkData ( 0 , 1 , 111 )
2021-06-09 08:25:49 +00:00
2021-06-10 07:51:55 +00:00
#
tdSql . query ( " select top(avg_val,2) from(select avg(value) as avg_val from st where loc= ' beijing1 ' interval(8m) sliding(3m)); " )
2021-06-22 10:42:31 +00:00
tdSql . checkData ( 0 , 1 , 120 )
2021-06-09 08:25:49 +00:00
2021-06-22 10:42:31 +00:00
# clear env
2021-06-10 07:51:55 +00:00
testcaseFilename = os . path . split ( __file__ ) [ - 1 ]
os . system ( " rm -rf ./insert_res.txt " )
os . system ( " rm -rf wal/ %s .sql " % testcaseFilename )
2021-06-07 12:44:07 +00:00
def stop ( self ) :
tdSql . close ( )
tdLog . success ( " %s successfully executed " % __file__ )
tdCases . addWindows ( __file__ , TDTestCase ( ) )
tdCases . addLinux ( __file__ , TDTestCase ( ) )