Changeset: b0334723055d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b0334723055d
Modified Files:
sql/server/rel_optimizer.c
sql/server/rel_propagate.c
Branch: default
Log Message:
More missing processed relations
diffs (128 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
@@ -1875,6 +1875,7 @@ rel_push_topn_and_sample_down(visitor *v
ul->exps = list_distinct(list_merge(ul->exps,
exps_copy(v->sql, rcopy), NULL), (fcmp) exp_equal, (fdup) NULL);
ul->nrcols = list_length(ul->exps);
ul->r = exps_copy(v->sql, r->r);
+ set_processed(ul);
ul = func(v->sql->sa, ul, sum_limit_offset(v->sql,
rel));
set_processed(ul);
@@ -1884,6 +1885,7 @@ rel_push_topn_and_sample_down(visitor *v
ur->exps = list_distinct(list_merge(ur->exps,
exps_copy(v->sql, rcopy), NULL), (fcmp) exp_equal, (fdup) NULL);
ur->nrcols = list_length(ur->exps);
ur->r = exps_copy(v->sql, r->r);
+ set_processed(ur);
ur = func(v->sql->sa, ur, sum_limit_offset(v->sql,
rel));
set_processed(ur);
@@ -3995,9 +3997,11 @@ rel_push_aggr_down(visitor *v, sql_rel *
ul = rel_project(v->sql->sa, ul, NULL);
ul->exps = exps_copy(v->sql, ou->exps);
rel_rename_exps(v->sql, ou->exps, ul->exps);
+ set_processed(ul);
ur = rel_project(v->sql->sa, ur, NULL);
ur->exps = exps_copy(v->sql, ou->exps);
rel_rename_exps(v->sql, ou->exps, ur->exps);
+ set_processed(ur);
}
if (g->r && list_length(g->r) > 0) {
@@ -4948,8 +4952,10 @@ rel_push_join_down_union(visitor *v, sql
if (l != ol) {
ll = rel_project(v->sql->sa, ll, NULL);
ll->exps = exps_copy(v->sql, ol->exps);
+ set_processed(ll);
lr = rel_project(v->sql->sa, lr, NULL);
lr->exps = exps_copy(v->sql, ol->exps);
+ set_processed(lr);
}
nl = rel_crossproduct(v->sql->sa, ll, rel_dup(or),
rel->op);
nr = rel_crossproduct(v->sql->sa, lr, rel_dup(or),
rel->op);
@@ -4979,8 +4985,10 @@ rel_push_join_down_union(visitor *v, sql
if (l != ol) {
ll = rel_project(v->sql->sa, ll, NULL);
ll->exps = exps_copy(v->sql, ol->exps);
+ set_processed(ll);
lr = rel_project(v->sql->sa, lr, NULL);
lr->exps = exps_copy(v->sql, ol->exps);
+ set_processed(lr);
}
if (!is_project(rl->op))
rl = rel_project(v->sql->sa, rl,
@@ -4993,8 +5001,10 @@ rel_push_join_down_union(visitor *v, sql
if (r != or) {
rl = rel_project(v->sql->sa, rl, NULL);
rl->exps = exps_copy(v->sql, or->exps);
+ set_processed(rl);
rr = rel_project(v->sql->sa, rr, NULL);
rr->exps = exps_copy(v->sql, or->exps);
+ set_processed(rr);
}
nl = rel_crossproduct(v->sql->sa, ll, rl, rel->op);
nr = rel_crossproduct(v->sql->sa, lr, rr, rel->op);
@@ -5024,8 +5034,10 @@ rel_push_join_down_union(visitor *v, sql
if (r != or) {
rl = rel_project(v->sql->sa, rl, NULL);
rl->exps = exps_copy(v->sql, or->exps);
+ set_processed(rl);
rr = rel_project(v->sql->sa, rr, NULL);
rr->exps = exps_copy(v->sql, or->exps);
+ set_processed(rr);
}
nl = rel_crossproduct(v->sql->sa, rel_dup(ol), rl,
rel->op);
nr = rel_crossproduct(v->sql->sa, rel_dup(ol), rr,
rel->op);
@@ -5075,6 +5087,7 @@ rel_push_join_down_union(visitor *v, sql
if (r != or) {
rl = rel_project(v->sql->sa, rl, NULL);
rl->exps = exps_copy(v->sql, or->exps);
+ set_processed(rl);
}
nl = rel_crossproduct(v->sql->sa, rel_dup(ol),
rl, rel->op);
nl->exps = exps_copy(v->sql, exps);
@@ -5094,6 +5107,7 @@ rel_push_join_down_union(visitor *v, sql
if (r != or) {
rr = rel_project(v->sql->sa, rr, NULL);
rr->exps = exps_copy(v->sql, or->exps);
+ set_processed(rr);
}
nl = rel_crossproduct(v->sql->sa, rel_dup(ol),
rr, rel->op);
nl->exps = exps_copy(v->sql, exps);
@@ -5570,7 +5584,9 @@ rel_push_project_down_union(visitor *v,
set_distinct(ur);
ul->exps = exps_copy(v->sql, p->exps);
+ set_processed(ul);
ur->exps = exps_copy(v->sql, p->exps);
+ set_processed(ur);
rel = rel_inplace_setop(v->sql, rel, ul, ur, op_union,
rel_projections(v->sql, rel, NULL, 1, 1));
@@ -8024,6 +8040,7 @@ rel_split_project(visitor *v, sql_rel *r
sql_rel *l = rel_project(v->sql->sa, rel->l, NULL);
rel->l = l;
l->exps = rel->exps;
+ set_processed(l);
rel->exps = exps;
}
}
@@ -8142,6 +8159,7 @@ rel_split_select(visitor *v, sql_rel *re
sql_rel *l = rel_project(v->sql->sa, rel->l, NULL);
rel->l = l;
l->exps = rel->exps;
+ set_processed(l);
rel->exps = exps;
}
}
diff --git a/sql/server/rel_propagate.c b/sql/server/rel_propagate.c
--- a/sql/server/rel_propagate.c
+++ b/sql/server/rel_propagate.c
@@ -38,6 +38,7 @@ rel_generate_anti_expression(mvc *sql, s
*anti_rel = rel_project(sql->sa, *anti_rel, NULL);
if (!(res = rel_parse_val(sql, mt->s, mt->part.pexp->exp, NULL,
sql->emode, (*anti_rel)->l)))
return NULL;
+ set_processed(*anti_rel);
} else {
assert(0);
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]