TDengine/tests/pytest/insert/insert_locking.py

178 lines
6.6 KiB
Python
Raw Normal View History

Hotfix/sangshuduo/m2d 20210707 (#6795) * [TD-4132]<test>: add taosdump-testcase of boundary value testing * [TD-3952]<test>: add taodemo-testcase that query with restful connector * merge master * modify taosdemo-testcase * add testcase of async subscirbe and max sql num * testcase-subscribe of super table * testcase-modify sub * modify subscribe testcase * [TD-4238]<test>: add taodemo-testcase that records of number in request sql less than 32767 * add taosdemo-subscribe-testcase * update taosdemo testcase * temp commit * temp commit * temp commit * temp1 * temp * [TD-4835] add lua lib * [TD-4369]<test>: add testcase of resubscibe * [TD-4826]<fix>: new error code 0x0406 (Dnode is exiting) for tsc * [TD-4369]<test>: add testcase of resubscibe and json file * temp * update master to develop's version * Update boundary2.py * [TD-4912]<hotfix>: fix coredump when drop vnode * Hotfix/sangshuduo/td 3801 taosdump coverity scan issue (#6642) * [TD-3801]<fix>: taosdump coverity scan issue. * merge from commit: 069169e7c1 and fix coverity scan issue. Co-authored-by: Shuduo Sang <sdsang@taosdata.com> * [TD-4932]fix jenkins errors on master branch (#6645) * [TD-4932]fix jenkins errors on master branch * fix * fix * fix * fix * [TD-4132]<test>:modify taosdump-testcase of column length * [TD-4918]<fix>: taosdemo subscribe endAfterResume. (#6653) * [TD-4915]<fix> fix show-create-database except * Hotfix/sangshuduo/td 4892 taosdemo sub fetch (#6669) * [TD-4892]<fix>: taosdemo subscribe fetch result. * fix stbname length. * restrict prefix length. * submit empty * fix minor code. * fix crash if no result file. * decrease few debug print level. * fix offset issue * [TD-4987]<fix>: issues memory sanitizier detected. (#6675) * [TD-4826]<fix>: no extra sleep if no message in vwqueue * [TD-4593]<fix>: fix vnode cannnot close while syncing * Hotfix/sangshuduo/td 4918 taosdemo sub afterconsume (#6685) * [TD-4918]<fix>: taosdemo subscribe endAfterResume. * fix mask length. * fix heap use-after-free. * Hotfix/sangshuduo/td 4987 detected by mem sanitizer (#6684) * [TD-4987]<fix>: issues memory sanitizier detected. * fix mask width issue. * [TD-4828]<fix> handle dnode exit code * Hotfix/sangshuduo/td 3973 use jemalloc for master (#6702) * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: use jemalloc. build works as following instructions: cmake .. -DJEMALLOC_ENABLED=true make * fix jemalloc at tag 5.2.1 * fix conflicts * make install works. * fix conflicts. * release script works. * fix typo Co-authored-by: Shuduo Sang <sdsang@taosdata.com> * TD-4835 * only compile in lua * [td-4748]<fix>:fix the temp file generate buf on windows platform. * change cmake options * [TD-5007]<fix>: use build directory's taosdump to test. (#6710) btw, solve two taosdemo test cases too. * Hotfix/sangshuduo/td 4838 taosdump binary len bug (#6713) * [TD-4838]<fix>: taosdump binary length bug. * taosdump code refactoring. * fix arm32 compile issue. * Hotfix/sangshuduo/td 4918 taosdemo sub afterconsume (#6723) * [TD-4918]<fix>: taosdemo subscribe endAfterResume. * fix mask length. * fix heap use-after-free. * fix illegal input value of consume. * Hotfix/sangshuduo/td 3197 taosdemo coverity scan for master (#6725) * [TD-3197]<fix>: taosdemo and taosdump coverity scan issues. * exit if read sample file failed. Co-authored-by: Shuduo Sang <sdsang@taosdata.com> * [TD-4985]<test>:test query limit and offset function * [TD-4985]<test>:test query limit and offset function * [TD-4985]<test>:test query limit and offset function * [TD-4985]<test>:test query limit and offset function * [TD-5018]<fix>: taosdemo prompt if the batch is too large to insert data. (#6736) * fix dead loop issue * fix taosdemoPerformance.py runtime error * Hotfix/sangshuduo/td 3973 use jemalloc for master (#6753) * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: use jemalloc. build works as following instructions: cmake .. -DJEMALLOC_ENABLED=true make * fix jemalloc at tag 5.2.1 * fix conflicts * make install works. * fix conflicts. * release script works. * fix typo * [TD-3937]<feature>: support jemalloc add install funtion to all scripts. Co-authored-by: Shuduo Sang <sdsang@taosdata.com> * Hotfix/sangshuduo/td 3973 use jemalloc for master (#6763) * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: use jemalloc. build works as following instructions: cmake .. -DJEMALLOC_ENABLED=true make * fix jemalloc at tag 5.2.1 * fix conflicts * make install works. * fix conflicts. * release script works. * fix typo * [TD-3937]<feature>: support jemalloc add install funtion to all scripts. * adjust install_jemalloc() position for check compatibility. Co-authored-by: Shuduo Sang <sdsang@taosdata.com> * Hotfix/sangshuduo/td 3973 use jemalloc for master (#6765) * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: use jemalloc. build works as following instructions: cmake .. -DJEMALLOC_ENABLED=true make * fix jemalloc at tag 5.2.1 * fix conflicts * make install works. * fix conflicts. * release script works. * fix typo * [TD-3937]<feature>: support jemalloc add install funtion to all scripts. * adjust install_jemalloc() position for check compatibility. * fix position bug. Co-authored-by: Shuduo Sang <sdsang@taosdata.com> * [TD-5067]<fix>: taosdemo stmt use sample data (#6760) * Hotfix/sangshuduo/td 3973 use jemalloc for master (#6768) * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: use jemalloc. build works as following instructions: cmake .. -DJEMALLOC_ENABLED=true make * fix jemalloc at tag 5.2.1 * fix conflicts * make install works. * fix conflicts. * release script works. * fix typo * [TD-3937]<feature>: support jemalloc add install funtion to all scripts. * adjust install_jemalloc() position for check compatibility. * fix position bug. * add ldconfig for jemalloc library cache refresh. Co-authored-by: Shuduo Sang <sdsang@taosdata.com> * [TD-5063]<test>:test insert locking bug * [TD-5063]<test>:test insert locking bug * [TD-4705]<fix>: disallow file sync starting when vnode closing * Hotfix/sangshuduo/td 5053 taosdump support nanosecond for master (#6778) * cherrypick from develop branch * fix arm32 compile issue. * [TD-5053]<feature>: taosdump supports nanosecond. * fix precision parsing order issue. * [TD-5053]<fix>: taosdump support nanosecond. pre-cherry-pick. * Hotfix/sangshuduo/td 5100 gtest centos for master (#6781) * cherry pick from develop branch. * detect both shared library and static library. * Hotfix/sangshuduo/td 3973 use jemalloc for master (#6789) * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: use jemalloc. build works as following instructions: cmake .. -DJEMALLOC_ENABLED=true make * fix jemalloc at tag 5.2.1 * fix conflicts * make install works. * fix conflicts. * release script works. * fix typo * [TD-3937]<feature>: support jemalloc add install funtion to all scripts. * adjust install_jemalloc() position for check compatibility. * fix position bug. * add ldconfig for jemalloc library cache refresh. Co-authored-by: Shuduo Sang <sdsang@taosdata.com> * Hotfix/sangshuduo/td 3973 use jemalloc for master (#6794) * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: add jemalloc as submodule. * [TD-3973]<feature>: use jemalloc. build works as following instructions: cmake .. -DJEMALLOC_ENABLED=true make * fix jemalloc at tag 5.2.1 * fix conflicts * make install works. * fix conflicts. * release script works. * fix typo * [TD-3937]<feature>: support jemalloc add install funtion to all scripts. * adjust install_jemalloc() position for check compatibility. * fix position bug. * add ldconfig for jemalloc library cache refresh. * cherry pick from develop branch. * cherry pick from develop branch. Co-authored-by: Shuduo Sang <sdsang@taosdata.com> * fix taosdumpTest case as -N will lead no property dumped. Co-authored-by: tomchon <haoran920c@163.com> Co-authored-by: Shengliang Guan <slguan@taosdata.com> Co-authored-by: Minglei Jin <mljin@taosdata.com> Co-authored-by: Baosheng Chang <changb9@mcmaster.ca> Co-authored-by: Hongze Cheng <hzcheng@taosdata.com> Co-authored-by: Shuduo Sang <sdsang@taosdata.com> Co-authored-by: Yiqing Liu <yqliu@taosdata.com> Co-authored-by: Hui Li <52318143+plum-lihui@users.noreply.github.com> Co-authored-by: yihaoDeng <yhdeng@taosdata.com> Co-authored-by: wpan <wpan@taosdata.com> Co-authored-by: Haojun Liao <hjxilinx@users.noreply.github.com> Co-authored-by: Haojun Liao <hjliao@taosdata.com> Co-authored-by: happyguoxy <happy_guoxy@163.com> Co-authored-by: Ping Xiao <pxiao@taosdata.com>
2021-07-07 23:01:49 +00:00
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import sys
import taos
from util.log import tdLog
from util.cases import tdCases
from util.sql import tdSql
import random
class TDTestCase:
def init(self, conn, logSql):
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor(), logSql)
def run(self):
tdSql.prepare()
# test case for https://jira.taosdata.com:18080/browse/TD-5021
tdLog.info("\n\n----------step1 : drop db and create db----------\n")
tdSql.execute('''drop database if exists db ;''')
tdSql.execute('''create database db ;''')
sql = '''show databases;'''
tdSql.query(sql)
tdSql.checkRows(1)
tdLog.info("\n\n----------step2 : create stable----------\n")
tdSql.execute('''create stable
db.stable_1 (ts timestamp, payload binary(256))
tags(t1 binary(16),t2 int);''')
sql = '''show db.stables;'''
tdSql.query(sql)
tdSql.checkRows(1)
tdLog.info("\n\n----------step3 : create table and insert----------\n")
sql = '''insert into db.table1 using db.stable_1 (t1 , t2) tags ("table_1" , 111) ( values (now, ;'''
tdLog.info(sql)
tdSql.error(sql)
try:
tdSql.execute(sql)
tdLog.exit(" unexpected token")
except Exception as e:
tdLog.info(repr(e))
tdLog.info("DB error: syntax error near ', ;' (unexpected token)")
sql = '''insert into db.table1(ts , payload) using db.stable_1 (t1 , t2) tags ("table_1" , 111) ( values (now, ;'''
tdLog.info(sql)
tdSql.error(sql)
try:
tdSql.execute(sql)
tdLog.exit(" bind columns again")
except Exception as e:
tdLog.info(repr(e))
tdLog.info("DB error: syntax error near ', ;' (bind columns again)")
sql = '''insert into db.table1 using db.stable_1 (t1 , t2) tags ("table_1",111) (ts , payload) ( values (now, ;'''
tdLog.info(sql)
tdSql.error(sql)
try:
tdSql.execute(sql)
tdLog.exit(" keyword VALUES or FILE required ")
except Exception as e:
tdLog.info(repr(e))
tdLog.info("DB error: invalid SQL: (keyword VALUES or FILE required)")
tdSql.execute('''insert into db.table1 using db.stable_1 (t1 , t2)
tags ("table_1" , 111) values ( now , 1) ''')
sql = '''select * from db.stable_1;'''
tdSql.query(sql)
tdSql.checkRows(1)
tdSql.checkData(0,1,1)
tdSql.checkData(0,2,'table_1')
tdLog.info("\n\n----------step4 : create table and insert again----------\n")
sql = '''insert into db.table2 using db.stable_1 (t1) tags ("table_2") ( values (now, ;'''
tdLog.info(sql)
tdSql.error(sql)
try:
tdSql.execute(sql)
tdLog.exit(" unexpected token")
except Exception as e:
tdLog.info(repr(e))
tdLog.info("DB error: syntax error near ', ;' (unexpected token)")
tdSql.execute('''insert into db.table2 using db.stable_1 (t1)
tags ("table_2") values ( now , 2) ''')
sql = '''select * from db.stable_1;'''
tdSql.query(sql)
tdSql.checkRows(2)
tdSql.checkData(1,1,2)
tdSql.checkData(1,2,'table_2')
tdLog.info("\n\n----------step5 : create table and insert without db----------\n")
tdSql.execute('''use db''')
sql = '''insert into table3 using stable_1 (t1) tags ("table_3") ( values (now, ;'''
tdLog.info(sql)
tdSql.error(sql)
try:
tdSql.execute(sql)
tdLog.exit(" unexpected token")
except Exception as e:
tdLog.info(repr(e))
tdLog.info("DB error: syntax error near ', ;' (unexpected token)")
tdSql.execute('''insert into table3 using stable_1 (t1 , t2)
tags ("table_3" , 333) values ( now , 3) ''')
sql = '''select * from stable_1;'''
tdSql.query(sql)
tdSql.checkRows(3)
tdSql.checkData(2,1,3)
tdSql.checkData(2,2,'table_3')
tdLog.info("\n\n----------step6 : create tables in one sql ----------\n")
sql = '''insert into table4 using stable_1 (t1) tags ("table_4") values (now, 4)
table5 using stable_1 (t1) tags ("table_5") ( values (now, ;'''
tdLog.info(sql)
tdSql.error(sql)
try:
tdSql.execute(sql)
tdLog.exit(" unexpected token")
except Exception as e:
tdLog.info(repr(e))
tdLog.info("DB error: syntax error near ', ;' (unexpected token)")
tdSql.execute('''insert into table4 using stable_1 (t1) tags ("table_4") values (now, 4)
table5 using stable_1 (t1) tags ("table_5") values (now, 5) ''')
sql = '''select * from stable_1;'''
tdSql.query(sql)
tdSql.checkRows(5)
tdSql.checkData(3,1,4)
tdSql.checkData(3,2,'table_4')
tdSql.checkData(4,1,5)
tdSql.checkData(4,2,'table_5')
sql = '''insert into table6 using stable_1 (t1) tags ("table_6") ( values (now,
table7 using stable_1 (t1) tags ("table_7") values (now, 7);'''
tdLog.info(sql)
tdSql.error(sql)
try:
tdSql.execute(sql)
tdLog.exit(" invalid SQL")
except Exception as e:
tdLog.info(repr(e))
tdLog.info("invalid SQL")
tdSql.execute('''insert into table6 using stable_1 (t1 , t2) tags ("table_6" , 666) values (now, 6)
table7 using stable_1 (t1) tags ("table_7") values (now, 7) ''')
sql = '''select * from stable_1;'''
tdSql.query(sql)
tdSql.checkRows(7)
tdSql.checkData(5,1,6)
tdSql.checkData(5,2,'table_6')
tdSql.checkData(6,1,7)
tdSql.checkData(6,2,'table_7')
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())