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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list