Changeset: 5d9a732404e5 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5d9a732404e5 Modified Files: sql/server/rel_optimizer.c Branch: Oct2020 Log Message:
fixed bug in rel_push_semijoin_down_or_up, ie properly check if the expression exists on the to be push down side. diffs (43 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 @@ -4827,18 +4827,18 @@ rel_push_semijoin_down_or_up(visitor *v, return rel; if (right && (is_complex_exp(sje->flag) || - rel_has_exp(lr, sje->l) >= 0 || - rel_has_exp(lr, sje->r) >= 0 || - (sje->f && rel_has_exp(lr, sje->f) >= 0))) { + rel_has_exp(lr, sje->l) < 0 || + rel_has_exp(lr, sje->r) < 0 || + (sje->f && rel_has_exp(lr, sje->f) < 0))) { right = 0; } if (right) left = 0; if (!right && left && (is_complex_exp(sje->flag) || - rel_has_exp(ll, sje->l) >= 0 || - rel_has_exp(ll, sje->r) >= 0 || - (sje->f && rel_has_exp(ll, sje->f) >= 0))) { + rel_has_exp(ll, sje->l) < 0 || + rel_has_exp(ll, sje->r) < 0 || + (sje->f && rel_has_exp(ll, sje->f) < 0))) { left = 0; } if (!right && !left) @@ -4846,12 +4846,12 @@ rel_push_semijoin_down_or_up(visitor *v, } nsexps = exps_copy(v->sql, rel->exps); njexps = exps_copy(v->sql, l->exps); - if (right) + if (left) l = rel_crossproduct(v->sql->sa, rel_dup(ll), rel_dup(r), op); else l = rel_crossproduct(v->sql->sa, rel_dup(lr), rel_dup(r), op); l->exps = nsexps; - if (right) + if (left) l = rel_crossproduct(v->sql->sa, l, rel_dup(lr), lop); else l = rel_crossproduct(v->sql->sa, l, rel_dup(ll), lop); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list