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