TDengine/tests/script/tsim/stream/nonblockIntervalHistory.sim
liuyao 2de6736160
feat(stream): add new trigger continuous_window_close (#30125)
* opt stream build twa result

* opt force window close memory

* feat(stream):optimize new interval and scan operator

* adj log

* opt code

* opt code

* fill history

* fix issue for fill history

* add ci

* feat(stream): add new stream nonblock interval operator

* adjust code

* use new scan operator

* use new scan operator

* add log

* fix issue

* recover stream scan next function

* fix issue

* fix issue

* fix issue

* ignore disorder data

* fix issue

* fix issue for interval sliding

* fix issue

* fix ci issue

* fix ci issue

* fix ci issue

* add semi && final nonblock interval operator

* fix issue

* fix issue

* fix issue

* fix issue

* fix issue

* fix issue

* fix issue

* fix issue

* refactor(stream): track the msgId for each upstream tasks.

* fix(stream): fix race condition.

* fix(stream): update the task last msgId when putting into input queue succ.

* fix issue

* fix issue

* put recalculate data to rocksdb

* fix issue

* fix issue

* enh(query)[TD-33071]: add support for saving and restoring tsdbReader scan progress

- Implement functionality to save scan progress during tsdbReader operations
- Enable resuming scans from the last saved position

* fix issue

* fix issue

* fix issue

* fix issue

* fix issue

* add rec interval check

* enh(stream):add recalculate tasks.

* enh(stream): support the re-calculate the tasks.

* fix issue && do refactor

* do refactor

* fix issue

* fix issue

* update backend opt

* add new interface

* add new session operator

* support blob

* add new session operator

* fix issue

* add rec state for rec task

* fix invalid read

* add new session window

* enh(stream): update the stream tasks backend.

* new session operator

* add pull data

* fix(stream): fix error in expand stream backend.

* fix issue

* fix issue

* fix issue

* merge code

* fix issue

* fix(stream): check for null ptr.

* fix(stream): add more check.

* fix issue

* fix issue

* fix issue

* add debug code

* fix issue

* fix issue

* fix issue

* set rec end flag

* fix(stream): opt re-calculate stream tasks.

* fix issue

* fix issue

* add new operator

* enh(stream): dispatch recalculate block to agg tasks.

* fix issue

* fix issue

* fix(stream): adjust filter.

* fix issue

* refactor

* refactor(stream): adjust the recalculate end block.

* fix issue

* fix(stream): set correct create trigger block.

* fix issue

* fix(stream): fix error in build recalculate end block.

* fix(stream): check null ptr.

* add stream client && fix issue

* fix mem leak

* fix(stream): free msg.

* add stream client

* fix(stream): fix error.

* add stream client && fix issue

* add stream client

* refactor(stream): set the recalculate task complete.

* add wend and group_id for session window dest table

* feat(stream): refactor and set the recalcul agg task complete.

* add cfg for adapter

* fix issue

* add state && event operator

* feat(stream): support fill-history task.

* add new fill operator

* fix(stream): set correct backend when updating fill-history task to recalculate task.

* add new fill operator

* fix(stream): s2025-03-06 11:10:31.272
et ops always open in scan tsdb

* fix(stream):set the correct taskType for sink task.

* new fill operator

* adj stream fill operator

* fix issue

* fix issue

* fix issue

* fix issue

* fix issue

* fix issue

* fix issue

* fix issue

* adj test

* fix issue

* fix(stream): fix issue

* fix(steam): fix issue

* fix(steam): fix issue

* fix(steam): fix issue

* fix(steam): fix issue

* fix(stream): fix issue

* fix(stream): fix issue

* fix(stream): fix issue

* fix: ut com error

* fix(stream): fix mem leak and adjust operator type check rule

* fix(stream): fix mem leak and adjust test case

* refactor code

* fix(stream): free items.

* fix(stream): free fix memory leak.

* fix(stream): fix syntax error.

* fix: ignore unexpect block

* fix: adjust op type

---------

Co-authored-by: Haojun Liao <hjliao@taosdata.com>
Co-authored-by: Jinqing Kuang <kuangjinqingcn@gmail.com>
Co-authored-by: yihaoDeng <luomoxyz@126.com>
2025-03-14 20:14:01 +08:00

337 lines
8.2 KiB
Text

system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/exec.sh -n dnode1 -s start
sleep 1000
sql connect
print ========== interval window
sql drop database if exists test;
sql create database test vgroups 1;
sql use test;
sql create stable st(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int);
sql create table t1 using st tags(1,1,1);
sql create table t2 using st tags(2,2,2);
sql insert into t1 values(1648791111000,1,1,3);
sql insert into t1 values(1648791221000,2,2,3);
sql insert into t2 values(1648791111000,1,3,3);
sql insert into t2 values(1648791221000,2,4,3);
sleep 300
sql create stream streams1 trigger continuous_window_close fill_history 1 ignore update 0 ignore expired 0 into streamt1 as select _wstart, count(*) c1, sum(b) c2 from st partition by tbname interval(10s) ;
run tsim/stream/checkTaskStatus.sim
loop00:
sleep 500
print sql loop00 select * from streamt1 order by 1,2;
sql select * from streamt1 order by 1,2;
print $data00 $data01 $data02 $data03 $data04
print $data10 $data11 $data12 $data13 $data14
print $data20 $data21 $data22 $data23 $data24
print $data30 $data31 $data32 $data33 $data34
print $data40 $data41 $data42 $data43 $data44
print $data50 $data51 $data52 $data53 $data54
$loop_count = $loop_count + 1
if $loop_count == 20 then
return -1
endi
if $rows != 4 then
print =====rows=$rows
goto loop00
endi
sql insert into t1 values(1648791221001,3,5,3);
sql insert into t1 values(1648791241001,3,6,3);
print sql sql select _wstart, count(*) c1, sum(b) c2,tbname from st partition by tbname interval(10s) order by 1,2 ;
sql select _wstart, count(*) c1, sum(b) c2,tbname from st partition by tbname interval(10s) order by 1,2 ;
print $data00 $data01 $data02 $data03 $data04
print $data10 $data11 $data12 $data13 $data14
print $data20 $data21 $data22 $data23 $data24
print $data30 $data31 $data32 $data33 $data34
print $data40 $data41 $data42 $data43 $data44
print $data50 $data51 $data52 $data53 $data54
$loop_count = 0
loop0:
sleep 500
print sql loop0 select * from streamt1 order by 1,2;
sql select * from streamt1 order by 1,2;
print $data00 $data01 $data02 $data03 $data04
print $data10 $data11 $data12 $data13 $data14
print $data20 $data21 $data22 $data23 $data24
print $data30 $data31 $data32 $data33 $data34
print $data40 $data41 $data42 $data43 $data44
print $data50 $data51 $data52 $data53 $data54
$loop_count = $loop_count + 1
if $loop_count == 20 then
return -1
endi
if $rows != 4 then
print =====rows=$rows
goto loop0
endi
if $data01 != 1 then
print =====data01=$data01
goto loop0
endi
if $data02 != 1 then
print =====data02=$data02
goto loop0
endi
if $data11 != 1 then
print =====data11=$data11
goto loop0
endi
if $data12 != 3 then
print =====data12=$data12
goto loop0
endi
if $data21 != 1 then
print =====data21=$data21
goto loop0
endi
if $data22 != 4 then
print =====data22=$data22
goto loop0
endi
if $data31 != 2 then
print =====data31=$data31
goto loop0
endi
if $data32 != 7 then
print =====data32=$data32
goto loop0
endi
print ========== step2
sql drop database if exists test1;
sql create database test1 vgroups 1;
sql use test1;
sql create stable st(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int);
sql create table t1 using st tags(1,1,1);
sql create table t2 using st tags(2,2,2);
sql create table t3 using st tags(3,3,3);
sql insert into t1 values(1648791221000,2,2,3);
sql insert into t1 values(1648791224000,2,2,3);
sql insert into t2 values(1648791221000,2,2,3);
sql insert into t2 values(1648791224000,2,2,3);
sql insert into t3 values(1648791221000,2,2,3);
sql insert into t3 values(1648791224000,2,2,3);
sleep 300
sql create stream streams12 trigger continuous_window_close fill_history 1 ignore update 0 ignore expired 0 into streamt12 as select _wstart, avg(a) c1, sum(b) c2, tbname as c3 from st partition by tbname interval(1s) ;
run tsim/stream/checkTaskStatus.sim
loop3:
sleep 500
sql select * from streamt12 order by 1,2;
print $data00 $data01 $data02 $data03 $data04
print $data10 $data11 $data12 $data13 $data14
print $data20 $data21 $data22 $data23 $data24
print $data30 $data31 $data32 $data33 $data34
print $data40 $data41 $data42 $data43 $data44
print $data50 $data51 $data52 $data53 $data54
$loop_count = $loop_count + 1
if $loop_count == 20 then
return -1
endi
if $rows != 6 then
print =====rows=$rows
goto loop3
endi
sql insert into t1 values(1648791224001,2,2,3);
sql insert into t1 values(1648791225001,2,2,3);
loop4:
sleep 500
sql select * from streamt12 where c3 == "t1" order by 1,2;
print $data00 $data01 $data02 $data03 $data04
print $data10 $data11 $data12 $data13 $data14
print $data20 $data21 $data22 $data23 $data24
print $data30 $data31 $data32 $data33 $data34
print $data40 $data41 $data42 $data43 $data44
print $data50 $data51 $data52 $data53 $data54
$loop_count = $loop_count + 1
if $loop_count == 20 then
return -1
endi
if $rows != 2 then
print =====rows=$rows
goto loop4
endi
if $data12 != 4 then
print =====data12=$data12
goto loop4
endi
print ============================end
print ========== step3
sql drop database if exists test3;
sql create database test3 vgroups 2;
sql use test3;
sql create stable st(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int);
sql create table t1 using st tags(1,1,1);
sql create table t2 using st tags(2,2,2);
sql insert into t1 values(1648791111000,1,1,3);
sql insert into t1 values(1648791221000,2,2,3);
sql insert into t2 values(1648791111000,1,3,3);
sql insert into t2 values(1648791221000,2,4,3);
sleep 300
sql create stream streams3 trigger continuous_window_close fill_history 1 ignore update 0 ignore expired 0 into streamt3 as select _wstart, count(*) c1, sum(b) c2 from st interval(10s) ;
run tsim/stream/checkTaskStatus.sim
print sql sql select _wstart, count(*) c1, sum(b) c2 from st interval(10s) order by 1,2 ;
sql select _wstart, count(*) c1, sum(b) c2 from st interval(10s) order by 1,2 ;
print $data00 $data01 $data02 $data03 $data04
print $data10 $data11 $data12 $data13 $data14
print $data20 $data21 $data22 $data23 $data24
print $data30 $data31 $data32 $data33 $data34
print $data40 $data41 $data42 $data43 $data44
print $data50 $data51 $data52 $data53 $data54
loop5:
sleep 500
print sql loop5 select * from streamt3 order by 1,2;
sql select * from streamt3 order by 1,2;
print $data00 $data01 $data02 $data03 $data04
print $data10 $data11 $data12 $data13 $data14
print $data20 $data21 $data22 $data23 $data24
print $data30 $data31 $data32 $data33 $data34
print $data40 $data41 $data42 $data43 $data44
print $data50 $data51 $data52 $data53 $data54
$loop_count = $loop_count + 1
if $loop_count == 20 then
return -1
endi
if $rows != 2 then
print =====rows=$rows
goto loop5
endi
if $data01 != 2 then
print =====data01=$data01
goto loop5
endi
if $data11 != 2 then
print =====data11=$data11
goto loop5
endi
return 1
sql insert into t1 values(1648791221001,3,5,3);
sql insert into t1 values(1648791241001,3,6,3);
print sql sql select _wstart, count(*) c1, sum(b) c2 from st interval(10s) order by 1,2 ;
sql select _wstart, count(*) c1, sum(b) c2 from st interval(10s) order by 1,2 ;
print $data00 $data01 $data02 $data03 $data04
print $data10 $data11 $data12 $data13 $data14
print $data20 $data21 $data22 $data23 $data24
print $data30 $data31 $data32 $data33 $data34
print $data40 $data41 $data42 $data43 $data44
print $data50 $data51 $data52 $data53 $data54
$loop_count = 0
loop6:
sleep 500
print sql loop6 select * from streamt3 order by 1,2;
sql select * from streamt3 order by 1,2;
print $data00 $data01 $data02 $data03 $data04
print $data10 $data11 $data12 $data13 $data14
print $data20 $data21 $data22 $data23 $data24
print $data30 $data31 $data32 $data33 $data34
print $data40 $data41 $data42 $data43 $data44
print $data50 $data51 $data52 $data53 $data54
$loop_count = $loop_count + 1
if $loop_count == 10 then
return -1
endi
if $rows != 2 then
print =====rows=$rows
goto loop6
endi
if $data01 != 2 then
print =====data01=$data01
goto loop6
endi
if $data02 != 4 then
print =====data02=$data02
goto loop6
endi
if $data11 != 3 then
print =====data11=$data11
goto loop6
endi
if $data12 != 11 then
print =====data12=$data12
goto loop6
endi
print ==================step4 end
system sh/stop_dnodes.sh