Changeset: 8b56a4b04198 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8b56a4b04198
Modified Files:
sql/test/Tests/select_window_pushdown.test
Branch: Sep2022
Log Message:
Include properties info in test output.
diffs (116 lines):
diff --git a/sql/test/Tests/select_window_pushdown.test
b/sql/test/Tests/select_window_pushdown.test
--- a/sql/test/Tests/select_window_pushdown.test
+++ b/sql/test/Tests/select_window_pushdown.test
@@ -5,6 +5,7 @@ CREATE TABLE Test (k int, v int);
statement ok
INSERT INTO Test SELECT value % 10 as k, value as v FROM generate_series(1,
100);
+
# simple eq filter on the partition key, must be pushed down,
# while the flag filter cannot be safely pushed down
query T nosort
@@ -32,6 +33,7 @@ project (
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(32)
"1") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
"t1"."flag" NOT NULL as "t2"."flag", "t2"."rank" NOT NULL ]
+
# simple range filter on the partition key
query T nosort
plan SELECT *
@@ -58,6 +60,7 @@ project (
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(32)
"1") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
"t1"."flag" NOT NULL as "t2"."flag", "t2"."rank" NOT NULL ]
+
# simple not in filter on the partition key
query T nosort
plan SELECT *
@@ -84,6 +87,7 @@ project (
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(32)
"1") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
"t1"."flag" NOT NULL as "t2"."flag", "t2"."rank" NOT NULL ]
+
# another filter also not on the partition key, must not be pushed down
query T nosort
plan SELECT *
@@ -110,6 +114,7 @@ project (
| ) [ ("t1"."v" NOT NULL UNIQUE) = (int(32) "15"), ("t1"."flag" NOT NULL) =
(boolean(1) "false"), ("t2"."rank") = (int(32) "1") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
"t1"."flag" NOT NULL as "t2"."flag", "t2"."rank" NOT NULL ]
+
# swapping k with v just to test for hardcoded optimizations,
# v is pushed down but not k
query T nosort
@@ -137,8 +142,36 @@ project (
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(32)
"1"), ("t1"."k" NOT NULL) = (int(32) "10") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
"t1"."flag" NOT NULL as "t2"."flag", "t2"."rank" NOT NULL ]
+
# performing some additional computation on the partition key,
# filter cannot be pushed down
+plan SELECT *
+FROM (
+ SELECT k * 10 as k, v, flag, rank() OVER (PARTITION BY k ORDER BY v DESC)
AS rank
+ FROM (
+ SELECT k, v, v % 2 = 0 AS flag
+ FROM Test
+ ) t1
+) t2
+WHERE rank = 1 AND NOT flag AND k = 10;
+----
+project (
+| select (
+| | project (
+| | | select (
+| | | | project (
+| | | | | project (
+| | | | | | project (
+| | | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL
UNIQUE ] COUNT 99
+| | | | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(32) "2") NOT NULL as
"%1"."%1", "sys"."="("%1"."%1" NOT NULL, int(32) "0") NOT NULL as "t1"."flag" ]
COUNT 99
+| | | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT
NULL ] [ "t1"."k" ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ] COUNT 99
+| | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL,
"sys"."rank"("sys"."star"(), "sys"."diff"("t1"."k" NOT NULL),
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ] COUNT 99
+| | | ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") =
(int(32) "1") ] COUNT 99
+| | ) [ "sys"."sql_mul"("t1"."k" NOT NULL, tinyint(4) "10") NOT NULL as
"t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v", "t1"."flag" NOT NULL as
"t2"."flag", "t2"."rank" NOT NULL ] COUNT 99
+| ) [ ("t2"."k" NOT NULL) = (bigint(36) "10") ] COUNT 99
+) [ "t2"."k" NOT NULL, "t2"."v" NOT NULL UNIQUE, "t2"."flag" NOT NULL,
"t2"."rank" NOT NULL ] COUNT 99
+
+
# filter [partition column OR flag], cannot be safely pushed down
query T nosort
plan SELECT *
@@ -163,6 +196,7 @@ project (
| ) [ ("t2"."rank") = (int(32) "1"), (("t1"."flag" NOT NULL) = (boolean(1)
"false")) or (("t1"."k" NOT NULL) = (int(32) "10")) ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
"t1"."flag" NOT NULL as "t2"."flag", "t2"."rank" NOT NULL ]
+
# filter on k and v and both are partition columns, both filters can be pushed
down
query T nosort
plan SELECT *
@@ -189,9 +223,11 @@ project (
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(32)
"1") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
"t1"."flag" NOT NULL as "t2"."flag", "t2"."rank" NOT NULL ]
+
statement ok
DROP TABLE Test
+
# test with string filters
# (previously e_convert were not being considered)
statement ok
@@ -225,6 +261,7 @@ project (
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(32)
"1") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
"t1"."flag" NOT NULL as "t2"."flag", "t2"."rank" NOT NULL ]
+
# test with like-type filters
query T nosort
plan SELECT *
@@ -251,6 +288,7 @@ project (
| ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(32)
"1") ]
) [ "t1"."k" NOT NULL as "t2"."k", "t1"."v" NOT NULL UNIQUE as "t2"."v",
"t1"."flag" NOT NULL as "t2"."flag", "t2"."rank" NOT NULL ]
+
statement ok
DROP TABLE Test
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]