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]