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]

Reply via email to