system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/exec.sh -n dnode1 -s start
sleep 50
sql connect

print =============== create database
sql create database test vgroups 1;
sql select * from information_schema.ins_databases;
if $rows != 3 then
  return -1
endi

print $data00 $data01 $data02

sql use test;

sql create table t1(ts timestamp, a int, b int , c int, d double, id int);

print create stream streams1 trigger at_once IGNORE EXPIRED 0  into streamt1 as select  _wstart, count(*) c1, count(d) c2 , sum(a) c3 , max(a)  c4, min(c) c5, max(id) c from t1 state_window(a);

sql create stream streams1 trigger at_once IGNORE EXPIRED 0  into streamt1 as select  _wstart, count(*) c1, count(d) c2 , sum(a) c3 , max(a)  c4, min(c) c5, max(id) c from t1 state_window(a);

sql insert into t1 values(1648791213000,1,2,3,1.0,1);
sql insert into t1 values(1648791213000,1,2,3,1.0,2);
$loop_count = 0
loop0:
sql select * from streamt1 order by c desc;
sleep 300
$loop_count = $loop_count + 1
if $loop_count == 10 then
  return -1
endi

if $rows != 1 then
  print =====rows=$rows
  goto loop0
endi

sql insert into t1 values(1648791214000,1,2,3,1.0,3);
$loop_count = 0
loop00:
sql select * from streamt1 order by c desc;
sleep 300
$loop_count = $loop_count + 1
if $loop_count == 10 then
  return -1
endi

if $rows != 1 then
  print =====rows=$rows
  goto loop00
endi

sql insert into t1 values(1648791213010,2,2,3,1.0,4);
sql insert into t1 values(1648791213000,1,2,3,1.0,5);
sql insert into t1 values(1648791214000,1,2,3,1.0,6);
$loop_count = 0
loop1:
sql select * from streamt1 where c >=4 order by `_wstart`;
sleep 300
$loop_count = $loop_count + 1
if $loop_count == 10 then
  return -1
endi

if $rows != 3 then
  print =====rows=$rows
  goto loop1
endi

# row 0
if $data01 != 1 then
  print =====data01=$data01
  goto loop1
endi

if $data02 != 1 then
  print =====data02=$data02
  goto loop1
endi

if $data03 != 1 then
  print ======$data03
  goto loop1
endi

if $data04 != 1 then
  print ======$data04
  goto loop1
endi

if $data05 != 3 then
  print ======$data05
  goto loop1
endi

if $data06 != 5 then
  print ======$data06
  goto loop1
endi

# row 1
if $data11 != 1 then
  print ======$data11
  goto loop1
endi

if $data12 != 1 then
  print ======$data12
  goto loop1
endi

if $data13 != 2 then
  print ======$data13
  goto loop1
endi

if $data14 != 2 then
  print ======$data14
  goto loop1
endi

if $data15 != 3 then
  print ======$data15
  goto loop1
endi

if $data16 != 4 then
  print ======$data16
  goto loop1
endi

# row 2
if $data21 != 1 then
  print ======$data21
  goto loop1
endi

if $data22 != 1 then
  print ======$data22
  goto loop1
endi

if $data23 != 1 then
  print ======$data23
  goto loop1
endi

if $data24 != 1 then
  print ======$data24
  goto loop1
endi

if $data25 != 3 then
  print ======$data25
  goto loop1
endi

if $data26 != 6 then
  print ======$data26
  goto loop1
endi

print loop1 end

sql insert into t1 values(1648791213011,1,2,3,1.0,7);

$loop_count = 0
loop2:
sql select * from streamt1 where c in (5,4,7) order by `_wstart`;
sleep 300
$loop_count = $loop_count + 1
if $loop_count == 10 then
  return -1
endi

# row 2
if $data21 != 2 then
  print =====data21=$data21
  goto loop2
endi

if $data22 != 2 then
  print =====data22=$data22
  goto loop2
endi

if $data23 != 2 then
  print ======$data23
  goto loop2
endi

if $data24 != 1 then
  print ======$data24
  goto loop2
endi

if $data25 != 3 then
  print ======$data25
  goto loop2
endi

if $data26 != 7 then
  print ======$data26
  goto loop2
endi

sql insert into t1 values(1648791213011,1,2,3,1.0,8);

$loop_count = 0
loop21:
sql select * from streamt1 where c in (5,4,8) order by `_wstart`;
sleep 300
$loop_count = $loop_count + 1
if $loop_count == 10 then
  return -1
endi

if $data26 != 8 then
  print =====data26=$data26
  goto loop21
endi


sql insert into t1 values(1648791213020,1,2,3,1.0,9);
sql insert into t1 values(1648791213020,3,2,3,1.0,10);
sql insert into t1 values(1648791214000,1,2,3,1.0,11);
sql insert into t1 values(1648791213011,10,20,10,10.0,12);

