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