TDengine/test/cases/06-DataIngestion/01-SQL/test_write_delete.py

309 lines
9.5 KiB
Python

from new_test_framework.utils import tdLog, tdSql, tdStream, sc, clusterComCheck
class TestWriteDelete:
def setup_class(cls):
tdLog.debug(f"start to execute {__file__}")
def test_write_delete(self):
"""Write: delete data
1. Insert data
2. Flush the database
3.Delete data by specific timestamp
4. Delete data by timestamp range
5. Delete data using timestamp condition comparisons
6. Restart the dnode
7. Check data integrity
Catalog:
- DataIngestion:Delete
Since: v3.0.0.0
Labels: common,ci
Jira: None
History:
- 2025-8-12 Simon Guan Migrated from tsim/parser/regressiontest.sim
- 2025-8-12 Simon Guan Migrated from tsim/query/delete_and_query.sim
- 2025-8-12 Simon Guan Migrated from tsim/insert/insert_drop.sim
"""
self.RegressionTest()
tdStream.dropAllStreamsAndDbs()
self.DeleteAndQuery()
tdStream.dropAllStreamsAndDbs()
self.InsertDrop()
tdStream.dropAllStreamsAndDbs()
def RegressionTest(self):
dbPrefix = "reg_db"
tb = "tb"
rowNum = 8200
ts0 = 1537146000000
delta = 100
tdLog.info(f"========== reg.sim")
i = 0
db = dbPrefix + str(i)
tdSql.execute(f"create database {db} vgroups 1 cachemodel 'last_row'")
tdSql.execute(f"use {db}")
tdSql.execute(f"create table {tb} (ts timestamp, c1 int)")
i = 0
ts = ts0
x = 0
while x < rowNum:
xs = x * delta
ts = ts0 + xs
tdSql.execute(f"insert into {tb} values ( {ts} , {x} )")
x = x + 1
tdSql.execute(f"flush database {db}")
tdSql.execute(f"delete from {tb} where ts=1537146000000")
tdSql.execute(f"delete from {tb} where ts=1537146409500")
tdLog.info(f"=========================> TS-2410")
tdSql.query(f"select * from {tb} limit 20 offset 4090")
tdLog.info(f"{tdSql.getData(0,0)}")
tdLog.info(f"{tdSql.getData(1,0)}")
tdLog.info(f"{tdSql.getData(2,0)}")
tdLog.info(f"{tdSql.getData(3,0)}")
tdLog.info(f"{tdSql.getData(4,0)}")
tdLog.info(f"{tdSql.getData(5,0)}")
tdLog.info(f"{tdSql.getData(6,0)}")
tdLog.info(f"{tdSql.getData(7,0)}")
tdLog.info(f"{tdSql.getData(8,0)}")
tdLog.info(f"{tdSql.getData(9,0)}")
tdSql.checkData(4, 0, "2018-09-17 09:06:49.600")
tdSql.query(f"select * from {tb} order by ts desc;")
tdSql.checkRows(8198)
tdSql.execute(f"drop database if exists {db}")
tdSql.execute(f"create database {db} vgroups 1;")
tdSql.execute(f"use {db}")
tdSql.execute(f"create stable st1 (ts timestamp, c int) tags(a int);")
tdSql.execute(f"create table t1 using st1 tags(1);")
tdSql.execute(f"create table t2 using st1 tags(2);")
i = 0
ts = 1674977959000
rowNum = 200
x = 0
while x < rowNum:
xs = x * delta
ts = ts0 + xs
tdSql.execute(f"insert into t1 values ( {ts} , {x} )")
tdSql.execute(f"insert into t2 values ( {ts} + 1000a, {x} )")
x = x + 1
ts = ts + 1000
tdSql.execute(f"flush database {db}")
tdLog.info(f"===========================> TD-22077 && TD-21877")
tdSql.execute(f"insert into t1 values('2018-09-17 09:00:26', 26);")
tdSql.execute(f"insert into t2 values('2018-09-17 09:00:25', 25);")
tdSql.execute(f"insert into t2 values('2018-09-17 09:00:30', 30);")
tdSql.execute(f"flush database reg_db0;")
tdSql.execute(f"delete from st1 where ts<='2018-9-17 09:00:26';")
tdSql.query(f"select * from st1;")
tdSql.execute(f"drop table t1")
tdSql.execute(f"drop table t2")
tdLog.info(f"=========================================>TD-22196")
tdSql.execute(f"create table t1 using st1 tags(1);")
i = 0
ts = 1674977959000
rowNum = 200
x = 0
while x < rowNum:
xs = x * delta
ts = ts0 + xs
tdSql.execute(f"insert into t1 values ( {ts} , {x} )")
x = x + 1
ts = ts + 1000
tdSql.execute(f"flush database {db}")
tdSql.query(f"select min(c),max(c) from t1")
tdSql.checkData(0, 0, 0)
tdSql.checkData(0, 1, 199)
tdSql.execute(f"drop table t1")
rowNum = 8200
ts0 = 1537146000000
tdSql.execute(f"create table t1 (ts timestamp, c1 int)")
i = 0
ts = ts0
x = 0
while x < rowNum:
xs = x * delta
ts = ts0 + xs
tdSql.execute(f"insert into t1 values ( {ts} , {x} )")
x = x + 1
tdSql.execute(f"delete from t1 where ts<=1537146409500")
tdSql.execute(f"flush database {db}")
tdLog.info(f"======================================>TS-2639")
tdSql.query(f"show table distributed t1;")
tdLog.info(f"=====================================>TD-22007")
tdSql.query(f"select count(*) from t1 interval(10a)")
tdSql.execute(f"drop table t1")
tdSql.execute(f"drop table st1")
tdSql.execute(f"create table st1 (ts timestamp, k int) tags(a int);")
tdSql.execute(
f"insert into t1 using st1 tags(1) values('2020-1-1 10:10:10', 0);"
)
tdSql.execute(
f"insert into t2 using st1 tags(1) values('2020-1-1 10:10:11', 1);"
)
tdSql.execute(
f"insert into t3 using st1 tags(1) values('2020-1-1 10:10:12', 2);"
)
tdSql.execute(
f"insert into t4 using st1 tags(1) values('2020-1-1 10:10:13', 3);"
)
tdSql.execute(
f"insert into t5 using st1 tags(1) values('2020-1-1 10:10:14', 4);"
)
tdSql.execute(
f"insert into t6 using st1 tags(2) values('2020-1-1 10:10:15', 5);"
)
tdSql.execute(
f"insert into t7 using st1 tags(2) values('2020-1-1 10:10:16', 6);"
)
tdSql.execute(
f"insert into t8 using st1 tags(2) values('2020-1-1 10:10:17', 7);"
)
tdSql.execute(
f"insert into t9 using st1 tags(2) values('2020-1-1 10:10:18', 8);"
)
tdSql.execute(
f"insert into t10 using st1 tags(2) values('2020-1-1 10:10:19', 9);"
)
tdSql.query(f"select count(*) from st1")
tdSql.checkData(0, 0, 10)
tdSql.query(f"select last_row(*) from st1 group by a order by a desc")
tdSql.checkRows(2)
tdSql.checkData(0, 0, "2020-01-01 10:10:19.000")
tdSql.checkData(0, 1, 9)
tdSql.checkData(1, 0, "2020-01-01 10:10:14.000")
tdSql.checkData(1, 1, 4)
tdLog.info(f"===============================================> TS-2613")
tdSql.query(f"select * from information_schema.ins_databases limit 1 offset 1;")
tdSql.checkRows(1)
def DeleteAndQuery(self):
tdSql.execute(f"create database if not exists test")
tdSql.execute(f"use test")
tdSql.execute(f"create table t1 (ts timestamp, c2 int)")
tdSql.execute(f"insert into t1 values(now, 1)")
tdSql.execute(f"delete from t1 where ts is null")
tdSql.execute(f"delete from t1 where ts < now")
tdSql.query(f"select ts from t1 order by ts asc")
tdLog.info(f"----------rows: {tdSql.getRows()})")
tdSql.checkRows(0)
tdSql.query(f"select ts from t1 order by ts desc")
tdLog.info(f"----------rows: {tdSql.getRows()})")
tdSql.checkRows(0)
def InsertDrop(self):
tbNum = 10
rowNum = 10
totalNum = tbNum * rowNum
ts0 = 1537146000000
delta = 600000
tdLog.info(f"========== insert_drop.sim")
i = 0
db = "iddb"
stb = "stb"
tdSql.prepare(dbname=db)
tdLog.info(f"====== create tables")
tdSql.execute(f"use {db}")
tdSql.execute(f"create table {stb} (ts timestamp, c1 int) tags(t1 int)")
i = 0
ts = ts0
while i < 10:
tb = "tb" + str(i)
tdSql.execute(f"create table {tb} using {stb} tags( {i} )")
x = 0
while x < rowNum:
xs = x * delta
ts = ts0 + xs
tdSql.execute(f"insert into {tb} values ( {ts} , {x} )")
x = x + 1
i = i + 1
tdLog.info(f"====== tables created")
tdLog.info(f"================== restart server to commit data into disk")
sc.dnodeStop(1)
sc.dnodeStart(1)
clusterComCheck.checkDnodes(1)
tdLog.info(f"================== server restart completed")
tdSql.execute(f"use {db}")
tdSql.execute(f"drop table tb5")
i = 0
while i < 4:
tb = "tb" + str(i)
x = 0
while x < rowNum:
xs = x * delta
ts = ts0 + xs
tdSql.execute(f"insert into {tb} values ( {ts} , {x} )")
x = x + 1
i = i + 1
tdLog.info(f"================== restart server to commit data into disk")
sc.dnodeStop(1)
sc.dnodeStart(1)
clusterComCheck.checkDnodes(1)
tdLog.info(f"================== server restart completed")
tdSql.execute(f"use {db}")
tdSql.execute(f"create table tb5 using {stb} tags(5)")
tdSql.query(f"select * from tb5")
tdLog.info(f"{tdSql.getRows()}) should be 0")
tdSql.checkRows(0)