Changeset: d00c607695d8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d00c607695d8 Modified Files: sql/server/rel_unnest.c Branch: Oct2020 Log Message:
fixed push_up_set, ie add projections to propagate the aliases of the union diffs (28 lines): diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c --- a/sql/server/rel_unnest.c +++ b/sql/server/rel_unnest.c @@ -1325,9 +1325,14 @@ push_up_set(mvc *sql, sql_rel *rel, list /* left of rel should be a set */ if (d && is_distinct_set(sql, d, ad) && s && is_set(s->op)) { list *sexps; - node *m; sql_rel *sl = s->l, *sr = s->r, *n; + sl = rel_project(sql->sa, sl, rel_projections(sql, sl, NULL, 1, 1)); + for (node *n = sl->exps->h, *m = s->exps->h; n; n = n->next, m = m->next) + exp_prop_alias(sql->sa, n->data, m->data); + sr = rel_project(sql->sa, sr, rel_projections(sql, sr, NULL, 1, 1)); + for (node *n = sr->exps->h, *m = s->exps->h; n; n = n->next, m = m->next) + exp_prop_alias(sql->sa, n->data, m->data); /* D djoin (sl setop sr) -> (D djoin sl) setop (D djoin sr) */ rel->r = sl; n = rel_crossproduct(sql->sa, rel_dup(d), sr, rel->op); @@ -1336,7 +1341,7 @@ push_up_set(mvc *sql, sql_rel *rel, list s->r = n; if (is_join(rel->op)) { sexps = sa_list(sql->sa); - for (m = d->exps->h; m; m = m->next) { + for (node *m = d->exps->h; m; m = m->next) { sql_exp *e = m->data, *pe; pe = exp_ref(sql, e); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list