Changeset: b81313d6a11d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b81313d6a11d
Modified Files:
        sql/server/rel_optimize_exps.c
        sql/server/rel_optimize_others.c
        sql/server/rel_optimize_proj.c
        sql/server/rel_optimize_sel.c
        sql/server/rel_optimizer.c
        sql/server/rel_optimizer_private.h
        sql/server/sql_mvc.c
Branch: sqloptimizer
Log Message:

Cleanup, use an optimizer binder because later depending on how optimizers are 
set by the users, different iterations could be returned


diffs (truncated from 900 to 300 lines):

diff --git a/sql/server/rel_optimize_exps.c b/sql/server/rel_optimize_exps.c
--- a/sql/server/rel_optimize_exps.c
+++ b/sql/server/rel_optimize_exps.c
@@ -361,19 +361,19 @@ rel_simplify_math_(visitor *v, sql_rel *
        return rel;
 }
 
-bool
-can_simplify_math(visitor *v, global_props *gp)
-{
-       return gp->opt_cycle == 0 && gp->opt_level == 1 && v->value_based_opt 
&& (gp->cnt[op_project] || gp->cnt[op_ddl] || gp->cnt[ddl_psm]);
-}
-
-sql_rel *
+static sql_rel *
 rel_simplify_math(visitor *v, global_props *gp, sql_rel *rel)
 {
        (void) gp;
        return rel_visitor_bottomup(v, rel, &rel_simplify_math_);
 }
 
+run_optimizer
+bind_simplify_math(visitor *v, global_props *gp)
+{
+       return gp->opt_cycle == 0 && gp->opt_level == 1 && v->value_based_opt 
&& (gp->cnt[op_project] || gp->cnt[op_ddl] || gp->cnt[ddl_psm]) ? 
rel_simplify_math : NULL;
+}
+
 
 /*
  * Casting decimal values on both sides of a compare expression is expensive,
@@ -778,16 +778,16 @@ rel_optimize_exps_(visitor *v, sql_rel *
        return e;
 }
 
-bool
-can_optimize_exps(visitor *v, global_props *gp)
-{
-       (void) v;
-       return gp->opt_cycle < 2 && gp->opt_level == 1 && (gp->cnt[op_project] 
|| gp->cnt[op_join] || gp->cnt[op_left] || gp->cnt[op_right] || 
gp->cnt[op_full] || gp->cnt[op_semi] || gp->cnt[op_anti] || gp->cnt[op_select]);
-}
-
-sql_rel *
+static sql_rel *
 rel_optimize_exps(visitor *v, global_props *gp, sql_rel *rel)
 {
        (void) gp;
        return rel_exp_visitor_bottomup(v, rel, &rel_optimize_exps_, false);
 }
+
+run_optimizer
+bind_optimize_exps(visitor *v, global_props *gp)
+{
+       (void) v;
+       return gp->opt_cycle < 2 && gp->opt_level == 1 && (gp->cnt[op_project] 
|| gp->cnt[op_join] || gp->cnt[op_left] || gp->cnt[op_right] || 
gp->cnt[op_full] || gp->cnt[op_semi] || gp->cnt[op_anti] || gp->cnt[op_select]) 
? rel_optimize_exps : NULL;
+}
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
@@ -994,20 +994,21 @@ rel_dce_(mvc *sql, sql_rel *rel)
 }
 
 /* Remove unused expressions */
-bool
-can_dce(visitor *v, global_props *gp)
-{
-       (void) v;
-       return gp->opt_cycle == 0 && gp->opt_level == 1;
-}
-
-sql_rel *
+static sql_rel *
 rel_dce(visitor *v, global_props *gp, sql_rel *rel)
 {
        (void) gp;
        return rel_dce_(v->sql, rel);
 }
 
