Changeset: 4c7ca476da37 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4c7ca476da37
Modified Files:
        sql/server/rel_optimizer.c
Branch: default
Log Message:

Look for join2semi optimization under select relations


diffs (33 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
@@ -5347,7 +5347,7 @@ find_candidate_join2semi(visitor *v, sql
                    (c=find_candidate_join2semi(v, rel->r, swap)) != NULL)
                        return c;
        }
-       if (is_topn(rel->op) || is_sample(rel->op))
+       if (is_topn(rel->op) || is_sample(rel->op) || is_select(rel->op))
                return find_candidate_join2semi(v, rel->l, swap);
        return NULL;
 }
@@ -5357,7 +5357,7 @@ subrel_uses_exp_outside_subrel(sql_rel *
 {
        if (rel == c)
                return 0;
-       /* for subrel only expect joins (later possibly selects) */
+       /* for subrel only expect joins and selects */
        if (is_join(rel->op) || is_semi(rel->op)) {
                if (exps_uses_any(rel->exps, l))
                        return 1;
@@ -5365,6 +5365,11 @@ subrel_uses_exp_outside_subrel(sql_rel *
                    subrel_uses_exp_outside_subrel(rel->r, l, c))
                        return 1;
        }
+       if (is_select(rel->op)) {
+               if (exps_uses_any(rel->exps, l))
+                       return 1;
+               return subrel_uses_exp_outside_subrel(rel->l, l, c);
+       }
        if (is_topn(rel->op) || is_sample(rel->op))
                return subrel_uses_exp_outside_subrel(rel->l, l, c);
        return 0;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to