Changeset: 537ebd308bd3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/537ebd308bd3
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/server/rel_exp.c
        sql/server/rel_unnest.c
        sql/test/BugTracker-2025/Tests/All
Branch: Dec2025
Log Message:

Merge with Mar2025 branch.


diffs (81 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -3633,7 +3633,8 @@ rel2bin_antijoin(backend *be, sql_rel *r
                        if (!li)
                                li = ls;
 
-                       if (!en->next && (constval || stmt_has_null(ls) /*|| 
stmt_has_null(rs) (change into check for fk)*/)) {
+                       if (!en->next && !is_anti(e) && e->flag != cmp_notequal 
&&
+                               (constval || stmt_has_null(ls))) {
                                join = stmt_tdiff2(be, ls, rs, NULL, 
is_semantics(e), is_any(e));
                                jexps = NULL;
                        } else {
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
@@ -828,6 +828,8 @@ exp_ref(mvc *sql, sql_exp *e)
        sql_exp *ne = exp_propagate(sql->sa, exp_column(sql->sa, 
exp_relname(e), exp_name(e), exp_subtype(e), exp_card(e), has_nil(e), 
is_unique(e), is_intern(e)), e);
        if (ne) {
                ne->nid = e->alias.label;
+               if (!ne->nid)
+                       ne->nid = exp_get_label(e);
                ne->alias.label = ne->nid;
        }
        return ne;
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
@@ -3552,7 +3552,11 @@ rewrite_compare(visitor *v, sql_rel *rel
                                }
                                if (quantifier) {
                                        sql_subfunc *a;
-
+                                       if (rsq == NULL) {
+                                               rsq = rel_project(v->sql->sa, 
NULL, sa_list(v->sql->sa));
+                                               append(rsq->exps, re);
+                                               re = exp_ref(v->sql, re);
+                                       }
                                        rsq = rel_groupby(v->sql, rsq, NULL);
                                        a = sql_bind_func(v->sql, "sys", 
"null", exp_subtype(re), NULL, F_AGGR, true, true);
                                        rnull = exp_aggr1(v->sql->sa, re, a, 0, 
1, CARD_AGGR, has_nil(re));
diff --git a/sql/test/BugTracker-2025/Tests/7725-crash-find-rel-ref.test 
b/sql/test/BugTracker-2025/Tests/7725-crash-find-rel-ref.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2025/Tests/7725-crash-find-rel-ref.test
@@ -0,0 +1,6 @@
+statement error 22018!conversion of string 'EUROPE' to type bte failed.
+SELECT ( WITH x ( x ) AS ( SELECT DISTINCT 1 ) SELECT ( SELECT x FROM x WHERE 
x = ( SELECT ( SELECT x FROM x WHERE EXISTS ( SELECT - x , x FROM x ) ) WHERE ( 
WITH x AS ( SELECT * FROM generate_series ( 8888 , 8100 ) EXCEPT SELECT * FROM 
generate_series ( 44 , 3 ) ) SELECT 2 WHERE FALSE ) > ANY ( 'EUROPE' ) GROUP BY 
1 ) ) FROM x )
+
+statement ok
+SELECT (SELECT * FROM (select 1))
+GROUP BY 1;
diff --git a/sql/test/BugTracker-2025/Tests/7745-antijoin-bad-mal-gen.test 
b/sql/test/BugTracker-2025/Tests/7745-antijoin-bad-mal-gen.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2025/Tests/7745-antijoin-bad-mal-gen.test
@@ -0,0 +1,15 @@
+statement ok
+CREATE TABLE t0(c1 INT)
+
+statement ok
+CREATE TABLE t1(c1 INT)
+
+statement ok
+INSERT INTO t1(c1) VALUES (1)
+
+statement ok
+INSERT INTO t0(c1) VALUES (-10)
+
+query I
+SELECT * FROM t1 WHERE NOT EXISTS (SELECT 1 FROM t0 WHERE ((t1.c1)!=(t0.c1)));
+----
diff --git a/sql/test/BugTracker-2025/Tests/All 
b/sql/test/BugTracker-2025/Tests/All
--- a/sql/test/BugTracker-2025/Tests/All
+++ b/sql/test/BugTracker-2025/Tests/All
@@ -76,3 +76,5 @@ 7741_missing_rel_name
 7744_opt_null_in_where
 7748-update-returning-subquery-crash
 7753-like-in-projection
+7725-crash-find-rel-ref
+7745-antijoin-bad-mal-gen
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to