Changeset: 39ea5ce42beb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/39ea5ce42beb
Added Files:
        sql/test/BugTracker-2025/Tests/7745-antijoin-bad-mal-gen.test
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/test/BugTracker-2025/Tests/All
Branch: Mar2025
Log Message:

Handle compare not equal expression properly in antijoin MAL gen. Fix #7745


diffs (41 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
@@ -3581,7 +3581,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);
                                jexps = NULL;
                        } else {
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
@@ -50,3 +50,4 @@ 7737-join-order
 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