$loop_count = 0
loop3:
sql select * from streamt1 where c in (5,4,10,11,12) order by `_wstart`;
sleep 300
$loop_count = $loop_count + 1
if $loop_count == 10 then
  return -1
endi

# row 2
if $data21 != 1 then
  print =====data21=$data21
  goto loop3
endi

if $data22 != 1 then
  print =====data22=$data22
  goto loop3
endi

if $data23 != 10 then
  print ======$data23
  goto loop3
endi

if $data24 != 10 then
  print ======$data24
  goto loop3
endi

if $data25 != 10 then
  print ======$data25
  goto loop3
endi

if $data26 != 12 then
  print ======$data26
  goto loop3
endi

# row 3
if $data31 != 1 then
  print =====data31=$data31
  goto loop3
endi

if $data32 != 1 then
  print =====data32=$data32
  goto loop3
endi

if $data33 != 3 then
  print ======$data33
  goto loop3
endi

if $data34 != 3 then
  print ======$data34
  goto loop3
endi

if $data35 != 3 then
  print ======$data35
  goto loop3
endi

if $data36 != 10 then
  print ======$data36
  goto loop3
endi

# row 4
if $data41 != 1 then
  print =====data41=$data41
  goto loop3
endi

if $data42 != 1 then
  print =====data42=$data42
  goto loop3
endi

if $data43 != 1 then
  print ======$data43
  goto loop3
endi

if $data44 != 1 then
  print ======$data44
  goto loop3
endi

if $data45 != 3 then
  print ======$data45
  goto loop3
endi

if $data46 != 11 then
  print ======$data46
  goto loop3
endi

sql insert into t1 values(1648791213030,3,12,12,12.0,13);
sql insert into t1 values(1648791214040,1,13,13,13.0,14);
sql insert into t1 values(1648791213030,3,14,14,14.0,15) (1648791214020,15,15,15,15.0,16);

$loop_count = 0
loop4:
sql select * from streamt1 where c in (14,15,16) order by `_wstart`;
sleep 300

$loop_count = $loop_count + 1
if $loop_count == 10 then
  return -1
endi

if $rows != 3 then
  print ====loop4=rows=$rows
  goto loop4
endi

# row 0
if $data01 != 2 then
  print =====data01=$data01
  goto loop4
endi

if $data02 != 2 then
  print ======$data02
  goto loop4
endi

if $data03 != 6 then
  print ======$data03
  goto loop4
endi

if $data04 != 3 then
  print ======$data04
  goto loop4
endi

if $data05 != 3 then
  print ======$data05
  goto loop4
endi

if $data06 != 15 then
  print ======$data06
  goto loop4
endi

# row 1
if $data11 != 1 then
  print =====data11=$data11
  goto loop4
endi

if $data12 != 1 then
  print =====data12=$data12
  goto loop4
endi

if $data13 != 15 then
  print ======$data13
  goto loop4
endi

if $data14 != 15 then
  print ======$data14
  goto loop4
endi

if $data15 != 15 then
  print ======$data15
  goto loop4
endi

if $data16 != 16 then
  print ======$data16
  goto loop4
endi

# row 2
if $data21 != 1 then
  print =====data21=$data21
  goto loop4
endi

if $data22 != 1 then
  print =====data22=$data22
  goto loop4
endi

if $data23 != 1 then
  print ======$data23
  goto loop4
endi

if $data24 != 1 then
  print ======$data24
  goto loop4
endi

if $data25 != 13 then
  print ======$data25
  goto loop4
endi

if $data26 != 14 then
  print ======$data26
  goto loop4
endi

print loop4 end

sql create database test1 vgroups 1;
sql select * from information_schema.ins_databases;

print $data00 $data01 $data02

sql use test1;

sql create table t1(ts timestamp, a int, b int , c int, d double, id int);

print create stream streams2 trigger at_once IGNORE EXPIRED 0  into streamt1 as select  _wstart, count(*) c1, count(d) c2 , sum(a) c3 , max(a)  c4, min(c) c5, max(id) c from t1 state_window(a);

sql create stream streams2 trigger at_once IGNORE EXPIRED 0  into streamt1 as select  _wstart, count(*) c1, count(d) c2 , sum(a) c3 , max(a)  c4, min(c) c5, max(id) c from t1 state_window(a);

sql insert into t1 values(1648791212000,2,2,3,1.0,1);
sql insert into t1 values(1648791213000,1,2,3,1.0,1);
sql insert into t1 values(1648791213000,1,2,4,1.0,2);
$loop_count = 0
loop5:

sleep 300
sql select * from streamt1 order by c desc;

