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

Reply via email to