Changeset: 3c0da253cd7e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3c0da253cd7e
Added Files:
        
sql/test/BugTracker-2026/Tests/7966-optimize-select-distinct-from-union-queries.test
Modified Files:
        sql/test/BugTracker-2026/Tests/All
Branch: Dec2025
Log Message:

Add test for #7966


diffs (81 lines):

diff --git 
a/sql/test/BugTracker-2026/Tests/7966-optimize-select-distinct-from-union-queries.test
 
b/sql/test/BugTracker-2026/Tests/7966-optimize-select-distinct-from-union-queries.test
new file mode 100644
--- /dev/null
+++ 
b/sql/test/BugTracker-2026/Tests/7966-optimize-select-distinct-from-union-queries.test
@@ -0,0 +1,68 @@
+statement ok
+CREATE TABLE outer_distinct_union_t (
+  a INT
+)
+
+statement ok
+INSERT INTO outer_distinct_union_t
+SELECT i
+FROM generate_series(1, 1000) AS g(i)
+
+-- Original query.
+-- UNION already removes duplicates.
+query T nosort
+EXPLAIN
+SELECT a
+FROM outer_distinct_union_t
+WHERE a <= 800
+UNION
+SELECT a
+FROM outer_distinct_union_t
+WHERE a >= 200
+----
+distinct munion (
+| project (
+| | select (
+| | | table("sys"."outer_distinct_union_t") [ "outer_distinct_union_t"."a" ]
+| | ) [ ("outer_distinct_union_t"."a") <= (int(31) "800") ]
+| ) [ "outer_distinct_union_t"."a" ],
+| project (
+| | select (
+| | | table("sys"."outer_distinct_union_t") [ "outer_distinct_union_t"."a" ]
+| | ) [ ("outer_distinct_union_t"."a") >= (int(31) "200") ]
+| ) [ "outer_distinct_union_t"."a" ]
+) [ "outer_distinct_union_t"."a" ]
+
+-- Mutated query.
+-- The outer DISTINCT is redundant.
+query T nosort
+EXPLAIN
+SELECT DISTINCT *
+FROM (
+  SELECT a
+  FROM outer_distinct_union_t
+  WHERE a <= 800
+  UNION
+  SELECT a
+  FROM outer_distinct_union_t
+  WHERE a >= 200
+) AS u
+----
+group by (
+| distinct munion (
+| | project (
+| | | select (
+| | | | table("sys"."outer_distinct_union_t") [ "outer_distinct_union_t"."a" ]
+| | | ) [ ("outer_distinct_union_t"."a") <= (int(31) "800") ]
+| | ) [ "outer_distinct_union_t"."a" ],
+| | project (
+| | | select (
+| | | | table("sys"."outer_distinct_union_t") [ "outer_distinct_union_t"."a" ]
+| | | ) [ ("outer_distinct_union_t"."a") >= (int(31) "200") ]
+| | ) [ "outer_distinct_union_t"."a" ]
+| ) [ "outer_distinct_union_t"."a" as "u"."a" ]
+) [ "u"."a" ] [ "u"."a" ]
+
+statement ok
+DROP TABLE IF EXISTS outer_distinct_union_t
+
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
@@ -149,3 +149,4 @@ KNOWNFAIL?7961-list_empty-crash
 KNOWNFAIL?7963-having-sum-or-exists-or-sum-bug
 7964-optimize-limit-0-queries
 KNOWNFAIL?7965-select-1-limit-0-bug
+7966-optimize-select-distinct-from-union-queries
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to