Changeset: 671978ae364c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=671978ae364c Modified Files: sql/server/rel_optimizer.c Branch: Oct2020 Log Message:
more use of clean rel_rebind_exp diffs (35 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 @@ -4837,11 +4837,7 @@ rel_push_semijoin_down_or_up(visitor *v, for(n = exps->h; n; n = n->next) { sql_exp *sje = n->data; - if (n != exps->h && sje->type == e_cmp && - !is_complex_exp(sje->flag) && - rel_has_exp(rel->l, sje->l) >= 0 && - rel_has_exp(rel->l, sje->r) >= 0 && - (!sje->f || rel_has_exp(rel->l, sje->f) >= 0)) { + if (n != exps->h && sje->type == e_cmp && rel_rebind_exp(v->sql, rel->l, sje)) { rel->l = rel_select(v->sql->sa, rel->l, NULL); rel_select_add_exp(v->sql->sa, rel->l, sje); v->changes++; @@ -4882,14 +4878,14 @@ rel_push_semijoin_down_or_up(visitor *v, * sje->l from lr and sje->r/f from semijoin r || * sje->l from semijoin r and sje->r/f from lr */ if (left && - ((rel_has_exp(ll, sje->l) >= 0 && rel_has_exp(rel->r, sje->r) >= 0 && (!sje->f || rel_has_exp(rel->r, sje->f) >= 0)) || - (rel_has_exp(rel->r, sje->l) >= 0 && rel_has_exp(ll, sje->r) >= 0 && (!sje->f || rel_has_exp(ll, sje->f) >= 0)))) + ((rel_rebind_exp(v->sql, ll, sje->l) && rel_rebind_exp(v->sql, rel->r, sje->r) && (!sje->f || rel_rebind_exp(v->sql, rel->r, sje->f))) || + (rel_rebind_exp(v->sql, rel->r, sje->l) && rel_rebind_exp(v->sql, ll, sje->r) && (!sje->f || rel_rebind_exp(v->sql, ll, sje->f))))) right = 0; else left = 0; if (right && - ((rel_has_exp(lr, sje->l) >= 0 && rel_has_exp(rel->r, sje->r) >= 0 && (!sje->f || rel_has_exp(rel->r, sje->f) >= 0)) || - (rel_has_exp(rel->r, sje->l) >= 0 && rel_has_exp(lr, sje->r) >= 0 && (!sje->f || rel_has_exp(lr, sje->f) >= 0)))) + ((rel_rebind_exp(v->sql, lr, sje->l) && rel_rebind_exp(v->sql, rel->r, sje->r) && (!sje->f || rel_rebind_exp(v->sql, rel->r, sje->f))) || + (rel_rebind_exp(v->sql, rel->r, sje->l) && rel_rebind_exp(v->sql, lr, sje->r) && (!sje->f || rel_rebind_exp(v->sql, lr, sje->f))))) left = 0; else right = 0; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list