383 lines
14 KiB
Python
383 lines
14 KiB
Python
###################################################################
|
|
# 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 datetime
|
|
|
|
from util.log import *
|
|
from util.cases import *
|
|
from util.sql import *
|
|
|
|
|
|
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-4541
|
|
|
|
tdLog.info("=============== step1,check normal table")
|
|
|
|
tdLog.info("=============== step1.1,drop table && create table")
|
|
cmd1 = 'drop table if exists length11 ;'
|
|
cmd2 = 'create table length11 (ts timestamp,lengthbia binary(10),lengthnchar nchar(20));'
|
|
tdLog.info(cmd1)
|
|
tdSql.execute(cmd1)
|
|
tdLog.info(cmd2)
|
|
tdSql.execute(cmd2)
|
|
|
|
tdLog.info("=============== step1.2,insert table right data")
|
|
cmd1 = 'insert into length11 values(now,\'aaaaaaaaaa\',\'bbbbbbbbbbbbbbbbbbbb\') ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.execute(cmd1)
|
|
tdSql.query('select * from length11 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb')
|
|
|
|
tdLog.info("=============== step1.3,insert table wrong data")
|
|
cmd1 = 'insert into length11 values(now,\'aaaaaaaaaa1\',\'bbbbbbbbbbbbbbbbbbbb1\') ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.error(cmd1)
|
|
try:
|
|
tdSql.execute(cmd1)
|
|
tdLog.exit("string data overflow")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("insert wrong data error catched")
|
|
tdSql.query('select * from length11 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb')
|
|
|
|
tdLog.info("=============== step1.4,modify columu length ")
|
|
cmd1 = 'alter table length11 modify column lengthbia binary(10) ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.error(cmd1)
|
|
try:
|
|
tdSql.execute(cmd1)
|
|
tdLog.exit("new column length should be bigger than old one")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("new column length should be bigger than old one")
|
|
|
|
cmd2 = 'alter table length11 modify column lengthnchar nchar(20);'
|
|
tdLog.info(cmd2)
|
|
tdSql.error(cmd2)
|
|
try:
|
|
tdSql.execute(cmd2)
|
|
tdLog.exit("new column length should be bigger than old one")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("new column length should be bigger than old one")
|
|
|
|
cmd3 = 'alter table length11 modify column lengthbia binary(11) ;'
|
|
cmd4 = 'describe length11 ;'
|
|
tdLog.info(cmd3)
|
|
tdSql.execute(cmd3)
|
|
tdLog.info(cmd4)
|
|
tdSql.execute(cmd4)
|
|
tdSql.query('describe length11 ;')
|
|
tdSql.checkData(1,2,11)
|
|
|
|
cmd5 = 'alter table length11 modify column lengthnchar nchar(21);'
|
|
cmd6 = 'describe length11 ;'
|
|
tdLog.info(cmd5)
|
|
tdSql.execute(cmd5)
|
|
tdLog.info(cmd6)
|
|
tdSql.execute(cmd6)
|
|
tdSql.query('describe length11 ;')
|
|
tdSql.checkData(2,2,21)
|
|
|
|
tdSql.query('select * from length11 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb')
|
|
|
|
|
|
tdLog.info("=============== step1.5,insert table right data")
|
|
cmd1 = 'insert into length11 values(now,\'aaaaaaaaaa1\',\'bbbbbbbbbbbbbbbbbbbb1\') ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.execute(cmd1)
|
|
tdSql.query('select * from length11 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa1')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb1')
|
|
|
|
|
|
|
|
|
|
tdLog.info("=============== step2,check stable table and tag")
|
|
|
|
tdLog.info("=============== step2.1,drop table && create table")
|
|
cmd1 = 'drop table if exists length1 ;'
|
|
cmd2 = 'drop table if exists length2 ;'
|
|
cmd3 = 'drop table if exists length2 ;'
|
|
cmd4 = 'drop table if exists lengthsta1 ;'
|
|
cmd5 = 'create stable lengthsta1(ts timestamp,lengthbia binary(10),lengthnchar nchar(20)) tags (tlengthbia binary(15),tlengthnchar nchar(25)) ;'
|
|
cmd6 = 'create table length1 using lengthsta1 tags(\'aaaaabbbbbaaaaa\',\'bbbbbaaaaabbbbbaaaaabbbbb\') ; '
|
|
tdLog.info(cmd1)
|
|
tdSql.execute(cmd1)
|
|
tdLog.info(cmd2)
|
|
tdSql.execute(cmd2)
|
|
tdLog.info(cmd3)
|
|
tdSql.execute(cmd3)
|
|
tdLog.info(cmd4)
|
|
tdSql.execute(cmd4)
|
|
tdLog.info(cmd5)
|
|
tdSql.execute(cmd5)
|
|
tdLog.info(cmd6)
|
|
tdSql.execute(cmd6)
|
|
|
|
tdLog.info("=============== step2.2,insert table right data")
|
|
cmd1 = 'insert into length1 values(now,\'aaaaaaaaaa\',\'bbbbbbbbbbbbbbbbbbbb\') ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.execute(cmd1)
|
|
tdSql.query('select * from length1 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb')
|
|
|
|
tdLog.info("=============== step2.3,insert table wrong data")
|
|
cmd1 = 'insert into length1 values(now,\'aaaaaaaaaa1\',\'bbbbbbbbbbbbbbbbbbbb1\') ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.error(cmd1)
|
|
try:
|
|
tdSql.execute(cmd1)
|
|
tdLog.exit("string data overflow")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("insert wrong data error catched")
|
|
tdSql.query('select * from length1 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb')
|
|
|
|
tdLog.info("=============== step2.4,modify columu length ")
|
|
cmd0 = 'alter table length1 modify column lengthbia binary(10) ;'
|
|
tdLog.info(cmd0)
|
|
tdSql.error(cmd0)
|
|
try:
|
|
tdSql.execute(cmd1)
|
|
tdLog.exit("invalid operation: column can only be modified by super table")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("invalid operation: column can only be modified by super table")
|
|
|
|
cmd1 = 'alter table lengthsta1 modify column lengthbia binary(10) ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.error(cmd1)
|
|
try:
|
|
tdSql.execute(cmd1)
|
|
tdLog.exit("new column length should be bigger than old one")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("new column length should be bigger than old one")
|
|
|
|
cmd2 = 'alter table lengthsta1 modify column lengthnchar nchar(20);'
|
|
tdLog.info(cmd2)
|
|
tdSql.error(cmd2)
|
|
try:
|
|
tdSql.execute(cmd2)
|
|
tdLog.exit("new column length should be bigger than old one")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("new column length should be bigger than old one")
|
|
|
|
cmd3 = 'alter table lengthsta1 modify column lengthbia binary(11) ;'
|
|
cmd4 = 'describe lengthsta1 ;'
|
|
tdLog.info(cmd3)
|
|
tdSql.execute(cmd3)
|
|
tdLog.info(cmd4)
|
|
tdSql.execute(cmd4)
|
|
tdSql.query('describe length1 ;')
|
|
tdSql.checkData(1,2,11)
|
|
|
|
cmd5 = 'alter table lengthsta1 modify column lengthnchar nchar(21);'
|
|
cmd6 = 'describe lengthsta1 ;'
|
|
tdLog.info(cmd5)
|
|
tdSql.execute(cmd5)
|
|
tdLog.info(cmd6)
|
|
tdSql.execute(cmd6)
|
|
tdSql.query('describe lengthsta1 ;')
|
|
tdSql.checkData(2,2,21)
|
|
|
|
tdSql.query('select * from lengthsta1 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb')
|
|
|
|
|
|
tdLog.info("=============== step2.5,insert table right data")
|
|
cmd1 = 'insert into length1 values(now,\'aaaaaaaaaa1\',\'bbbbbbbbbbbbbbbbbbbb1\') ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.execute(cmd1)
|
|
tdSql.query('select * from length1 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa1')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb1')
|
|
|
|
|
|
|
|
tdLog.info("=============== step2.6,create table wrong tag")
|
|
cmd1 = 'create table length2 using lengthsta1 tags(\'aaaaabbbbbaaaaa1\',\'bbbbbaaaaabbbbbaaaaabbbbb1\') ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.error(cmd1)
|
|
try:
|
|
tdSql.execute(cmd1)
|
|
tdLog.exit("invalid operation: tag value too long")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("invalid operation: tag value too long")
|
|
tdSql.query('select * from lengthsta1 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa1')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb1')
|
|
|
|
tdLog.info("=============== step2.7,modify tag columu length ")
|
|
cmd1 = 'alter table lengthsta1 modify tag tlengthbia binary(15) ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.error(cmd1)
|
|
try:
|
|
tdSql.execute(cmd1)
|
|
tdLog.exit("new column length should be bigger than old one")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("new column length should be bigger than old one")
|
|
|
|
cmd2 = 'alter table lengthsta1 modify tag tlengthnchar nchar(25);'
|
|
tdLog.info(cmd2)
|
|
tdSql.error(cmd2)
|
|
try:
|
|
tdSql.execute(cmd2)
|
|
tdLog.exit("new column length should be bigger than old one")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("new column length should be bigger than old one")
|
|
|
|
cmd3 = 'alter table lengthsta1 modify tag tlengthbia binary(16) ;'
|
|
cmd4 = 'describe lengthsta1 ;'
|
|
tdLog.info(cmd3)
|
|
tdSql.execute(cmd3)
|
|
tdLog.info(cmd4)
|
|
tdSql.execute(cmd4)
|
|
tdSql.query('describe lengthsta1 ;')
|
|
tdSql.checkData(3,2,16)
|
|
|
|
cmd5 = 'alter table lengthsta1 modify tag tlengthnchar nchar(26);'
|
|
cmd6 = 'describe lengthsta1 ;'
|
|
tdLog.info(cmd5)
|
|
tdSql.execute(cmd5)
|
|
tdLog.info(cmd6)
|
|
tdSql.execute(cmd6)
|
|
tdSql.query('describe lengthsta1 ;')
|
|
tdSql.checkData(4,2,26)
|
|
|
|
tdSql.query('select * from lengthsta1 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa1')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb1')
|
|
tdSql.checkData(0,3,'aaaaabbbbbaaaaa')
|
|
tdSql.checkData(0,4,'bbbbbaaaaabbbbbaaaaabbbbb')
|
|
|
|
|
|
tdLog.info("=============== step2.8,creat tag right data and insert data")
|
|
cmd1 = 'create table length2 using lengthsta1 tags(\'aaaaabbbbbaaaaa1\',\'bbbbbaaaaabbbbbaaaaabbbbb1\') ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.execute(cmd1)
|
|
tdSql.query('describe length2 ;')
|
|
tdSql.checkData(3,2,16)
|
|
tdSql.checkData(4,2,26)
|
|
|
|
cmd2 = 'insert into length2 values(now,\'aaaaaaaaaa1\',\'bbbbbbbbbbbbbbbbbbbb1\') ;'
|
|
tdLog.info(cmd2)
|
|
tdSql.execute(cmd2)
|
|
tdSql.query('select * from length2 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa1')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb1')
|
|
tdSql.query('select * from lengthsta1 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa1')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb1')
|
|
tdSql.checkData(0,3,'aaaaabbbbbaaaaa1')
|
|
tdSql.checkData(0,4,'bbbbbaaaaabbbbbaaaaabbbbb1')
|
|
|
|
|
|
tdLog.info("=============== step2.9,modify tag columu length again ")
|
|
cmd1 = 'alter table lengthsta1 modify tag tlengthbia binary(16) ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.error(cmd1)
|
|
try:
|
|
tdSql.execute(cmd1)
|
|
tdLog.exit("new column length should be bigger than old one")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("new column length should be bigger than old one")
|
|
|
|
cmd2 = 'alter table lengthsta1 modify tag tlengthnchar nchar(26);'
|
|
tdLog.info(cmd2)
|
|
tdSql.error(cmd2)
|
|
try:
|
|
tdSql.execute(cmd2)
|
|
tdLog.exit("new column length should be bigger than old one")
|
|
except Exception as e:
|
|
tdLog.info(repr(e))
|
|
tdLog.info("new column length should be bigger than old one")
|
|
|
|
cmd3 = 'alter table lengthsta1 modify tag tlengthbia binary(20) ;'
|
|
cmd4 = 'describe lengthsta1 ;'
|
|
tdLog.info(cmd3)
|
|
tdSql.execute(cmd3)
|
|
tdLog.info(cmd4)
|
|
tdSql.execute(cmd4)
|
|
tdSql.query('describe lengthsta1 ;')
|
|
tdSql.checkData(3,2,20)
|
|
|
|
cmd5 = 'alter table lengthsta1 modify tag tlengthnchar nchar(30);'
|
|
cmd6 = 'describe lengthsta1 ;'
|
|
tdLog.info(cmd5)
|
|
tdSql.execute(cmd5)
|
|
tdLog.info(cmd6)
|
|
tdSql.execute(cmd6)
|
|
tdSql.query('describe lengthsta1 ;')
|
|
tdSql.checkData(4,2,30)
|
|
|
|
tdSql.query('select * from lengthsta1 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa1')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb1')
|
|
tdSql.checkData(0,3,'aaaaabbbbbaaaaa1')
|
|
tdSql.checkData(0,4,'bbbbbaaaaabbbbbaaaaabbbbb1')
|
|
|
|
|
|
tdLog.info("=============== step2.10,creat tag right data and insert data again")
|
|
cmd1 = 'create table length3 using lengthsta1 tags(\'aaaaabbbbbaaaaabbbbb\',\'bbbbbaaaaabbbbbaaaaabbbbbaaaaa\') ;'
|
|
tdLog.info(cmd1)
|
|
tdSql.execute(cmd1)
|
|
tdSql.query('describe length3 ;')
|
|
tdSql.checkData(3,2,20)
|
|
tdSql.checkData(4,2,30)
|
|
|
|
cmd2 = 'insert into length3 values(now,\'aaaaaaaaaa1\',\'bbbbbbbbbbbbbbbbbbbb1\') ;'
|
|
tdLog.info(cmd2)
|
|
tdSql.execute(cmd2)
|
|
tdSql.query('select * from length3 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa1')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb1')
|
|
tdSql.query('select * from lengthsta1 order by ts desc')
|
|
tdSql.checkData(0,1,'aaaaaaaaaa1')
|
|
tdSql.checkData(0,2,'bbbbbbbbbbbbbbbbbbbb1')
|
|
tdSql.checkData(0,3,'aaaaabbbbbaaaaabbbbb')
|
|
tdSql.checkData(0,4,'bbbbbaaaaabbbbbaaaaabbbbbaaaaa')
|
|
|
|
|
|
|
|
|
|
def stop(self):
|
|
tdSql.close()
|
|
tdLog.success("%s successfully executed" % __file__)
|
|
|
|
|
|
tdCases.addWindows(__file__, TDTestCase())
|
|
tdCases.addLinux(__file__, TDTestCase())
|