-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #23803 from taosdata/ts4295
add test case for ts-4295
- Loading branch information
Showing
3 changed files
with
148 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
import random | ||
import string | ||
from util.log import * | ||
from util.cases import * | ||
from util.sql import * | ||
from util.sqlset import * | ||
from util import constant | ||
from util.common import * | ||
|
||
|
||
class TDTestCase: | ||
"""Verify the insert with format exception for task TD-27388 | ||
""" | ||
def init(self, conn, logSql, replicaVar=1): | ||
self.replicaVar = int(replicaVar) | ||
tdLog.debug("start to execute %s" % __file__) | ||
tdSql.init(conn.cursor()) | ||
self.dbname = 'db' | ||
self.stbname = 'st' | ||
tdSql.execute("create database {};".format(self.dbname)) | ||
tdSql.execute("use {};".format(self.dbname)) | ||
tdSql.execute("create table st (ts timestamp, col1 int, col2 varchar(64)) tags (t1 int, t2 varchar(32));") | ||
|
||
def test_half_quotes(self): | ||
sql_list = [ | ||
"insert into t1 using st tags(1, 'tag1) values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, tag1') values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg);", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, test msg');", | ||
"insert into t1 using st tags(1, 'tag1' values(now, 1, test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg)';", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg);", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2) values(now, 2, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, tag2') values(now, 2, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1) values(now, 1, 'test msg') t2 using st tags(2, 'tag2) values(now, 2, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg) t2 using st tags(2, 'tag2') values(now, 2, test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2') values(now, 2, 'test msg);", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2') values(now, 2, 'test msg);" | ||
] | ||
for sql in sql_list: | ||
tdLog.debug("execute harlf quotes sql: %s" % sql) | ||
tdSql.error(sql) | ||
|
||
def test_esc(self): | ||
sql_list = [ | ||
"insert into t1 using st tags(1, 'tag1\\') values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, \\'tag1') values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg\\');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, \\'test msg');", | ||
"insert into t1 using st tags(1, \\'tag1\\') values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, \\'test msg\\');", | ||
"insert into t1 using st tags(1, \\'tag1\\') values(now, 1, \\'test msg\\');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2\\') values(now, 2, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, \\'tag2') values(now, 2, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2') values(now, 2, \\'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2') values(now, 2, 'test msg\\');", | ||
"insert into t1 using st tags(1, \\'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2\\') values(now, 2, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2') values(now, 2, \\'test msg\\');" | ||
] | ||
for sql in sql_list: | ||
tdLog.debug("execute escape character sql: %s" % sql) | ||
tdSql.error(sql) | ||
|
||
def test_specific_character(self): | ||
sql_list = [ | ||
"insert into t1 using st tags(1, 'tag1$) values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1,) values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1'') values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1() values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1*) values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1+) values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1,) values(now, 1, 'test msg');", | ||
"isnert into t1 using st tags(1, 'tag1-) values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1.) values(now, 1, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg$);", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg,);", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg+%+-.);", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2$) values(now, 2, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2,) values(now, 2, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2'') values(now, 2, 'test msg');", | ||
"insert into t1 using st tags(1, 'tag1') values(now, 1, 'test msg') t2 using st tags(2, 'tag2() values(now, 2, 'test msg');" | ||
] | ||
for sql in sql_list: | ||
tdLog.debug("execute specific character sql: %s" % sql) | ||
tdSql.error(sql) | ||
|
||
def run(self): | ||
self.test_half_quotes() | ||
self.test_esc() | ||
self.test_specific_character() | ||
|
||
def stop(self): | ||
tdSql.close() | ||
tdLog.success("%s successfully executed" % __file__) | ||
|
||
tdCases.addWindows(__file__, TDTestCase()) | ||
tdCases.addLinux(__file__, TDTestCase()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
import os | ||
import sys | ||
from util.log import * | ||
from util.cases import * | ||
from util.sql import * | ||
from util.dnodes import tdDnodes | ||
from math import inf | ||
import taos | ||
|
||
class TDTestCase: | ||
"""Verify inserting varbinary type data of ts-4295 | ||
""" | ||
def init(self, conn, logSql, replicaVer=1): | ||
tdLog.debug("start to execute %s" % __file__) | ||
tdSql.init(conn.cursor(), True) | ||
self.conn = conn | ||
self.db_name = "db" | ||
self.stable_name = "st" | ||
|
||
def run(self): | ||
tdSql.execute("create database if not exists %s" % self.db_name) | ||
tdSql.execute("use %s" % self.db_name) | ||
# create super table | ||
tdSql.execute("create table %s (ts timestamp, c1 varbinary(32)) tags (t1 int)" % self.stable_name) | ||
# create child table | ||
child_table_list = [] | ||
for i in range(10): | ||
child_table_name = "ct_" + str(i+1) | ||
child_table_list.append(child_table_name) | ||
tdSql.execute("create table %s using st tags(%s);" % (child_table_name, str(i+1))) | ||
tdLog.info("create table %s successfully" % child_table_name) | ||
# insert data | ||
for i in range(100): | ||
sql = "insert into table_name values" | ||
for j in range(10000): | ||
sql += "(now+%ss, '0x7661726331')," % str(j+1) | ||
for child_table in child_table_list: | ||
tdSql.execute(sql.replace("table_name", child_table)) | ||
tdLog.info("Insert data into %s successfully" % child_table) | ||
tdLog.info("Insert data round %s successfully" % str(i+1)) | ||
tdSql.execute("flush database %s" % self.db_name) | ||
|
||
def stop(self): | ||
tdSql.execute("drop database if exists %s" % self.db_name) | ||
tdSql.close() | ||
tdLog.success("%s successfully executed" % __file__) | ||
|
||
tdCases.addWindows(__file__, TDTestCase()) | ||
tdCases.addLinux(__file__, TDTestCase()) |