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