Changeset: d502c1ae2cd1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d502c1ae2cd1 Modified Files: sql/server/rel_optimizer.c Branch: default Log Message:
Pack rel_push_func_down and rel_push_select_down optimizers. rel_push_select_down is already called at rel_optimize_select_and_joins_topdown, can the former be removed? diffs (42 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 @@ -1508,7 +1508,7 @@ exp_push_single_func_down(visitor *v, sq return e; } -static sql_rel * +static inline sql_rel * rel_push_func_down(visitor *v, sql_rel *rel) { if ((is_select(rel->op) || is_joinop(rel->op)) && rel->l && rel->exps && !(rel_is_ref(rel))) { @@ -9673,6 +9673,14 @@ rel_optimize_select_and_joins_topdown(vi } static sql_rel * +rel_push_func_and_select_down(visitor *v, sql_rel *rel) +{ + rel = rel_push_func_down(v, rel); + rel = rel_push_select_down(v, rel); + return rel; +} + +static sql_rel * optimize_rel(mvc *sql, sql_rel *rel, int *g_changes, int level, bool value_based_opt, bool storage_based_opt) { visitor v = { .sql = sql, .value_based_opt = value_based_opt, .storage_based_opt = storage_based_opt, .data = &level }; @@ -9768,12 +9776,8 @@ optimize_rel(mvc *sql, sql_rel *rel, int if (level <= 0) rel = rel_dce(sql, rel); - if (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 = rel_visitor_bottomup(&v, rel, &rel_push_func_down); - if (gp.cnt[op_select]) - rel = rel_visitor_topdown(&v, rel, &rel_push_select_down); - } + if (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 = rel_visitor_topdown(&v, rel, &rel_push_func_and_select_down); if (gp.cnt[op_topn] || gp.cnt[op_sample]) rel = rel_visitor_topdown(&v, rel, &rel_push_topn_and_sample_down); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list