mirror of
https://github.com/taosdata/TDengine
synced 2026-05-24 10:09:01 +00:00
155 lines
No EOL
6.9 KiB
Python
155 lines
No EOL
6.9 KiB
Python
from new_test_framework.utils import tdLog, tdSql, tdStream, sc, clusterComCheck
|
|
|
|
|
|
class TestWriteInsertSelect:
|
|
|
|
def setup_class(cls):
|
|
tdLog.debug(f"start to execute {__file__}")
|
|
|
|
def test_write_insert_select(self):
|
|
"""Write: insert into select
|
|
|
|
1. Insert into select from child table
|
|
2. Insert into select from normal table
|
|
3. Insert into select from super table
|
|
|
|
Catalog:
|
|
- DataIngestion
|
|
|
|
Since: v3.0.0.0
|
|
|
|
Labels: common,ci
|
|
|
|
Jira: None
|
|
|
|
History:
|
|
- 2025-4-28 Simon Guan Migrated from tsim/insert/insert_select.sim
|
|
|
|
"""
|
|
|
|
self.Test1()
|
|
tdStream.dropAllStreamsAndDbs()
|
|
self.Test2()
|
|
tdStream.dropAllStreamsAndDbs()
|
|
|
|
def Test1(self):
|
|
tdLog.info(f"======== step1")
|
|
tdSql.prepare(dbname="db1", vgroups=3)
|
|
tdSql.execute(f"use db1;")
|
|
tdSql.execute(
|
|
f"create stable st1 (ts timestamp, f1 int, f2 binary(200)) tags(t1 int);"
|
|
)
|
|
tdSql.execute(f"create table tb1 using st1 tags(1);")
|
|
tdSql.execute(f"insert into tb1 values ('2022-07-07 10:01:01', 11, 'aaa');")
|
|
tdSql.execute(f"insert into tb1 values ('2022-07-07 11:01:02', 12, 'bbb');")
|
|
tdSql.execute(f"create table tb2 using st1 tags(2);")
|
|
tdSql.execute(f"insert into tb2 values ('2022-07-07 10:02:01', 21, 'aaa');")
|
|
tdSql.execute(f"insert into tb2 values ('2022-07-07 11:02:02', 22, 'bbb');")
|
|
tdSql.execute(f"create table tb3 using st1 tags(3);")
|
|
tdSql.execute(f"insert into tb3 values ('2022-07-07 10:03:01', 31, 'aaa');")
|
|
tdSql.execute(f"insert into tb3 values ('2022-07-07 11:03:02', 32, 'bbb');")
|
|
tdSql.execute(f"create table tb4 using st1 tags(4);")
|
|
tdSql.execute(f"insert into tb4 select * from tb1;")
|
|
tdSql.query(f"select * from tb4;")
|
|
tdSql.checkRows(2)
|
|
|
|
tdSql.execute(f"insert into tb4 select ts,f1,f2 from st1;")
|
|
tdSql.query(f"select * from tb4;")
|
|
tdSql.checkRows(6)
|
|
|
|
tdSql.execute(
|
|
f"create table tba (ts timestamp, f1 binary(10), f2 bigint, f3 double);"
|
|
)
|
|
tdSql.error(f"insert into tba select * from tb1;")
|
|
tdSql.execute(f"insert into tba (ts,f2,f1) select * from tb1;")
|
|
tdSql.query(f"select * from tba;")
|
|
tdSql.checkRows(2)
|
|
|
|
tdSql.execute(
|
|
f"create table tbb (ts timestamp, f1 binary(10), f2 bigint, f3 double);"
|
|
)
|
|
tdSql.execute(f"insert into tbb (f2,f1,ts) select f1+1,f2,ts+3 from tb2;")
|
|
tdSql.query(f"select * from tbb;")
|
|
tdSql.checkRows(2)
|
|
|
|
tdLog.info(f"======== step2")
|
|
tdSql.execute(f"drop database if exists db1;")
|
|
tdSql.execute(f"create database db1 vgroups 1;")
|
|
tdSql.execute(f"use db1;")
|
|
tdSql.execute(f"create table t1(ts timestamp, a int, b int );")
|
|
tdSql.execute(f"create table t2(ts timestamp, a int, b int );")
|
|
tdSql.execute(f"insert into t1 values(1648791211000,1,2);")
|
|
tdSql.execute(f"insert into t2 (ts, b, a) select ts, a, b from t1;")
|
|
tdSql.query(f"select * from t2;")
|
|
tdSql.checkRows(1)
|
|
|
|
tdSql.checkData(0, 1, 2)
|
|
|
|
tdSql.checkData(0, 2, 1)
|
|
|
|
tdSql.execute(f"insert into t2 (ts, b, a) select ts + 1, 11, 12 from t1;")
|
|
tdSql.query(f"select * from t2;")
|
|
tdSql.checkRows(2)
|
|
tdSql.checkData(0, 1, 2)
|
|
tdSql.checkData(0, 2, 1)
|
|
tdSql.checkData(1, 1, 12)
|
|
tdSql.checkData(1, 2, 11)
|
|
|
|
def Test2(self):
|
|
tdLog.info(f"======== ctb not exists")
|
|
tdSql.prepare(dbname="db2", vgroups=3)
|
|
tdSql.execute(f"use db2;")
|
|
tdSql.execute(
|
|
f"CREATE STABLE IF NOT EXISTS dst_smeters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS(groupId INT, location BINARY(24));"
|
|
)
|
|
tdSql.execute(f"CREATE TABLE IF NOT EXISTS meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT);")
|
|
tdSql.execute(f"INSERT INTO meters values('2021-04-19 08:00:07', 1, 1, 1)('2021-04-19 08:00:08', 2, 2, 2);")
|
|
tdSql.execute(f"INSERT INTO dst_smeters(tbname, ts, current, voltage, location) select concat(tbname,'_', to_char(ts, 'SS')) as sub_table_name,ts, current, voltage,to_char(ts, 'SS') as location from meters partition by tbname;")
|
|
tdSql.query(f"select * from dst_smeters;")
|
|
tdSql.checkRows(2)
|
|
tdSql.query(f"select location, groupId, ts, current, voltage, phase from meters_07;")
|
|
tdSql.checkData(0, 0, "07")
|
|
tdSql.checkData(0, 1, None)
|
|
tdSql.checkRows(1)
|
|
tdSql.query(f"select location, groupId, ts, current, voltage, phase from meters_08;")
|
|
tdSql.checkRows(1)
|
|
tdSql.checkData(0, 0, "08")
|
|
tdSql.checkData(0, 1, None)
|
|
|
|
|
|
tdLog.info(f"======== ctb exists")
|
|
tdSql.execute(f"INSERT INTO dst_smeters(tbname, ts, current, voltage,location) select concat(tbname,'_', to_char(ts, 'SS')) as sub_table_name,ts+1000, current, voltage, to_char(ts+10000, 'SS') as location from meters partition by tbname;")
|
|
tdSql.query(f"select location, groupId, ts, current, voltage, phase from meters_08;")
|
|
tdSql.checkRows(2)
|
|
tdSql.checkData(0, 0, "08")
|
|
tdSql.checkData(1, 0, "08")
|
|
tdSql.checkData(0, 1, None)
|
|
tdSql.checkData(1, 1, None)
|
|
tdSql.checkData(0, 2, "2021-04-19 08:00:08")
|
|
tdSql.checkData(0, 3, 2)
|
|
tdSql.checkData(0, 4, 2)
|
|
tdSql.checkData(0, 5, None)
|
|
tdSql.checkData(1, 2, "2021-04-19 08:00:09")
|
|
tdSql.checkData(1, 3, 2)
|
|
tdSql.checkData(1, 4, 2)
|
|
tdSql.checkData(1, 5, None)
|
|
|
|
tdLog.info(f"======== ctb not exists and no tags")
|
|
tdSql.execute(f"INSERT INTO dst_smeters(tbname, ts, current, voltage)select concat(tbname,'_', to_char(ts+10000, 'SS')) as sub_table_name,ts, current, voltage from meters partition by tbname;")
|
|
tdSql.query(f"select location, groupId, ts, current, voltage, phase from meters_17;")
|
|
tdSql.checkRows(1)
|
|
tdSql.checkData(0, 0, None)
|
|
tdSql.checkData(0, 1, None)
|
|
tdSql.checkData(0, 2, "2021-04-19 08:00:07")
|
|
tdSql.checkData(0, 3, 1)
|
|
tdSql.checkData(0, 4, 1)
|
|
tdSql.checkData(0, 5, None)
|
|
|
|
tdLog.info(f"======== no tbname")
|
|
tdSql.error(f"INSERT INTO dst_smeters(ts, current, voltage, phase) select ts, current, voltage, phase from meters partition by tbname;")
|
|
|
|
tdLog.info(f"======== no pk")
|
|
tdSql.error(f"INSERT INTO dst_smeters(tbname, current, voltage,location) select concat(tbname,'_', to_char(ts, 'SS')) as sub_table_name, current, voltage, to_char(ts+10000, 'SS') as location from meters partition by tbname;")
|
|
|
|
tdLog.info(f"======== tbname isn't in first field")
|
|
tdSql.error(f"INSERT INTO dst_smeters(tbname, current, voltage,location) select concat(tbname,'_', to_char(ts, 'SS')) as sub_table_name, current, voltage, to_char(ts+10000, 'SS') as location from meters partition by tbname;") |