add case
This commit is contained in:
parent
f0c2f1a645
commit
846d66dc1f
|
@ -1,25 +1,8 @@
|
|||
###################################################################
|
||||
# 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, db_test.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 imp
|
||||
import sys
|
||||
import taos
|
||||
from util.log import tdLog
|
||||
from util.cases import tdCases
|
||||
from util.sql import tdSql
|
||||
import json
|
||||
import os
|
||||
|
||||
|
||||
class TDTestCase:
|
||||
def caseDescription(self):
|
||||
|
@ -31,35 +14,33 @@ class TDTestCase:
|
|||
return
|
||||
|
||||
def init(self, conn, logSql):
|
||||
self.testcasePath = os.path.split(__file__)[0]
|
||||
self.testcaseFilename = os.path.split(__file__)[-1]
|
||||
# os.system("rm -rf %s/%s.sql" % (self.testcasePath,self.testcaseFilename))
|
||||
tdLog.debug("start to execute %s" % __file__)
|
||||
tdSql.init(conn.cursor(), True)
|
||||
tdSql.init(conn.cursor(), False)
|
||||
|
||||
def run(self):
|
||||
# tdSql.prepare()
|
||||
tdSql.execute('drop database if exists db')
|
||||
tdSql.execute('create database db vgroups 1')
|
||||
tdSql.execute('use db')
|
||||
dbname = "db"
|
||||
tdSql.execute(f'drop database if exists {dbname}')
|
||||
tdSql.execute(f'create database {dbname} vgroups 1')
|
||||
tdSql.execute(f'use {dbname}')
|
||||
print("============== STEP 1 ===== prepare data & validate json string")
|
||||
tdSql.error("create table if not exists jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json, tagint int)")
|
||||
tdSql.error("create table if not exists jsons1(ts timestamp, data json) tags(tagint int)")
|
||||
tdSql.execute("create table if not exists jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)")
|
||||
tdSql.execute("insert into jsons1_1 using jsons1 tags('{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}') values(1591060618000, 1, false, 'json1', '你是') (1591060608000, 23, true, '等等', 'json')")
|
||||
tdSql.execute("insert into jsons1_2 using jsons1 tags('{\"tag1\":5,\"tag2\":\"beijing\"}') values (1591060628000, 2, true, 'json2', 'sss')")
|
||||
tdSql.execute("insert into jsons1_3 using jsons1 tags('{\"tag1\":false,\"tag2\":\"beijing\"}') values (1591060668000, 3, false, 'json3', 'efwe')")
|
||||
tdSql.execute("insert into jsons1_4 using jsons1 tags('{\"tag1\":null,\"tag2\":\"shanghai\",\"tag3\":\"hello\"}') values (1591060728000, 4, true, 'json4', '323sd')")
|
||||
tdSql.execute("insert into jsons1_5 using jsons1 tags('{\"tag1\":1.232, \"tag2\":null}') values(1591060928000, 1, false, '你就会', 'ewe')")
|
||||
tdSql.execute("insert into jsons1_6 using jsons1 tags('{\"tag1\":11,\"tag2\":\"\",\"tag2\":null}') values(1591061628000, 11, false, '你就会','')")
|
||||
tdSql.execute("insert into jsons1_7 using jsons1 tags('{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":null}') values(1591062628000, 2, NULL, '你就会', 'dws')")
|
||||
tdSql.error(f"create table if not exists {dbname}.jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json, tagint int)")
|
||||
tdSql.error(f"create table if not exists {dbname}.jsons1(ts timestamp, data json) tags(tagint int)")
|
||||
tdSql.execute(f"create table if not exists {dbname}.jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_1 using {dbname}.jsons1 tags('{{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}}') values(1591060618000, 1, false, 'json1', '你是') (1591060608000, 23, true, '等等', 'json')")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_2 using {dbname}.jsons1 tags('{{\"tag1\":5,\"tag2\":\"beijing\"}}') values (1591060628000, 2, true, 'json2', 'sss')")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_3 using {dbname}.jsons1 tags('{{\"tag1\":false,\"tag2\":\"beijing\"}}') values (1591060668000, 3, false, 'json3', 'efwe')")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_4 using {dbname}.jsons1 tags('{{\"tag1\":null,\"tag2\":\"shanghai\",\"tag3\":\"hello\"}}') values (1591060728000, 4, true, 'json4', '323sd')")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_5 using {dbname}.jsons1 tags('{{\"tag1\":1.232, \"tag2\":null}}') values(1591060928000, 1, false, '你就会', 'ewe')")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_6 using {dbname}.jsons1 tags('{{\"tag1\":11,\"tag2\":\"\",\"tag2\":null}}') values(1591061628000, 11, false, '你就会','')")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_7 using {dbname}.jsons1 tags('{{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":null}}') values(1591062628000, 2, NULL, '你就会', 'dws')")
|
||||
|
||||
# test duplicate key using the first one. elimate empty key
|
||||
tdSql.execute("CREATE TABLE if not exists jsons1_8 using jsons1 tags('{\"tag1\":null, \"tag1\":true, \"tag1\":45, \"1tag$\":2, \" \":90, \"\":32}')")
|
||||
tdSql.query("select jtag from jsons1_8")
|
||||
tdSql.checkRows(0);
|
||||
tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_8 using {dbname}.jsons1 tags('{{\"tag1\":null, \"tag1\":true, \"tag1\":45, \"1tag$\":2, \" \":90, \"\":32}}')")
|
||||
tdSql.query(f"select jtag from {dbname}.jsons1_8")
|
||||
tdSql.checkRows(0)
|
||||
|
||||
tdSql.query("select ts,jtag from jsons1 order by ts limit 2,3")
|
||||
tdSql.query(f"select ts,jtag from {dbname}.jsons1 order by ts limit 2,3")
|
||||
tdSql.checkData(0, 0, '2020-06-02 09:17:08.000')
|
||||
tdSql.checkData(0, 1, '{"tag1":5,"tag2":"beijing"}')
|
||||
tdSql.checkData(1, 0, '2020-06-02 09:17:48.000')
|
||||
|
@ -67,7 +48,7 @@ class TDTestCase:
|
|||
tdSql.checkData(2, 0, '2020-06-02 09:18:48.000')
|
||||
tdSql.checkData(2, 1, '{"tag1":null,"tag2":"shanghai","tag3":"hello"}')
|
||||
|
||||
tdSql.query("select ts,jtag->'tag1' from jsons1 order by ts limit 2,3")
|
||||
tdSql.query(f"select ts,jtag->'tag1' from {dbname}.jsons1 order by ts limit 2,3")
|
||||
tdSql.checkData(0, 0, '2020-06-02 09:17:08.000')
|
||||
tdSql.checkData(0, 1, '5.000000000')
|
||||
tdSql.checkData(1, 0, '2020-06-02 09:17:48.000')
|
||||
|
@ -76,163 +57,163 @@ class TDTestCase:
|
|||
tdSql.checkData(2, 1, 'null')
|
||||
|
||||
# test empty json string, save as jtag is NULL
|
||||
tdSql.execute("insert into jsons1_9 using jsons1 tags('\t') values (1591062328000, 24, NULL, '你就会', '2sdw')")
|
||||
tdSql.execute("CREATE TABLE if not exists jsons1_10 using jsons1 tags('')")
|
||||
tdSql.execute("CREATE TABLE if not exists jsons1_11 using jsons1 tags(' ')")
|
||||
tdSql.execute("CREATE TABLE if not exists jsons1_12 using jsons1 tags('{}')")
|
||||
tdSql.execute("CREATE TABLE if not exists jsons1_13 using jsons1 tags('null')")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_9 using {dbname}.jsons1 tags('\t') values (1591062328000, 24, NULL, '你就会', '2sdw')")
|
||||
tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_10 using {dbname}.jsons1 tags('')")
|
||||
tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_11 using {dbname}.jsons1 tags(' ')")
|
||||
tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_12 using {dbname}.jsons1 tags('{{}}')")
|
||||
tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_13 using {dbname}.jsons1 tags('null')")
|
||||
|
||||
# test invalidate json
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('\"efwewf\"')")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('3333')")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags(76)")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags(hell)")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('33.33')")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('false')")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('[1,true]')")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{222}')")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"fe\"}')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('\"efwewf\"')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('3333')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags(76)")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags(hell)")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('33.33')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('false')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('[1,true]')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{222}}')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"fe\"}}')")
|
||||
|
||||
# test invalidate json key, key must can be printed assic char
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"tag1\":[1,true]}')")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"tag1\":{}}')")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"。loc\":\"fff\"}')")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"\t\":\"fff\"}')")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"试试\":\"fff\"}')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"tag1\":[1,true]}}')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"tag1\":{{}}}}')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"。loc\":\"fff\"}}')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"\t\":\"fff\"}}')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"试试\":\"fff\"}}')")
|
||||
|
||||
# test invalidate json value, value number can not be inf,nan TD-12166
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"k\":1.8e308}')")
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"k\":-1.8e308}')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"k\":1.8e308}}')")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"k\":-1.8e308}}')")
|
||||
|
||||
#test length limit
|
||||
char1= ''.join(['abcd']*64)
|
||||
char3= ''.join(['abcd']*1021)
|
||||
print(len(char3)) # 4084
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_15 using jsons1 tags('{\"%s1\":5}')" % char1) # len(key)=257
|
||||
tdSql.execute("CREATE TABLE if not exists jsons1_15 using jsons1 tags('{\"%s\":5}')" % char1) # len(key)=256
|
||||
tdSql.error("CREATE TABLE if not exists jsons1_16 using jsons1 tags('{\"TSSSS\":\"%s\"}')" % char3) # len(object)=4096
|
||||
tdSql.execute("CREATE TABLE if not exists jsons1_16 using jsons1 tags('{\"TSSS\":\"%s\"}')" % char3) # len(object)=4095
|
||||
tdSql.execute("drop table if exists jsons1_15")
|
||||
tdSql.execute("drop table if exists jsons1_16")
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_15 using {dbname}.jsons1 tags('{{\"%s1\":5}}')" % char1) # len(key)=257
|
||||
tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_15 using {dbname}.jsons1 tags('{{\"%s\":5}}')" % char1) # len(key)=256
|
||||
tdSql.error(f"create TABLE if not exists {dbname}.jsons1_16 using {dbname}.jsons1 tags('{{\"TSSSS\":\"%s\"}}')" % char3) # len(object)=4096
|
||||
tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_16 using {dbname}.jsons1 tags('{{\"TSSS\":\"%s\"}}')" % char3) # len(object)=4095
|
||||
tdSql.execute(f"drop table if exists {dbname}.jsons1_15")
|
||||
tdSql.execute(f"drop table if exists {dbname}.jsons1_16")
|
||||
|
||||
print("============== STEP 2 ===== alter table json tag")
|
||||
tdSql.error("ALTER STABLE jsons1 add tag tag2 nchar(20)")
|
||||
tdSql.error("ALTER STABLE jsons1 drop tag jtag")
|
||||
tdSql.error("ALTER TABLE jsons1 MODIFY TAG jtag nchar(128)")
|
||||
tdSql.error(f"ALTER stable {dbname}.jsons1 add tag tag2 nchar(20)")
|
||||
tdSql.error(f"ALTER stable {dbname}.jsons1 drop tag jtag")
|
||||
tdSql.error(f"ALTER table {dbname}.jsons1 MODIFY TAG jtag nchar(128)")
|
||||
|
||||
tdSql.execute("ALTER TABLE jsons1_1 SET TAG jtag='{\"tag1\":\"femail\",\"tag2\":35,\"tag3\":true}'")
|
||||
tdSql.query("select jtag from jsons1_1")
|
||||
tdSql.execute(f"ALTER table {dbname}.jsons1_1 SET TAG jtag='{{\"tag1\":\"femail\",\"tag2\":35,\"tag3\":true}}'")
|
||||
tdSql.query(f"select jtag from {dbname}.jsons1_1")
|
||||
tdSql.checkData(0, 0, '{"tag1":"femail","tag2":35,"tag3":true}')
|
||||
tdSql.execute("ALTER TABLE jsons1 rename TAG jtag jtag_new")
|
||||
tdSql.execute("ALTER TABLE jsons1 rename TAG jtag_new jtag")
|
||||
tdSql.execute(f"ALTER table {dbname}.jsons1 rename TAG jtag jtag_new")
|
||||
tdSql.execute(f"ALTER table {dbname}.jsons1 rename TAG jtag_new jtag")
|
||||
|
||||
tdSql.execute("create table st(ts timestamp, i int) tags(t int)")
|
||||
tdSql.error("ALTER STABLE st add tag jtag json")
|
||||
tdSql.error("ALTER STABLE st add column jtag json")
|
||||
tdSql.execute(f"create table {dbname}.st(ts timestamp, i int) tags(t int)")
|
||||
tdSql.error(f"ALTER stable {dbname}.st add tag jtag json")
|
||||
tdSql.error(f"ALTER stable {dbname}.st add column jtag json")
|
||||
|
||||
print("============== STEP 3 ===== query table")
|
||||
# test error syntax
|
||||
tdSql.error("select * from jsons1 where jtag->tag1='beijing'")
|
||||
tdSql.error("select -> from jsons1")
|
||||
tdSql.error("select * from jsons1 where contains")
|
||||
tdSql.error("select * from jsons1 where jtag->")
|
||||
tdSql.error("select jtag->location from jsons1")
|
||||
tdSql.error("select jtag contains location from jsons1")
|
||||
tdSql.error("select * from jsons1 where jtag contains location")
|
||||
tdSql.query("select * from jsons1 where jtag contains''")
|
||||
tdSql.error("select * from jsons1 where jtag contains 'location'='beijing'")
|
||||
tdSql.error(f"select * from {dbname}.jsons1 where jtag->tag1='beijing'")
|
||||
tdSql.error(f"select -> from {dbname}.jsons1")
|
||||
tdSql.error(f"select * from {dbname}.jsons1 where contains")
|
||||
tdSql.error(f"select * from {dbname}.jsons1 where jtag->")
|
||||
tdSql.error(f"select jtag->location from {dbname}.jsons1")
|
||||
tdSql.error(f"select jtag contains location from {dbname}.jsons1")
|
||||
tdSql.error(f"select * from {dbname}.jsons1 where jtag contains location")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag contains''")
|
||||
tdSql.error(f"select * from {dbname}.jsons1 where jtag contains 'location'='beijing'")
|
||||
|
||||
# test function error
|
||||
tdSql.error("select avg(jtag->'tag1') from jsons1")
|
||||
tdSql.error("select avg(jtag) from jsons1")
|
||||
tdSql.error("select min(jtag->'tag1') from jsons1")
|
||||
tdSql.error("select min(jtag) from jsons1")
|
||||
tdSql.error("select ceil(jtag->'tag1') from jsons1")
|
||||
tdSql.error("select ceil(jtag) from jsons1")
|
||||
tdSql.error(f"select avg(jtag->'tag1') from {dbname}.jsons1")
|
||||
tdSql.error(f"select avg(jtag) from {dbname}.jsons1")
|
||||
tdSql.error(f"select min(jtag->'tag1') from {dbname}.jsons1")
|
||||
tdSql.error(f"select min(jtag) from {dbname}.jsons1")
|
||||
tdSql.error(f"select ceil(jtag->'tag1') from {dbname}.jsons1")
|
||||
tdSql.error(f"select ceil(jtag) from {dbname}.jsons1")
|
||||
|
||||
|
||||
#test scalar operation
|
||||
tdSql.query("select jtag contains 'tag1',jtag->'tag1' from jsons1 order by jtag->'tag1'")
|
||||
tdSql.query(f"select jtag contains 'tag1',jtag->'tag1' from {dbname}.jsons1 order by jtag->'tag1'")
|
||||
tdSql.checkRows(9)
|
||||
tdSql.query("select jtag->'tag1' like 'fe%',jtag->'tag1' from jsons1 order by jtag->'tag1'")
|
||||
tdSql.query(f"select jtag->'tag1' like 'fe%',jtag->'tag1' from {dbname}.jsons1 order by jtag->'tag1'")
|
||||
tdSql.checkRows(9)
|
||||
tdSql.query("select jtag->'tag1' not like 'fe%',jtag->'tag1' from jsons1 order by jtag->'tag1'")
|
||||
tdSql.query(f"select jtag->'tag1' not like 'fe%',jtag->'tag1' from {dbname}.jsons1 order by jtag->'tag1'")
|
||||
tdSql.checkRows(9)
|
||||
tdSql.query("select jtag->'tag1' match 'fe',jtag->'tag1' from jsons1 order by jtag->'tag1'")
|
||||
tdSql.query(f"select jtag->'tag1' match 'fe',jtag->'tag1' from {dbname}.jsons1 order by jtag->'tag1'")
|
||||
tdSql.checkRows(9)
|
||||
tdSql.query("select jtag->'tag1' nmatch 'fe',jtag->'tag1' from jsons1 order by jtag->'tag1'")
|
||||
tdSql.query(f"select jtag->'tag1' nmatch 'fe',jtag->'tag1' from {dbname}.jsons1 order by jtag->'tag1'")
|
||||
tdSql.checkRows(9)
|
||||
tdSql.query("select jtag->'tag1',jtag->'tag1'>='a' from jsons1 order by jtag->'tag1'")
|
||||
tdSql.query(f"select jtag->'tag1',jtag->'tag1'>='a' from {dbname}.jsons1 order by jtag->'tag1'")
|
||||
tdSql.checkRows(9)
|
||||
|
||||
# test select normal column
|
||||
tdSql.query("select dataint from jsons1 order by dataint")
|
||||
tdSql.query(f"select dataint from {dbname}.jsons1 order by dataint")
|
||||
tdSql.checkRows(9)
|
||||
tdSql.checkData(1, 0, 1)
|
||||
|
||||
# test select json tag
|
||||
tdSql.query("select * from jsons1")
|
||||
tdSql.query(f"select * from {dbname}.jsons1")
|
||||
tdSql.checkRows(9)
|
||||
tdSql.query("select jtag from jsons1")
|
||||
tdSql.query(f"select jtag from {dbname}.jsons1")
|
||||
tdSql.checkRows(9)
|
||||
tdSql.query("select * from jsons1 where jtag is null")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag is null")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select * from jsons1 where jtag is not null")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag is not null")
|
||||
tdSql.checkRows(8)
|
||||
|
||||
# test jtag is NULL
|
||||
tdSql.query("select jtag from jsons1_9")
|
||||
tdSql.query(f"select jtag from {dbname}.jsons1_9")
|
||||
tdSql.checkData(0, 0, None)
|
||||
|
||||
# test select json tag->'key', value is string
|
||||
tdSql.query("select jtag->'tag1' from jsons1_1")
|
||||
tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1_1")
|
||||
tdSql.checkData(0, 0, '"femail"')
|
||||
tdSql.query("select jtag->'tag2' from jsons1_6")
|
||||
tdSql.query(f"select jtag->'tag2' from {dbname}.jsons1_6")
|
||||
tdSql.checkData(0, 0, '""')
|
||||
# test select json tag->'key', value is int
|
||||
tdSql.query("select jtag->'tag2' from jsons1_1")
|
||||
tdSql.query(f"select jtag->'tag2' from {dbname}.jsons1_1")
|
||||
tdSql.checkData(0, 0, "35.000000000")
|
||||
# test select json tag->'key', value is bool
|
||||
tdSql.query("select jtag->'tag3' from jsons1_1")
|
||||
tdSql.query(f"select jtag->'tag3' from {dbname}.jsons1_1")
|
||||
tdSql.checkData(0, 0, "true")
|
||||
# test select json tag->'key', value is null
|
||||
tdSql.query("select jtag->'tag1' from jsons1_4")
|
||||
tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1_4")
|
||||
tdSql.checkData(0, 0, "null")
|
||||
# test select json tag->'key', value is double
|
||||
tdSql.query("select jtag->'tag1' from jsons1_5")
|
||||
tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1_5")
|
||||
tdSql.checkData(0, 0, "1.232000000")
|
||||
# test select json tag->'key', key is not exist
|
||||
tdSql.query("select jtag->'tag10' from jsons1_4")
|
||||
tdSql.query(f"select jtag->'tag10' from {dbname}.jsons1_4")
|
||||
tdSql.checkData(0, 0, None)
|
||||
|
||||
tdSql.query("select jtag->'tag1' from jsons1")
|
||||
tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1")
|
||||
tdSql.checkRows(9)
|
||||
# test header name
|
||||
res = tdSql.getColNameList("select jtag->'tag1' from jsons1")
|
||||
res = tdSql.getColNameList(f"select jtag->'tag1' from {dbname}.jsons1")
|
||||
cname_list = []
|
||||
cname_list.append("jtag->'tag1'")
|
||||
tdSql.checkColNameList(res, cname_list)
|
||||
|
||||
|
||||
# test where with json tag
|
||||
tdSql.query("select * from jsons1_1 where jtag is not null")
|
||||
tdSql.query("select * from jsons1 where jtag='{\"tag1\":11,\"tag2\":\"\"}'")
|
||||
tdSql.error("select * from jsons1 where jtag->'tag1'={}")
|
||||
tdSql.query(f"select * from {dbname}.jsons1_1 where jtag is not null")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag='{{\"tag1\":11,\"tag2\":\"\"}}'")
|
||||
tdSql.error(f"select * from {dbname}.jsons1 where jtag->'tag1'={{}}")
|
||||
|
||||
# test json error
|
||||
tdSql.error("select jtag + 1 from jsons1")
|
||||
tdSql.error("select jtag > 1 from jsons1")
|
||||
tdSql.error("select jtag like \"1\" from jsons1")
|
||||
tdSql.error("select jtag in (\"1\") from jsons1")
|
||||
#tdSql.error("select jtag from jsons1 where jtag > 1")
|
||||
#tdSql.error("select jtag from jsons1 where jtag like 'fsss'")
|
||||
#tdSql.error("select jtag from jsons1 where jtag in (1)")
|
||||
tdSql.error(f"select jtag + 1 from {dbname}.jsons1")
|
||||
tdSql.error(f"select jtag > 1 from {dbname}.jsons1")
|
||||
tdSql.error(f"select jtag like \"1\" from {dbname}.jsons1")
|
||||
tdSql.error(f"select jtag in (\"1\") from {dbname}.jsons1")
|
||||
#tdSql.error(f"select jtag from {dbname}.jsons1 where jtag > 1")
|
||||
#tdSql.error(f"select jtag from {dbname}.jsons1 where jtag like 'fsss'")
|
||||
#tdSql.error(f"select jtag from {dbname}.jsons1 where jtag in (1)")
|
||||
|
||||
|
||||
# where json value is string
|
||||
tdSql.query("select * from jsons1 where jtag->'tag2'='beijing'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'='beijing'")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select dataint,tbname,jtag->'tag1',jtag from jsons1 where jtag->'tag2'='beijing' order by dataint")
|
||||
tdSql.query(f"select dataint,tbname,jtag->'tag1',jtag from {dbname}.jsons1 where jtag->'tag2'='beijing' order by dataint")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, 2)
|
||||
tdSql.checkData(0, 1, 'jsons1_2')
|
||||
|
@ -243,180 +224,180 @@ class TDTestCase:
|
|||
tdSql.checkData(1, 2, 'false')
|
||||
|
||||
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'='beijing'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'='beijing'")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'='收到货'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'='收到货'")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag2'>'beijing'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'>'beijing'")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag2'>='beijing'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'>='beijing'")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag2'<'beijing'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'<'beijing'")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag2'<='beijing'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'<='beijing'")
|
||||
tdSql.checkRows(4)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag2'!='beijing'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'!='beijing'")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag2'=''")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2'=''")
|
||||
tdSql.checkRows(2)
|
||||
|
||||
# where json value is int
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=5")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=5")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0, 1, 2)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=10")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=10")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'<54")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'<54")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'<=11")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'<=11")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'>4")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'>4")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'>=5")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'>=5")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'!=5")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'!=5")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'!=55")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'!=55")
|
||||
tdSql.checkRows(3)
|
||||
|
||||
# where json value is double
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=1.232")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=1.232")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'<1.232")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'<1.232")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'<=1.232")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'<=1.232")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'>1.23")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'>1.23")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'>=1.232")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'>=1.232")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'!=1.232")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'!=1.232")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'!=3.232")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'!=3.232")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'/0=3")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'/0=3")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'/5=1")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'/5=1")
|
||||
tdSql.checkRows(1)
|
||||
|
||||
# where json value is bool
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=true")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=true")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=false")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=false")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'!=false")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'!=false")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'>false")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'>false")
|
||||
tdSql.checkRows(0)
|
||||
|
||||
# where json value is null
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=null")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=null")
|
||||
tdSql.checkRows(0)
|
||||
|
||||
# where json key is null
|
||||
tdSql.query("select * from jsons1 where jtag->'tag_no_exist'=3")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag_no_exist'=3")
|
||||
tdSql.checkRows(0)
|
||||
|
||||
# where json value is not exist
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1' is null")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' is null")
|
||||
tdSql.checkData(0, 0, 'jsons1_9')
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag4' is null")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag4' is null")
|
||||
tdSql.checkRows(9)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag3' is not null")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag3' is not null")
|
||||
tdSql.checkRows(3)
|
||||
|
||||
# test contains
|
||||
tdSql.query("select * from jsons1 where jtag contains 'tag1'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag contains 'tag1'")
|
||||
tdSql.checkRows(8)
|
||||
tdSql.query("select * from jsons1 where jtag contains 'tag3'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag contains 'tag3'")
|
||||
tdSql.checkRows(4)
|
||||
tdSql.query("select * from jsons1 where jtag contains 'tag_no_exist'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag contains 'tag_no_exist'")
|
||||
tdSql.checkRows(0)
|
||||
|
||||
# test json tag in where condition with and/or
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=false and jtag->'tag2'='beijing'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=false and jtag->'tag2'='beijing'")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=false or jtag->'tag2'='beijing'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=false or jtag->'tag2'='beijing'")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=false and jtag->'tag2'='shanghai'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=false and jtag->'tag2'='shanghai'")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=false and jtag->'tag2'='shanghai'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=false and jtag->'tag2'='shanghai'")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=13 or jtag->'tag2'>35")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=13 or jtag->'tag2'>35")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'=13 or jtag->'tag2'>35")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'=13 or jtag->'tag2'>35")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1' is not null and jtag contains 'tag3'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' is not null and jtag contains 'tag3'")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1'='femail' and jtag contains 'tag3'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1'='femail' and jtag contains 'tag3'")
|
||||
tdSql.checkRows(2)
|
||||
|
||||
|
||||
# test with between and
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1' between 1 and 30")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' between 1 and 30")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1' between 'femail' and 'beijing'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' between 'femail' and 'beijing'")
|
||||
tdSql.checkRows(2)
|
||||
|
||||
# test with tbname/normal column
|
||||
tdSql.query("select * from jsons1 where tbname = 'jsons1_1'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where tbname = 'jsons1_1'")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3'")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=3")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=3")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=23")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=23")
|
||||
tdSql.checkRows(1)
|
||||
|
||||
|
||||
# test where condition like
|
||||
tdSql.query("select * from jsons1 where jtag->'tag2' like 'bei%'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2' like 'bei%'")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1' like 'fe%' and jtag->'tag2' is not null")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' like 'fe%' and jtag->'tag2' is not null")
|
||||
tdSql.checkRows(2)
|
||||
|
||||
# test where condition in no support in
|
||||
tdSql.error("select * from jsons1 where jtag->'tag1' in ('beijing')")
|
||||
tdSql.error(f"select * from {dbname}.jsons1 where jtag->'tag1' in ('beijing')")
|
||||
|
||||
# test where condition match/nmath
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1' match 'ma'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' match 'ma'")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1' match 'ma$'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' match 'ma$'")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag2' match 'jing$'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag2' match 'jing$'")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1' match '收到'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' match '收到'")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select * from jsons1 where jtag->'tag1' nmatch 'ma'")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'tag1' nmatch 'ma'")
|
||||
tdSql.checkRows(1)
|
||||
|
||||
# test distinct
|
||||
tdSql.execute("insert into jsons1_14 using jsons1 tags('{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":null}') values(1591062628000, 2, NULL, '你就会', 'dws')")
|
||||
tdSql.query("select distinct jtag->'tag1' from jsons1")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_14 using {dbname}.jsons1 tags('{{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":null}}') values(1591062628000, 2, NULL, '你就会', 'dws')")
|
||||
tdSql.query(f"select distinct jtag->'tag1' from {dbname}.jsons1")
|
||||
tdSql.checkRows(8)
|
||||
tdSql.error("select distinct jtag from jsons1")
|
||||
tdSql.error(f"select distinct jtag from {dbname}.jsons1")
|
||||
|
||||
#test dumplicate key with normal colomn
|
||||
tdSql.execute("INSERT INTO jsons1_15 using jsons1 tags('{\"tbname\":\"tt\",\"databool\":true,\"datastr\":\"是是是\"}') values(1591060828000, 4, false, 'jjsf', \"你就会\")")
|
||||
tdSql.query("select * from jsons1 where jtag->'datastr' match '是' and datastr match 'js'")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_15 using {dbname}.jsons1 tags('{{\"tbname\":\"tt\",\"databool\":true,\"datastr\":\"是是是\"}}') values(1591060828000, 4, false, 'jjsf', \"你就会\")")
|
||||
tdSql.query(f"select * from {dbname}.jsons1 where jtag->'datastr' match '是' and datastr match 'js'")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select tbname,jtag->'tbname' from jsons1 where jtag->'tbname'='tt' and tbname='jsons1_15'")
|
||||
tdSql.query(f"select tbname,jtag->'tbname' from {dbname}.jsons1 where jtag->'tbname'='tt' and tbname='jsons1_15'")
|
||||
tdSql.checkRows(1)
|
||||
|
||||
# test join
|
||||
tdSql.execute("create table if not exists jsons2(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)")
|
||||
tdSql.execute("insert into jsons2_1 using jsons2 tags('{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}') values(1591060618000, 2, false, 'json2', '你是2')")
|
||||
tdSql.execute("insert into jsons2_2 using jsons2 tags('{\"tag1\":5,\"tag2\":null}') values (1591060628000, 2, true, 'json2', 'sss')")
|
||||
tdSql.execute(f"create table if not exists {dbname}.jsons2(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)")
|
||||
tdSql.execute(f"insert into {dbname}.jsons2_1 using {dbname}.jsons2 tags('{{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}}') values(1591060618000, 2, false, 'json2', '你是2')")
|
||||
tdSql.execute(f"insert into {dbname}.jsons2_2 using {dbname}.jsons2 tags('{{\"tag1\":5,\"tag2\":null}}') values (1591060628000, 2, true, 'json2', 'sss')")
|
||||
|
||||
tdSql.execute("create table if not exists jsons3(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)")
|
||||
tdSql.execute("insert into jsons3_1 using jsons3 tags('{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}') values(1591060618000, 3, false, 'json3', '你是3')")
|
||||
tdSql.execute("insert into jsons3_2 using jsons3 tags('{\"tag1\":5,\"tag2\":\"beijing\"}') values (1591060638000, 2, true, 'json3', 'sss')")
|
||||
tdSql.query("select 'sss',33,a.jtag->'tag3' from jsons2 a,jsons3 b where a.ts=b.ts and a.jtag->'tag1'=b.jtag->'tag1'")
|
||||
tdSql.execute(f"create table if not exists {dbname}.jsons3(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)")
|
||||
tdSql.execute(f"insert into {dbname}.jsons3_1 using {dbname}.jsons3 tags('{{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}}') values(1591060618000, 3, false, 'json3', '你是3')")
|
||||
tdSql.execute(f"insert into {dbname}.jsons3_2 using {dbname}.jsons3 tags('{{\"tag1\":5,\"tag2\":\"beijing\"}}') values (1591060638000, 2, true, 'json3', 'sss')")
|
||||
tdSql.query(f"select 'sss',33,a.jtag->'tag3' from {dbname}.jsons2 a,jsons3 b where a.ts=b.ts and a.jtag->'tag1'=b.jtag->'tag1'")
|
||||
tdSql.checkData(0, 0, "sss")
|
||||
tdSql.checkData(0, 2, "true")
|
||||
|
||||
res = tdSql.getColNameList("select 'sss',33,a.jtag->'tag3' from jsons2 a,jsons3 b where a.ts=b.ts and a.jtag->'tag1'=b.jtag->'tag1'")
|
||||
res = tdSql.getColNameList(f"select 'sss',33,a.jtag->'tag3' from {dbname}.jsons2 a,jsons3 b where a.ts=b.ts and a.jtag->'tag1'=b.jtag->'tag1'")
|
||||
cname_list = []
|
||||
cname_list.append("'sss'")
|
||||
cname_list.append("33")
|
||||
|
@ -424,19 +405,19 @@ class TDTestCase:
|
|||
tdSql.checkColNameList(res, cname_list)
|
||||
#
|
||||
# test group by & order by json tag
|
||||
tdSql.query("select ts,jtag->'tag1' from jsons1 partition by jtag->'tag1' order by jtag->'tag1' desc")
|
||||
tdSql.query(f"select ts,jtag->'tag1' from {dbname}.jsons1 partition by jtag->'tag1' order by jtag->'tag1' desc")
|
||||
tdSql.checkRows(11)
|
||||
tdSql.checkData(0, 1, '"femail"')
|
||||
tdSql.checkData(2, 1, '"收到货"')
|
||||
tdSql.checkData(7, 1, "false")
|
||||
|
||||
|
||||
tdSql.error("select count(*) from jsons1 group by jtag")
|
||||
tdSql.error("select count(*) from jsons1 partition by jtag")
|
||||
tdSql.error("select count(*) from jsons1 group by jtag order by jtag")
|
||||
tdSql.error("select count(*) from jsons1 group by jtag->'tag1' order by jtag->'tag2'")
|
||||
tdSql.error("select count(*) from jsons1 group by jtag->'tag1' order by jtag")
|
||||
tdSql.query("select count(*),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1' desc")
|
||||
tdSql.error(f"select count(*) from {dbname}.jsons1 group by jtag")
|
||||
tdSql.error(f"select count(*) from {dbname}.jsons1 partition by jtag")
|
||||
tdSql.error(f"select count(*) from {dbname}.jsons1 group by jtag order by jtag")
|
||||
tdSql.error(f"select count(*) from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag2'")
|
||||
tdSql.error(f"select count(*) from {dbname}.jsons1 group by jtag->'tag1' order by jtag")
|
||||
tdSql.query(f"select count(*),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1' desc")
|
||||
tdSql.checkRows(8)
|
||||
tdSql.checkData(0, 0, 2)
|
||||
tdSql.checkData(0, 1, '"femail"')
|
||||
|
@ -447,7 +428,7 @@ class TDTestCase:
|
|||
tdSql.checkData(5, 0, 1)
|
||||
tdSql.checkData(5, 1, "false")
|
||||
|
||||
tdSql.query("select count(*),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1' asc")
|
||||
tdSql.query(f"select count(*),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1' asc")
|
||||
tdSql.checkRows(8)
|
||||
tdSql.checkData(0, 1, None)
|
||||
tdSql.checkData(2, 0, 1)
|
||||
|
@ -458,7 +439,7 @@ class TDTestCase:
|
|||
tdSql.checkData(7, 1, '"femail"')
|
||||
|
||||
# test stddev with group by json tag
|
||||
tdSql.query("select stddev(dataint),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1'")
|
||||
tdSql.query(f"select stddev(dataint),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1'")
|
||||
tdSql.checkRows(8)
|
||||
tdSql.checkData(0, 1, None)
|
||||
tdSql.checkData(4, 0, 0)
|
||||
|
@ -466,222 +447,222 @@ class TDTestCase:
|
|||
tdSql.checkData(7, 0, 11)
|
||||
tdSql.checkData(7, 1, '"femail"')
|
||||
|
||||
res = tdSql.getColNameList("select stddev(dataint),jsons1.jtag->'tag1' from jsons1 group by jsons1.jtag->'tag1' order by jtag->'tag1'")
|
||||
res = tdSql.getColNameList(f"select stddev(dataint),jsons1.jtag->'tag1' from {dbname}.jsons1 group by jsons1.jtag->'tag1' order by jtag->'tag1'")
|
||||
cname_list = []
|
||||
cname_list.append("stddev(dataint)")
|
||||
cname_list.append("jsons1.jtag->'tag1'")
|
||||
tdSql.checkColNameList(res, cname_list)
|
||||
|
||||
# test top/bottom with group by json tag
|
||||
tdSql.query("select top(dataint,2),jtag->'tag1' from jsons1 group by jtag->'tag1' order by jtag->'tag1'")
|
||||
tdSql.query(f"select top(dataint,2),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1'")
|
||||
tdSql.checkRows(11)
|
||||
tdSql.checkData(0, 1, None)
|
||||
|
||||
# test having
|
||||
tdSql.query("select count(*),jtag->'tag1' from jsons1 group by jtag->'tag1' having count(*) > 1")
|
||||
tdSql.query(f"select count(*),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' having count(*) > 1")
|
||||
tdSql.checkRows(3)
|
||||
|
||||
# subquery with json tag
|
||||
tdSql.query("select * from (select jtag, dataint from jsons1) order by dataint")
|
||||
tdSql.query(f"select * from (select jtag, dataint from {dbname}.jsons1) order by dataint")
|
||||
tdSql.checkRows(11)
|
||||
tdSql.checkData(1, 1, 1)
|
||||
tdSql.checkData(5, 0, '{"tag1":false,"tag2":"beijing"}')
|
||||
|
||||
tdSql.error("select jtag->'tag1' from (select jtag->'tag1', dataint from jsons1)")
|
||||
tdSql.error("select t->'tag1' from (select jtag->'tag1' as t, dataint from jsons1)")
|
||||
tdSql.error("select ts,jtag->'tag1' from (select jtag->'tag1',tbname,ts from jsons1 order by ts)")
|
||||
tdSql.error(f"select jtag->'tag1' from (select jtag->'tag1', dataint from {dbname}.jsons1)")
|
||||
tdSql.error(f"select t->'tag1' from (select jtag->'tag1' as t, dataint from {dbname}.jsons1)")
|
||||
tdSql.error(f"select ts,jtag->'tag1' from (select jtag->'tag1',tbname,ts from {dbname}.jsons1 order by ts)")
|
||||
|
||||
# union all
|
||||
tdSql.query("select jtag->'tag1' from jsons1 union all select jtag->'tag2' from jsons2")
|
||||
tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1 union all select jtag->'tag2' from {dbname}.jsons2")
|
||||
tdSql.checkRows(13)
|
||||
tdSql.query("select jtag->'tag1' from jsons1_1 union all select jtag->'tag2' from jsons2_1")
|
||||
tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1_1 union all select jtag->'tag2' from {dbname}.jsons2_1")
|
||||
tdSql.checkRows(3)
|
||||
|
||||
tdSql.query("select jtag->'tag1' from jsons1_1 union all select jtag->'tag1' from jsons2_1")
|
||||
tdSql.query(f"select jtag->'tag1' from {dbname}.jsons1_1 union all select jtag->'tag1' from {dbname}.jsons2_1")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select dataint,jtag->'tag1',tbname from jsons1 union all select dataint,jtag->'tag1',tbname from jsons2")
|
||||
tdSql.query(f"select dataint,jtag->'tag1',tbname from {dbname}.jsons1 union all select dataint,jtag->'tag1',tbname from {dbname}.jsons2")
|
||||
tdSql.checkRows(13)
|
||||
tdSql.query("select dataint,jtag,tbname from jsons1 union all select dataint,jtag,tbname from jsons2")
|
||||
tdSql.query(f"select dataint,jtag,tbname from {dbname}.jsons1 union all select dataint,jtag,tbname from {dbname}.jsons2")
|
||||
tdSql.checkRows(13)
|
||||
|
||||
#show create table
|
||||
tdSql.query("show create table jsons1")
|
||||
tdSql.query(f"show create table {dbname}.jsons1")
|
||||
tdSql.checkData(0, 1, 'CREATE STABLE `jsons1` (`ts` TIMESTAMP, `dataint` INT, `databool` BOOL, `datastr` NCHAR(50), `datastrbin` VARCHAR(150)) TAGS (`jtag` JSON)')
|
||||
|
||||
#test aggregate function:count/avg/twa/irate/sum/stddev/leastsquares
|
||||
tdSql.query("select count(*) from jsons1 where jtag is not null")
|
||||
tdSql.query(f"select count(*) from {dbname}.jsons1 where jtag is not null")
|
||||
tdSql.checkData(0, 0, 10)
|
||||
tdSql.query("select avg(dataint) from jsons1 where jtag is not null")
|
||||
tdSql.query(f"select avg(dataint) from {dbname}.jsons1 where jtag is not null")
|
||||
tdSql.checkData(0, 0, 5.3)
|
||||
# tdSql.query("select twa(dataint) from jsons1 where jtag is not null")
|
||||
# tdSql.query(f"select twa(dataint) from {dbname}.jsons1 where jtag is not null")
|
||||
# tdSql.checkData(0, 0, 28.386363636363637)
|
||||
# tdSql.query("select irate(dataint) from jsons1 where jtag is not null")
|
||||
# tdSql.query(f"select irate(dataint) from {dbname}.jsons1 where jtag is not null")
|
||||
|
||||
tdSql.query("select sum(dataint) from jsons1 where jtag->'tag1' is not null")
|
||||
tdSql.query(f"select sum(dataint) from {dbname}.jsons1 where jtag->'tag1' is not null")
|
||||
tdSql.checkData(0, 0, 45)
|
||||
tdSql.query("select stddev(dataint) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select stddev(dataint) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkData(0, 0, 4.496912521)
|
||||
tdSql.query("SELECT LEASTSQUARES(dataint, 1, 1) from jsons1 where jtag is not null")
|
||||
tdSql.query(f"select LEASTSQUARES(dataint, 1, 1) from {dbname}.jsons1 where jtag is not null")
|
||||
|
||||
#test selection function:min/max/first/last/top/bottom/percentile/apercentile/last_row/interp
|
||||
tdSql.query("select min(dataint) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select min(dataint) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkData(0, 0, 1)
|
||||
tdSql.query("select max(dataint) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select max(dataint) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkData(0, 0, 11)
|
||||
tdSql.query("select first(dataint) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select first(dataint) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkData(0, 0, 2)
|
||||
tdSql.query("select last(dataint) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select last(dataint) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkData(0, 0, 11)
|
||||
tdSql.query("select top(dataint,100) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select top(dataint,100) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select bottom(dataint,100) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select bottom(dataint,100) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkRows(3)
|
||||
#tdSql.query("select percentile(dataint,20) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query("select apercentile(dataint, 50) from jsons1 where jtag->'tag1'>1")
|
||||
#tdSql.query(f"select percentile(dataint,20) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select apercentile(dataint, 50) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkData(0, 0, 1.5)
|
||||
# tdSql.query("select last_row(dataint) from jsons1 where jtag->'tag1'>1")
|
||||
# tdSql.query("select interp(dataint) from jsons1 where ts = '2020-06-02 09:17:08.000' and jtag->'tag1'>1")
|
||||
# tdSql.query(f"select last_row(dataint) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
# tdSql.query(f"select interp(dataint) from {dbname}.jsons1 where ts = '2020-06-02 09:17:08.000' and jtag->'tag1'>1")
|
||||
|
||||
#test calculation function:diff/derivative/spread/ceil/floor/round/
|
||||
tdSql.query("select diff(dataint) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select diff(dataint) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkRows(2)
|
||||
# tdSql.checkData(0, 0, -1)
|
||||
# tdSql.checkData(1, 0, 10)
|
||||
tdSql.query("select derivative(dataint, 10m, 0) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select derivative(dataint, 10m, 0) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
# tdSql.checkData(0, 0, -2)
|
||||
tdSql.query("select spread(dataint) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select spread(dataint) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkData(0, 0, 10)
|
||||
tdSql.query("select ceil(dataint) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select ceil(dataint) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select floor(dataint) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select floor(dataint) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select round(dataint) from jsons1 where jtag->'tag1'>1")
|
||||
tdSql.query(f"select round(dataint) from {dbname}.jsons1 where jtag->'tag1'>1")
|
||||
tdSql.checkRows(3)
|
||||
|
||||
#math function
|
||||
tdSql.query("select sin(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select sin(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select cos(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select cos(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select tan(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select tan(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select asin(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select asin(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select acos(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select acos(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select atan(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select atan(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select ceil(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select ceil(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select floor(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select floor(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select round(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select round(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select abs(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select abs(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select pow(dataint,5) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select pow(dataint,5) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select log(dataint,10) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select log(dataint,10) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select sqrt(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select sqrt(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select HISTOGRAM(dataint,'user_input','[1, 33, 555, 7777]',1) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select HISTOGRAM(dataint,'user_input','[1, 33, 555, 7777]',1) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select csum(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select csum(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select mavg(dataint,1) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select mavg(dataint,1) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select statecount(dataint,'GE',10) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select statecount(dataint,'GE',10) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select stateduration(dataint,'GE',0) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select stateduration(dataint,'GE',0) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select sample(dataint,3) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select sample(dataint,3) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select HYPERLOGLOG(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select HYPERLOGLOG(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select twa(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select twa(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(1)
|
||||
|
||||
# function not ready
|
||||
tdSql.query("select tail(dataint,1) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select tail(dataint,1) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select unique(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select unique(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select mode(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select mode(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query("select irate(dataint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select irate(dataint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(1)
|
||||
|
||||
#str function
|
||||
tdSql.query("select upper(dataStr) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select upper(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select ltrim(dataStr) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select ltrim(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select lower(dataStr) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select lower(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select rtrim(dataStr) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select rtrim(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select LENGTH(dataStr) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select LENGTH(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select CHAR_LENGTH(dataStr) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select CHAR_LENGTH(dataStr) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select SUBSTR(dataStr,5) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select SUBSTR(dataStr,5) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select CONCAT(dataStr,dataStrBin) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select CONCAT(dataStr,dataStrBin) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select CONCAT_ws('adad!@!@%$^$%$^$%^a',dataStr,dataStrBin) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select CONCAT_ws('adad!@!@%$^$%$^$%^a',dataStr,dataStrBin) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select CAST(dataStr as bigint) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select CAST(dataStr as bigint) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
|
||||
#time function
|
||||
tdSql.query("select now() from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select now() from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select today() from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select today() from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select TIMEZONE() from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select TIMEZONE() from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select TO_ISO8601(ts) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select TO_ISO8601(ts) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select TO_UNIXTIMESTAMP(datastr) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select TO_UNIXTIMESTAMP(datastr) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select TIMETRUNCATE(ts,1s) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select TIMETRUNCATE(ts,1s) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select TIMEDIFF(ts,_c0) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select TIMEDIFF(ts,_c0) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select TIMEDIFF(ts,1u) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select TIMEDIFF(ts,1u) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(3)
|
||||
tdSql.query("select ELAPSED(ts,1h) from jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.query(f"select ELAPSED(ts,1h) from {dbname}.jsons1 where jtag->'tag1'>1;")
|
||||
tdSql.checkRows(1)
|
||||
|
||||
# to_json()
|
||||
tdSql.query("select to_json('{\"abc\":123}') from jsons1_1")
|
||||
tdSql.query(f"select to_json('{{\"abc\":123}}') from {dbname}.jsons1_1")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, '{"abc":123}')
|
||||
tdSql.checkData(1, 0, '{"abc":123}')
|
||||
tdSql.query("select to_json('null') from jsons1_1")
|
||||
tdSql.query(f"select to_json('null') from {dbname}.jsons1_1")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, 'null')
|
||||
tdSql.checkData(1, 0, 'null')
|
||||
tdSql.query("select to_json('{\"key\"}') from jsons1_1")
|
||||
tdSql.query(f"select to_json('{{\"key\"}}') from {dbname}.jsons1_1")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, 'null')
|
||||
tdSql.checkData(1, 0, 'null')
|
||||
|
||||
#test TD-12077
|
||||
tdSql.execute("insert into jsons1_16 using jsons1 tags('{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":-2.111}') values(1591062628000, 2, NULL, '你就会', 'dws')")
|
||||
tdSql.query("select jtag->'tag3' from jsons1_16")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_16 using {dbname}.jsons1 tags('{{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":-2.111}}') values(1591062628000, 2, NULL, '你就会', 'dws')")
|
||||
tdSql.query(f"select jtag->'tag3' from {dbname}.jsons1_16")
|
||||
tdSql.checkData(0, 0, '-2.111000000')
|
||||
|
||||
# test TD-12452
|
||||
tdSql.execute("ALTER TABLE jsons1_1 SET TAG jtag=NULL")
|
||||
tdSql.query("select jtag from jsons1_1")
|
||||
tdSql.execute(f"ALTER table {dbname}.jsons1_1 SET TAG jtag=NULL")
|
||||
tdSql.query(f"select jtag from {dbname}.jsons1_1")
|
||||
tdSql.checkData(0, 0, None)
|
||||
tdSql.execute("CREATE TABLE if not exists jsons1_20 using jsons1 tags(NULL)")
|
||||
tdSql.query("select jtag from jsons1_20")
|
||||
tdSql.execute(f"create TABLE if not exists {dbname}.jsons1_20 using {dbname}.jsons1 tags(NULL)")
|
||||
tdSql.query(f"select jtag from {dbname}.jsons1_20")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.execute("insert into jsons1_21 using jsons1 tags(NULL) values(1591061628000, 11, false, '你就会','')")
|
||||
tdSql.query("select jtag from jsons1_21")
|
||||
tdSql.execute(f"insert into {dbname}.jsons1_21 using {dbname}.jsons1 tags(NULL) values(1591061628000, 11, false, '你就会','')")
|
||||
tdSql.query(f"select jtag from {dbname}.jsons1_21")
|
||||
tdSql.checkData(0, 0, None)
|
||||
#
|
||||
# #test TD-12389
|
||||
|
@ -691,23 +672,23 @@ class TDTestCase:
|
|||
tdSql.checkData(5, 2, 4095)
|
||||
#
|
||||
# #test TD-13918
|
||||
tdSql.execute("drop table if exists jsons_13918_1")
|
||||
tdSql.execute("drop table if exists jsons_13918_2")
|
||||
tdSql.execute("drop table if exists jsons_13918_3")
|
||||
tdSql.execute("drop table if exists jsons_13918_4")
|
||||
tdSql.execute("drop table if exists jsons_stb")
|
||||
tdSql.execute("create table jsons_stb (ts timestamp, dataInt int) tags (jtag json)")
|
||||
tdSql.error("create table jsons_13918_1 using jsons_stb tags ('nullx')")
|
||||
tdSql.error("create table jsons_13918_2 using jsons_stb tags (nullx)")
|
||||
tdSql.error("insert into jsons_13918_3 using jsons_stb tags('NULLx') values(1591061628001, 11)")
|
||||
tdSql.error("insert into jsons_13918_4 using jsons_stb tags(NULLx) values(1591061628002, 11)")
|
||||
tdSql.execute("create table jsons_13918_1 using jsons_stb tags ('null')")
|
||||
tdSql.execute("create table jsons_13918_2 using jsons_stb tags (null)")
|
||||
tdSql.execute("insert into jsons_13918_1 values(1591061628003, 11)")
|
||||
tdSql.execute("insert into jsons_13918_2 values(1591061628004, 11)")
|
||||
tdSql.execute("insert into jsons_13918_3 using jsons_stb tags('NULL') values(1591061628005, 11)")
|
||||
tdSql.execute("insert into jsons_13918_4 using jsons_stb tags(\"NULL\") values(1591061628006, 11)")
|
||||
tdSql.query("select * from jsons_stb")
|
||||
tdSql.execute(f"drop table if exists {dbname}.jsons_13918_1")
|
||||
tdSql.execute(f"drop table if exists {dbname}.jsons_13918_2")
|
||||
tdSql.execute(f"drop table if exists {dbname}.jsons_13918_3")
|
||||
tdSql.execute(f"drop table if exists {dbname}.jsons_13918_4")
|
||||
tdSql.execute(f"drop table if exists {dbname}.jsons_stb")
|
||||
tdSql.execute(f"create table {dbname}.jsons_stb (ts timestamp, dataInt int) tags (jtag json)")
|
||||
tdSql.error(f"create table {dbname}.jsons_13918_1 using {dbname}.jsons_stb tags ('nullx')")
|
||||
tdSql.error(f"create table {dbname}.jsons_13918_2 using {dbname}.jsons_stb tags (nullx)")
|
||||
tdSql.error(f"insert into {dbname}.jsons_13918_3 using {dbname}.jsons_stb tags('NULLx') values(1591061628001, 11)")
|
||||
tdSql.error(f"insert into {dbname}.jsons_13918_4 using {dbname}.jsons_stb tags(NULLx) values(1591061628002, 11)")
|
||||
tdSql.execute(f"create table {dbname}.jsons_13918_1 using {dbname}.jsons_stb tags ('null')")
|
||||
tdSql.execute(f"create table {dbname}.jsons_13918_2 using {dbname}.jsons_stb tags (null)")
|
||||
tdSql.execute(f"insert into {dbname}.jsons_13918_1 values(1591061628003, 11)")
|
||||
tdSql.execute(f"insert into {dbname}.jsons_13918_2 values(1591061628004, 11)")
|
||||
tdSql.execute(f"insert into {dbname}.jsons_13918_3 using {dbname}.jsons_stb tags('NULL') values(1591061628005, 11)")
|
||||
tdSql.execute(f"insert into {dbname}.jsons_13918_4 using {dbname}.jsons_stb tags(\"NULL\") values(1591061628006, 11)")
|
||||
tdSql.query(f"select * from {dbname}.jsons_stb")
|
||||
tdSql.checkRows(4)
|
||||
|
||||
def stop(self):
|
||||
|
@ -717,4 +698,3 @@ class TDTestCase:
|
|||
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ class TDTestCase:
|
|||
self.testcaseFilename = os.path.split(__file__)[-1]
|
||||
# os.system("rm -rf %s/%s.sql" % (self.testcasePath,self.testcaseFilename))
|
||||
tdLog.debug("start to execute %s" % __file__)
|
||||
tdSql.init(conn.cursor(), True)
|
||||
tdSql.init(conn.cursor(), False)
|
||||
|
||||
def run(self):
|
||||
# tdSql.prepare()
|
||||
|
@ -52,7 +52,7 @@ class TDTestCase:
|
|||
tdSql.execute(sql)
|
||||
i = i + 1
|
||||
|
||||
// do query
|
||||
# do query
|
||||
i = 0
|
||||
while i <= 100000:
|
||||
sql = """select count(*) from jsons1 where jtag->'tag1' = %d"""%(i)
|
||||
|
@ -60,7 +60,7 @@ class TDTestCase:
|
|||
if 1 != tdSql.getRows():
|
||||
print("err: %s"%(sql))
|
||||
|
||||
while i <= 10000000
|
||||
while i <= 10000000:
|
||||
sql = """insert into jsons1_{%d} using jsons1 tags('{"tag1":{%d}}') values(1591060618000, 1, false, 'json1', '你是') (1591060608000, 23, true, '等等', 'json')"""%(i, i)
|
||||
tdSql.execute(sql)
|
||||
i = i + 1
|
||||
|
@ -704,4 +704,3 @@ class TDTestCase:
|
|||
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
||||
|
||||
|
|
|
@ -10,29 +10,26 @@ import random
|
|||
|
||||
|
||||
class TDTestCase:
|
||||
updatecfgDict = {'debugFlag': 143, "cDebugFlag": 143, "uDebugFlag": 143, "rpcDebugFlag": 143, "tmrDebugFlag": 143,
|
||||
"jniDebugFlag": 143, "simDebugFlag": 143, "dDebugFlag": 143, "dDebugFlag": 143, "vDebugFlag": 143, "mDebugFlag": 143, "qDebugFlag": 143,
|
||||
"wDebugFlag": 143, "sDebugFlag": 143, "tsdbDebugFlag": 143, "tqDebugFlag": 143, "fsDebugFlag": 143, "fnDebugFlag": 143 ,"udf":0}
|
||||
|
||||
def init(self, conn, logSql):
|
||||
tdLog.debug(f"start to excute {__file__}")
|
||||
tdSql.init(conn.cursor(), True)
|
||||
tdSql.init(conn.cursor(), False)
|
||||
self.tb_nums = 10
|
||||
self.row_nums = 20
|
||||
self.ts = 1434938400000
|
||||
self.time_step = 1000
|
||||
|
||||
def insert_datas_and_check_abs(self ,tbnums , rownums , time_step ,cache_value ):
|
||||
tdSql.execute("drop database if exists test ")
|
||||
def insert_datas_and_check_abs(self, tbnums, rownums, time_step, cache_value, dbname="test"):
|
||||
tdSql.execute(f"drop database if exists {dbname} ")
|
||||
tdLog.info("prepare datas for auto check abs function ")
|
||||
|
||||
tdSql.execute(f" create database test cachemodel {cache_value} ")
|
||||
tdSql.execute(" use test ")
|
||||
tdSql.execute(" create stable test.stb (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint,\
|
||||
tdSql.execute(f"create database {dbname} cachemodel {cache_value} ")
|
||||
tdSql.execute(f"use {dbname} ")
|
||||
tdSql.execute(f"create stable {dbname}.stb (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint,\
|
||||
c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) tags (t1 int)")
|
||||
for tbnum in range(tbnums):
|
||||
tbname = "test.sub_tb_%d"%tbnum
|
||||
tdSql.execute(" create table %s using stb tags(%d) "%(tbname , tbnum))
|
||||
tbname = f"{dbname}.sub_tb_{tbnum}"
|
||||
tdSql.execute(f"create table {tbname} using {dbname}.stb tags({tbnum}) ")
|
||||
|
||||
ts = self.ts
|
||||
for row in range(rownums):
|
||||
|
@ -49,66 +46,65 @@ class TDTestCase:
|
|||
c10 = ts
|
||||
tdSql.execute(f" insert into {tbname} values ({ts},{c1},{c2},{c3},{c4},{c5},{c6},{c7},{c8},{c9},{c10})")
|
||||
|
||||
tdSql.execute("use test")
|
||||
tbnames = ["stb", "sub_tb_1"]
|
||||
support_types = ["BIGINT", "SMALLINT", "TINYINT", "FLOAT", "DOUBLE", "INT"]
|
||||
for tbname in tbnames:
|
||||
tdSql.query("desc {}".format(tbname))
|
||||
tdSql.query(f"desc {dbname}.{tbname}")
|
||||
coltypes = tdSql.queryResult
|
||||
for coltype in coltypes:
|
||||
colname = coltype[0]
|
||||
abs_sql = "select abs({}) from {} order by tbname ".format(colname, 'test.'+tbname)
|
||||
origin_sql = "select {} from {} order by tbname".format(colname, 'test.'+tbname)
|
||||
abs_sql = f"select abs({colname}) from {dbname}.{tbname} order by tbname "
|
||||
origin_sql = f"select {colname} from {dbname}.{tbname} order by tbname"
|
||||
if coltype[1] in support_types:
|
||||
self.check_result_auto(origin_sql , abs_sql)
|
||||
|
||||
def prepare_datas(self ,cache_value):
|
||||
tdSql.execute("drop database if exists db ")
|
||||
create_db_sql = f"create database if not exists db keep 3650 duration 1000 cachemodel {cache_value}"
|
||||
def prepare_datas(self ,cache_value, dbname="db"):
|
||||
tdSql.execute(f"drop database if exists {dbname} ")
|
||||
create_db_sql = f"create database if not exists {dbname} keep 3650 duration 1000 cachemodel {cache_value}"
|
||||
tdSql.execute(create_db_sql)
|
||||
|
||||
tdSql.execute("use db")
|
||||
tdSql.execute(f"use {dbname}")
|
||||
tdSql.execute(
|
||||
'''create table db.stb1
|
||||
f'''create table {dbname}.stb1
|
||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
||||
tags (t1 int)
|
||||
'''
|
||||
)
|
||||
|
||||
tdSql.execute(
|
||||
'''
|
||||
create table db.t1
|
||||
f'''
|
||||
create table {dbname}.t1
|
||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
||||
'''
|
||||
)
|
||||
for i in range(4):
|
||||
tdSql.execute(f'create table db.ct{i+1} using stb1 tags ( {i+1} )')
|
||||
tdSql.execute(f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {i+1} )')
|
||||
|
||||
for i in range(9):
|
||||
tdSql.execute(
|
||||
f"insert into db.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||
f"insert into {dbname}.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||
)
|
||||
tdSql.execute(
|
||||
f"insert into db.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||
f"insert into {dbname}.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a )"
|
||||
)
|
||||
tdSql.execute(
|
||||
"insert into db.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
||||
f"insert into {dbname}.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a )")
|
||||
tdSql.execute(
|
||||
"insert into db.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||
f"insert into {dbname}.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||
tdSql.execute(
|
||||
"insert into db.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
||||
f"insert into {dbname}.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a )")
|
||||
tdSql.execute(
|
||||
"insert into db.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||
f"insert into {dbname}.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a )")
|
||||
|
||||
tdSql.execute(
|
||||
"insert into db.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||
f"insert into {dbname}.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||
tdSql.execute(
|
||||
"insert into db.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||
f"insert into {dbname}.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||
tdSql.execute(
|
||||
"insert into db.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||
f"insert into {dbname}.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ")
|
||||
|
||||
tdSql.execute(
|
||||
f'''insert into db.t1 values
|
||||
f'''insert into {dbname}.t1 values
|
||||
( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||
( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a )
|
||||
( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a )
|
||||
|
@ -124,53 +120,53 @@ class TDTestCase:
|
|||
'''
|
||||
)
|
||||
|
||||
def prepare_tag_datas(self,cache_value):
|
||||
def prepare_tag_datas(self,cache_value, dbname="testdb"):
|
||||
|
||||
tdSql.execute("drop database if exists testdb ")
|
||||
tdSql.execute(f"drop database if exists {dbname} ")
|
||||
# prepare datas
|
||||
tdSql.execute(f"create database if not exists testdb keep 3650 duration 1000 cachemodel {cache_value}")
|
||||
tdSql.execute(f"create database if not exists {dbname} keep 3650 duration 1000 cachemodel {cache_value}")
|
||||
|
||||
tdSql.execute(" use testdb ")
|
||||
tdSql.execute(f"use {dbname} ")
|
||||
|
||||
tdSql.execute(f" create stable testdb.stb1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp , uc1 int unsigned,\
|
||||
tdSql.execute(f"create stable {dbname}.stb1 (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp , uc1 int unsigned,\
|
||||
uc2 bigint unsigned ,uc3 smallint unsigned , uc4 tinyint unsigned ) tags( t1 int , t2 bigint , t3 smallint , t4 tinyint , t5 float , t6 double , t7 bool , t8 binary(36)\
|
||||
, t9 nchar(36) , t10 int unsigned , t11 bigint unsigned ,t12 smallint unsigned , t13 tinyint unsigned ,t14 timestamp ) ")
|
||||
|
||||
tdSql.execute(
|
||||
'''
|
||||
create table testdb.t1
|
||||
f'''
|
||||
create table {dbname}.t1
|
||||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
||||
'''
|
||||
)
|
||||
for i in range(4):
|
||||
tdSql.execute(
|
||||
f'create table testdb.ct{i+1} using stb1 tags ( {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" ,{111*i}, {1*i},{1*i},{1*i},now())')
|
||||
f'create table {dbname}.ct{i+1} using {dbname}.stb1 tags ( {1*i}, {11111*i}, {111*i}, {1*i}, {1.11*i}, {11.11*i}, {i%2}, "binary{i}", "nchar{i}" ,{111*i}, {1*i},{1*i},{1*i},now())')
|
||||
|
||||
for i in range(9):
|
||||
tdSql.execute(
|
||||
f"insert into testdb.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a ,{111*i},{1111*i},{i},{i} )"
|
||||
f"insert into {dbname}.ct1 values ( now()-{i*10}s, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a ,{111*i},{1111*i},{i},{i} )"
|
||||
)
|
||||
tdSql.execute(
|
||||
f"insert into testdb.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a ,{111*i},{1111*i},{i},{i})"
|
||||
f"insert into {dbname}.ct4 values ( now()-{i*90}d, {1*i}, {11111*i}, {111*i}, {11*i}, {1.11*i}, {11.11*i}, {i%2}, 'binary{i}', 'nchar{i}', now()+{1*i}a ,{111*i},{1111*i},{i},{i})"
|
||||
)
|
||||
tdSql.execute(
|
||||
"insert into testdb.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a ,0,0,0,0)")
|
||||
f"insert into {dbname}.ct1 values (now()-45s, 0, 0, 0, 0, 0, 0, 0, 'binary0', 'nchar0', now()+8a ,0,0,0,0)")
|
||||
tdSql.execute(
|
||||
"insert into testdb.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a , 999 , 9999 , 9 , 9)")
|
||||
f"insert into {dbname}.ct1 values (now()+10s, 9, -99999, -999, -99, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a , 999 , 9999 , 9 , 9)")
|
||||
tdSql.execute(
|
||||
"insert into testdb.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a , 999 , 99999 , 9 , 9)")
|
||||
f"insert into {dbname}.ct1 values (now()+15s, 9, -99999, -999, -99, -9.99, NULL, 1, 'binary9', 'nchar9', now()+9a , 999 , 99999 , 9 , 9)")
|
||||
tdSql.execute(
|
||||
"insert into testdb.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a ,999 , 99999 , 9 , 9)")
|
||||
f"insert into {dbname}.ct1 values (now()+20s, 9, -99999, -999, NULL, -9.99, -99.99, 1, 'binary9', 'nchar9', now()+9a ,999 , 99999 , 9 , 9)")
|
||||
|
||||
tdSql.execute(
|
||||
"insert into testdb.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL) ")
|
||||
f"insert into {dbname}.ct4 values (now()-810d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL) ")
|
||||
tdSql.execute(
|
||||
"insert into testdb.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL) ")
|
||||
f"insert into {dbname}.ct4 values (now()-400d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL) ")
|
||||
tdSql.execute(
|
||||
"insert into testdb.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL ) ")
|
||||
f"insert into {dbname}.ct4 values (now()+90d, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL, NULL, NULL ) ")
|
||||
|
||||
tdSql.execute(
|
||||
f'''insert into testdb.t1 values
|
||||
f'''insert into {dbname}.t1 values
|
||||
( '2020-04-21 01:01:01.000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )
|
||||
( '2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11, 1, "binary1", "nchar1", now()+1a )
|
||||
( '2020-12-31 01:01:01.000', 2, 22222, 222, 22, 2.22, 22.22, 0, "binary2", "nchar2", now()+2a )
|
||||
|
@ -217,108 +213,106 @@ class TDTestCase:
|
|||
tdLog.info(
|
||||
"abs value check pass , it work as expected ,sql is \"%s\" " % abs_query)
|
||||
|
||||
def test_errors(self):
|
||||
tdSql.execute("use testdb")
|
||||
|
||||
def test_errors(self, dbname="testdb"):
|
||||
# bug need fix
|
||||
tdSql.error("select last_row(c1 ,NULL) from testdb.t1")
|
||||
tdSql.error(f"select last_row(c1 ,NULL) from {dbname}.t1")
|
||||
|
||||
error_sql_lists = [
|
||||
"select last_row from testdb.t1",
|
||||
"select last_row(-+--+c1) from testdb.t1",
|
||||
"select last_row(123--123)==1 from testdb.t1",
|
||||
"select last_row(c1) as 'd1' from testdb.t1",
|
||||
#"select last_row(c1 ,NULL) from testdb.t1",
|
||||
"select last_row(,) from testdb.t1;",
|
||||
"select last_row(abs(c1) ab from testdb.t1)",
|
||||
"select last_row(c1) as int from testdb.t1",
|
||||
"select last_row from testdb.stb1",
|
||||
"select last_row(123--123)==1 from testdb.stb1",
|
||||
"select last_row(c1) as 'd1' from testdb.stb1",
|
||||
#"select last_row(c1 ,NULL) from testdb.stb1",
|
||||
"select last_row(,) from testdb.stb1;",
|
||||
"select last_row(abs(c1) ab from testdb.stb1)",
|
||||
"select last_row(c1) as int from testdb.stb1"
|
||||
f"select last_row from {dbname}.t1",
|
||||
f"select last_row(-+--+c1) from {dbname}.t1",
|
||||
f"select last_row(123--123)==1 from {dbname}.t1",
|
||||
f"select last_row(c1) as 'd1' from {dbname}.t1",
|
||||
#f"select last_row(c1 ,NULL) from {dbname}.t1",
|
||||
f"select last_row(,) from {dbname}.t1;",
|
||||
f"select last_row(abs(c1) ab from {dbname}.t1)",
|
||||
f"select last_row(c1) as int from {dbname}.t1",
|
||||
f"select last_row from {dbname}.stb1",
|
||||
f"select last_row(123--123)==1 from {dbname}.stb1",
|
||||
f"select last_row(c1) as 'd1' from {dbname}.stb1",
|
||||
#f"select last_row(c1 ,NULL) from {dbname}.stb1",
|
||||
f"select last_row(,) from {dbname}.stb1;",
|
||||
f"select last_row(abs(c1) ab from {dbname}.stb1)",
|
||||
f"select last_row(c1) as int from {dbname}.stb1"
|
||||
]
|
||||
for error_sql in error_sql_lists:
|
||||
tdSql.error(error_sql)
|
||||
|
||||
def support_types(self):
|
||||
tdSql.execute("use testdb")
|
||||
def support_types(self, dbname="testdb"):
|
||||
tdSql.execute(f"use {dbname}")
|
||||
tbnames = ["stb1", "t1", "ct1", "ct2"]
|
||||
|
||||
for tbname in tbnames:
|
||||
tdSql.query("desc {}".format(tbname))
|
||||
tdSql.query(f"desc {dbname}.{tbname}")
|
||||
coltypes = tdSql.queryResult
|
||||
for coltype in coltypes:
|
||||
colname = coltype[0]
|
||||
col_note = coltype[-1]
|
||||
if col_note != "TAG":
|
||||
abs_sql = "select last_row({}) from {}".format(colname, "testdb."+tbname)
|
||||
abs_sql = f"select last_row({colname}) from {dbname}.{tbname}"
|
||||
tdSql.query(abs_sql)
|
||||
|
||||
|
||||
def basic_abs_function(self):
|
||||
def basic_abs_function(self, dbname="testdb"):
|
||||
|
||||
# basic query
|
||||
tdSql.query("select c1 from testdb.ct3")
|
||||
tdSql.query(f"select c1 from {dbname}.ct3")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select c1 from testdb.t1")
|
||||
tdSql.query(f"select c1 from {dbname}.t1")
|
||||
tdSql.checkRows(12)
|
||||
tdSql.query("select c1 from testdb.stb1")
|
||||
tdSql.query(f"select c1 from {dbname}.stb1")
|
||||
tdSql.checkRows(25)
|
||||
|
||||
# used for empty table , ct3 is empty
|
||||
tdSql.query("select last_row(c1) from testdb.ct3")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.ct3")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select last_row(c2) from testdb.ct3")
|
||||
tdSql.query(f"select last_row(c2) from {dbname}.ct3")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select last_row(c3) from testdb.ct3")
|
||||
tdSql.query(f"select last_row(c3) from {dbname}.ct3")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select last_row(c4) from testdb.ct3")
|
||||
tdSql.query(f"select last_row(c4) from {dbname}.ct3")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select last_row(c5) from testdb.ct3")
|
||||
tdSql.query(f"select last_row(c5) from {dbname}.ct3")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select last_row(c6) from testdb.ct3")
|
||||
tdSql.query(f"select last_row(c6) from {dbname}.ct3")
|
||||
|
||||
# used for regular table
|
||||
|
||||
# bug need fix
|
||||
tdSql.query("select last_row(c1) from testdb.t1")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.t1")
|
||||
tdSql.checkData(0, 0, None)
|
||||
tdSql.query("select last_row(c1) from testdb.ct4")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.ct4")
|
||||
tdSql.checkData(0, 0, None)
|
||||
tdSql.query("select last_row(c1) from testdb.stb1")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.stb1")
|
||||
tdSql.checkData(0, 0, None)
|
||||
|
||||
# support regular query about last ,first ,last_row
|
||||
tdSql.error("select last_row(c1,NULL) from testdb.t1")
|
||||
tdSql.error("select last_row(NULL) from testdb.t1")
|
||||
tdSql.error("select last(NULL) from testdb.t1")
|
||||
tdSql.error("select first(NULL) from testdb.t1")
|
||||
tdSql.error(f"select last_row(c1,NULL) from {dbname}.t1")
|
||||
tdSql.error(f"select last_row(NULL) from {dbname}.t1")
|
||||
tdSql.error(f"select last(NULL) from {dbname}.t1")
|
||||
tdSql.error(f"select first(NULL) from {dbname}.t1")
|
||||
|
||||
tdSql.query("select last_row(c1,123) from testdb.t1")
|
||||
tdSql.query(f"select last_row(c1,123) from {dbname}.t1")
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(0,1,123)
|
||||
|
||||
tdSql.query("select last_row(123) from testdb.t1")
|
||||
tdSql.query(f"select last_row(123) from {dbname}.t1")
|
||||
tdSql.checkData(0,0,123)
|
||||
|
||||
tdSql.error("select last(c1,NULL) from testdb.t1")
|
||||
tdSql.error(f"select last(c1,NULL) from {dbname}.t1")
|
||||
|
||||
tdSql.query("select last(c1,123) from testdb.t1")
|
||||
tdSql.query(f"select last(c1,123) from {dbname}.t1")
|
||||
tdSql.checkData(0,0,9)
|
||||
tdSql.checkData(0,1,123)
|
||||
|
||||
tdSql.error("select first(c1,NULL) from testdb.t1")
|
||||
tdSql.error(f"select first(c1,NULL) from {dbname}.t1")
|
||||
|
||||
tdSql.query("select first(c1,123) from testdb.t1")
|
||||
tdSql.query(f"select first(c1,123) from {dbname}.t1")
|
||||
tdSql.checkData(0,0,1)
|
||||
tdSql.checkData(0,1,123)
|
||||
|
||||
tdSql.error("select last_row(c1,c2,c3,NULL,c4) from testdb.t1")
|
||||
tdSql.error(f"select last_row(c1,c2,c3,NULL,c4) from {dbname}.t1")
|
||||
|
||||
tdSql.query("select last_row(c1,c2,c3,123,c4) from testdb.t1")
|
||||
tdSql.query(f"select last_row(c1,c2,c3,123,c4) from {dbname}.t1")
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(0,1,None)
|
||||
tdSql.checkData(0,2,None)
|
||||
|
@ -326,9 +320,9 @@ class TDTestCase:
|
|||
tdSql.checkData(0,4,None)
|
||||
|
||||
|
||||
tdSql.error("select last_row(c1,c2,c3,NULL,c4,t1,t2) from testdb.ct1")
|
||||
tdSql.error(f"select last_row(c1,c2,c3,NULL,c4,t1,t2) from {dbname}.ct1")
|
||||
|
||||
tdSql.query("select last_row(c1,c2,c3,123,c4,t1,t2) from testdb.ct1")
|
||||
tdSql.query(f"select last_row(c1,c2,c3,123,c4,t1,t2) from {dbname}.ct1")
|
||||
tdSql.checkData(0,0,9)
|
||||
tdSql.checkData(0,1,-99999)
|
||||
tdSql.checkData(0,2,-999)
|
||||
|
@ -338,13 +332,13 @@ class TDTestCase:
|
|||
tdSql.checkData(0,5,0)
|
||||
|
||||
# # bug need fix
|
||||
tdSql.query("select last_row(c1), c2, c3 , c4, c5 from testdb.t1")
|
||||
tdSql.query(f"select last_row(c1), c2, c3 , c4, c5 from {dbname}.t1")
|
||||
tdSql.checkData(0, 0, None)
|
||||
tdSql.checkData(0, 1, None)
|
||||
tdSql.checkData(0, 2, None)
|
||||
|
||||
# # bug need fix
|
||||
tdSql.query("select last_row(c1), c2, c3 , c4, c5 from testdb.ct1")
|
||||
tdSql.query(f"select last_row(c1), c2, c3 , c4, c5 from {dbname}.ct1")
|
||||
tdSql.checkData(0, 0, 9)
|
||||
tdSql.checkData(0, 1, -99999)
|
||||
tdSql.checkData(0, 2, -999)
|
||||
|
@ -352,7 +346,7 @@ class TDTestCase:
|
|||
tdSql.checkData(0, 4,-9.99000)
|
||||
|
||||
# bug need fix
|
||||
tdSql.query("select last_row(c1), c2, c3 , c4, c5 from testdb.stb1 where tbname='ct1'")
|
||||
tdSql.query(f"select last_row(c1), c2, c3 , c4, c5 from {dbname}.stb1 where tbname='ct1'")
|
||||
tdSql.checkData(0, 0, 9)
|
||||
tdSql.checkData(0, 1, -99999)
|
||||
tdSql.checkData(0, 2, -999)
|
||||
|
@ -360,124 +354,124 @@ class TDTestCase:
|
|||
tdSql.checkData(0, 4,-9.99000)
|
||||
|
||||
# bug fix
|
||||
tdSql.query("select last_row(abs(c1)) from testdb.ct1")
|
||||
tdSql.query(f"select last_row(abs(c1)) from {dbname}.ct1")
|
||||
tdSql.checkData(0,0,9)
|
||||
|
||||
# # bug fix
|
||||
tdSql.query("select last_row(c1+1) from testdb.ct1")
|
||||
tdSql.query("select last_row(c1+1) from testdb.stb1")
|
||||
tdSql.query("select last_row(c1+1) from testdb.t1")
|
||||
tdSql.query(f"select last_row(c1+1) from {dbname}.ct1")
|
||||
tdSql.query(f"select last_row(c1+1) from {dbname}.stb1")
|
||||
tdSql.query(f"select last_row(c1+1) from {dbname}.t1")
|
||||
|
||||
# used for stable table
|
||||
tdSql.query("select last_row(c1 ,c2 ,c3) ,last_row(c4) from testdb.ct1")
|
||||
tdSql.query(f"select last_row(c1 ,c2 ,c3) ,last_row(c4) from {dbname}.ct1")
|
||||
tdSql.checkData(0,0,9)
|
||||
tdSql.checkData(0,1,-99999)
|
||||
tdSql.checkData(0,2,-999)
|
||||
tdSql.checkData(0,3,None)
|
||||
|
||||
# bug need fix
|
||||
tdSql.query("select last_row(c1 ,c2 ,c3) from testdb.stb1 ")
|
||||
tdSql.query(f"select last_row(c1 ,c2 ,c3) from {dbname}.stb1 ")
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(0,1,None)
|
||||
tdSql.checkData(0,2,None)
|
||||
|
||||
|
||||
tdSql.query('select last_row(c1) from testdb.t1 where ts <"2022-12-31 01:01:36.000"')
|
||||
tdSql.query(f'select last_row(c1) from {dbname}.t1 where ts <"2022-12-31 01:01:36.000"')
|
||||
tdSql.checkData(0,0,8)
|
||||
# bug need fix
|
||||
tdSql.query("select abs(last_row(c1)-2)+max(c1),ceil(last_row(c4)-2) from testdb.stb1 where c4 is not null")
|
||||
tdSql.query(f"select abs(last_row(c1)-2)+max(c1),ceil(last_row(c4)-2) from {dbname}.stb1 where c4 is not null")
|
||||
tdSql.checkData(0,0,16.000000000)
|
||||
tdSql.checkData(0,1,-101.000000000)
|
||||
|
||||
tdSql.query("select abs(last_row(c1)-2)+max(c1),ceil(last_row(c4)-2) from testdb.ct1 where c4<0")
|
||||
tdSql.query(f"select abs(last_row(c1)-2)+max(c1),ceil(last_row(c4)-2) from {dbname}.ct1 where c4<0")
|
||||
tdSql.checkData(0,0,16.000000000)
|
||||
tdSql.checkData(0,1,-101.000000000)
|
||||
|
||||
tdSql.query("select last_row(ceil(c1+2)+floor(c1)-10) from testdb.stb1")
|
||||
tdSql.query(f"select last_row(ceil(c1+2)+floor(c1)-10) from {dbname}.stb1")
|
||||
tdSql.checkData(0,0,None)
|
||||
|
||||
tdSql.query("select last_row(ceil(c1+2)+floor(c1)-10) from testdb.ct1")
|
||||
tdSql.query(f"select last_row(ceil(c1+2)+floor(c1)-10) from {dbname}.ct1")
|
||||
tdSql.checkData(0,0,10.000000000)
|
||||
|
||||
# filter for last_row
|
||||
|
||||
# bug need fix for all function
|
||||
|
||||
tdSql.query("select last_row(ts ,c1 ) from testdb.ct4 where t1 = 1 ")
|
||||
tdSql.query(f"select last_row(ts ,c1 ) from {dbname}.ct4 where t1 = 1 ")
|
||||
tdSql.checkRows(0)
|
||||
|
||||
tdSql.query("select count(c1) from testdb.ct4 where t1 = 1 ")
|
||||
tdSql.query(f"select count(c1) from {dbname}.ct4 where t1 = 1 ")
|
||||
tdSql.checkRows(0)
|
||||
|
||||
tdSql.query("select last_row(c1) ,last(c1) from testdb.stb1 where c1 is null")
|
||||
tdSql.query(f"select last_row(c1) ,last(c1) from {dbname}.stb1 where c1 is null")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(0,1,None)
|
||||
|
||||
tdSql.query("select last_row(c1) ,count(*) from testdb.stb1 where c1 is null")
|
||||
tdSql.query(f"select last_row(c1) ,count(*) from {dbname}.stb1 where c1 is null")
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(0,1,3)
|
||||
|
||||
tdSql.query("select last_row(c1) ,count(c1) from testdb.stb1 where c1 is null")
|
||||
tdSql.query(f"select last_row(c1) ,count(c1) from {dbname}.stb1 where c1 is null")
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(0,1,0)
|
||||
|
||||
# bug need fix
|
||||
tdSql.query("select tbname ,last_row(c1) from testdb.stb1")
|
||||
tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1")
|
||||
tdSql.checkData(0,0,'ct4')
|
||||
tdSql.checkData(0,1,None)
|
||||
|
||||
tdSql.query(" select tbname ,last_row(c1) from testdb.stb1 partition by tbname order by tbname ")
|
||||
tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 partition by tbname order by tbname ")
|
||||
tdSql.checkData(0,0,'ct1')
|
||||
tdSql.checkData(0,1,9)
|
||||
tdSql.checkData(1,0,'ct4')
|
||||
tdSql.checkData(1,1,None)
|
||||
|
||||
tdSql.query(" select tbname ,last_row(c1) from testdb.stb1 group by tbname order by tbname ")
|
||||
tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 group by tbname order by tbname ")
|
||||
tdSql.checkData(0,0,'ct1')
|
||||
tdSql.checkData(0,1,9)
|
||||
tdSql.checkData(1,0,'ct4')
|
||||
tdSql.checkData(1,1,None)
|
||||
|
||||
tdSql.query(" select t1 ,count(c1) from testdb.stb1 partition by t1 ")
|
||||
tdSql.query(f"select t1 ,count(c1) from {dbname}.stb1 partition by t1 ")
|
||||
tdSql.checkRows(2)
|
||||
|
||||
# filter by tbname
|
||||
tdSql.query("select last_row(c1) from testdb.stb1 where tbname = 'ct1' ")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.stb1 where tbname = 'ct1' ")
|
||||
tdSql.checkData(0,0,9)
|
||||
|
||||
# bug need fix
|
||||
tdSql.query("select tbname ,last_row(c1) from testdb.stb1 where tbname = 'ct1' ")
|
||||
tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 where tbname = 'ct1' ")
|
||||
tdSql.checkData(0,1,9)
|
||||
tdSql.query("select tbname ,last_row(c1) from testdb.stb1 partition by tbname order by tbname")
|
||||
tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 partition by tbname order by tbname")
|
||||
tdSql.checkData(0, 0, 'ct1')
|
||||
tdSql.checkData(0, 1, 9)
|
||||
tdSql.checkData(1, 0, 'ct4')
|
||||
tdSql.checkData(1, 1, None)
|
||||
|
||||
tdSql.query("select tbname ,last_row(c1) from testdb.stb1 group by tbname order by tbname")
|
||||
tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 group by tbname order by tbname")
|
||||
tdSql.checkData(0, 0, 'ct1')
|
||||
tdSql.checkData(0, 1, 9)
|
||||
tdSql.checkData(1, 0, 'ct4')
|
||||
tdSql.checkData(1, 1, None)
|
||||
|
||||
# last_row for only tag
|
||||
tdSql.query("select last_row(t1 ,t2 ,t3 , t4 ) from testdb.stb1")
|
||||
tdSql.query(f"select last_row(t1 ,t2 ,t3 , t4 ) from {dbname}.stb1")
|
||||
tdSql.checkData(0,0,3)
|
||||
tdSql.checkData(0,1,33333)
|
||||
tdSql.checkData(0,2,333)
|
||||
tdSql.checkData(0,3,3)
|
||||
|
||||
tdSql.query("select last_row(abs(floor(t1)) ,t2 ,ceil(abs(t3)) , abs(ceil(t4)) ) from testdb.stb1")
|
||||
tdSql.query(f"select last_row(abs(floor(t1)) ,t2 ,ceil(abs(t3)) , abs(ceil(t4)) ) from {dbname}.stb1")
|
||||
tdSql.checkData(0,0,3)
|
||||
tdSql.checkData(0,1,33333)
|
||||
tdSql.checkData(0,2,333)
|
||||
tdSql.checkData(0,3,3)
|
||||
|
||||
# filter by tag
|
||||
tdSql.query("select tbname ,last_row(c1) from testdb.stb1 where t1 =0 ")
|
||||
tdSql.query(f"select tbname ,last_row(c1) from {dbname}.stb1 where t1 =0 ")
|
||||
tdSql.checkData(0,1,9)
|
||||
tdSql.query("select tbname ,last_row(c1) ,t1 from testdb.stb1 partition by t1 order by t1")
|
||||
tdSql.query(f"select tbname ,last_row(c1) ,t1 from {dbname}.stb1 partition by t1 order by t1")
|
||||
tdSql.checkData(0, 0, 'ct1')
|
||||
tdSql.checkData(0, 1, 9)
|
||||
tdSql.checkData(1, 0, 'ct4')
|
||||
|
@ -485,56 +479,55 @@ class TDTestCase:
|
|||
|
||||
# filter by col
|
||||
|
||||
tdSql.query("select tbname ,last_row(c1),abs(c1)from testdb.stb1 where c1 =1;")
|
||||
tdSql.query(f"select tbname ,last_row(c1),abs(c1)from {dbname}.stb1 where c1 =1;")
|
||||
tdSql.checkData(0, 0, 'ct1')
|
||||
tdSql.checkData(0, 1, 1)
|
||||
tdSql.checkData(0, 2, 1)
|
||||
tdSql.query("select last_row(c1) from testdb.stb1 where abs(ceil(c1))*c1==1")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.stb1 where abs(ceil(c1))*c1==1")
|
||||
tdSql.checkData(0,0,1)
|
||||
|
||||
# mix with common functions
|
||||
tdSql.query("select last_row(*) ,last(*) from testdb.stb1 ")
|
||||
tdSql.query(f"select last_row(*) ,last(*) from {dbname}.stb1 ")
|
||||
tdSql.checkRows(1)
|
||||
|
||||
tdSql.query("select last_row(*) ,last(*) from testdb.stb1 ")
|
||||
tdSql.query(f"select last_row(*) ,last(*) from {dbname}.stb1 ")
|
||||
tdSql.checkRows(1)
|
||||
|
||||
|
||||
tdSql.query("select last_row(c1+abs(c1)) from testdb.stb1 partition by tbname order by tbname")
|
||||
tdSql.query("select last(c1), max(c1+abs(c1)),last_row(c1+abs(c1)) from testdb.stb1 partition by tbname order by tbname")
|
||||
tdSql.query(f"select last_row(c1+abs(c1)) from {dbname}.stb1 partition by tbname order by tbname")
|
||||
tdSql.query(f"select last(c1), max(c1+abs(c1)),last_row(c1+abs(c1)) from {dbname}.stb1 partition by tbname order by tbname")
|
||||
|
||||
# # bug need fix ,taosd crash
|
||||
tdSql.error("select last_row(*) ,last(*) from testdb.stb1 partition by tbname order by last(*)")
|
||||
tdSql.error("select last_row(*) ,last(*) from testdb.stb1 partition by tbname order by last_row(*)")
|
||||
tdSql.error(f"select last_row(*) ,last(*) from {dbname}.stb1 partition by tbname order by last(*)")
|
||||
tdSql.error(f"select last_row(*) ,last(*) from {dbname}.stb1 partition by tbname order by last_row(*)")
|
||||
|
||||
# mix with agg functions
|
||||
tdSql.query("select last(*), last_row(*),last(c1), last_row(c1) from testdb.stb1 ")
|
||||
tdSql.query("select last(*), last_row(*),last(c1), last_row(c1) from testdb.ct1 ")
|
||||
tdSql.query("select last(*), last_row(*),last(c1+1)*max(c1), last_row(c1+2)/2 from testdb.t1 ")
|
||||
tdSql.query("select last_row(*) ,abs(c1/2)+100 from testdb.stb1 where tbname =\"ct1\" ")
|
||||
tdSql.query("select c1, last_row(c5) from testdb.ct1 ")
|
||||
tdSql.error("select c1, last_row(c5) ,last(c1) from testdb.stb1 ")
|
||||
tdSql.query(f"select last(*), last_row(*),last(c1), last_row(c1) from {dbname}.stb1 ")
|
||||
tdSql.query(f"select last(*), last_row(*),last(c1), last_row(c1) from {dbname}.ct1 ")
|
||||
tdSql.query(f"select last(*), last_row(*),last(c1+1)*max(c1), last_row(c1+2)/2 from {dbname}.t1 ")
|
||||
tdSql.query(f"select last_row(*) ,abs(c1/2)+100 from {dbname}.stb1 where tbname =\"ct1\" ")
|
||||
tdSql.query(f"select c1, last_row(c5) from {dbname}.ct1 ")
|
||||
tdSql.error(f"select c1, last_row(c5) ,last(c1) from {dbname}.stb1 ")
|
||||
|
||||
# agg functions mix with agg functions
|
||||
|
||||
tdSql.query("select last(c1) , max(c5), count(c5) from testdb.stb1")
|
||||
tdSql.query("select last_row(c1) , max(c5), count(c5) from testdb.ct1")
|
||||
tdSql.query(f"select last(c1) , max(c5), count(c5) from {dbname}.stb1")
|
||||
tdSql.query(f"select last_row(c1) , max(c5), count(c5) from {dbname}.ct1")
|
||||
|
||||
# bug fix for compute
|
||||
tdSql.query("select last_row(c1) -0 ,last(c1)-0 ,last(c1)+last_row(c1) from testdb.ct4 ")
|
||||
tdSql.query(f"select last_row(c1) -0 ,last(c1)-0 ,last(c1)+last_row(c1) from {dbname}.ct4 ")
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(0,1,0.000000000)
|
||||
tdSql.checkData(0,2,None)
|
||||
|
||||
tdSql.query(" select c1, abs(c1) -0 ,last_row(c1-0.1)-0.1 from testdb.ct1")
|
||||
tdSql.query(f"select c1, abs(c1) -0 ,last_row(c1-0.1)-0.1 from {dbname}.ct1")
|
||||
tdSql.checkData(0,0,9)
|
||||
tdSql.checkData(0,1,9.000000000)
|
||||
tdSql.checkData(0,2,8.800000000)
|
||||
|
||||
def abs_func_filter(self):
|
||||
tdSql.execute("use db")
|
||||
def abs_func_filter(self, dbname="db"):
|
||||
tdSql.query(
|
||||
"select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,last_row(log(c1,2)-0.5) from db.ct4 where c1>5 ")
|
||||
f"select c1, abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,last_row(log(c1,2)-0.5) from {dbname}.ct4 where c1>5 ")
|
||||
tdSql.checkData(0, 0, 6)
|
||||
tdSql.checkData(0, 1, 6.000000000)
|
||||
tdSql.checkData(0, 2, 6.000000000)
|
||||
|
@ -542,19 +535,19 @@ class TDTestCase:
|
|||
tdSql.checkData(0, 4, 2.084962501)
|
||||
|
||||
tdSql.query(
|
||||
"select last_row(c1,c2,c1+5) from db.ct4 where c1=5 ")
|
||||
f"select last_row(c1,c2,c1+5) from {dbname}.ct4 where c1=5 ")
|
||||
tdSql.checkData(0, 0, 5)
|
||||
tdSql.checkData(0, 1, 55555)
|
||||
tdSql.checkData(0, 2, 10.000000000)
|
||||
|
||||
tdSql.query(
|
||||
"select last(c1,c2,c1+5) from db.ct4 where c1=5 ")
|
||||
f"select last(c1,c2,c1+5) from {dbname}.ct4 where c1=5 ")
|
||||
tdSql.checkData(0, 0, 5)
|
||||
tdSql.checkData(0, 1, 55555)
|
||||
tdSql.checkData(0, 2, 10.000000000)
|
||||
|
||||
tdSql.query(
|
||||
"select c1,c2 , abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(log(c1,2)-0.5) from db.ct4 where c1>log(c1,2) limit 1 ")
|
||||
f"select c1,c2 , abs(c1) -0 ,ceil(c1-0.1)-0 ,floor(c1+0.1)-0.1 ,ceil(log(c1,2)-0.5) from {dbname}.ct4 where c1>log(c1,2) limit 1 ")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0, 0, 8)
|
||||
tdSql.checkData(0, 1, 88888)
|
||||
|
@ -566,166 +559,162 @@ class TDTestCase:
|
|||
def abs_Arithmetic(self):
|
||||
pass
|
||||
|
||||
def check_boundary_values(self):
|
||||
def check_boundary_values(self, dbname="bound_test"):
|
||||
|
||||
tdSql.execute("drop database if exists bound_test")
|
||||
tdSql.execute("create database if not exists bound_test cachemodel 'LAST_ROW' ")
|
||||
tdSql.execute(f"drop database if exists {dbname}")
|
||||
tdSql.execute(f"create database if not exists {dbname} cachemodel 'LAST_ROW' ")
|
||||
|
||||
time.sleep(3)
|
||||
tdSql.execute("use bound_test")
|
||||
tdSql.execute(f"use {dbname}")
|
||||
tdSql.execute(
|
||||
"create table bound_test.stb_bound (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(32),c9 nchar(32), c10 timestamp) tags (t1 int);"
|
||||
f"create table {dbname}.stb_bound (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(32),c9 nchar(32), c10 timestamp) tags (t1 int);"
|
||||
)
|
||||
tdSql.execute(f'create table bound_test.sub1_bound using stb_bound tags ( 1 )')
|
||||
tdSql.execute(f'create table {dbname}.sub1_bound using {dbname}.stb_bound tags ( 1 )')
|
||||
tdSql.execute(
|
||||
f"insert into bound_test.sub1_bound values ( now()-1s, 2147483647, 9223372036854775807, 32767, 127, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||
f"insert into {dbname}.sub1_bound values ( now()-1s, 2147483647, 9223372036854775807, 32767, 127, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||
)
|
||||
tdSql.execute(
|
||||
f"insert into bound_test.sub1_bound values ( now()-1s, -2147483647, -9223372036854775807, -32767, -127, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||
f"insert into {dbname}.sub1_bound values ( now()-1s, -2147483647, -9223372036854775807, -32767, -127, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||
)
|
||||
tdSql.execute(
|
||||
f"insert into bound_test.sub1_bound values ( now(), 2147483646, 9223372036854775806, 32766, 126, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||
f"insert into {dbname}.sub1_bound values ( now(), 2147483646, 9223372036854775806, 32766, 126, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||
)
|
||||
tdSql.execute(
|
||||
f"insert into bound_test.sub1_bound values ( now(), -2147483646, -9223372036854775806, -32766, -126, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||
f"insert into {dbname}.sub1_bound values ( now(), -2147483646, -9223372036854775806, -32766, -126, -3.40E+38, -1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||
)
|
||||
tdSql.error(
|
||||
f"insert into bound_test.sub1_bound values ( now()+1s, 2147483648, 9223372036854775808, 32768, 128, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||
f"insert into {dbname}.sub1_bound values ( now()+1s, 2147483648, 9223372036854775808, 32768, 128, 3.40E+38, 1.7e+308, True, 'binary_tb1', 'nchar_tb1', now() )"
|
||||
)
|
||||
|
||||
# check basic elem for table per row
|
||||
tdSql.query(
|
||||
"select last(c1) ,last_row(c2), last_row(c3)+1 , last(c4)+1 from bound_test.sub1_bound ")
|
||||
f"select last(c1) ,last_row(c2), last_row(c3)+1 , last(c4)+1 from {dbname}.sub1_bound ")
|
||||
tdSql.checkData(0, 0, -2147483646)
|
||||
tdSql.checkData(0, 1, -9223372036854775806)
|
||||
tdSql.checkData(0, 2, -32765.000000000)
|
||||
tdSql.checkData(0, 3, -125.000000000)
|
||||
# check + - * / in functions
|
||||
tdSql.query(
|
||||
"select last_row(c1+1) ,last_row(c2) , last(c3*1) , last(c4/2) from bound_test.sub1_bound ")
|
||||
|
||||
def test_tag_compute_for_scalar_function(self):
|
||||
|
||||
tdSql.execute("use testdb")
|
||||
f"select last_row(c1+1) ,last_row(c2) , last(c3*1) , last(c4/2) from {dbname}.sub1_bound ")
|
||||
|
||||
def test_tag_compute_for_scalar_function(self, dbname="testdb"):
|
||||
# bug need fix
|
||||
|
||||
tdSql.query(" select sum(c1) from testdb.stb1 where t1+10 >1; ")
|
||||
tdSql.query("select c1 ,t1 from testdb.stb1 where t1 =0 ")
|
||||
tdSql.query(f"select sum(c1) from {dbname}.stb1 where t1+10 >1; ")
|
||||
tdSql.query(f"select c1 ,t1 from {dbname}.stb1 where t1 =0 ")
|
||||
tdSql.checkRows(13)
|
||||
tdSql.query("select last_row(c1,t1) from testdb.stb1 ")
|
||||
tdSql.query(f"select last_row(c1,t1) from {dbname}.stb1 ")
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(0,1,3)
|
||||
tdSql.query("select last_row(c1),t1 from testdb.stb1 ")
|
||||
tdSql.query(f"select last_row(c1),t1 from {dbname}.stb1 ")
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(0,1,3)
|
||||
tdSql.query("select last_row(c1,t1),last(t1) from testdb.stb1 ")
|
||||
tdSql.query(f"select last_row(c1,t1),last(t1) from {dbname}.stb1 ")
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(0,1,3)
|
||||
tdSql.checkData(0,2,3)
|
||||
|
||||
tdSql.query("select last_row(t1) from testdb.stb1 where t1 >0 ")
|
||||
tdSql.query(f"select last_row(t1) from {dbname}.stb1 where t1 >0 ")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0,0,3)
|
||||
tdSql.query("select last_row(t1) from testdb.stb1 where t1 =3 ")
|
||||
tdSql.query(f"select last_row(t1) from {dbname}.stb1 where t1 =3 ")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0,0,3)
|
||||
|
||||
tdSql.query("select last_row(t1) from testdb.stb1 where t1 =2")
|
||||
tdSql.query(f"select last_row(t1) from {dbname}.stb1 where t1 =2")
|
||||
tdSql.checkRows(0)
|
||||
|
||||
# nest query for last_row
|
||||
tdSql.query("select last_row(t1) from (select ts , c1 ,t1 from testdb.stb1)")
|
||||
tdSql.query(f"select last_row(t1) from (select ts , c1 ,t1 from {dbname}.stb1)")
|
||||
tdSql.checkData(0,0,3)
|
||||
tdSql.query("select distinct(c1) ,t1 from testdb.stb1")
|
||||
tdSql.query(f"select distinct(c1) ,t1 from {dbname}.stb1")
|
||||
tdSql.checkRows(20)
|
||||
tdSql.query("select last_row(c1) from (select _rowts , c1 ,t1 from testdb.stb1)")
|
||||
tdSql.query(f"select last_row(c1) from (select _rowts , c1 ,t1 from {dbname}.stb1)")
|
||||
tdSql.checkData(0,0,None)
|
||||
|
||||
tdSql.query("select last_row(c1) from (select ts , c1 ,t1 from testdb.stb1)")
|
||||
tdSql.query(f"select last_row(c1) from (select ts , c1 ,t1 from {dbname}.stb1)")
|
||||
tdSql.checkData(0,0,None)
|
||||
|
||||
tdSql.query("select ts , last_row(c1) ,c1 from (select ts , c1 ,t1 from testdb.stb1)")
|
||||
tdSql.query(f"select ts , last_row(c1) ,c1 from (select ts , c1 ,t1 from {dbname}.stb1)")
|
||||
tdSql.checkData(0,1,None)
|
||||
|
||||
tdSql.query("select ts , last_row(c1) ,c1 from (select ts , max(c1) c1 ,t1 from testdb.stb1 where ts >now -1h and ts <now+1h interval(10s) fill(value ,10 ))")
|
||||
tdSql.query(f"select ts , last_row(c1) ,c1 from (select ts , max(c1) c1 ,t1 from {dbname}.stb1 where ts >now -1h and ts <now+1h interval(10s) fill(value ,10 ))")
|
||||
tdSql.checkData(0,1,10)
|
||||
tdSql.checkData(0,1,10)
|
||||
|
||||
tdSql.error("select ts , last_row(c1) ,c1 from (select count(c1) c1 from testdb.stb1 where ts >now -1h and ts <now+1h interval(10s) fill(value ,10 ))")
|
||||
tdSql.error(f"select ts , last_row(c1) ,c1 from (select count(c1) c1 from {dbname}.stb1 where ts >now -1h and ts <now+1h interval(10s) fill(value ,10 ))")
|
||||
|
||||
tdSql.error("select last_row(c1) ,c1 from (select count(c1) c1 from testdb.stb1 where ts >now -1h and ts <now+1h interval(10s) fill(value ,10 ))")
|
||||
tdSql.error(f"select last_row(c1) ,c1 from (select count(c1) c1 from {dbname}.stb1 where ts >now -1h and ts <now+1h interval(10s) fill(value ,10 ))")
|
||||
|
||||
# tag filter with last_row function
|
||||
tdSql.query("select last_row(t1) from testdb.stb1 where abs(t1)=1")
|
||||
tdSql.query(f"select last_row(t1) from {dbname}.stb1 where abs(t1)=1")
|
||||
tdSql.checkRows(0)
|
||||
tdSql.query("select last_row(t1) from testdb.stb1 where abs(t1)=0")
|
||||
tdSql.query(f"select last_row(t1) from {dbname}.stb1 where abs(t1)=0")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.query(" select last_row(t1),last_row(c1) from db.ct1 where abs(c1+t1)=1")
|
||||
tdSql.query(f"select last_row(t1),last_row(c1) from db.ct1 where abs(c1+t1)=1")
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0,0,1)
|
||||
tdSql.checkData(0,1,0)
|
||||
|
||||
tdSql.query(
|
||||
"select last_row(c1+t1)*t1 from testdb.stb1 where abs(c1)/floor(abs(ceil(t1))) ==1")
|
||||
f"select last_row(c1+t1)*t1 from {dbname}.stb1 where abs(c1)/floor(abs(ceil(t1))) ==1")
|
||||
|
||||
def group_test(self):
|
||||
tdSql.execute(" use testdb ")
|
||||
tdSql.query(" select last_row(c1) from testdb.stb1 group by t1 order by t1 ")
|
||||
def group_test(self, dbname="testdb"):
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.stb1 group by t1 order by t1 ")
|
||||
tdSql.checkRows(2)
|
||||
|
||||
# bug need fix
|
||||
tdSql.query("select last_row(c1) from testdb.stb1 group by c1 order by c1,t1 ")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.stb1 group by c1 order by c1,t1 ")
|
||||
tdSql.checkRows(10)
|
||||
tdSql.checkData(9,0,8)
|
||||
tdSql.query("select last_row(c1) from db.stb1 group by c1 order by t1 ")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.stb1 group by c1 order by t1 ")
|
||||
tdSql.checkRows(10)
|
||||
tdSql.checkData(0,0,4)
|
||||
|
||||
tdSql.query("select last_row(c1) from testdb.stb1 group by c1 order by t1")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.stb1 group by c1 order by t1")
|
||||
tdSql.checkRows(11)
|
||||
|
||||
tdSql.query("select last_row(c1) from testdb.stb1 group by c1 order by c1,t1;")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.stb1 group by c1 order by c1,t1;")
|
||||
tdSql.checkRows(11)
|
||||
tdSql.checkData(10,0,9)
|
||||
|
||||
# bug need fix , result is error
|
||||
tdSql.query("select last_row(c1) from testdb.ct4 group by c1 order by t1 ")
|
||||
tdSql.query("select last_row(t1) from testdb.ct4 group by c1 order by t1 ")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.ct4 group by c1 order by t1 ")
|
||||
tdSql.query(f"select last_row(t1) from {dbname}.ct4 group by c1 order by t1 ")
|
||||
|
||||
tdSql.query("select last_row(t1) from testdb.stb1 group by t1 order by t1 ")
|
||||
tdSql.query(f"select last_row(t1) from {dbname}.stb1 group by t1 order by t1 ")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query("select last_row(c1) from testdb.stb1 group by c1 order by c1 ")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.stb1 group by c1 order by c1 ")
|
||||
tdSql.checkRows(11)
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(10,0,9)
|
||||
|
||||
tdSql.query("select ceil(abs(last_row(abs(c1)))) from testdb.stb1 group by abs(c1) order by abs(c1);")
|
||||
tdSql.query(f"select ceil(abs(last_row(abs(c1)))) from {dbname}.stb1 group by abs(c1) order by abs(c1);")
|
||||
tdSql.checkRows(11)
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(10,0,9)
|
||||
tdSql.query("select last_row(c1+c3) from testdb.stb1 group by abs(c1+c3) order by abs(c1+c3)")
|
||||
tdSql.query(f"select last_row(c1+c3) from {dbname}.stb1 group by abs(c1+c3) order by abs(c1+c3)")
|
||||
tdSql.checkRows(11)
|
||||
|
||||
# bug need fix , taosd crash
|
||||
tdSql.query("select last_row(c1+c3)+c2 from testdb.stb1 group by abs(c1+c3)+c2 order by abs(c1+c3)+c2")
|
||||
tdSql.query(f"select last_row(c1+c3)+c2 from {dbname}.stb1 group by abs(c1+c3)+c2 order by abs(c1+c3)+c2")
|
||||
tdSql.checkRows(11)
|
||||
tdSql.query("select last_row(c1+c3)+last_row(c2) from testdb.stb1 group by abs(c1+c3)+abs(c2) order by abs(c1+c3)+abs(c2)")
|
||||
tdSql.query(f"select last_row(c1+c3)+last_row(c2) from {dbname}.stb1 group by abs(c1+c3)+abs(c2) order by abs(c1+c3)+abs(c2)")
|
||||
tdSql.checkRows(11)
|
||||
tdSql.checkData(0,0,None)
|
||||
tdSql.checkData(2,0,11223.000000000)
|
||||
|
||||
tdSql.query("select last_row(t1) from testdb.stb1 where abs(c1+t1)=1 partition by tbname")
|
||||
tdSql.query(f"select last_row(t1) from {dbname}.stb1 where abs(c1+t1)=1 partition by tbname")
|
||||
tdSql.checkData(0,0,1)
|
||||
|
||||
tdSql.query("select tbname , last_row(c1) from testdb.stb1 partition by tbname order by tbname")
|
||||
tdSql.query(f"select tbname , last_row(c1) from {dbname}.stb1 partition by tbname order by tbname")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, 'ct1')
|
||||
tdSql.checkData(0, 1, 9)
|
||||
tdSql.checkData(0, 2, 'ct4')
|
||||
tdSql.checkData(0, 3, None)
|
||||
|
||||
tdSql.query("select tbname , last_row(c1) from testdb.stb1 partition by t1 order by t1")
|
||||
tdSql.query(f"select tbname , last_row(c1) from {dbname}.stb1 partition by t1 order by t1")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, 'ct1')
|
||||
tdSql.checkData(0, 1, 9)
|
||||
|
@ -733,110 +722,109 @@ class TDTestCase:
|
|||
tdSql.checkData(0, 3, None)
|
||||
|
||||
# bug need fix
|
||||
tdSql.query("select tbname , last_row(c1) from testdb.stb1 partition by c2 order by c1")
|
||||
tdSql.query(f"select tbname , last_row(c1) from {dbname}.stb1 partition by c2 order by c1")
|
||||
tdSql.checkRows(11)
|
||||
tdSql.checkData(10,1,9)
|
||||
|
||||
tdSql.query("select tbname , last_row(c1) from testdb.stb1 partition by c2 order by c2")
|
||||
tdSql.query(f"select tbname , last_row(c1) from {dbname}.stb1 partition by c2 order by c2")
|
||||
tdSql.checkRows(11)
|
||||
tdSql.checkData(10,1,88888)
|
||||
|
||||
tdSql.query("select tbname , last_row(t1) from testdb.stb1 partition by c2 order by t1")
|
||||
tdSql.query(f"select tbname , last_row(t1) from {dbname}.stb1 partition by c2 order by t1")
|
||||
tdSql.checkRows(11)
|
||||
|
||||
tdSql.query("select abs(c1) ,c2 ,t1, last_row(t1) from testdb.stb1 partition by c2 order by t1")
|
||||
tdSql.query(f"select abs(c1) ,c2 ,t1, last_row(t1) from {dbname}.stb1 partition by c2 order by t1")
|
||||
tdSql.checkRows(11)
|
||||
|
||||
tdSql.query("select t1 ,last_row(t1) ,c2 from testdb.stb1 partition by c2 order by t1")
|
||||
tdSql.query(f"select t1 ,last_row(t1) ,c2 from {dbname}.stb1 partition by c2 order by t1")
|
||||
tdSql.checkRows(11)
|
||||
|
||||
tdSql.query("select last_row(t1) ,last_row(t1) ,last_row(c2) from testdb.stb1 partition by c2 order by c2")
|
||||
tdSql.query(f"select last_row(t1) ,last_row(t1) ,last_row(c2) from {dbname}.stb1 partition by c2 order by c2")
|
||||
tdSql.checkRows(11)
|
||||
|
||||
tdSql.query("select abs(c1) , last_row(t1) ,c2 from testdb.stb1 partition by tbname order by tbname")
|
||||
tdSql.query(f"select abs(c1) , last_row(t1) ,c2 from {dbname}.stb1 partition by tbname order by tbname")
|
||||
tdSql.checkRows(2)
|
||||
|
||||
tdSql.query("select last_row(c1) , ceil(t1) ,c2 from testdb.stb1 partition by t1 order by t1")
|
||||
tdSql.query(f"select last_row(c1) , ceil(t1) ,c2 from {dbname}.stb1 partition by t1 order by t1")
|
||||
tdSql.checkRows(2)
|
||||
|
||||
tdSql.query("select last_row(c1) , abs(t1) ,c2 from testdb.stb1 partition by abs(c1) order by abs(c1)")
|
||||
tdSql.query(f"select last_row(c1) , abs(t1) ,c2 from {dbname}.stb1 partition by abs(c1) order by abs(c1)")
|
||||
tdSql.checkRows(11)
|
||||
|
||||
tdSql.query("select abs(last_row(c1)) , abs(floor(t1)) ,floor(c2) from testdb.stb1 partition by abs(floor(c1)) order by abs(c1)")
|
||||
tdSql.query(f"select abs(last_row(c1)) , abs(floor(t1)) ,floor(c2) from {dbname}.stb1 partition by abs(floor(c1)) order by abs(c1)")
|
||||
tdSql.checkRows(11)
|
||||
|
||||
tdSql.query("select last_row(ceil(c1-2)) , abs(floor(t1+1)) ,floor(c2-c1) from testdb.stb1 partition by abs(floor(c1)) order by abs(c1)")
|
||||
tdSql.query(f"select last_row(ceil(c1-2)) , abs(floor(t1+1)) ,floor(c2-c1) from {dbname}.stb1 partition by abs(floor(c1)) order by abs(c1)")
|
||||
tdSql.checkRows(11)
|
||||
|
||||
|
||||
tdSql.query("select max(c1) from stb1 interval(50s) sliding(30s)")
|
||||
tdSql.query(f"select max(c1) from {dbname}.stb1 interval(50s) sliding(30s)")
|
||||
tdSql.checkRows(13)
|
||||
|
||||
tdSql.query("select unique(c1) from stb1 partition by tbname")
|
||||
tdSql.query(f"select unique(c1) from {dbname}.stb1 partition by tbname")
|
||||
|
||||
# interval
|
||||
|
||||
tdSql.query("select last_row(c1) from testdb.stb1 interval(50s) sliding(30s)")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.stb1 interval(50s) sliding(30s)")
|
||||
tdSql.checkRows(27)
|
||||
|
||||
|
||||
tdSql.query("select last_row(c1) from testdb.ct1 interval(50s) sliding(30s)")
|
||||
tdSql.query(f"select last_row(c1) from {dbname}.ct1 interval(50s) sliding(30s)")
|
||||
tdSql.checkRows(5)
|
||||
last_row_result = tdSql.queryResult
|
||||
tdSql.query("select last(c1) from testdb.ct1 interval(50s) sliding(30s)")
|
||||
tdSql.query(f"select last(c1) from {dbname}.ct1 interval(50s) sliding(30s)")
|
||||
for ind , row in enumerate(last_row_result):
|
||||
tdSql.checkData(ind , 0 , row[0])
|
||||
|
||||
# bug need fix
|
||||
tdSql.query('select max(c1) from testdb.t1 where ts>="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" interval(50d) sliding(30d) fill(NULL)')
|
||||
tdSql.query(f'select max(c1) from {dbname}.t1 where ts>="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" interval(50d) sliding(30d) fill(NULL)')
|
||||
tdSql.checkRows(8)
|
||||
tdSql.checkData(7,0,None)
|
||||
|
||||
tdSql.query('select last_row(c1) from testdb.t1 where ts>="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" interval(50d) sliding(30d) fill(value ,2 )')
|
||||
tdSql.query(f'select last_row(c1) from {dbname}.t1 where ts>="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" interval(50d) sliding(30d) fill(value ,2 )')
|
||||
tdSql.checkRows(8)
|
||||
tdSql.checkData(7,0,2)
|
||||
|
||||
tdSql.query('select last_row(c1) from testdb.stb1 where ts>="2022-07-06 16:00:00.000 " and ts < "2022-07-06 17:00:00.000 " interval(50s) sliding(30s)')
|
||||
tdSql.query('select last_row(c1) from (select ts , c1 from testdb.t1 where ts>="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" ) interval(10s) sliding(5s)')
|
||||
tdSql.query(f'select last_row(c1) from {dbname}.stb1 where ts>="2022-07-06 16:00:00.000 " and ts < "2022-07-06 17:00:00.000 " interval(50s) sliding(30s)')
|
||||
tdSql.query(f'select last_row(c1) from (select ts , c1 from {dbname}.t1 where ts>="2021-01-01 01:01:06.000" and ts < "2021-07-21 01:01:01.000" ) interval(10s) sliding(5s)')
|
||||
|
||||
# join
|
||||
tdSql.query("use test")
|
||||
tdSql.query("select last(sub_tb_1.c1), last(sub_tb_2.c2) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
db1 = "test"
|
||||
tdSql.query(f"use {db1}")
|
||||
tdSql.query(f"select last(sub_tb_1.c1), last(sub_tb_2.c2) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
tdSql.checkCols(2)
|
||||
last_row_result = tdSql.queryResult
|
||||
tdSql.query("select last_row(sub_tb_1.c1), last_row(sub_tb_2.c2) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
tdSql.query(f"select last_row(sub_tb_1.c1), last_row(sub_tb_2.c2) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
|
||||
for ind , row in enumerate(last_row_result):
|
||||
tdSql.checkData(ind , 0 , row[0])
|
||||
|
||||
tdSql.query("select last(*), last(*) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
tdSql.query(f"select last(*), last(*) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
|
||||
last_row_result = tdSql.queryResult
|
||||
tdSql.query("select last_row(*), last_row(*) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
tdSql.query(f"select last_row(*), last_row(*) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
for ind , row in enumerate(last_row_result):
|
||||
tdSql.checkData(ind , 0 , row[0])
|
||||
|
||||
tdSql.query("select last(*), last_row(*) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
tdSql.query(f"select last(*), last_row(*) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
for ind , row in enumerate(last_row_result):
|
||||
tdSql.checkData(ind , 0 , row[0])
|
||||
|
||||
tdSql.query("select last_row(*), last(*) from sub_tb_1, sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
tdSql.query(f"select last_row(*), last(*) from {db1}.sub_tb_1 sub_tb_1, {db1}.sub_tb_2 where sub_tb_1.ts=sub_tb_2.ts")
|
||||
for ind , row in enumerate(last_row_result):
|
||||
tdSql.checkData(ind , 0 , row[0])
|
||||
|
||||
|
||||
def support_super_table_test(self):
|
||||
tdSql.execute(" use testdb ")
|
||||
self.check_result_auto( " select c1 from testdb.stb1 order by ts " , "select abs(c1) from testdb.stb1 order by ts" )
|
||||
self.check_result_auto( " select c1 from testdb.stb1 order by tbname " , "select abs(c1) from testdb.stb1 order by tbname" )
|
||||
self.check_result_auto( " select c1 from testdb.stb1 where c1 > 0 order by tbname " , "select abs(c1) from testdb.stb1 where c1 > 0 order by tbname" )
|
||||
self.check_result_auto( " select c1 from testdb.stb1 where c1 > 0 order by tbname " , "select abs(c1) from testdb.stb1 where c1 > 0 order by tbname" )
|
||||
def support_super_table_test(self, dbname="testdb"):
|
||||
self.check_result_auto( f"select c1 from {dbname}.stb1 order by ts " , f"select abs(c1) from {dbname}.stb1 order by ts" )
|
||||
self.check_result_auto( f"select c1 from {dbname}.stb1 order by tbname " , f"select abs(c1) from {dbname}.stb1 order by tbname" )
|
||||
self.check_result_auto( f"select c1 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select abs(c1) from {dbname}.stb1 where c1 > 0 order by tbname" )
|
||||
self.check_result_auto( f"select c1 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select abs(c1) from {dbname}.stb1 where c1 > 0 order by tbname" )
|
||||
|
||||
self.check_result_auto( " select t1,c1 from testdb.stb1 order by ts " , "select t1, abs(c1) from testdb.stb1 order by ts" )
|
||||
self.check_result_auto( " select t2,c1 from testdb.stb1 order by tbname " , "select t2 ,abs(c1) from testdb.stb1 order by tbname" )
|
||||
self.check_result_auto( " select t3,c1 from testdb.stb1 where c1 > 0 order by tbname " , "select t3 ,abs(c1) from testdb.stb1 where c1 > 0 order by tbname" )
|
||||
self.check_result_auto( " select t4,c1 from testdb.stb1 where c1 > 0 order by tbname " , "select t4 , abs(c1) from testdb.stb1 where c1 > 0 order by tbname" )
|
||||
pass
|
||||
self.check_result_auto( f"select t1,c1 from {dbname}.stb1 order by ts " , f"select t1, abs(c1) from {dbname}.stb1 order by ts" )
|
||||
self.check_result_auto( f"select t2,c1 from {dbname}.stb1 order by tbname " , f"select t2 ,abs(c1) from {dbname}.stb1 order by tbname" )
|
||||
self.check_result_auto( f"select t3,c1 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select t3 ,abs(c1) from {dbname}.stb1 where c1 > 0 order by tbname" )
|
||||
self.check_result_auto( f"select t4,c1 from {dbname}.stb1 where c1 > 0 order by tbname " , f"select t4 , abs(c1) from {dbname}.stb1 where c1 > 0 order by tbname" )
|
||||
|
||||
def basic_query(self):
|
||||
|
||||
|
|
|
@ -110,13 +110,14 @@ python3 ./test.py -f 2-query/histogram.py
|
|||
python3 ./test.py -f 2-query/histogram.py -R
|
||||
python3 ./test.py -f 2-query/hyperloglog.py
|
||||
python3 ./test.py -f 2-query/hyperloglog.py -R
|
||||
python3 ./test.py -f 2-query/interp.py
|
||||
python3 ./test.py -f 2-query/interp.py -R
|
||||
python3 ./test.py -f 2-query/irate.py
|
||||
# python3 ./test.py -f 2-query/irate.py -R
|
||||
python3 ./test.py -f 2-query/join.py
|
||||
python3 ./test.py -f 2-query/join.py -R
|
||||
|
||||
python3 ./test.py -f 2-query/interp.py
|
||||
python3 ./test.py -f 2-query/interp.py -R
|
||||
python3 ./test.py -f 2-query/last_row.py
|
||||
python3 ./test.py -f 2-query/last_row.py -R
|
||||
|
||||
|
||||
|
||||
|
@ -178,7 +179,6 @@ python3 ./test.py -f 2-query/ttl_comment.py
|
|||
python3 ./test.py -f 2-query/twa.py
|
||||
python3 ./test.py -f 2-query/queryQnode.py
|
||||
python3 ./test.py -f 2-query/max_partition.py
|
||||
python3 ./test.py -f 2-query/last_row.py
|
||||
python3 ./test.py -f 2-query/tsbsQuery.py
|
||||
|
||||
python3 ./test.py -f 6-cluster/5dnode1mnode.py
|
||||
|
|
Loading…
Reference in New Issue