Changeset: 37a2b64c0c90 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/37a2b64c0c90 Added Files: sql/test/rel-optimizers/Tests/select-cse-merge-ors-base.test sql/test/rel-optimizers/Tests/select-cse-merge-ors.reqtests sql/test/rel-optimizers/Tests/select-cse-merge-ors.test Modified Files: sql/test/rel-optimizers/Tests/All Branch: cmp-or-patterns Log Message:
Adds tests for merge_ors optimizer diffs (195 lines): diff --git a/sql/test/rel-optimizers/Tests/All b/sql/test/rel-optimizers/Tests/All --- a/sql/test/rel-optimizers/Tests/All +++ b/sql/test/rel-optimizers/Tests/All @@ -12,3 +12,5 @@ remote-replica-plan remote-replica merge-unions-base merge-unions +select-cse-merge-ors-base +select-cse-merge-ors diff --git a/sql/test/rel-optimizers/Tests/select-cse-merge-ors-base.test b/sql/test/rel-optimizers/Tests/select-cse-merge-ors-base.test new file mode 100644 --- /dev/null +++ b/sql/test/rel-optimizers/Tests/select-cse-merge-ors-base.test @@ -0,0 +1,6 @@ +statement ok +create table f (n int, m int) + +statement ok +insert into f values (1, 20), (2, 40), (2, 0), (3, 60), (9, 180) + diff --git a/sql/test/rel-optimizers/Tests/select-cse-merge-ors.reqtests b/sql/test/rel-optimizers/Tests/select-cse-merge-ors.reqtests new file mode 100644 --- /dev/null +++ b/sql/test/rel-optimizers/Tests/select-cse-merge-ors.reqtests @@ -0,0 +1,1 @@ +select-cse-merge-ors-base diff --git a/sql/test/rel-optimizers/Tests/select-cse-merge-ors.test b/sql/test/rel-optimizers/Tests/select-cse-merge-ors.test new file mode 100644 --- /dev/null +++ b/sql/test/rel-optimizers/Tests/select-cse-merge-ors.test @@ -0,0 +1,164 @@ +query T nosort +plan select * from f +where n = 1 + or n = 2 + or n = 3 +---- +project ( +| select ( +| | table("sys"."f") [ "f"."n", "f"."m" ] +| ) [ ("f"."n") in (int(4) "1", int(4) "2", int(4) "3") ] +) [ "f"."n", "f"."m" ] + +query II rowsort +select * from f +where n = 1 + or n = 2 + or m = 40; +---- +1 +20 +2 +0 +2 +40 + +query II rowsort +select * from f +where n = 1 + or m = 40 + or n = 2; +---- +1 +20 +2 +0 +2 +40 + +query II rowsort +select * from f +where m = 40 + or n = 1 + or n = 2; +---- +1 +20 +2 +0 +2 +40 + +## chained where-in for n + +query T nosort +plan select * from f +where n in (1, 2) + or n in (3) +---- +project ( +| select ( +| | table("sys"."f") [ "f"."n", "f"."m" ] +| ) [ ("f"."n") in (int(4) "3", int(4) "1", int(4) "2") ] +) [ "f"."n", "f"."m" ] + +query T nosort +plan select * from f +where m = 60 + or n in (1, 2) + or n in (3) +---- +KNOWN + +query T nosort +plan select * from f +where n in (1, 2) + or m = 60 + or n in (3) +---- +KNOWN + +query T nosort +plan select * from f +where n in (1, 2) + or n in (3) + or m = 60 +---- +KNOWN + +## chained cmp_equal-atom ors with lhs in [n, m] + +query T nosort +plan select * from f +where n = 1 + or n = 2 + or m = 60; +---- +project ( +| select ( +| | table("sys"."f") [ "f"."n", "f"."m" ] +| ) [ (("f"."m") = (int(8) "60")) or (("f"."n") in (int(4) "1", int(4) "2")) ] +) [ "f"."n", "f"."m" ] + +query T nosort +plan select * from f +where n = 1 + or m = 60 + or n = 2; +---- +project ( +| select ( +| | table("sys"."f") [ "f"."n", "f"."m" ] +| ) [ (("f"."m") = (int(8) "60")) or (("f"."n") in (int(4) "1", int(4) "2")) ] +) [ "f"."n", "f"."m" ] + +query T nosort +plan select * from f +where m = 60 + or n = 1 + or n = 2; +---- +project ( +| select ( +| | table("sys"."f") [ "f"."n", "f"."m" ] +| ) [ (("f"."m") = (int(8) "60")) or (("f"."n") in (int(4) "1", int(4) "2")) ] +) [ "f"."n", "f"."m" ] + +## chained ors with lhs in [n, (n && m)] + +query T nosort +plan select * from f +where (n = 3 and m = 60) + or n = 1 + or n = 2; +---- +project ( +| select ( +| | table("sys"."f") [ "f"."n", "f"."m" ] +| ) [ (("f"."n") in (int(4) "1", int(4) "2")) or (("f"."n") = (int(4) "3"), ("f"."m") = (int(8) "60")), ("f"."n") in (int(4) "3", int(4) "1", int(4) "2") ] +) [ "f"."n", "f"."m" ] + +query T nosort +plan select * from f +where n = 1 + or (n = 3 and m = 60) + or n = 2; +---- +project ( +| select ( +| | table("sys"."f") [ "f"."n", "f"."m" ] +| ) [ (("f"."n") in (int(4) "1", int(4) "2")) or (("f"."n") = (int(4) "3"), ("f"."m") = (int(8) "60")), ("f"."n") in (int(4) "3", int(4) "1", int(4) "2") ] +) [ "f"."n", "f"."m" ] + +query T nosort +plan select * from f +where n = 1 + or n = 2 + or (n = 3 and m = 60) +---- +project ( +| select ( +| | table("sys"."f") [ "f"."n", "f"."m" ] +| ) [ (("f"."n") in (int(4) "1", int(4) "2")) or (("f"."n") = (int(4) "3"), ("f"."m") = (int(8) "60")), ("f"."n") in (int(4) "3", int(4) "1", int(4) "2") ] +) [ "f"."n", "f"."m" ] + _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org