Changeset: 7d37c99df22b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7d37c99df22b
Modified Files:
sql/include/sql_relation.h
sql/server/rel_dump.c
sql/server/rel_unnest.c
sql/test/BugTracker-2026/Tests/7873-push_up_join-assertion-failure.test
sql/test/BugTracker-2026/Tests/7874-rel2bin_join-assertion-failure.test
sql/test/BugTracker-2026/Tests/All
Branch: Dec2025
Log Message:
fixes for issues #7873 and #7874
in case of multiple selects push_up correctly pushes these up but _rel_unnest
didn't go down until the next dependend operator.
diffs (132 lines):
diff --git a/sql/include/sql_relation.h b/sql/include/sql_relation.h
--- a/sql/include/sql_relation.h
+++ b/sql/include/sql_relation.h
@@ -278,6 +278,7 @@ typedef enum operator_type {
#define reset_single(rel) (rel)->single = 0
#define set_recursive(rel) (rel)->recursive = 1
#define is_recursive(rel) ((rel)->recursive)
+#define set_dynamic(rel) (rel)->dynamic = 1
#define is_dynamic(rel) ((rel)->dynamic)
#define is_freevar(e) ((e)->freevar)
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -153,6 +153,7 @@ exp_print(mvc *sql, stream *fout, sql_ex
allocator_state ta_state = ma_open(ta);
// mnstr_printf(fout, "%p ", e);
if (mvc_debug_on(sql, 4) && e->alias.label < 0)
+ //if (sql->show_details && e->alias.label < 0)
mnstr_printf(fout, "%d: ", e->alias.label);
switch(e->type) {
case e_psm: {
@@ -287,6 +288,7 @@ exp_print(mvc *sql, stream *fout, sql_ex
case e_column: {
if (is_freevar(e))
mnstr_printf(fout, "!!!FREE!!! ");
+ //if (sql->show_details && e->nid)
if (mvc_debug_on(sql, 4) && e->nid)
mnstr_printf(fout, "<%d", e->nid);
if (e->l)
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -1477,8 +1477,7 @@ push_up_join(mvc *sql, sql_rel *rel, lis
int single = is_single(j);
if (attr && exps_uses_exp(rel->exps,
attr->h->data)) {
- if (!rel_is_ref(rel) && !rel_is_ref(j)
&&
- rel->op == op_left && j->op ==
op_left) {
+ if (!rel_is_ref(rel) && !rel_is_ref(j)
&& j->op == op_left) {
j->l = rel->l;
rel->l = jl;
@@ -2199,9 +2198,10 @@ _rel_unnest(visitor *v, sql_rel *rel)
(is_join(rel->op) && l && is_select(l->op) &&
exps_have_freevar(v->sql, l->exps) && !rel_is_ref(l)) ||
(is_join(rel->op) && r && is_select(r->op) &&
exps_have_freevar(v->sql, r->exps) && !rel_is_ref(r)))) {
rel = push_up_select2(v, rel);
- if (rel && is_select(rel->op)) {
- sql_rel *l = rel->l;
- if (is_dependent(l)) {
+ sql_rel *l = rel;
+ while (l && is_select(l->op)) {
+ l = l->l;
+ if (l && is_dependent(l)) {
rel->l = l = rel_unnest_dependent(v->sql, l);
v->changes++;
}
diff --git
a/sql/test/BugTracker-2026/Tests/7873-push_up_join-assertion-failure.test
b/sql/test/BugTracker-2026/Tests/7873-push_up_join-assertion-failure.test
--- a/sql/test/BugTracker-2026/Tests/7873-push_up_join-assertion-failure.test
+++ b/sql/test/BugTracker-2026/Tests/7873-push_up_join-assertion-failure.test
@@ -155,6 +155,11 @@ where EXISTS (
OR false))
limit 107)
----
+102
+102
+102
+102
+102
statement ok
DROP TABLE orders
diff --git
a/sql/test/BugTracker-2026/Tests/7874-rel2bin_join-assertion-failure.test
b/sql/test/BugTracker-2026/Tests/7874-rel2bin_join-assertion-failure.test
--- a/sql/test/BugTracker-2026/Tests/7874-rel2bin_join-assertion-failure.test
+++ b/sql/test/BugTracker-2026/Tests/7874-rel2bin_join-assertion-failure.test
@@ -81,6 +81,7 @@ INSERT INTO orders VALUES
-- query triggers assertion failure in rel2bin_join (be=0x7ff0701a61b0,
rel=0x7ff07015b800, refs=0x7ff07023cf60) at sql/backends/monet5/rel_bin.c:3463
query TT rowsort
select
+ distinct
subq_0.c0,
subq_3.c0
from
@@ -137,7 +138,36 @@ from
where ref_4.user_id < ref_4.id)
) as subq_3
----
-
+alice
+NULL
+alice
+alice
+alice
+bob
+alice
+carol
+alice
+dave
+bob
+NULL
+bob
+alice
+bob
+bob
+bob
+carol
+bob
+dave
+dave
+NULL
+dave
+alice
+dave
+bob
+dave
+carol
+dave
+dave
statement ok
DROP TABLE orders
diff --git a/sql/test/BugTracker-2026/Tests/All
b/sql/test/BugTracker-2026/Tests/All
--- a/sql/test/BugTracker-2026/Tests/All
+++ b/sql/test/BugTracker-2026/Tests/All
@@ -63,5 +63,5 @@ KNOWNFAIL?7774-insert-into-renamed-table
7865-unnest-cte-crash
7867-push-groupby-down
7872-exp-type-check-failed
-KNOWNFAIL?7873-push_up_join-assertion-failure
-KNOWNFAIL?7874-rel2bin_join-assertion-failure
+7873-push_up_join-assertion-failure
+7874-rel2bin_join-assertion-failure
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]