+run_optimizer
+bind_dce(visitor *v, global_props *gp)
+{
+       (void) v;
+       return gp->opt_cycle == 0 && gp->opt_level == 1 ? rel_dce : NULL;
+}
+
+
 static int
 topn_sample_save_exps( list *exps )
 {
@@ -1248,16 +1249,16 @@ rel_push_topn_and_sample_down_(visitor *
        return rel;
 }
 
-bool
-can_push_topn_and_sample_down(visitor *v, global_props *gp)
-{
-       (void) v;
-       return gp->opt_level == 1 && (gp->cnt[op_topn] || gp->cnt[op_sample]);
-}
-
-sql_rel *
+static sql_rel *
 rel_push_topn_and_sample_down(visitor *v, global_props *gp, sql_rel *rel)
 {
        (void) gp;
        return rel_visitor_topdown(v, rel, &rel_push_topn_and_sample_down_);
 }
+
+run_optimizer
+bind_push_topn_and_sample_down(visitor *v, global_props *gp)
+{
+       (void) v;
+       return gp->opt_level == 1 && (gp->cnt[op_topn] || gp->cnt[op_sample]) ? 
rel_push_topn_and_sample_down : NULL;
+}
diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c
--- a/sql/server/rel_optimize_proj.c
+++ b/sql/server/rel_optimize_proj.c
@@ -93,20 +93,20 @@ rel_push_project_down_(visitor *v, sql_r
        return rel;
 }
 
-bool
-can_push_project_down(visitor *v, global_props *gp)
-{
-       (void) v;
-       return gp->opt_level == 1 && (gp->cnt[op_project] || 
gp->cnt[op_groupby]);
-}
-
-sql_rel *
+static sql_rel *
 rel_push_project_down(visitor *v, global_props *gp, sql_rel *rel)
 {
        (void) gp;
        return rel_visitor_bottomup(v, rel, &rel_push_project_down_);
 }
 
+run_optimizer
+bind_push_project_down(visitor *v, global_props *gp)
+{
+       (void) v;
+       return gp->opt_level == 1 && (gp->cnt[op_project] || 
gp->cnt[op_groupby]) ? rel_push_project_down : NULL;
+}
+
 
 static bool exp_shares_exps(sql_exp *e, list *shared, uint64_t *uses);
 
@@ -303,20 +303,20 @@ rel_merge_projects_(visitor *v, sql_rel 
        return rel;
 }
 
-bool
-can_merge_projects(visitor *v, global_props *gp)
-{
-       (void) v;
-       return gp->opt_level == 1 && (gp->cnt[op_project] || 
gp->cnt[op_groupby]);
-}
-
-sql_rel *
+static sql_rel *
 rel_merge_projects(visitor *v, global_props *gp, sql_rel *rel)
 {
        (void) gp;
        return rel_visitor_bottomup(v, rel, &rel_merge_projects_);
 }
 
+run_optimizer
+bind_merge_projects(visitor *v, global_props *gp)
+{
+       (void) v;
+       return gp->opt_level == 1 && (gp->cnt[op_project] || 
gp->cnt[op_groupby]) ? rel_merge_projects : NULL;
+}
+
 
 static int
 exps_has_setjoin(list *exps)
@@ -674,20 +674,20 @@ rel_push_project_up_(visitor *v, sql_rel
        return rel;
 }
 
-bool
-can_push_project_up(visitor *v, global_props *gp)
-{
-       (void) v;
-       return gp->opt_level == 1 && gp->cnt[op_project];
-}
-
-sql_rel *
+static sql_rel *
 rel_push_project_up(visitor *v, global_props *gp, sql_rel *rel)
 {
        (void) gp;
        return rel_visitor_bottomup(v, rel, &rel_push_project_up_);
 }
 
+run_optimizer
+bind_push_project_up(visitor *v, global_props *gp)
+{
+       (void) v;
+       return gp->opt_level == 1 && gp->cnt[op_project] ? rel_push_project_up 
: NULL;
+}
+
 
 static void split_exps(mvc *sql, list *exps, sql_rel *rel);
 
@@ -871,29 +871,22 @@ rel_split_project_(visitor *v, sql_rel *
        return rel;
 }
 
-bool
-can_split_project(visitor *v, global_props *gp)
-{
-       (void) v;
-       return gp->opt_cycle == 0 && gp->opt_level == 1 && (gp->cnt[op_project] 
|| gp->cnt[op_groupby]);
-}
-
-sql_rel *
+static sql_rel *
 rel_split_project(visitor *v, global_props *gp, sql_rel *rel)
 {
        (void) gp;
        return rel_split_project_(v, rel, 1);
 }
 
-
-bool
-can_project_reduce_casts(visitor *v, global_props *gp)
+run_optimizer
+bind_split_project(visitor *v, global_props *gp)
 {
        (void) v;
-       return gp->cnt[op_project];
+       return gp->opt_cycle == 0 && gp->opt_level == 1 && (gp->cnt[op_project] 
|| gp->cnt[op_groupby]) ? rel_split_project : NULL;
 }
 
-sql_rel *
+
+static sql_rel *
 rel_project_reduce_casts(visitor *v, global_props *gp, sql_rel *rel)
 {
        if (!rel)
@@ -940,6 +933,13 @@ rel_project_reduce_casts(visitor *v, glo
        return rel;
 }
 
+run_optimizer
+bind_project_reduce_casts(visitor *v, global_props *gp)
+{
+       (void) v;
+       return gp->cnt[op_project] ? rel_project_reduce_casts : NULL;
+}
+
 
 static sql_rel *
 exp_skip_output_parts(sql_rel *rel)
@@ -1268,20 +1268,20 @@ rel_optimize_unions_bottomup_(visitor *v
        return rel;
 }
 
-bool
-can_optimize_unions_bottomup(visitor *v, global_props *gp)
-{
-       (void) v;
-       return gp->opt_level == 1 && gp->cnt[op_union];
-}
-
-sql_rel *
+static sql_rel *
 rel_optimize_unions_bottomup(visitor *v, global_props *gp, sql_rel *rel)
 {
        (void) gp;
        return rel_visitor_bottomup(v, rel, &rel_optimize_unions_bottomup_);
 }
 
+run_optimizer
+bind_optimize_unions_bottomup(visitor *v, global_props *gp)
+{
+       (void) v;
+       return gp->opt_level == 1 && gp->cnt[op_union] ? 
rel_optimize_unions_bottomup : NULL;
+}
+
 
 static inline sql_rel *
 rel_project_cse(visitor *v, sql_rel *rel)
@@ -2480,20 +2480,20 @@ rel_optimize_projections_(visitor *v, sq
        return rel;
 }
 
-bool
-can_optimize_projections(visitor *v, global_props *gp)
-{
-       (void) v;
-       return gp->opt_level == 1 && (gp->cnt[op_groupby] || 
gp->cnt[op_project] || gp->cnt[op_union] || gp->cnt[op_inter] || 
gp->cnt[op_except]);
-}
-
-sql_rel *
+static sql_rel *
 rel_optimize_projections(visitor *v, global_props *gp, sql_rel *rel)
 {
        (void) gp;
        return rel_visitor_topdown(v, rel, &rel_optimize_projections_);
 }
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to