Changeset: 73d7089de5ba for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/73d7089de5ba
Modified Files:
        gdk/gdk_join.c
        sql/backends/monet5/sql_statement.c
        sql/server/rel_select.c
        sql/server/rel_unnest.c
        sql/test/BugTracker-2025/Tests/All
Branch: Dec2025
Log Message:

merged with mar2025


diffs (85 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -2005,8 +2005,8 @@ mergejoin(BAT **r1p, BAT **r2p, BAT **r3
        if (BATtvoid(l)) {
                /* l->ttype == TYPE_void && is_oid_nil(l->tseqbase) is
                 * handled by selectjoin */
-               assert(!is_oid_nil(l->tseqbase));
-               canditer_init(&llci, NULL, l);
+               if (!is_oid_nil(l->tseqbase))
+                       canditer_init(&llci, NULL, l);
                lvals = NULL;
        } else {
                lvals = li.base;                              /* non NULL */
diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -315,8 +315,6 @@ stmt_bat_new(backend *be, sql_subtype *t
 
        if (q == NULL)
                return NULL;
-       if (tt == TYPE_void)
-               tt = TYPE_bte;
        setVarType(be->mb, getArg(q, 0), newBatType(tt));
        q = pushType(be->mb, q, tt);
        if (estimate > 0)
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -3572,14 +3572,6 @@ static sql_exp *
                                        uaname = aname;
                                return sql_error(sql, 02, SQLSTATE(42000) "%s: 
parameters not allowed as arguments to aggregate functions", uaname);
                        }
-                       if (!t->type->localtype) {
-                               if (e->type == e_atom && !e->f) {
-                                       t = sql_fetch_localtype(TYPE_bte);
-                                       e->tpe = *t;
-                                       if (e->l)
-                                               e->l = atom_set_type(sql->sa, 
e->l, t);
-                               }
-                       }
 
                        all_aggr &= (exp_card(e) <= CARD_AGGR && 
!exp_is_atom(e) && is_aggr(e->type) && !is_func(e->type) && (!groupby || 
!is_groupby(groupby->op) || !groupby->r || !exps_find_exp(groupby->r, e)));
                        exp_only_freevar(query, e, &arguments_correlated, 
&found_one_freevar, &ungrouped_cols);
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
@@ -2661,11 +2661,7 @@ rel_set_type(visitor *v, sql_rel *rel)
                                                }
                                        } else if (te->type == e_atom && 
!te->f) {
                                                sql_subtype *t = 
exp_subtype(te);
-                                               if (t && !t->type->localtype) {
-                                                       te->tpe = 
*sql_fetch_localtype(TYPE_bte);
-                                                       if (te->l)
-                                                               te->l = 
atom_set_type(v->sql->sa, te->l, &te->tpe);
-                                               } else if (!t && !te->l && 
!te->r) { /* parameter, set type, or return ERR?? */
+                                               if (!t && !te->l && !te->r) { 
/* parameter, set type, or return ERR?? */
                                                        sql_arg *a = 
sql_bind_paramnr(v->sql, te->flag);
                                                        if (!a->type.type)
                                                                return 
sql_error(v->sql, 10, SQLSTATE(42000) "Could not determine type for argument 
number %d", te->flag+1);
diff --git a/sql/test/BugTracker-2025/Tests/7763-exits-with-null.test 
b/sql/test/BugTracker-2025/Tests/7763-exits-with-null.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2025/Tests/7763-exits-with-null.test
@@ -0,0 +1,12 @@
+query I
+SELECT *
+FROM (SELECT NULL x FROM (SELECT 1)) y
+WHERE EXISTS (SELECT 1 FROM (SELECT 2) WHERE y.x is NULL);
+----
+NULL
+
+query I
+SELECT *
+FROM (SELECT NULL x FROM (SELECT 1)) y
+WHERE NOT EXISTS (SELECT 1 FROM (SELECT 2) WHERE y.x is NULL);
+----
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
@@ -82,3 +82,4 @@ 7753-like-in-projection
 7752-union-sum
 7756-anti-join-null
 7759-replace-wrong-error
+7763-exits-with-null
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to