Changeset: 835da2f0a020 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/835da2f0a020
Added Files:
sql/test/BugTracker-2026/Tests/7865-unnest-cte-crash.test
Modified Files:
sql/server/rel_unnest.c
sql/test/BugTracker-2026/Tests/All
Branch: Dec2025
Log Message:
fixed issue unnesting recursive cte with except on base side, see issue #7865
diffs (44 lines):
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
@@ -1737,6 +1737,8 @@ push_up_munion(mvc *sql, sql_rel *rel, l
if (rec) {
sql_rel *sl = rlist->h->data;
set_has_freevar(sl);
+ if (!is_simple_project(sl->op))
+ sl = rel_inplace_project(sql->sa, sl,
NULL, rel_projections(sql, sl, NULL, 1, 1));
list *exps = exps_copy(sql, ad);
for(node *n = exps->h; n; n = n->next) {
sql_exp *e = n->data;
diff --git a/sql/test/BugTracker-2026/Tests/7865-unnest-cte-crash.test
b/sql/test/BugTracker-2026/Tests/7865-unnest-cte-crash.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2026/Tests/7865-unnest-cte-crash.test
@@ -0,0 +1,17 @@
+query I
+SELECT 1
+FROM (SELECT 1) as x(x)
+WHERE x IN
+(
+ WITH RECURSIVE t(row_number) AS
+ (
+ SELECT 1
+ EXCEPT
+ SELECT 2
+ UNION
+ SELECT 1 AS x WHERE EXISTS (SELECT * FROM t WHERE x = x)
+ )
+ SELECT x FROM t
+)
+----
+1
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
@@ -59,4 +59,5 @@ KNOWNFAIL?7774-insert-into-renamed-table
7855-ntile
7856-crash-exp-match
7857-rollup-crash
-7862-rel_has_freevar-crash
+KNOWNFAIL?7862-rel_has_freevar-crash
+7865-unnest-cte-crash
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]