Changeset: 629c981b2b2e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/629c981b2b2e Modified Files: sql/server/rel_optimizer.c Branch: Jan2022 Log Message:
Correct check for equi-join diffs (31 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 @@ -4320,19 +4320,18 @@ gen_push_groupby_down(mvc *sql, sql_rel gbe = sa_list(sql->sa); /* push groupby to right, group on join exps */ if (j->exps) for (n = j->exps->h; n; n = n->next) { - sql_exp *ce = n->data, *e; + sql_exp *ce = n->data, *l = ce->l, *r = ce->r, *e; /* get left/right hand of e_cmp */ assert(ce->type == e_cmp); - if (ce->flag != cmp_equal) + if (ce->flag == cmp_equal && is_alias(l->type) && is_alias(r->type) && + (((e = rel_find_exp(cr, l)) && rel_find_exp(cl, r)) || + ((e = rel_find_exp(cr, r)) && rel_find_exp(cl, l)))) { + e = exp_ref(sql, e); + list_append(gbe, e); + } else { return rel; - e = rel_find_exp(cr, ce->l); - if (!e) - e = rel_find_exp(cr, ce->r); - if (!e) - return rel; - e = exp_ref(sql, e); - list_append(gbe, e); + } } if (!left) cr = j->r = rel_groupby(sql, cr, gbe); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list