Changeset: 2bc957f8a6e9 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2bc957f8a6e9
Added Files:
        
sql/test/BugTracker-2026/Tests/7996-delete-not-exists-correlated-query-bug.test
Modified Files:
        sql/test/BugTracker-2026/Tests/All
Branch: Dec2025
Log Message:

Add test for issue #7996


diffs (89 lines):

diff --git 
a/sql/test/BugTracker-2026/Tests/7996-delete-not-exists-correlated-query-bug.test
 
b/sql/test/BugTracker-2026/Tests/7996-delete-not-exists-correlated-query-bug.test
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2026/Tests/7996-delete-not-exists-correlated-query-bug.test
@@ -0,0 +1,76 @@
+-- Mode A: deletes rows it must keep (data loss)
+statement ok
+CREATE TABLE ta(id INT, k INT)
+
+statement ok rowcount 2
+INSERT INTO ta VALUES (1,10),(2,99)
+
+statement ok
+CREATE TABLE ua(k INT)
+
+statement ok rowcount 1
+INSERT INTO ua VALUES (10)
+
+-- id=2 (k=99) has no match in u
+statement ok  rowcount 0
+DELETE FROM ta WHERE NOT EXISTS(SELECT COUNT(*) FROM ua WHERE ua.k = ta.k)
+
+-- MonetDB: {1}        WRONG (deleted id=2)      PostgreSQL: {1,2}
+query I rowsort
+SELECT id FROM ta ORDER BY id
+----
+1
+2
+
+statement ok
+DROP TABLE IF EXISTS ta
+
+statement ok
+DROP TABLE IF EXISTS ua
+
+
+-- Mode B: ROLLUP variant deletes all rows
+statement ok
+CREATE TABLE tb(id INT, k INT)
+
+statement ok rowcount 3
+INSERT INTO tb VALUES (1,10),(2,20),(3,40)
+
+statement ok
+CREATE TABLE ub(k INT)
+
+statement ok rowcount 2
+INSERT INTO ub VALUES (10),(20)
+
+statement ok  rowcount 0
+DELETE FROM tb WHERE NOT EXISTS(SELECT COUNT(*) FROM ub WHERE ub.k = tb.k 
GROUP BY ROLLUP(ub.k))
+
+-- MonetDB: (empty)    WRONG (deleted all 3)     PostgreSQL: {1,2,3}
+query I rowsort
+SELECT id FROM tb ORDER BY id
+----
+1
+2
+3
+
+-- Mode C (mirror): keeps rows it must delete (stale data)
+statement ok
+DELETE FROM tb
+
+statement ok rowcount 3
+INSERT INTO tb VALUES (1,10),(2,20),(3,40)
+
+-- MonetDB keeps the no-match row that should have been deleted.
+statement ok  rowcount 3
+DELETE FROM tb WHERE EXISTS(SELECT COUNT(*) FROM ub WHERE ub.k = tb.k)
+
+query I rowsort
+SELECT id FROM tb ORDER BY id
+----
+
+statement ok
+DROP TABLE IF EXISTS tb
+
+statement ok
+DROP TABLE IF EXISTS ub
+
diff --git a/sql/test/BugTracker-2026/Tests/All 
b/sql/test/BugTracker-2026/Tests/All
--- a/sql/test/BugTracker-2026/Tests/All
+++ b/sql/test/BugTracker-2026/Tests/All
@@ -176,3 +176,4 @@ KNOWNFAIL?7992-window-date-range-interva
 KNOWNFAIL?7993-query-groupby-rollup-bug
 KNOWNFAIL?7994-exists-groupby-rollup-bug
 KNOWNFAIL?7995-left-join-lateral-subquery-bug
+KNOWNFAIL?7996-delete-not-exists-correlated-query-bug
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to