Changeset: dc47a6c1a7d5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/dc47a6c1a7d5
Added Files:
        sql/test/BugTracker-2025/Tests/7744_opt_null_in_where.test
Modified Files:
        sql/server/rel_rewriter.c
        sql/test/BugTracker-2025/Tests/All
Branch: default
Log Message:

Simplify expressions where pred is NULL in WHERE clause earlier. Fix #7744


diffs (43 lines):

diff --git a/sql/server/rel_rewriter.c b/sql/server/rel_rewriter.c
--- a/sql/server/rel_rewriter.c
+++ b/sql/server/rel_rewriter.c
@@ -162,7 +162,6 @@ rewrite_simplify_exp(visitor *v, sql_rel
                return e;
 
        v->changes = 0;
-       (void)rel; (void)depth;
 
        sql_subfunc *sf = e->f;
        if (is_func(e->type) && list_length(e->l) == 1 && is_not_func(sf)) {
@@ -232,6 +231,12 @@ rewrite_simplify_exp(visitor *v, sql_rel
                        return l;
                }
        }
+
+       if (is_select(rel->op) && is_compare(e->type) && (depth == 0 && 
exp_is_null(e))) {
+               v->changes++;
+               return exp_atom_bool(v->sql->sa, 0);
+       }
+
        return e;
 }
 
diff --git a/sql/test/BugTracker-2025/Tests/7744_opt_null_in_where.test 
b/sql/test/BugTracker-2025/Tests/7744_opt_null_in_where.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2025/Tests/7744_opt_null_in_where.test
@@ -0,0 +1,6 @@
+statement ok
+CREATE TABLE IF NOT EXISTS t0(c0 INT);
+
+query II
+SELECT * FROM t0 JOIN (VALUES (1)) AS subQuery0(c0) ON NOT EXISTS (SELECT 1 
WHERE subQuery0.c0 > 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
@@ -72,3 +72,4 @@ 7734-epoch-missing-cast
 7735-crossproduct-update
 7736-scale-reduction-crash
 7737-join-order
+7744_opt_null_in_where
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to