Changeset: 1ad50162d546 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1ad50162d546
Modified Files:
sql/server/rel_exp.c
sql/test/BugTracker-2025/Tests/7614_join_reordering.test
sql/test/BugTracker-2025/Tests/7615_join_reordering_2.test
sql/test/BugTracker-2025/Tests/7616_join_reordering_3.test
Branch: nested
Log Message:
we cannot use [] for filters anymore
diffs (61 lines):
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -199,7 +199,11 @@ exp_filter(allocator *sa, list *l, list
if (!r) { /* split l */
list *nl = sa_list(sa), *nr = sa_list(sa);
node *n = l->h;
- append(nl, n->data); /* sofar only first is left */
+ append(nl, n->data); /* split 1, 3 */
+ if (list_length(l) > 4) {
+ n = n->next;
+ append(nl, n->data); /* split 2, 3 */
+ }
for(n = n->next; n; n = n->next)
append(nr, n->data);
l = nl;
diff --git a/sql/test/BugTracker-2025/Tests/7614_join_reordering.test
b/sql/test/BugTracker-2025/Tests/7614_join_reordering.test
--- a/sql/test/BugTracker-2025/Tests/7614_join_reordering.test
+++ b/sql/test/BugTracker-2025/Tests/7614_join_reordering.test
@@ -14,7 +14,7 @@ statement ok
CREATE VIEW t4 AS SELECT t3.a1 AS a1, t3.a2 AS a2, t2.p AS a3, t2.p AS p FROM
t3, t2 WHERE t3.a2 = t2.a1;
query T nosort
-PLAN SELECT COUNT(*) FROM (SELECT t1.a1 AS a1, t1.a2 AS a2, t4.a1 AS a3, t4.a2
AS a4, t4.a3 AS a5, t1.p AS p FROM t1, t4 WHERE [t1.a1,t1.a2] maxlev_helper
[t4.a1,t4.a2,t4.a3]) AS foo;
+PLAN SELECT COUNT(*) FROM (SELECT t1.a1 AS a1, t1.a2 AS a2, t4.a1 AS a3, t4.a2
AS a4, t4.a3 AS a5, t1.p AS p FROM t1, t4 WHERE maxlev_helper (t1.a1, t1.a2,
t4.a1,t4.a2,t4.a3)) AS foo;
----
project (
| group by (
diff --git a/sql/test/BugTracker-2025/Tests/7615_join_reordering_2.test
b/sql/test/BugTracker-2025/Tests/7615_join_reordering_2.test
--- a/sql/test/BugTracker-2025/Tests/7615_join_reordering_2.test
+++ b/sql/test/BugTracker-2025/Tests/7615_join_reordering_2.test
@@ -17,7 +17,7 @@ statement ok
CREATE VIEW x5 AS SELECT x4.a1 AS a1, x4.a2 as a2, x4.a3 as a3, x4.p as p from
x4, (select case when a1 = a2 then 1 else 0 end as a1, 1.0e0 as p from (select
foox0.a1 as a1, foox1.a1 as a2, foox0.p * foox1.p as p from (select count(a1)
as a1, max(p) as p from x3) as foox0, (select count(a1) as a1, max(p) as p from
x4) as foox1) as foox2) as foox3 where foox3.a1 = 1
statement ok
-CREATE VIEW result AS SELECT x1.a1 AS a1, x1.a2 AS a2, x5.a1 AS a3, x5.a2 AS
a4, x5.a3 AS a5, x1.p * x5.p as p from x1, x5 where [x1.a1,x1.a2] maxlevhelper
[x5.a1,x5.a2,x5.a3]
+CREATE VIEW result AS SELECT x1.a1 AS a1, x1.a2 AS a2, x5.a1 AS a3, x5.a2 AS
a4, x5.a3 AS a5, x1.p * x5.p as p from x1, x5 where maxlevhelper( x1.a1,x1.a2,
x5.a1,x5.a2,x5.a3)
query T nosort
plan select * from result;
diff --git a/sql/test/BugTracker-2025/Tests/7616_join_reordering_3.test
b/sql/test/BugTracker-2025/Tests/7616_join_reordering_3.test
--- a/sql/test/BugTracker-2025/Tests/7616_join_reordering_3.test
+++ b/sql/test/BugTracker-2025/Tests/7616_join_reordering_3.test
@@ -5,7 +5,7 @@ statement ok
CREATE TABLE y (a1 INTEGER, p DOUBLE)
query T nosort
-PLAN SELECT a1, p FROM (SELECT y.a1 AS a1, foo_x3.a1 AS a2, y.p * foo_x3.p AS
p FROM y, (SELECT a1, p FROM (SELECT foo_x0.a1 AS a1, foo_x0.a2 AS a2,
foo_x1.a1 AS a3, foo_x0.p AS p FROM (SELECT a1, a3 AS a2, p FROM x) AS foo_x0,
(VALUES ('bar',1.0e0)) AS foo_x1(a1,p) WHERE [foo_x0.a2] contains
[foo_x1.a1,true]) AS foo_x2) AS foo_x3 WHERE y.a1 = foo_x3.a1) AS foo_x4
+PLAN SELECT a1, p FROM (SELECT y.a1 AS a1, foo_x3.a1 AS a2, y.p * foo_x3.p AS
p FROM y, (SELECT a1, p FROM (SELECT foo_x0.a1 AS a1, foo_x0.a2 AS a2,
foo_x1.a1 AS a3, foo_x0.p AS p FROM (SELECT a1, a3 AS a2, p FROM x) AS foo_x0,
(VALUES ('bar',1.0e0)) AS foo_x1(a1,p) WHERE contains( foo_x0.a2,
foo_x1.a1,true)) AS foo_x2) AS foo_x3 WHERE y.a1 = foo_x3.a1) AS foo_x4
----
project (
| project (
@@ -15,7 +15,7 @@ project (
| | | | | table("sys"."x") [ "x"."a1" NOT NULL UNIQUE, "x"."a3" NOT NULL
UNIQUE, "x"."p" NOT NULL UNIQUE ]
| | | | ) [ "x"."a1" NOT NULL UNIQUE as "foo_x0"."a1", "x"."a3" NOT NULL
UNIQUE as "foo_x0"."a2", "x"."p" NOT NULL UNIQUE as "foo_x0"."p" ],
| | | | [ [ varchar(3) "bar" ] as "foo_x1"."a1" ]
-| | | ) [ ("foo_x0"."a2" NOT NULL UNIQUE) FILTER
"sys"."contains"(varchar["foo_x1"."a1" NOT NULL] NOT NULL, boolean(1) "true") ],
+| | | ) [ ("foo_x0"."a2" NOT NULL UNIQUE) FILTER
"sys"."contains"("foo_x1"."a1" NOT NULL, boolean(1) "true") ],
| | | table("sys"."y") [ "y"."a1" NOT NULL UNIQUE, "y"."p" NOT NULL UNIQUE ]
| | ) [ ("y"."a1" NOT NULL UNIQUE) = ("foo_x0"."a1" NOT NULL) ]
| ) [ "y"."a1" NOT NULL as "foo_x4"."a1", "sys"."sql_mul"("y"."p" NOT NULL,
"foo_x0"."p" NOT NULL) NOT NULL as "foo_x4"."p" ]
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]