提交 fa628f77 编写于 作者: wmmhello's avatar wmmhello

Merge branch 'develop' into fix/TD-12909

...@@ -1669,7 +1669,7 @@ SELECT COUNT(*), FIRST(ts), status FROM temp_tb_1 STATE_WINDOW(status) ...@@ -1669,7 +1669,7 @@ SELECT COUNT(*), FIRST(ts), status FROM temp_tb_1 STATE_WINDOW(status)
```mysql ```mysql
SELECT COUNT(*), FIRST(ts) FROM temp_tb_1 SESSION_WINDOW(ts, tol_val) SELECT COUNT(*), FIRST(ts) FROM temp_tb_1 SESSION(ts, tol_val)
``` ```
这种类型的查询语法如下: 这种类型的查询语法如下:
......
...@@ -1534,10 +1534,10 @@ int stmtGenInsertStatement(SSqlObj* pSql, STscStmt* pStmt, const char* name, TAO ...@@ -1534,10 +1534,10 @@ int stmtGenInsertStatement(SSqlObj* pSql, STscStmt* pStmt, const char* name, TAO
} }
int32_t stmtValidateValuesFields(SSqlCmd *pCmd, char * sql) { int32_t stmtValidateValuesFields(SSqlCmd *pCmd, char * sql) {
int32_t loopCont = 1, index0 = 0, values = 0; int32_t index0 = 0, values = 0;
SStrToken sToken; SStrToken sToken;
while (loopCont) { while (1) {
sToken = tStrGetToken(sql, &index0, false); sToken = tStrGetToken(sql, &index0, false);
if (sToken.n <= 0) { if (sToken.n <= 0) {
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
......
...@@ -63,7 +63,7 @@ class TDTestCase: ...@@ -63,7 +63,7 @@ class TDTestCase:
tdSql.execute("create stable st (ts timestamp , id int , value double) tags(hostname binary(10) ,ind int);") tdSql.execute("create stable st (ts timestamp , id int , value double) tags(hostname binary(10) ,ind int);")
for i in range(self.num): for i in range(self.num):
tdSql.execute("insert into sub_%s using st tags('host_%s' , %d) values (%d , %d , %f );"%(str(i),str(i),i*10,self.ts+10000*i,i*2,i+10.00)) tdSql.execute("insert into sub_%s using st tags('host_%s' , %d) values (%d , %d , %f );"%(str(i),str(i),i*10,self.ts+10000*i,i*2,i+10.00))
tdSql.query("select distinct(hostname) from st;") tdSql.query("select distinct(hostname) from testdb.st")
tdSql.checkRows(10) tdSql.checkRows(10)
binPath = self.getBuildPath() + "/build/bin/" binPath = self.getBuildPath() + "/build/bin/"
...@@ -76,11 +76,13 @@ class TDTestCase: ...@@ -76,11 +76,13 @@ class TDTestCase:
os.system("taos -s ' select distinct(hostname) from testdb.st '") os.system("taos -s ' select distinct(hostname) from testdb.st '")
# this bug will occor at this connect ,it should get 11 rows ,but return 10 rows ,this error is caused by cache # this bug will occor at this connect ,it should get 11 rows ,but return 10 rows ,this error is caused by cache
# tdSql.query("reset query cache")
for i in range(10): for i in range(5):
tdSql.query("select distinct(hostname) from testdb.st")
tdSql.checkRows(11) # query 10 times every 10 second , test cache refresh tdSql.checkRows(11) # query 10 times every 10 second , test cache refresh
sleep(10) sleep(3)
def stop(self): def stop(self):
......
###################################################################
# Copyright (c) 2020 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import taos
import time
from util.log import *
from util.cases import *
from util.sql import *
from util.dnodes import *
class TDTestCase:
def __init__(self):
self.err_case = 0
self.curret_case = 0
def caseDescription(self):
'''
case1 <wenzhouwww>: [TD-12861] : this is an test case for SQL error for == and <> for basic query
'''
return
def init(self, conn, logSql):
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor(), logSql)
def create_stb(self):
basetime = int(round(time.time() * 1000))
tdSql.prepare()
tdSql.execute(f"create stable stb1(ts timestamp, c1 int) tags (tag1 int)")
for i in range(10):
tdSql.execute(f"create table t{i} using stb1 tags({i})")
tdSql.execute(f"insert into t{i} values ({basetime}, {i})")
pass
def check_issue(self):
tdSql.error("select first(c1) == max(c1) from stb1;")
tdSql.error("select first(c1) == max(c1) from stb1 group by tbname;")
tdSql.error("select first(c1) == first(*) from stb1;")
tdSql.error("select first(c1) == first(*) from stb1 group by tbname;")
tdSql.error("select first(*) == max(c1) from stb1;")
tdSql.error("select first(*) == max(c1) from stb1 group by tbname;")
tdSql.error("select first(c1) <> max(c1) from stb1 group by tbname;")
tdSql.error("select min(c1) == max(c1) from stb1;")
tdSql.error("select min(c1) == max(c1) from stb1 group by tbname;")
tdSql.error("select min(c1) == min(c1) from stb1;")
tdSql.error("select min(c1) == min(c1) from stb1 group by tbname;")
tdSql.error("select min(c1) == 1 from stb1;")
tdSql.error("select min(c1) == 1 from stb1 group by tbname;")
def run(self):
self.create_stb()
self.check_issue()
if self.err_case > 0:
tdLog.exit(f"{self.err_case} case run failed")
else:
tdLog.success("all case run passed")
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())
###################################################################
# Copyright (c) 2020 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import taos
import time
from util.log import *
from util.cases import *
from util.sql import *
from util.dnodes import *
class TDTestCase:
def __init__(self):
self.err_case = 0
self.curret_case = 0
def caseDescription(self):
'''
case1 <wenzhouwww>: [TD-12863] : this is an test case for compute error for query
'''
return
def init(self, conn, logSql):
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor(), logSql)
def create_stb(self):
basetime = int(round(time.time() * 1000))
tdSql.prepare()
tdSql.execute(f"create stable stb1(ts timestamp, c1 int) tags (tag1 int)")
for i in range(10):
tdSql.execute(f"create table t{i} using stb1 tags({i})")
tdSql.execute(f"insert into t{i} values ({basetime}, {i})")
pass
tdSql.execute(" insert into tb using stb1 tags(100) values(now ,NULL)")
def check_issue(self):
tdSql.query("select c1 from stb1")
tdSql.checkData(0,0,0)
tdSql.checkData(1,0,1)
tdSql.checkData(8,0,8)
tdSql.checkData(10,0,None)
tdSql.query("select c1+1000000000000000 from stb1")
tdSql.checkData(0,0,1000000000000000)
tdSql.checkData(1,0,10000000000000001)
tdSql.checkData(8,0,10000000000000008)
tdSql.checkData(10,0,None)
tdSql.query("select c1+10000000000000000 from stb1")
tdSql.checkData(0,0,10000000000000000)
tdSql.checkData(1,0,100000000000000001)
tdSql.checkData(8,0,100000000000000008)
tdSql.checkData(10,0,None)
tdSql.query("select c1+10000000000000000 from stb1")
tdSql.checkData(0,0,10000000000000000)
tdSql.checkData(1,0,100000000000000001)
tdSql.checkData(8,0,100000000000000008)
tdSql.checkData(10,0,None)
tdSql.query("select c1+10000000000000000000 from stb1")
tdSql.checkData(0,0,10000000000000000000)
tdSql.checkData(1,0,100000000000000000001)
tdSql.checkData(8,0,100000000000000000008)
tdSql.checkData(10,0,None)
def run(self):
self.create_stb()
self.check_issue()
if self.err_case > 0:
tdLog.exit(f"{self.err_case} case run failed")
else:
tdLog.success("all case run passed")
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())
###################################################################
# Copyright (c) 2020 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
from posixpath import split
import sys
import os
from util.log import *
from util.cases import *
from util.sql import *
from util.dnodes import *
class TDTestCase:
def init(self, conn, logSql):
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor(), logSql)
self.ts = 1420041600000 # 2015-01-01 00:00:00 this is begin time for first record
self.num = 10
def getBuildPath(self):
selfPath = os.path.dirname(os.path.realpath(__file__))
if ("community" in selfPath):
projPath = selfPath[:selfPath.find("community")]
else:
projPath = selfPath[:selfPath.find("tests")]
for root, dirs, files in os.walk(projPath):
if ("taosd" in files):
rootRealPath = os.path.dirname(os.path.realpath(root))
if ("packaging" not in rootRealPath):
buildPath = root[:len(root) - len("/build/bin")]
break
return buildPath
def caseDescription(self):
'''
case1 <wenzhouwww>: [TD-12909] :
this test case is for illegal SQL in query ,it will crash taosd.
'''
return
def run(self):
tdSql.prepare()
tdSql.execute("create database if not exists testdb keep 36500;")
tdSql.execute("use testdb;")
tdSql.execute("create stable st (ts timestamp , id int , value double) tags(hostname binary(10) ,ind int);")
for i in range(self.num):
tdSql.execute("insert into sub_%s using st tags('host_%s' , %d) values (%d , %d , %f );"%(str(i),str(i),i*10,self.ts+10000*i,i*2,i+10.00))
tdSql.query("select distinct(hostname) from testdb.st")
tdSql.checkRows(10)
tdSql.query("select count(*) from st where hostname >1")
tdSql.query("select count(*) from st where hostname >'1'")
tdSql.query("select count(*) from st where hostname <=1")
tdSql.query("select count(*) from st where hostname <='1'")
tdSql.query("select count(*) from st where hostname !=1")
tdSql.query("select count(*) from st where hostname !='1'")
tdSql.query("select count(*) from st where hostname <>1")
tdSql.query("select count(*) from st where hostname <>'1'")
tdSql.query("select count(*) from st where hostname in ('1','2')")
tdSql.query("select count(*) from st where hostname match '%'")
tdSql.query("select count(*) from st where hostname match '%1'")
tdSql.query("select count(*) from st where hostname between 1 and 2")
tdSql.query("select count(*) from st where hostname between 'abc' and 'def'")
tdSql.error("select count(*) from st where hostname between 1 and 2 or sum(1)")
tdSql.execute("select count(*) from st where hostname < max(123)")
tdSql.execute("select count(*) from st where hostname < max('abc')")
tdSql.execute("select count(*) from st where hostname < max(min(123))")
tdSql.execute("select count(*) from st where hostname < sum('abc')")
tdSql.execute("select count(*) from st where hostname < sum(min(123))")
tdSql.execute("select count(*) from st where hostname < diff('abc')")
tdSql.execute("select count(*) from st where hostname < diff(min(123))")
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())
###################################################################
# Copyright (c) 2020 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
from posixpath import split
import sys
import os
from util.log import *
from util.cases import *
from util.sql import *
from util.dnodes import *
class TDTestCase:
def init(self, conn, logSql):
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor(), logSql)
self.ts = 1420041600000 # 2015-01-01 00:00:00 this is begin time for first record
self.num = 10
def getBuildPath(self):
selfPath = os.path.dirname(os.path.realpath(__file__))
if ("community" in selfPath):
projPath = selfPath[:selfPath.find("community")]
else:
projPath = selfPath[:selfPath.find("tests")]
for root, dirs, files in os.walk(projPath):
if ("taosd" in files):
rootRealPath = os.path.dirname(os.path.realpath(root))
if ("packaging" not in rootRealPath):
buildPath = root[:len(root) - len("/build/bin")]
break
return buildPath
def caseDescription(self):
'''
case1 <wenzhouwww>: [TD-11389] :
this test case is an test case for cache error , it will let the cached data obtained by the client that has connected to taosd incorrect,
root cause : table schema is changed, tag hostname size is increased through schema-less insertion. The schema cache of client taos is not refreshed.
'''
return
def run(self):
tdSql.prepare()
tdSql.execute("use db")
functions_list = ["count","avg","twa","irate","sum","stddev","LEASTSQUARES","min","max","first","last","last_row()","top","bottom",
"spread","ceil","floor","round"]
os.system("taosBenchmark -t 10 -n 5 -y ")
params_list = ["(,)","(,,)","(current)","(current,,,)*tbname","(*),","(abc,,)"]
for func in functions_list:
for params in params_list:
sql = "select %s%s from test.meters;"%(func,params)
tdSql.error(sql)
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())
python3 ./test.py -f 2-query/TD-11256.py python3 ./test.py -f 2-query/TD-11256.py
# python3 ./test.py -f 2-query/TD-11389.py python3 ./test.py -f 2-query/TD-11389.py
python3 ./test.py -f 2-query/TD-11945_crash.py python3 ./test.py -f 2-query/TD-11945_crash.py
python3 ./test.py -f 2-query/TD-12340-12342.py python3 ./test.py -f 2-query/TD-12340-12342.py
python3 ./test.py -f 2-query/TD-11561.py python3 ./test.py -f 2-query/TD-11561.py
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册