$loop_count = $loop_count + 1
if $loop_count == 10 then
  return -1
endi

if $rows != 2 then
  print =====rows=$rows
  goto loop5
endi

if $data01 != 1 then
  print =====data01=$data01
  goto loop5
endi

if $data05 != 4 then
  print =====data05=$data05
  goto loop5
endi

if $data11 != 1 then
  print =====data11=$data11
  goto loop5
endi

if $data15 != 3 then
  print =====data15=$data15
  goto loop5
endi

sql create database test3 vgroups 1;
sql use test3;

sql create table t1(ts timestamp, a int, b int , c int, d double, id int);

print create stream streams3 trigger at_once IGNORE EXPIRED 0  into streamt3 as select  _wstart, count(*) c1, sum(b) c3 from t1 state_window(a);

sql create stream streams3 trigger at_once IGNORE EXPIRED 0  into streamt3 as select  _wstart, count(*) c1, sum(b) c3 from t1 state_window(a);
sql insert into t1 values(1648791212000,1,2,3,1.0,1);
sql insert into t1 values(1648791213000,2,2,3,1.0,1);
sql insert into t1 values(1648791214000,3,2,4,1.0,2);
sql insert into t1 values(1648791215000,4,2,3,1.0,1);
sql insert into t1 values(1648791211000,5,2,3,1.0,1);
sql insert into t1 values(1648791210000,6,2,4,1.0,2);
sql insert into t1 values(1648791217000,7,2,3,1.0,1);
sql insert into t1 values(1648791219000,8,2,3,1.0,1);
sql insert into t1 values(1648791209000,9,2,4,1.0,2);
sql insert into t1 values(1648791220000,10,2,4,1.0,2);

sql insert into t1 values(1648791212000,1,2,3,1.0,1);
sql insert into t1 values(1648791213000,2,2,3,1.0,1);
sql insert into t1 values(1648791214000,3,2,4,1.0,2);
sql insert into t1 values(1648791215000,4,2,3,1.0,1);
sql insert into t1 values(1648791211000,5,2,3,1.0,1);
sql insert into t1 values(1648791210000,6,2,4,1.0,2);
sql insert into t1 values(1648791217000,7,2,3,1.0,1);
sql insert into t1 values(1648791219000,8,2,3,1.0,1);
sql insert into t1 values(1648791209000,9,2,4,1.0,2);
sql insert into t1 values(1648791220000,10,2,4,1.0,2);


$loop_count = 0
loop6:

sleep 300

sql select * from streamt3;

$loop_count = $loop_count + 1
if $loop_count == 10 then
  return -1
endi

if $rows != 10 then
  print =====rows=$rows
  goto loop6
endi

sql drop stream if exists streams4;
sql drop database if exists test4;
sql drop stable if exists streamt4;
sql create database if not exists test4 vgroups 10 precision "ms" ;
sql use test4;
sql create table st (ts timestamp, c1 tinyint, c2 smallint) tags (t1 tinyint) ;
sql create table t1 using st tags (-81) ;
sql create table t2 using st tags (-81) ;

print create stream if not exists streams4 trigger window_close IGNORE EXPIRED 0 into streamt4 as select _wstart AS startts, min(c1),count(c1) from t1 state_window(c1);

sql create stream if not exists streams4 trigger window_close IGNORE EXPIRED 0 into streamt4 as select _wstart AS startts, min(c1),count(c1) from t1 state_window(c1);

sql insert into t1 (ts, c1) values (1668073288209, 11);
sql insert into t1 (ts, c1) values (1668073288210, 11);
sql insert into t1 (ts, c1) values (1668073288211, 11);
sql insert into t1 (ts, c1) values (1668073288212, 11);
sql insert into t1 (ts, c1) values (1668073288213, 11);
sql insert into t1 (ts, c1) values (1668073288214, 11);
sql insert into t1 (ts, c1) values (1668073288215, 29);

$loop_count = 0
loop7:

sleep 200

sql select * from streamt4 order by startts;

$loop_count = $loop_count + 1
if $loop_count == 20 then
  return -1
endi

if $rows != 1 then
  print =====rows=$rows
  goto loop7
endi

if $data01 != 11 then
  print =====data01=$data01
  goto loop7
endi

if $data02 != 6 then
  print =====data02=$data02
  goto loop7
endi

sql delete from t1 where ts = cast(1668073288214 as timestamp);
sql insert into t1 (ts, c1) values (1668073288216, 29);
sql delete from t1 where ts = cast(1668073288215 as timestamp);
sql insert into t1 (ts, c1) values (1668073288217, 29);
sql delete from t1 where ts = cast(1668073288216 as timestamp);
sql insert into t1 (ts, c1) values (1668073288218, 29);
sql delete from t1 where ts = cast(1668073288217 as timestamp);
sql insert into t1 (ts, c1) values (1668073288219, 29);
sql delete from t1 where ts = cast(1668073288218 as timestamp);
sql insert into t1 (ts, c1) values (1668073288220, 29);
sql delete from t1 where ts = cast(1668073288219 as timestamp);

