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

Reply via email to