Changeset: 7ffbc2d2d4be for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7ffbc2d2d4be
Modified Files:
        sql/server/rel_optimizer.c
Branch: Oct2020
Log Message:

Look for range expressions


diffs (56 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
@@ -4789,7 +4789,8 @@ rel_push_semijoin_down_or_up(visitor *v,
                        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) {
+                            rel_has_exp(rel->l, sje->r) >= 0 &&
+                            (!sje->f || rel_has_exp(rel->l, sje->f) >= 0)) {
                                rel->l = rel_select(v->sql->sa, rel->l, NULL);
                                rel_select_add_exp(v->sql->sa, rel->l, sje);
                                v->changes++;
@@ -4827,7 +4828,8 @@ rel_push_semijoin_down_or_up(visitor *v,
                        if (right &&
                                (is_complex_exp(sje->flag) ||
                                rel_has_exp(lr, sje->l) >= 0 ||
-                               rel_has_exp(lr, sje->r) >= 0)) {
+                               rel_has_exp(lr, sje->r) >= 0 ||
+                                       (sje->f && rel_has_exp(lr, sje->f) >= 
0))) {
                                right = 0;
                        }
                        if (right)
@@ -4835,7 +4837,8 @@ rel_push_semijoin_down_or_up(visitor *v,
                        if (!right && left &&
                                (is_complex_exp(sje->flag) ||
                                rel_has_exp(ll, sje->l) >= 0 ||
-                               rel_has_exp(ll, sje->r) >= 0)) {
+                               rel_has_exp(ll, sje->r) >= 0 ||
+                                       (sje->f && rel_has_exp(ll, sje->f) >= 
0))) {
                                left = 0;
                        }
                        if (!right && !left)
@@ -4870,6 +4873,8 @@ rel_part_nr( sql_rel *rel, sql_exp *e )
        c = exp_find_column(rel, e->l, -1);
        if (!c)
                c = exp_find_column(rel, e->r, -1);
+       if (!c && e->f)
+               c = exp_find_column(rel, e->f, -1);
        if (!c)
                return -1;
        pp = c->t;
@@ -8317,12 +8322,11 @@ is_identity_of(sql_exp *e, sql_rel *l)
 {
        if (e->type != e_cmp)
                return 0;
-       if (!is_identity(e->l, l) || !is_identity(e->r, l))
+       if (!is_identity(e->l, l) || !is_identity(e->r, l) || (e->f && 
!is_identity(e->f, l)))
                return 0;
        return 1;
 }
 
-
 static sql_rel *
 rel_rewrite_semijoin(visitor *v, sql_rel *rel)
 {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to