$loop_count = 0
loop8:

sleep 200

sql select * from streamt4 order by startts;

$loop_count = $loop_count + 1
if $loop_count == 20 then
  return -1
endi

if $rows != 1 then
  print =====rows=$rows
  goto loop8
endi

if $data01 != 11 then
  print =====data01=$data01
  goto loop8
endi

if $data02 != 5 then
  print =====data02=$data02
  goto loop8
endi

sql insert into t1 (ts, c1) values (1668073288221, 65);
sql insert into t1 (ts, c1) values (1668073288222, 65);
sql insert into t1 (ts, c1) values (1668073288223, 65);
sql insert into t1 (ts, c1) values (1668073288224, 65);
sql insert into t1 (ts, c1) values (1668073288225, 65);
sql insert into t1 (ts, c1) values (1668073288226, 65);

$loop_count = 0
loop81:

sleep 200

sql select * from streamt4 order by startts;

$loop_count = $loop_count + 1
if $loop_count == 20 then
  return -1
endi

if $rows != 2 then
  print =====rows=$rows
  goto loop81
endi

if $data01 != 11 then
  print =====data01=$data01
  goto loop81
endi

if $data02 != 5 then
  print =====data02=$data02
  goto loop81
endi

if $data11 != 29 then
  print =====data11=$data11
  goto loop81
endi

if $data12 != 1 then
  print =====data12=$data12
  goto loop81
endi

sql insert into t1 (ts, c1) values (1668073288224, 64);

$loop_count = 0
loop9:

sleep 200

sql select * from streamt4 order by startts;

$loop_count = $loop_count + 1
if $loop_count == 20 then
  return -1
endi

if $rows != 4 then
  print =====rows=$rows
  goto loop9
endi

if $data01 != 11 then
  print =====data01=$data01
  goto loop9
endi

if $data02 != 5 then
  print =====data02=$data02
  goto loop9
endi

if $data11 != 29 then
  print =====data11=$data11
  goto loop9
endi

if $data12 != 1 then
  print =====data12=$data12
  goto loop9
endi

if $data21 != 65 then
  print =====data21=$data21
  goto loop9
endi

if $data22 != 3 then
  print =====data22=$data22
  goto loop9
endi

if $data31 != 64 then
  print =====data31=$data31
  goto loop9
endi

if $data32 != 1 then
  print =====data32=$data32
  goto loop9
endi

sql drop stream if exists streams5;
sql drop database if exists test5;
sql create database test5;
sql use test5;
sql create table tb (ts timestamp, a int);
sql insert into tb values (now + 1m , 1 );
sql create table b (c timestamp, d int, e int , f int, g double);

print create stream streams0 trigger at_once IGNORE EXPIRED 0 into streamt as select _wstart c1, count(*) c2, max(a) c3 from tb state_window(a);

sql create stream streams0 trigger at_once IGNORE EXPIRED 0 into streamt as select _wstart c1, count(*) c2, max(a) c3 from tb state_window(a);
sql insert into b values(1648791213000,NULL,NULL,NULL,NULL);
sql select * from streamt order by c1, c2, c3;

print data00:$data00
print data01:$data01

sql insert into b values(1648791213000,NULL,NULL,NULL,NULL);
sql select * from streamt order by c1, c2, c3;

print data00:$data00
print data01:$data01

sql insert into b values(1648791213001,1,2,2,2.0);
sql insert into b values(1648791213002,1,3,3,3.0);
sql insert into tb values(1648791213003,1);

sql select * from streamt;
print data00:$data00
print data01:$data01

sql delete from b where c >= 1648791213001 and c <= 1648791213002;
sql insert into b values(1648791223003,2,2,3,1.0); insert into b values(1648791223002,2,3,3,3.0);
sql insert into tb values (now + 1m , 1 );

sql select * from streamt;
print data00:$data00
print data01:$data01

sql insert into b(c,d) values (now + 6m , 6 );
sql delete from b where c >= 1648791213001 and c <= 1648791233005;;

$loop_count = 0
loop10:

sleep 200

sql select c2 from streamt;

$loop_count = $loop_count + 1
if $loop_count == 20 then
  return -1
endi

if $rows != 1 then
  print =====rows=$rows
  goto loop10
endi

if $data00 != 2 then
  print =====data00=$data00
  goto loop10
endi

print state0 end

system sh/exec.sh -n dnode1 -s stop -x SIGINT
