diff --git a/tests/script/general/compute/csum.sim b/tests/script/general/compute/csum.sim new file mode 100644 index 0000000000000000000000000000000000000000..1f291d784fa848e8da9abe502884cdbad122973d --- /dev/null +++ b/tests/script/general/compute/csum.sim @@ -0,0 +1,98 @@ +system sh/stop_dnodes.sh + +system sh/deploy.sh -n dnode1 -i 1 +system sh/cfg.sh -n dnode1 -c walLevel -v 1 +system sh/exec.sh -n dnode1 -s start +sleep 200 +sql connect + +$dbPrefix = m_di_db +$tbPrefix = m_di_tb +$mtPrefix = m_di_mt +$tbNum = 10 +$rowNum = 20 +$totalNum = 200 + +print =============== step1 +$i = 0 +$db = $dbPrefix . $i +$mt = $mtPrefix . $i + +sql drop database $db -x step1 +step1: +sql create database $db +sql use $db +sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol int) + +$i = 0 +while $i < $tbNum + $tb = $tbPrefix . $i + sql create table $tb using $mt tags( $i ) + + $x = 0 + while $x < $rowNum + $cc = $x * 60000 + $ms = 1601481600000 + $cc + sql insert into $tb values ($ms , $x ) + $x = $x + 1 + endw + + $i = $i + 1 +endw + +sleep 100 + +print =============== step2 +$i = 1 +$tb = $tbPrefix . $i + +sql select csum(tbcol) from $tb +print ===> $data11 +if $data11 != 1 then + return -1 +endi + +print =============== step3 +$cc = 4 * 60000 +$ms = 1601481600000 + $cc +sql select csum(tbcol) from $tb where ts > $ms +print ===> $data11 +if $data11 != 11 then + return -1 +endi + +$cc = 4 * 60000 +$ms = 1601481600000 + $cc +sql select csum(tbcol) from $tb where ts <= $ms +print ===> $data11 +if $data11 != 1 then + return -1 +endi + +print =============== step4 +sql select csum(tbcol) as b from $tb +print ===> $data11 +if $data11 != 1 then + return -1 +endi + +print =============== step5 +sql select csum(tbcol) as b from $tb interval(1m) -x step5 + return -1 +step5: + +print =============== step6 +$cc = 4 * 60000 +$ms = 1601481600000 + $cc +sql select csum(tbcol) as b from $tb where ts <= $ms interval(1m) -x step6 + return -1 +step6: + +print =============== clear +sql drop database $db +sql show databases +if $rows != 0 then + return -1 +endi + +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/general/compute/csum2.sim b/tests/script/general/compute/csum2.sim new file mode 100644 index 0000000000000000000000000000000000000000..506070ae369ccb4c1d2bc28d149c7126079a2b54 --- /dev/null +++ b/tests/script/general/compute/csum2.sim @@ -0,0 +1,163 @@ +system sh/stop_dnodes.sh + +system sh/deploy.sh -n dnode1 -i 1 +system sh/cfg.sh -n dnode1 -c walLevel -v 1 +system sh/exec.sh -n dnode1 -s start +sleep 200 +sql connect + +$dbPrefix = m_di_db +$tbPrefix = m_di_tb +$mtPrefix = m_di_mt +$tbNum = 2 +$rowNum = 1000 +$totalNum = 2000 + +print =============== step1 +$i = 0 +$db = $dbPrefix . $i +$mt = $mtPrefix . $i + +sql drop database $db -x step1 +step1: +sql create database $db +sql use $db +sql create table $mt (ts timestamp, c1 int, c2 float, c3 bigint, c4 smallint, c5 tinyint, c6 double, c7 bool, c8 nchar(5), c9 binary(10)) TAGS(tgcol int) + +$i = 0 +while $i < $tbNum + $tb = $tbPrefix . $i + sql create table $tb using $mt tags( $i ) + + $x = 0 + while $x < $rowNum + $cc = $x * 60000 + $ms = 1601481600000 + $cc + + $tinyint = $x / 128 + sql insert into $tb values ($ms , $x , $x , $x , $x , $tinyint , $x , $x , $x , $x ) + $x = $x + 1 + endw + + $i = $i + 1 +endw + +sleep 100 + +print =============== step2 +$i = 1 +$tb = $tbPrefix . $i + +sql select csum(c1) from $tb +print ===> $data11 +if $data11 != 1 then + return -1 +endi +sql select csum(c2) from $tb +print ===> $data11 +if $data11 != 1.000000000 then + return -1 +endi +sql select csum(c3) from $tb +print ===> $data11 +if $data11 != 1 then + return -1 +endi +sql select csum(c4) from $tb +print ===> $data11 +if $data11 != 1 then + return -1 +endi +sql select csum(c5) from $tb +print ===> $data11 +if $data11 != 0 then + return -1 +endi +sql select csum(c6) from $tb +print ===> $data11 +if $data11 != 1.000000000 then + return -1 +endi +sql_error select csum(c7) from $tb +sql_error select csum(c8) from $tb +sql_error select csum(c9) from $tb +sql_error select csum(ts) from $tb +sql_error select csum(c1), csum(c2) from $tb +#sql_error select 2+csum(c1) from $tb +sql_error select csum(c1+2) from $tb +sql_error select csum(c1) from $tb where ts > 0 and ts < now + 100m interval(10m) +sql_error select csum(c1) from $mt +sql_error select csum(csum(c1)) from $tb +sql_error select csum(c1) from m_di_tb1 where c2 like '2%' + + +print =============== step3 +sql select csum(c1) from $tb where c1 > 5 +print ===> $data11 +if $data11 != 13 then + return -1 +endi +sql select csum(c2) from $tb where c2 > 5 +print ===> $data11 +if $data11 != 13.000000000 then + return -1 +endi +sql select csum(c3) from $tb where c3 > 5 +print ===> $data11 +if $data11 != 13 then + return -1 +endi +sql select csum(c4) from $tb where c4 > 5 +print ===> $data11 +if $data11 != 13 then + return -1 +endi +sql select csum(c5) from $tb where c5 > 5 +print ===> $data11 +if $data11 != 12 then + return -1 +endi +sql select csum(c6) from $tb where c6 > 5 +print ===> $data11 +if $data11 != 13.000000000 then + return -1 +endi + +print =============== step4 +sql select csum(c1) from $tb where c1 > 5 and c2 < $rowNum +print ===> $data11 +if $data11 != 13 then + return -1 +endi + +sql select csum(c1) from $tb where c9 like '%9' and c1 <= 20 +print ===> $rows +if $rows != 2 then + return -1 +endi +print ===>$data01, $data11 +if $data01 != 9 then + return -1 +endi +if $data11 != 28 then + return -1 +endi + +print =============== step5 +sql select csum(c1) as b from $tb interval(1m) -x step5 + return -1 +step5: + +print =============== step6 +sql select csum(c1) as b from $tb where ts < now + 4m interval(1m) -x step6 + return -1 +step6: + +print =============== clear +#sql drop database $db +#sql show databases +#if $rows != 0 then +# return -1 +#endi + +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/general/compute/testSuite.sim b/tests/script/general/compute/testSuite.sim index 91bf4bf0cda54d300f4d284c9e057616d4d54abe..155ae4a3ec15bb2bd22821927d1bdb7b546a8734 100644 --- a/tests/script/general/compute/testSuite.sim +++ b/tests/script/general/compute/testSuite.sim @@ -3,6 +3,8 @@ run general/compute/bottom.sim run general/compute/count.sim run general/compute/diff.sim run general/compute/diff2.sim +run general/compute/csum.sim +run general/compute/csum2.sim run general/compute/first.sim run general/compute/interval.sim run general/compute/last.sim diff --git a/tests/script/general/parser/col_arithmetic_operation.sim b/tests/script/general/parser/col_arithmetic_operation.sim index 8bb692e3bbe8af3ec9ed179ad29d40b4712d257b..c4d0fdfeed8173d5f5b48a0cbcec392b99c0500b 100644 --- a/tests/script/general/parser/col_arithmetic_operation.sim +++ b/tests/script/general/parser/col_arithmetic_operation.sim @@ -126,6 +126,7 @@ sql_error select first(ts) - last(ts) from $stb interval(1y) sql_error select top(c1, 2) - last(c1) from $stb; sql_error select stddev(c1) - last(c1) from $stb; sql_error select diff(c1) - last(c1) from $stb; +sql_error select csum(c1) - last(c1) from $stb; sql_error select first(c7) - last(c7) from $stb; sql_error select first(c8) - last(c8) from $stb; sql_error select first(c9) - last(c9) from $stb; @@ -151,4 +152,4 @@ if $data02 != 225000 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/general/parser/function.sim b/tests/script/general/parser/function.sim index 556292b21b218f4df2aaa034d8babe35903a23b8..bcc9bd497a58cee5f4db21bc379bbd3f27d32802 100644 --- a/tests/script/general/parser/function.sim +++ b/tests/script/general/parser/function.sim @@ -1087,6 +1087,10 @@ sql select diff(val) from (select derivative(k, 1s, 0) val from t1); if $rows != 0 then return -1 endi +sql select csum(val) from (select derivative(k, 1s, 0) val from t1); +if $rows != 0 then + return -1 +endi sql insert into t1 values('2020-1-1 1:1:4', 20); sql insert into t1 values('2020-1-1 1:1:6', 200); diff --git a/tests/script/general/parser/having.sim b/tests/script/general/parser/having.sim index e063333853e04faf1a7f4988b6dd1f11207aee5d..01811ea00564dffd098c39b453e15ccc31b0ed28 100644 --- a/tests/script/general/parser/having.sim +++ b/tests/script/general/parser/having.sim @@ -1149,6 +1149,12 @@ sql_error select avg(f1),diff(f1) from st2 group by f1 having avg(f1) > 0; sql_error select avg(f1),diff(f1) from st2 group by f1 having spread(f2) > 0; +sql_error select avg(f1) from st2 group by f1 having csum(f1) > 0; + +sql_error select avg(f1),csum(f1) from st2 group by f1 having avg(f1) > 0; + +sql_error select avg(f1),csum(f1) from st2 group by f1 having spread(f2) > 0; + sql select avg(f1) from st2 group by f1 having spread(f2) > 0; if $rows != 0 then return -1 diff --git a/tests/script/general/parser/having_child.sim b/tests/script/general/parser/having_child.sim index 0fe5448869a5720a62550a88981114e737e4965b..04e58f2a8d8459c79c7ab1a4ef644dd2d9f4efe0 100644 --- a/tests/script/general/parser/having_child.sim +++ b/tests/script/general/parser/having_child.sim @@ -1164,6 +1164,12 @@ sql_error select avg(f1),diff(f1) from tb1 group by f1 having avg(f1) > 0; sql_error select avg(f1),diff(f1) from tb1 group by f1 having spread(f2) > 0; +sql_error select avg(f1) from tb1 group by f1 having csum(f1) > 0; + +sql_error select avg(f1),csum(f1) from tb1 group by f1 having avg(f1) > 0; + +sql_error select avg(f1),csum(f1) from tb1 group by f1 having spread(f2) > 0; + sql select avg(f1) from tb1 group by f1 having spread(f2) > 0; if $rows != 0 then return -1 diff --git a/tests/script/general/parser/limit1_tb.sim b/tests/script/general/parser/limit1_tb.sim index 300af7ac7b669088094c0ba72288f42d34ca374d..113d09dc477b443d95a4d90c06d6b8386557dd98 100644 --- a/tests/script/general/parser/limit1_tb.sim +++ b/tests/script/general/parser/limit1_tb.sim @@ -471,6 +471,48 @@ if $data81 != -9 then return -1 endi +sql select csum(c1) from $tb +$res = $rowNum +if $rows != $res then + return -1 +endi + +sql select csum(c1) from $tb where c1 > 5 limit 2 offset 1 +if $rows != 2 then + return -1 +endi +if $data00 != @18-09-17 10:10:00.000@ then + return -1 +endi +if $data01 != 13 then + return -1 +endi +if $data10 != @18-09-17 10:20:00.000@ then + return -1 +endi +if $data11 != 21 then + return -1 +endi +$limit = $rowNum / 2 +$offset = $limit - 1 +sql select csum(c1) from $tb where c1 >= 0 limit $limit offset $offset +if $rows != $limit then + return -1 +endi +$limit = $rowNum / 2 +$offset = $limit + 1 +$val = $limit - 1 +sql select csum(c1) from $tb where c1 >= 0 limit $limit offset $offset +if $rows != $val then + return -1 +endi +if $data01 != 22501 then + return -1 +endi +if $data81 != 22545 then + return -1 +endi + ### aggregation + limit offset (with interval) sql select max(c1), max(c2), max(c3), max(c4), max(c5), max(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(5m) limit 5 if $rows != 5 then diff --git a/tests/script/general/parser/limit_tb.sim b/tests/script/general/parser/limit_tb.sim index 4a93797d40fb65a7df9ad8d18c60292bed83dfe4..a47a1557680c59664faed0380d28c3c32f88ffb9 100644 --- a/tests/script/general/parser/limit_tb.sim +++ b/tests/script/general/parser/limit_tb.sim @@ -463,6 +463,23 @@ if $data11 != 1 then return -1 endi +sql select csum(c1) from $tb where c1 > 5 limit 2 offset 1 +if $rows != 2 then + return -1 +endi +if $data00 != @18-09-17 10:10:00.000@ then + return -1 +endi +if $data01 != 13 then + return -1 +endi +if $data10 != @18-09-17 10:20:00.000@ then + return -1 +endi +if $data11 != 21 then + return -1 +endi + ### aggregation + limit offset (with interval) sql select max(c1), max(c2), max(c3), max(c4), max(c5), max(c6) from $tb where ts >= $ts0 and ts <= $tsu interval(5m) limit 5 if $rows != 5 then diff --git a/tests/script/general/parser/nestquery.sim b/tests/script/general/parser/nestquery.sim index 3c1ba0336973b8d07c785337de2d2c66202520c4..6cf8ac37181087cc16cf616c801daf0fe3f19e6f 100644 --- a/tests/script/general/parser/nestquery.sim +++ b/tests/script/general/parser/nestquery.sim @@ -186,6 +186,7 @@ sql_error select derivative(val, 1s, 0) from (select c1 val from nest_tb0); sql_error select twa(c1) from (select c1 from nest_tb0); sql_error select irate(c1) from (select c1 from nest_tb0); sql_error select diff(c1), twa(c1) from (select * from nest_tb0); +sql_error select csum(c1), twa(c1) from (select * from nest_tb0); sql_error select irate(c1), interp(c1), twa(c1) from (select * from nest_tb0); sql select apercentile(c1, 50) from (select * from nest_tb0) interval(1d) @@ -273,6 +274,10 @@ sql select diff(c1) from (select * from nest_tb0); if $rows != 9999 then return -1 endi +sql select csum(c1) from (select * from nest_tb0); +if $rows != 10000 then + return -1 +endi sql select avg(c1),sum(c2), max(c3), min(c4), count(*), first(c7), last(c7),spread(c6) from (select * from nest_tb0) interval(1d); if $rows != 7 then @@ -420,6 +425,23 @@ if $data01 != 1 then return -1 endi +sql select csum(val) from (select c1 val from nest_tb0); +if $rows != 10000 then + return -1 +endi + +if $data00 != @70-01-01 08:00:00.000@ then + return -1 +endi + +if $data01 != 0 then + return -1 +endi + +if $data41 != 10 then + return -1 +endi + sql_error select last_row(*) from (select * from nest_tb0) having c1 > 0 print ===========>td-4805 @@ -508,4 +530,4 @@ if $data11 != 2.000000000 then return -1 endi -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/script/regressionSuite.sim b/tests/script/regressionSuite.sim index bada2f655202ddc34ce6e67e718336a2afc41d50..7f940f805ef9915da4f0deecfc1ed0d837e54bcc 100644 --- a/tests/script/regressionSuite.sim +++ b/tests/script/regressionSuite.sim @@ -21,6 +21,8 @@ run general/compute/bottom.sim run general/compute/count.sim run general/compute/diff.sim run general/compute/diff2.sim +run general/compute/csum.sim +run general/compute/csum2.sim run general/compute/first.sim run general/compute/interval.sim run general/compute/last.sim