Changeset: 744fde31e79c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=744fde31e79c Modified Files: sql/server/rel_optimizer.c Branch: Oct2020 Log Message:
A projection doesn't change the input cardinality for an union. rel_push_project_down_union optimization is allowed on that case diffs (21 lines): diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -5628,7 +5628,7 @@ rel_push_project_down_union(visitor *v, sql_rel *ul = u->l; sql_rel *ur = u->r; - if (!u || !is_union(u->op) || need_distinct(u) || is_single(u) || !u->exps || rel_is_ref(u) || project_unsafe(rel,0)) + if (!u || !is_union(u->op) || need_distinct(u) || !u->exps || rel_is_ref(u) || project_unsafe(rel,0)) return rel; /* don't push project down union of single values */ if ((is_project(ul->op) && !ul->l) || (is_project(ur->op) && !ur->l)) @@ -5664,6 +5664,8 @@ rel_push_project_down_union(visitor *v, rel_projections(v->sql, rel, NULL, 1, 1)); if (need_distinct) set_distinct(rel); + if (is_single(u)) + set_single(rel); v->changes++; rel->l = rel_merge_projects(v, rel->l); rel->r = rel_merge_projects(v, rel->r); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list