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]