Changeset: 598e090a4377 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/598e090a4377
Added Files:
sql/test/BugTracker-2022/Tests/push-aggr-down-removes-distinct-on-union-all.Bug-7318.test
Modified Files:
sql/server/rel_optimize_proj.c
sql/test/BugTracker-2022/Tests/All
Branch: Sep2022
Log Message:
Fixes rel optimizer bug 7318
diffs (52 lines):
diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c
--- a/sql/server/rel_optimize_proj.c
+++ b/sql/server/rel_optimize_proj.c
@@ -1835,7 +1835,7 @@ rel_push_aggr_down(visitor *v, sql_rel *
node *n, *m;
list *lgbe = NULL, *rgbe = NULL, *gbe = NULL, *exps = NULL;
- if (u->op == op_project)
+ if (u->op == op_project && !need_distinct(u))
u = u->l;
if (!u || !is_union(u->op) || need_distinct(u) || is_single(u)
|| !u->exps || rel_is_ref(u))
diff --git a/sql/test/BugTracker-2022/Tests/All
b/sql/test/BugTracker-2022/Tests/All
--- a/sql/test/BugTracker-2022/Tests/All
+++ b/sql/test/BugTracker-2022/Tests/All
@@ -12,3 +12,4 @@ dump-table-data.Bug-7282
NOT_WIN32?cudf-grouped-aggr.Bug-7285
create_func_with_case_and_in
single_row_in_rel_order_by_column.Bug-7306
+push-aggr-down-removes-distinct-on-union-all.Bug-7318
diff --git
a/sql/test/BugTracker-2022/Tests/push-aggr-down-removes-distinct-on-union-all.Bug-7318.test
b/sql/test/BugTracker-2022/Tests/push-aggr-down-removes-distinct-on-union-all.Bug-7318.test
new file mode 100644
--- /dev/null
+++
b/sql/test/BugTracker-2022/Tests/push-aggr-down-removes-distinct-on-union-all.Bug-7318.test
@@ -0,0 +1,27 @@
+statement ok
+create table foo (n int, m int)
+
+statement ok
+create table bar (n int, m int)
+
+statement ok
+insert into foo values (1,1), (2,1), (1,2), (3,1)
+
+statement ok
+insert into bar values (2,2), (3,2), (1,3), (3,3)
+
+statement ok
+create view fub as
+ select * from foo
+ union all
+ select * from bar
+
+query I nosort
+select count(distinct n) from fub
+----
+3
+
+query I nosort
+select count(*) from (select distinct n from fub) as subq
+----
+3
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]