Changeset: ee86ba1be444 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ee86ba1be444
Modified Files:
monetdb5/mal/mal_pipelines.c
sql/server/rel_optimize_others.c
sql/server/rel_optimize_sel.c
Branch: default
Log Message:
small optimizations
diffs (56 lines):
diff --git a/monetdb5/mal/mal_pipelines.c b/monetdb5/mal/mal_pipelines.c
--- a/monetdb5/mal/mal_pipelines.c
+++ b/monetdb5/mal/mal_pipelines.c
@@ -142,8 +142,10 @@ stack_copy(allocator *ma, MalStkPtr stk,
rhs = &getVarConstant(stk->blk, i);
if(VALcopy(ma, lhs, rhs) == NULL)
break;
- if (rhs->bat && rhs->val.bval)
+ if (rhs->bat && rhs->val.bval) {
+ assert(rhs->val.bval == bat_nil);
BBPretain(rhs->val.bval);
+ }
}
} else {
rhs = &stk->stk[i];
diff --git a/sql/server/rel_optimize_others.c b/sql/server/rel_optimize_others.c
--- a/sql/server/rel_optimize_others.c
+++ b/sql/server/rel_optimize_others.c
@@ -1157,10 +1157,11 @@ rel_dce_(visitor *v, sql_rel *rel, bool
if (v->opt >= 0 && rel)
v->opt = rel->opt+1;
rel_dce_refs(v->sql, rel, refs);
- if(has_sets)
+ if(has_sets) {
rel = rel_add_projects(v, rel);
- if (v->opt >= 0 && rel)
- v->opt = rel->opt+1;
+ if (v->opt >= 0 && rel)
+ v->opt = rel->opt+1;
+ }
rel_used(rel);
rel_dce_sub(v, rel);
if (refs && !partial) {
diff --git a/sql/server/rel_optimize_sel.c b/sql/server/rel_optimize_sel.c
--- a/sql/server/rel_optimize_sel.c
+++ b/sql/server/rel_optimize_sel.c
@@ -5354,12 +5354,15 @@ rel_optimize_select_and_joins_topdown_(v
{
/* push_join_down introduces semijoins */
uint8_t cycle = *(uint8_t*) v->data;
- if (cycle <= 0)
+ if (cycle <= 0 && 0)
rel = rel_push_join_down(v, rel);
- rel = rel_simplify_fk_joins(v, rel);
- rel = rel_push_select_down(v, rel);
- rel = rel_select_leftgroup_2_semi(v, rel);
+ if (is_simple_project(rel->op) || is_groupby(rel->op))
+ rel = rel_simplify_fk_joins(v, rel);
+ if (is_select(rel->op)) {
+ rel = rel_push_select_down(v, rel);
+ rel = rel_select_leftgroup_2_semi(v, rel);
+ }
if (rel && rel->l && (is_select(rel->op) || is_join(rel->op)))
rel = rel_use_index(v, rel);
return rel;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]