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

Reply via email to