mirror of
https://github.com/taosdata/TDengine
synced 2026-05-24 10:09:01 +00:00
343 lines
14 KiB
Python
343 lines
14 KiB
Python
###################################################################
|
|
# Copyright (c) 2021 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
|
|
from util.log import *
|
|
from util.cases import *
|
|
from util.sql import *
|
|
|
|
|
|
class TDTestCase:
|
|
def caseDescription(self):
|
|
'''
|
|
case1<markwang>: [TD-11208] function unique
|
|
'''
|
|
return
|
|
|
|
def init(self, conn, logSql):
|
|
tdLog.debug("start to execute %s" % __file__)
|
|
tdSql.init(conn.cursor(), logSql)
|
|
self._conn = conn
|
|
|
|
def run(self):
|
|
print("running {}".format(__file__))
|
|
tdSql.execute("drop database if exists unique")
|
|
tdSql.execute("create database if not exists unique")
|
|
tdSql.execute('use unique')
|
|
|
|
tdSql.execute('create table unique (ts timestamp, voltage bigint,num int) tags (location binary(30), groupid int)')
|
|
tdSql.execute('create table D001 using unique tags ("Beijing.Chaoyang", 1)')
|
|
tdSql.execute('create table D002 using unique tags ("Beijing.haidian", 2)')
|
|
tdSql.execute('create table D003 using unique tags ("Beijing.Tongzhou", 3)')
|
|
tdSql.execute('create table D004 using unique tags ("Beijing.Tongzhou", 4)')
|
|
|
|
tdSql.execute('insert into D001 values("2021-10-17 00:31:31", 1, 2) ("2022-01-24 00:31:31", 1, 2)')
|
|
tdSql.execute('insert into D002 values("2021-10-17 00:31:31", 1, 2) ("2021-12-24 00:31:31", 2, 2) ("2021-12-24 01:31:31", 19, 2)')
|
|
tdSql.execute('insert into D003 values("2021-10-17 00:31:31", 1, 2) ("2021-12-24 00:31:31", 1, 2) ("2021-12-24 01:31:31", 9, 2)')
|
|
|
|
# test normal table
|
|
print(tdSql.getResult('select unique(voltage) from d003'))
|
|
tdSql.query('select unique(voltage) from d003')
|
|
tdSql.checkRows(2)
|
|
tdSql.checkData(0, 1, 1)
|
|
tdSql.checkData(1, 1, 9)
|
|
|
|
tdSql.query('select ts,unique(voltage),ts,groupid,location,tbname from d003')
|
|
tdSql.checkRows(2)
|
|
tdSql.checkData(0, 0, "2021-10-17 00:31:31")
|
|
tdSql.checkData(0, 1, "2021-10-17 00:31:31")
|
|
tdSql.checkData(0, 2, 1)
|
|
tdSql.checkData(0, 3, "2021-10-17 00:31:31")
|
|
tdSql.checkData(0, 4, 3)
|
|
tdSql.checkData(0, 5, "Beijing.Tongzhou")
|
|
tdSql.checkData(0, 6, "d003")
|
|
tdSql.checkData(1, 0, "2021-12-24 01:31:31")
|
|
tdSql.checkData(1, 1, "2021-12-24 01:31:31")
|
|
tdSql.checkData(1, 2, 9)
|
|
tdSql.checkData(1, 3, "2021-12-24 01:31:31")
|
|
tdSql.checkData(1, 4, 3)
|
|
tdSql.checkData(1, 5, "Beijing.Tongzhou")
|
|
tdSql.checkData(1, 6, "d003")
|
|
|
|
# test super table
|
|
tdSql.query('select unique(voltage),tbname from unique')
|
|
tdSql.checkRows(4)
|
|
tdSql.query('select unique(voltage),_c0 from unique')
|
|
tdSql.checkRows(4)
|
|
|
|
tdSql.query('select unique(voltage) from unique')
|
|
tdSql.checkRows(4)
|
|
tdSql.checkData(0, 0, "2021-10-17 00:31:31")
|
|
tdSql.checkData(1, 0, "2021-12-24 00:31:31")
|
|
tdSql.checkData(2, 0, "2021-12-24 01:31:31")
|
|
tdSql.checkData(3, 0, "2021-12-24 01:31:31")
|
|
tdSql.checkData(0, 1, 1)
|
|
tdSql.checkData(1, 1, 2)
|
|
tdSql.checkData(2, 1, 9)
|
|
tdSql.checkData(3, 1, 19)
|
|
|
|
tdSql.query('select ts,unique(voltage),ts,groupid,location,tbname from unique')
|
|
tdSql.checkRows(4)
|
|
tdSql.checkData(0, 0, "2021-10-17 00:31:31")
|
|
tdSql.checkData(0, 1, "2021-10-17 00:31:31")
|
|
tdSql.checkData(0, 2, 1)
|
|
tdSql.checkData(0, 3, "2021-10-17 00:31:31")
|
|
tdSql.checkData(0, 4, 1)
|
|
tdSql.checkData(0, 5, "Beijing.Chaoyang")
|
|
tdSql.checkData(0, 6, "d001")
|
|
|
|
tdSql.checkData(1, 0, "2021-12-24 00:31:31")
|
|
tdSql.checkData(1, 1, "2021-12-24 00:31:31")
|
|
tdSql.checkData(1, 2, 2)
|
|
tdSql.checkData(1, 3, "2021-12-24 00:31:31")
|
|
tdSql.checkData(1, 4, 2)
|
|
tdSql.checkData(1, 5, "Beijing.haidian")
|
|
tdSql.checkData(1, 6, "d002")
|
|
|
|
tdSql.checkData(2, 0, "2021-12-24 01:31:31")
|
|
tdSql.checkData(2, 1, "2021-12-24 01:31:31")
|
|
tdSql.checkData(2, 2, 9)
|
|
tdSql.checkData(2, 3, "2021-12-24 01:31:31")
|
|
tdSql.checkData(2, 4, 3)
|
|
tdSql.checkData(2, 5, "Beijing.Tongzhou")
|
|
tdSql.checkData(2, 6, "d003")
|
|
|
|
tdSql.checkData(3, 0, "2021-12-24 01:31:31")
|
|
tdSql.checkData(3, 1, "2021-12-24 01:31:31")
|
|
tdSql.checkData(3, 2, 19)
|
|
tdSql.checkData(3, 3, "2021-12-24 01:31:31")
|
|
tdSql.checkData(3, 4, 2)
|
|
tdSql.checkData(3, 5, "Beijing.haidian")
|
|
tdSql.checkData(3, 6, "d002")
|
|
|
|
tdSql.execute('insert into D004 values("2021-10-15 00:00:01", 10, 2) ("2021-12-24 00:21:31", 5, 2) ("2021-12-25 01:31:31", 9, 4)')
|
|
|
|
# test group by
|
|
#group by column
|
|
tdSql.query('select ts,unique(num) from d003 group by voltage')
|
|
tdSql.checkRows(2)
|
|
tdSql.checkData(0, 1, "2021-10-17 00:31:31")
|
|
tdSql.checkData(0, 2, 2)
|
|
tdSql.checkData(1, 1, "2021-12-24 01:31:31")
|
|
tdSql.checkData(1, 2, 2)
|
|
tdSql.query('select ts,unique(num) from unique group by voltage')
|
|
tdSql.checkRows(7)
|
|
#group by tbname
|
|
tdSql.query('select ts,unique(voltage) from unique group by tbname')
|
|
tdSql.checkRows(9)
|
|
tdSql.checkData(0, 2, 1)
|
|
tdSql.checkData(2, 2, 2)
|
|
tdSql.checkData(8, 2, 9)
|
|
#group by tag
|
|
tdSql.query('select ts,unique(voltage) from unique group by location')
|
|
tdSql.checkRows(8)
|
|
tdSql.checkData(0, 2, 1)
|
|
tdSql.checkData(5, 3, "Beijing.haidian")
|
|
tdSql.checkData(0, 2, 1)
|
|
tdSql.checkData(0, 3, "Beijing.Chaoyang")
|
|
tdSql.checkData(2, 2, 1)
|
|
tdSql.checkData(2, 3, "Beijing.Tongzhou")
|
|
#group by ts
|
|
tdSql.query('select ts,unique(voltage) from unique group by ts')
|
|
tdSql.checkRows(9)
|
|
tdSql.checkData(1, 2, 1)
|
|
tdSql.checkData(4, 2, 2)
|
|
tdSql.checkData(8, 2, 1)
|
|
tdSql.checkData(6, 2, 19)
|
|
tdSql.checkData(7, 2, 9)
|
|
#group by tag,column
|
|
tdSql.query('select ts,unique(voltage) from unique group by location,num')
|
|
tdSql.checkRows(9)
|
|
|
|
|
|
#test order by
|
|
#order by ts [desc]
|
|
tdSql.query('select unique(voltage) from unique order by ts desc')
|
|
tdSql.checkRows(6)
|
|
tdSql.checkData(0, 0, "2021-12-24 01:31:31")
|
|
tdSql.checkData(0, 1, 19)
|
|
tdSql.checkData(5, 0, "2021-10-15 00:00:01")
|
|
tdSql.checkData(5, 1, 10)
|
|
tdSql.query('select unique(voltage) from unique order by ts')
|
|
tdSql.checkRows(6)
|
|
tdSql.checkData(5, 0, "2021-12-24 01:31:31")
|
|
tdSql.checkData(5, 1, 19)
|
|
tdSql.checkData(0, 0, "2021-10-15 00:00:01")
|
|
tdSql.checkData(0, 1, 10)
|
|
#order by column [desc]
|
|
tdSql.query('select unique(voltage) from unique order by voltage desc')
|
|
tdSql.checkRows(6)
|
|
tdSql.checkData(0, 0, "2021-12-24 01:31:31")
|
|
tdSql.checkData(0, 1, 19)
|
|
tdSql.checkData(5, 0, "2021-10-17 00:31:31")
|
|
tdSql.checkData(5, 1, 1)
|
|
tdSql.query('select unique(voltage) from unique order by voltage')
|
|
tdSql.checkRows(6)
|
|
tdSql.checkData(5, 0, "2021-12-24 01:31:31")
|
|
tdSql.checkData(5, 1, 19)
|
|
tdSql.checkData(0, 0, "2021-10-17 00:31:31")
|
|
tdSql.checkData(0, 1, 1)
|
|
#order by tag [desc]
|
|
tdSql.query('select unique(voltage) from unique group by groupid order by groupid desc')
|
|
tdSql.checkRows(9)
|
|
tdSql.checkData(2, 1, 9)
|
|
tdSql.checkData(2, 2, 4)
|
|
tdSql.checkData(4, 1, 9)
|
|
tdSql.checkData(4, 2, 3)
|
|
tdSql.checkData(8, 1, 1)
|
|
tdSql.checkData(8, 2, 1)
|
|
#order by tbname [desc]
|
|
tdSql.query('select unique(voltage) from unique group by tbname order by tbname desc')
|
|
tdSql.checkRows(9)
|
|
tdSql.checkData(2, 1, 9)
|
|
tdSql.checkData(2, 2, "d004")
|
|
tdSql.checkData(4, 1, 9)
|
|
tdSql.checkData(4, 2, "d003")
|
|
tdSql.checkData(8, 1, 1)
|
|
tdSql.checkData(8, 2, "d001")
|
|
#order by tag, ts [desc]
|
|
tdSql.query('select unique(voltage) from unique group by groupid order by groupid,ts desc')
|
|
tdSql.checkRows(9)
|
|
|
|
|
|
#test group by xx order by xx
|
|
tdSql.query('select unique(voltage) from unique group by num order by ts desc')
|
|
tdSql.checkRows(7)
|
|
tdSql.checkData(6, 0, "2021-12-25 01:31:31")
|
|
tdSql.checkData(6, 1, 9)
|
|
tdSql.checkData(0, 0, "2021-12-24 01:31:31")
|
|
tdSql.checkData(0, 1, 19)
|
|
|
|
# error
|
|
tdSql.error("select unique(ts) from unique")
|
|
tdSql.error("select unique(voltage) from unique interval(1s)")
|
|
tdSql.error("select unique(voltage) from unique interval(1s) fill(value)")
|
|
tdSql.error("select unique(voltage) from unique session(ts, 20s)")
|
|
tdSql.error("select unique(voltage) from unique state_window(num)")
|
|
tdSql.error("select unique(voltage),top(voltage,1) from unique")
|
|
tdSql.error("select unique(voltage),first(voltage) from unique")
|
|
tdSql.error("select unique(voltage),ceil(voltage) from unique")
|
|
tdSql.error("select unique(voltage),sum(voltage) from unique")
|
|
tdSql.error("select unique(voltage),unique(num) from unique")
|
|
|
|
#where
|
|
tdSql.query('select unique(voltage) from unique where voltage > 9')
|
|
tdSql.checkRows(2)
|
|
tdSql.query('select unique(voltage) from unique where num > 9')
|
|
tdSql.checkRows(0)
|
|
|
|
#slimit/soffset
|
|
tdSql.query('select ts,unique(voltage) from unique group by tbname slimit 2 soffset 2')
|
|
tdSql.checkRows(5)
|
|
tdSql.checkData(0, 3, "d003")
|
|
tdSql.checkData(2, 3, "d004")
|
|
|
|
#limit/offset
|
|
tdSql.query('select unique(voltage) from unique where voltage > 2 limit 2 offset 1')
|
|
tdSql.checkRows(2)
|
|
tdSql.checkData(0, 1, 5)
|
|
tdSql.checkData(1, 1, 9)
|
|
|
|
#having
|
|
tdSql.query('select unique(voltage) from unique group by num having unique(voltage)>5')
|
|
tdSql.checkRows(4)
|
|
|
|
#subquery
|
|
tdSql.query('select unique(num) from (select * from unique where voltage > 1)')
|
|
tdSql.checkRows(2)
|
|
|
|
tdSql.query('select unique(num) from (select * from unique) order by ts')
|
|
tdSql.checkRows(2)
|
|
tdSql.checkData(0, 0, "2021-10-15 00:00:01")
|
|
tdSql.checkData(0, 1, 2)
|
|
tdSql.checkData(1, 0, "2021-12-25 01:31:31")
|
|
tdSql.checkData(1, 1, 4)
|
|
|
|
tdSql.query('select unique(num) from (select * from unique) order by ts desc')
|
|
tdSql.checkRows(2)
|
|
tdSql.checkData(0, 0, "2021-12-25 01:31:31")
|
|
tdSql.checkData(0, 1, 4)
|
|
tdSql.checkData(1, 0, "2021-10-15 00:00:01")
|
|
tdSql.checkData(1, 1, 2)
|
|
|
|
#union
|
|
tdSql.query('select unique(voltage) from d002 union all select unique(voltage) from d003')
|
|
tdSql.checkRows(5)
|
|
tdSql.checkData(0, 1, 1)
|
|
tdSql.checkData(3, 1, 1)
|
|
|
|
tdSql.execute('create table unique1 (ts timestamp, voltage bigint,num smallint, dbool bool, dtiny tinyint unsigned, dfloat float, ddouble double, dchar nchar(4093), dbinary binary(64), dtime timestamp) tags (jtag json)')
|
|
tdSql.execute('create table D011 using unique1 tags (\'{"k1":"v1"}\')')
|
|
tdSql.execute('create table D012 using unique1 tags (\'{"k1":"v1","k2":7}\')')
|
|
tdSql.execute('create table D013 using unique1 tags (\'{"k3":"v3"}\')')
|
|
|
|
tdSql.execute('insert into D011 values("2021-10-17 00:31:31", 1, -3276, true, 253, 3.32333, 4.984392323, "你好", "sddd", 333) ("2022-01-24 00:31:31", 1, -32767, false, 254, NULL, 4.982392323, "你好吗", "sdf",2323)')
|
|
tdSql.execute('insert into D012 values("2021-10-17 00:31:31", 1, NULL, true, 23, 3.4, 4.982392323, "你好吗", "sdf", 333) ("2021-12-24 00:31:31", 2, 32767, NULL, NULL, NULL, 4.982392323, NULL, "sddd", NULL) ("2022-01-01 08:00:01", 19, 3276, true, 2, 3.323222, 4.92323, "试试", "sddd", 1645434434000)')
|
|
tdSql.execute('insert into D013 values("2021-10-17 00:31:31", NULL, 32767, true, 123, 3.323232333, 4.2, NULL, NULL, NULL) ("2022-01-01 08:00:02", NULL, NULL, NULL, 35, 3.323232333, NULL, "试试", NULL, 1645434434000) ("2022-01-01 08:00:03", 9, 54, true, 25, 3.32333, NULL, "试试", NULL, 1645434434001)')
|
|
|
|
#null/nchar/binary
|
|
tdSql.query('select unique(dchar),jtag from unique1')
|
|
tdSql.checkRows(4)
|
|
tdSql.checkData(0, 0, "2021-10-17 00:31:31")
|
|
tdSql.checkData(0, 1, "你好")
|
|
tdSql.checkData(2, 0, "2021-10-17 00:31:31")
|
|
tdSql.checkData(2, 1, None)
|
|
tdSql.query('select unique(voltage) from unique1 group by dchar')
|
|
tdSql.checkRows(7)
|
|
|
|
tdSql.query('select unique(dbinary) from unique1')
|
|
tdSql.checkRows(3)
|
|
tdSql.checkData(0, 0, "2021-10-17 00:31:31")
|
|
tdSql.checkData(0, 1, "sddd")
|
|
tdSql.checkData(2, 0, "2021-10-17 00:31:31")
|
|
tdSql.checkData(2, 1, None)
|
|
|
|
tdSql.query('select unique(dbool) from unique1')
|
|
tdSql.checkRows(3)
|
|
|
|
tdSql.query('select unique(dtiny) from unique1')
|
|
tdSql.checkRows(8)
|
|
|
|
tdSql.query('select unique(ddouble) from unique1')
|
|
tdSql.checkRows(5)
|
|
|
|
tdSql.query('select unique(dfloat) from unique1')
|
|
tdSql.checkRows(5)
|
|
|
|
tdSql.query('select unique(dtime) from unique1')
|
|
tdSql.checkRows(5)
|
|
|
|
#join
|
|
tdSql.execute('create table unique2 (ts timestamp, voltage bigint,num int) tags (location binary(30), groupid int)')
|
|
tdSql.execute('create table D021 using unique2 tags ("Beijing.Chaoyang", 1)')
|
|
|
|
tdSql.execute('insert into D021 values("2021-10-17 00:31:31", 1, 2) ("2022-01-24 00:31:31", 1, 2)')
|
|
tdSql.query('select unique(unique.voltage) from unique, unique2 where unique.ts=unique2.ts and unique.groupid=unique2.groupid')
|
|
tdSql.checkRows(1)
|
|
|
|
#TD-14104
|
|
ts = 1642592221000
|
|
sql = "insert into D004 values"
|
|
for i in range(3000):
|
|
sql += " (%d,%d,%d)"%(ts + i*1000, i, i)
|
|
tdSql.execute(sql)
|
|
tdSql.query("select unique(num) from (select * from unique)")
|
|
|
|
def stop(self):
|
|
tdSql.close()
|
|
tdLog.success("%s successfully executed" % __file__)
|
|
|
|
|
|
tdCases.addWindows(__file__, TDTestCase())
|
|
tdCases.addLinux(__file__, TDTestCase())
|
|
|