This is an automated email from the ASF dual-hosted git repository.
jooger pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new ee71697b6a IGNITE-23740: Sql. Missing rowsort comparison mode in
test_filter_clause.test (#4772)
ee71697b6a is described below
commit ee71697b6a1493ab918027bf47d5a155704b876c
Author: Max Zhuravkov <[email protected]>
AuthorDate: Tue Nov 26 15:40:30 2024 +0200
IGNITE-23740: Sql. Missing rowsort comparison mode in
test_filter_clause.test (#4772)
---
.../aggregate/aggregates/test_covar.test_ignore | 40 ++
.../test_string_agg_array_agg.test_ignore | 56 +++
.../sql/filter/test_filter_clause.test | 2 +-
.../sql/filter/test_filter_clause.test_ignore | 534 ---------------------
4 files changed, 97 insertions(+), 535 deletions(-)
diff --git
a/modules/sql-engine/src/integrationTest/sql/aggregate/aggregates/test_covar.test_ignore
b/modules/sql-engine/src/integrationTest/sql/aggregate/aggregates/test_covar.test_ignore
index 13323c3cea..7f8638d156 100644
---
a/modules/sql-engine/src/integrationTest/sql/aggregate/aggregates/test_covar.test_ignore
+++
b/modules/sql-engine/src/integrationTest/sql/aggregate/aggregates/test_covar.test_ignore
@@ -99,3 +99,43 @@ SELECT COVAR_POP(NULL, NULL), COVAR_SAMP(NULL, NULL) FROM
integers
NULL
NULL
+#Query with many different filter clauses (e.g. 5 aggregates, 5 different
filters)
+statement ok
+create table t_2(a int, b int, c int, d int, e int);
+
+statement ok
+insert into t_2 select x a, length(x) b, mod(x,100) c, 5 d, 10000 e from
table(system_range(0, 999));
+
+query IIIII
+select count (a) filter (where a>10 and a < 15), count (b) filter (where b
between 1 and 3),
+ count (c) filter ( where c < 10), count (d) filter (where d =5), count(e)
filter (where e < 10)
+ from t_2;
+----
+4 1000 100 1000 0
+
+query IIIII
+select count (a) filter (where a>10 and a < 15), count (b) filter (where b
between 1 and 3),
+ count (c) filter ( where c < 10), count (d) filter (where d =5), count(e)
filter (where e < 10)
+ from t_2
+ group by b;
+----
+0 10 10 10 0
+4 90 0 90 0
+0 900 90 900 0
+
+
+#Filter with some more complex aggregates: COVAR_POP (multiple input columns),
STRING_AGG (strings) and ARRAY_AGG (lists)
+query II
+select COVAR_POP(a,b) filter (where a < 100), COVAR_POP(a,b) filter (where b
<5) from t_2;
+----
+4.5 49.95
+
+query II
+select COVAR_POP(a,c) filter (where a < 100), COVAR_POP(a,c) filter (where c
<50)
+from t_2
+group by b;
+----
+8.250000 8.250000
+674.916667 133.250000
+NULL 208.250000
+
diff --git
a/modules/sql-engine/src/integrationTest/sql/aggregate/aggregates/test_string_agg_array_agg.test_ignore
b/modules/sql-engine/src/integrationTest/sql/aggregate/aggregates/test_string_agg_array_agg.test_ignore
new file mode 100644
index 0000000000..8f5ab1ec6a
--- /dev/null
+++
b/modules/sql-engine/src/integrationTest/sql/aggregate/aggregates/test_string_agg_array_agg.test_ignore
@@ -0,0 +1,56 @@
+# name: test/sql/filter/test_string_agg_array_agg.test
+# description: Test STRING_AGG, ARRAY_AGG
+# group: [aggregates]
+# Ignore: https://issues.apache.org/jira/browse/IGNITE-15589
+
+statement ok
+CREATE TABLE films(film_id INTEGER, title VARCHAR)
+
+statement ok
+CREATE TABLE actors(actor_id INTEGER, first_name VARCHAR, last_name VARCHAR)
+
+statement ok
+CREATE TABLE film_actor(film_id INTEGER, actor_id INTEGER)
+
+statement ok
+INSERT INTO films VALUES (1, 'The Martian'), (2, 'Saving Private Ryan'), (3,
'Team America');
+
+statement ok
+INSERT INTO actors VALUES (1, 'Matt', 'Damon'), (2, 'Jessica', 'Chastain'),
(3, 'Tom', 'Hanks'), (4, 'Edward', 'Burns'),
+ (5, 'Kim', 'Jong Un'), (6,
'Alec', 'Baldwin');
+
+statement ok
+INSERT INTO film_actor VALUES (1, 1), (2, 1), (3, 1), (1, 2), (2, 3), (2, 4),
(3, 5), (3, 6);
+
+query II
+SELECT
+ title,
+ ARRAY_AGG (first_name || ' ' || last_name) filter (where first_name =
'Matt') actors
+FROM films
+JOIN film_actor USING (film_id)
+JOIN actors USING (actor_id)
+GROUP BY
+ title
+ORDER BY
+ title;
+----
+Saving Private Ryan [Matt Damon]
+Team America [Matt Damon]
+The Martian [Matt Damon]
+
+
+query II
+SELECT
+ title,
+ STRING_AGG (first_name || ' ' || last_name) filter (where first_name =
'Matt') actors
+FROM films
+JOIN film_actor USING (film_id)
+JOIN actors USING (actor_id)
+GROUP BY
+ title
+ORDER BY
+ title;
+----
+Saving Private Ryan Matt Damon
+Team America Matt Damon
+The Martian Matt Damon
diff --git
a/modules/sql-engine/src/integrationTest/sql/filter/test_filter_clause.test
b/modules/sql-engine/src/integrationTest/sql/filter/test_filter_clause.test
index c56c1bec6f..89a808abb7 100644
--- a/modules/sql-engine/src/integrationTest/sql/filter/test_filter_clause.test
+++ b/modules/sql-engine/src/integrationTest/sql/filter/test_filter_clause.test
@@ -441,7 +441,7 @@ select count (a) filter (where a>10 and a < 15), count (b)
filter (where b betwe
----
4 1000 100 1000 0
-query IIIII
+query IIIII rowsort
select count (a) filter (where a>10 and a < 15), count (b) filter (where b
between 1 and 3),
count (c) filter ( where c < 10), count (d) filter (where d =5), count(e)
filter (where e < 10)
from t_2
diff --git
a/modules/sql-engine/src/integrationTest/sql/filter/test_filter_clause.test_ignore
b/modules/sql-engine/src/integrationTest/sql/filter/test_filter_clause.test_ignore
deleted file mode 100644
index f526e792ba..0000000000
---
a/modules/sql-engine/src/integrationTest/sql/filter/test_filter_clause.test_ignore
+++ /dev/null
@@ -1,534 +0,0 @@
-# name: test/sql/filter/test_filter_clause.test
-# description: Test aggregation with filter clause
-# group: [filter]
-# Ignore: https://issues.apache.org/jira/browse/IGNITE-15589
-
-statement ok
-create table t(i int, j int, k int);
-
-statement ok
-insert into t select x i, mod(x,10) j,mod(x,10)*10000000 k from
table(system_range(0, 999));
-
-query I
-SELECT count(*) from t;
-----
-1000
-
-query II
-SELECT
- COUNT(*) AS unfiltered,
- COUNT(*) FILTER (WHERE i < 5) AS filtered
-FROM t;
-----
-1000 5
-
-query II
-SELECT
- COUNT(*) AS unfiltered,
- COUNT(*) FILTER (WHERE i > 5 and i < 10) AS filtered
-FROM t;
-----
-1000 4
-
-query II
-SELECT
- SUM(i) AS unfiltered,
- SUM(i) FILTER (WHERE i < 5) AS filtered
-FROM t;
-----
-499500 10
-
-query II
-SELECT
- SUM(i) AS unfiltered,
- SUM(i) FILTER (WHERE i between 5 and 10) AS filtered
-FROM t;
-----
-499500 45
-
-query II
-SELECT
- SUM(i) AS unfiltered,
- SUM(j) FILTER (WHERE j < 2) AS filtered
-FROM t;
-----
-499500 100
-
-
-query I
-SELECT
- SUM(j) FILTER (WHERE i < 10)
-FROM t;
-----
-45
-
-query I
-SELECT
- SUM(j) FILTER (WHERE i < (select 10))
-FROM t;
-----
-45
-
-query I
-SELECT
- SUM(i) FILTER (WHERE i < (select i from t as t2 where t.i = t2.i))
-FROM t;
-----
-NULL
-
-# use it inside subquery
-query I
-SELECT
- (select sum(t2.i) FILTER (where t2.i < 10) from t as t2)
-FROM t
-limit 5;
-----
-45
-45
-45
-45
-45
-
-# multiple filters
-query II
-SELECT
- SUM(j) FILTER (WHERE i < 10),
- SUM(i) FILTER (WHERE i < 5)
-FROM t;
-----
-45 10
-
-query II rowsort
- SELECT
- sum(i) AS unfiltered,
- sum(i) FILTER (WHERE i < 5) AS filtered
-FROM t
-group by j;
-----
-49500 0
-49600 1
-49700 2
-49800 3
-49900 4
-50000 NULL
-50100 NULL
-50200 NULL
-50300 NULL
-50400 NULL
-
-query III rowsort
- SELECT
- COUNT(*) AS unfiltered,
- COUNT(*) FILTER (WHERE i > 5 and i < 10) AS filtered,
- j
-FROM t
-group by j
-order by j;
-----
-100 0 0
-100 0 1
-100 0 2
-100 0 3
-100 0 4
-100 0 5
-100 1 6
-100 1 7
-100 1 8
-100 1 9
-
-query II rowsort
-SELECT
- SUM(i) AS unfiltered,
- SUM(i) FILTER (WHERE i between 5 and 10) AS filtered
-FROM t
-group by j;
-----
-49500 10
-49600 NULL
-49700 NULL
-49800 NULL
-49900 NULL
-50000 5
-50100 6
-50200 7
-50300 8
-50400 9
-
-query III rowsort
-SELECT
- SUM(i) AS unfiltered,
- SUM(j) FILTER (WHERE j = 1) AS filtered,
- j
-FROM t
-group by j;
-----
-49500 NULL 0
-49600 100 1
-49700 NULL 2
-49800 NULL 3
-49900 NULL 4
-50000 NULL 5
-50100 NULL 6
-50200 NULL 7
-50300 NULL 8
-50400 NULL 9
-
-query I rowsort
-SELECT
- SUM(j) FILTER (WHERE i < 10)
-FROM t
-group by j;
-----
-0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-
-query I rowsort
-SELECT
- SUM(j) FILTER (WHERE i < (select 10))
-FROM t
-group by j;
-----
-0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-
-query I
-SELECT
- SUM(i) FILTER (WHERE i < (select i from t as t2 where t.i = t2.i))
-FROM t
-group by j;
-----
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-
-# use it inside subquery
-query I
- SELECT
- (select sum(t2.i) FILTER (where t2.i < 10) from t as t2)
-FROM t
-group by j
-limit 5;
-----
-45
-45
-45
-45
-45
-
-# multiple filters
-query II rowsort
-SELECT
- SUM(j) FILTER (WHERE i < 10),
- SUM(i) FILTER (WHERE i < 5)
-FROM t
-group by j;
-----
-0 0
-1 1
-2 2
-3 3
-4 4
-5 NULL
-6 NULL
-7 NULL
-8 NULL
-9 NULL
-
-query II rowsort
- SELECT
- sum(i) AS unfiltered,
- sum(i) FILTER (WHERE i < 5) AS filtered
-FROM t
-group by k;
-----
-49500 0
-49600 1
-49700 2
-49800 3
-49900 4
-50000 NULL
-50100 NULL
-50200 NULL
-50300 NULL
-50400 NULL
-
-query II rowsort
- SELECT
- COUNT(*) AS unfiltered,
- COUNT(*) FILTER (WHERE i > 5 and i < 10) AS filtered
-FROM t
-group by k;
-----
-100 0
-100 0
-100 0
-100 0
-100 0
-100 0
-100 1
-100 1
-100 1
-100 1
-
-query II rowsort
-SELECT
- SUM(i) AS unfiltered,
- SUM(i) FILTER (WHERE i between 5 and 10) AS filtered
-FROM t
-group by k;
-----
-49500 10
-49600 NULL
-49700 NULL
-49800 NULL
-49900 NULL
-50000 5
-50100 6
-50200 7
-50300 8
-50400 9
-
-query III rowsort
-SELECT
- SUM(i) AS unfiltered,
- SUM(j) FILTER (WHERE j = 1) AS filtered,
- k
-FROM t
-group by k;
-----
-49500 NULL 0
-49600 100 10000000
-49700 NULL 20000000
-49800 NULL 30000000
-49900 NULL 40000000
-50000 NULL 50000000
-50100 NULL 60000000
-50200 NULL 70000000
-50300 NULL 80000000
-50400 NULL 90000000
-
-query I rowsort
-SELECT
- SUM(j) FILTER (WHERE i < 10)
-FROM t
-group by k;
-----
-0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-
-query I rowsort
-SELECT
- SUM(j) FILTER (WHERE i < (select 10))
-FROM t
-group by k;
-----
-0
-1
-2
-3
-4
-5
-6
-7
-8
-9
-
-query I rowsort
-SELECT
- SUM(i) FILTER (WHERE i < (select i from t as t2 where t.i = t2.i))
-FROM t
-group by k;
-----
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-
-# use it inside subquery
-query I
- SELECT
- (select sum(t2.i) FILTER (where t2.i < 10) from t as t2)
-FROM t
-group by k
-limit 5;
-----
-45
-45
-45
-45
-45
-
-# multiple filters
-query II rowsort
-SELECT
- SUM(j) FILTER (WHERE i < 10),
- SUM(i) FILTER (WHERE i < 5)
-FROM t
-group by k;
-----
-0 0
-1 1
-2 2
-3 3
-4 4
-5 NULL
-6 NULL
-7 NULL
-8 NULL
-9 NULL
-
-
-# use correlated expression inside the filter itself
-query I rowsort
- SELECT
- (select sum(t2.i) FILTER (where t.i = t2.i) from t as t2)
-FROM t
-where i < 5
-----
-0
-1
-2
-3
-4
-
-#Query with many different filter clauses (e.g. 5 aggregates, 5 different
filters)
-statement ok
-create table t_2(a int, b int, c int, d int, e int);
-
-statement ok
-insert into t_2 select x a, length(x) b, mod(x,100) c, 5 d, 10000 e from
table(system_range(0, 999));
-
-query IIIII
-select count (a) filter (where a>10 and a < 15), count (b) filter (where b
between 1 and 3),
- count (c) filter ( where c < 10), count (d) filter (where d =5), count(e)
filter (where e < 10)
- from t_2;
-----
-4 1000 100 1000 0
-
-query IIIII
-select count (a) filter (where a>10 and a < 15), count (b) filter (where b
between 1 and 3),
- count (c) filter ( where c < 10), count (d) filter (where d =5), count(e)
filter (where e < 10)
- from t_2
- group by b;
-----
-0 10 10 10 0
-4 90 0 90 0
-0 900 90 900 0
-
-
-#Filter with some more complex aggregates: COVAR_POP (multiple input columns),
STRING_AGG (strings) and ARRAY_AGG (lists)
-query II
-select COVAR_POP(a,b) filter (where a < 100), COVAR_POP(a,b) filter (where b
<5) from t_2;
-----
-4.5 49.95
-
-query II
-select COVAR_POP(a,c) filter (where a < 100), COVAR_POP(a,c) filter (where c
<50)
-from t_2
-group by b;
-----
-8.250000 8.250000
-674.916667 133.250000
-NULL 208.250000
-
-statement ok
-CREATE TABLE films(film_id INTEGER, title VARCHAR)
-
-statement ok
-CREATE TABLE actors(actor_id INTEGER, first_name VARCHAR, last_name VARCHAR)
-
-statement ok
-CREATE TABLE film_actor(film_id INTEGER, actor_id INTEGER)
-
-statement ok
-INSERT INTO films VALUES (1, 'The Martian'), (2, 'Saving Private Ryan'), (3,
'Team America');
-
-statement ok
-INSERT INTO actors VALUES (1, 'Matt', 'Damon'), (2, 'Jessica', 'Chastain'),
(3, 'Tom', 'Hanks'), (4, 'Edward', 'Burns'),
- (5, 'Kim', 'Jong Un'), (6,
'Alec', 'Baldwin');
-
-statement ok
-INSERT INTO film_actor VALUES (1, 1), (2, 1), (3, 1), (1, 2), (2, 3), (2, 4),
(3, 5), (3, 6);
-
-query II
-SELECT
- title,
- ARRAY_AGG (first_name || ' ' || last_name) filter (where first_name =
'Matt') actors
-FROM films
-JOIN film_actor USING (film_id)
-JOIN actors USING (actor_id)
-GROUP BY
- title
-ORDER BY
- title;
-----
-Saving Private Ryan [Matt Damon]
-Team America [Matt Damon]
-The Martian [Matt Damon]
-
-
-query II
-SELECT
- title,
- STRING_AGG (first_name || ' ' || last_name) filter (where first_name =
'Matt') actors
-FROM films
-JOIN film_actor USING (film_id)
-JOIN actors USING (actor_id)
-GROUP BY
- title
-ORDER BY
- title;
-----
-Saving Private Ryan Matt Damon
-Team America Matt Damon
-The Martian Matt Damon
-
-
-#DISTINCT aggregates
-statement ok
-CREATE TABLE integers(i INTEGER)
-
-statement ok
-insert into integers values (1),(1),(2),(2),(3),(4),(8);
-
-query I
-select sum(distinct i) filter (where i >1 and i < 5) from integers;
-----
-9