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