Changeset: 7ff95319411e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/7ff95319411e Modified Files: sql/server/rel_distribute.c 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/rel_planner.c sql/server/rel_propagate.c sql/server/rel_propagate.h sql/server/rel_rewriter.c sql/server/rel_rewriter.h sql/server/rel_unnest.c Branch: sqloptimizer Log Message:
Clean unused include files diffs (293 lines): diff --git a/sql/server/rel_distribute.c b/sql/server/rel_distribute.c --- a/sql/server/rel_distribute.c +++ b/sql/server/rel_distribute.c @@ -7,11 +7,10 @@ */ #include "monetdb_config.h" -#include "rel_rel.h" +#include "rel_optimizer_private.h" #include "rel_basetable.h" #include "rel_exp.h" #include "sql_privileges.h" -#include "rel_optimizer_private.h" static int has_remote_or_replica( sql_rel *rel ) 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 @@ -7,16 +7,10 @@ */ #include "monetdb_config.h" -#include "rel_optimizer.h" #include "rel_optimizer_private.h" -#include "rel_rel.h" -#include "rel_basetable.h" #include "rel_select.h" #include "rel_exp.h" -#include "rel_prop.h" -#include "rel_dump.h" #include "rel_rewriter.h" -#include "sql_mvc.h" static inline int str_ends_with(const char *s, const char *suffix) 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 @@ -7,15 +7,9 @@ */ #include "monetdb_config.h" -#include "rel_optimizer.h" #include "rel_optimizer_private.h" -#include "rel_rel.h" -#include "rel_basetable.h" #include "rel_exp.h" -#include "rel_prop.h" #include "rel_select.h" -#include "rel_rewriter.h" -#include "sql_mvc.h" static void rel_no_rename_exps( list *exps ) @@ -232,6 +226,37 @@ exp_push_down_prj(mvc *sql, sql_exp *e, return NULL; } +atom * +exp_flatten(mvc *sql, bool value_based_opt, sql_exp *e) +{ + if (e->type == e_atom) { + return value_based_opt ? exp_value(sql, e) : (atom *) e->l; + } else if (e->type == e_convert) { + atom *v = exp_flatten(sql, value_based_opt, e->l); + + if (v) + return atom_cast(sql->sa, v, exp_subtype(e)); + } else if (e->type == e_func) { + sql_subfunc *f = e->f; + list *l = e->l; + sql_arg *res = (f->func->res)?(f->func->res->h->data):NULL; + + /* TODO handle date + x months */ + if (!f->func->s && strcmp(f->func->base.name, "sql_add") == 0 && list_length(l) == 2 && res && EC_NUMBER(res->type.type->eclass)) { + atom *l1 = exp_flatten(sql, value_based_opt, l->h->data); + atom *l2 = exp_flatten(sql, value_based_opt, l->h->next->data); + if (l1 && l2) + return atom_add(sql->sa, l1, l2); + } else if (!f->func->s && strcmp(f->func->base.name, "sql_sub") == 0 && list_length(l) == 2 && res && EC_NUMBER(res->type.type->eclass)) { + atom *l1 = exp_flatten(sql, value_based_opt, l->h->data); + atom *l2 = exp_flatten(sql, value_based_opt, l->h->next->data); + if (l1 && l2) + return atom_sub(sql->sa, l1, l2); + } + } + return NULL; +} + int exp_range_overlap(atom *min, atom *max, atom *emin, atom *emax, bool min_exclusive, bool max_exclusive) { 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 @@ -7,15 +7,11 @@ */ #include "monetdb_config.h" -#include "rel_optimizer.h" #include "rel_optimizer_private.h" -#include "rel_rel.h" #include "rel_basetable.h" #include "rel_exp.h" -#include "rel_prop.h" #include "rel_select.h" #include "rel_rewriter.h" -#include "sql_mvc.h" static int exp_is_rename(sql_exp *e) 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 @@ -7,17 +7,11 @@ */ #include "monetdb_config.h" -#include "rel_optimizer.h" #include "rel_optimizer_private.h" -#include "rel_rel.h" -#include "rel_basetable.h" #include "rel_planner.h" #include "rel_exp.h" -#include "rel_prop.h" #include "rel_select.h" #include "rel_rewriter.h" -#include "sql_mvc.h" - static void select_split_exps(mvc *sql, list *exps, sql_rel *rel); 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 @@ -12,13 +12,7 @@ #include "rel_rel.h" #include "rel_basetable.h" #include "rel_exp.h" -#include "rel_prop.h" -#include "rel_dump.h" -#include "rel_select.h" -#include "rel_planner.h" #include "rel_propagate.h" -#include "rel_rewriter.h" -#include "sql_mvc.h" #include "sql_privileges.h" static sql_rel * diff --git a/sql/server/rel_optimizer_private.h b/sql/server/rel_optimizer_private.h --- a/sql/server/rel_optimizer_private.h +++ b/sql/server/rel_optimizer_private.h @@ -93,6 +93,7 @@ extern sql_exp *add_exp_too_project(mvc /* these functions are used across diferent optimizers */ extern sql_rel *rel_find_ref(sql_rel *r) __attribute__((__visibility__("hidden"))); extern void rel_rename_exps(mvc *sql, list *exps1, list *exps2) __attribute__((__visibility__("hidden"))); +extern atom *exp_flatten(mvc *sql, bool value_based_opt, sql_exp *e) __attribute__((__visibility__("hidden"))); extern atom *reduce_scale(mvc *sql, atom *a) __attribute__((__visibility__("hidden"))); extern int exp_range_overlap(atom *min, atom *max, atom *emin, atom *emax, bool min_exclusive, bool max_exclusive) __attribute__((__visibility__("hidden"))); extern int is_numeric_upcast(sql_exp *e) __attribute__((__visibility__("hidden"))); diff --git a/sql/server/rel_planner.c b/sql/server/rel_planner.c --- a/sql/server/rel_planner.c +++ b/sql/server/rel_planner.c @@ -12,7 +12,6 @@ #include "rel_exp.h" #include "rel_prop.h" #include "rel_rewriter.h" -#include "rel_optimizer.h" typedef struct memoitem { const char *name; 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 @@ -8,14 +8,10 @@ #include "monetdb_config.h" #include "rel_propagate.h" -#include "rel_rel.h" #include "rel_basetable.h" #include "rel_exp.h" -#include "rel_prop.h" -#include "rel_dump.h" #include "rel_select.h" #include "rel_updates.h" -#include "sql_mvc.h" #include "sql_partition.h" extern sql_rel *rel_list(sql_allocator *sa, sql_rel *l, sql_rel *r); diff --git a/sql/server/rel_propagate.h b/sql/server/rel_propagate.h --- a/sql/server/rel_propagate.h +++ b/sql/server/rel_propagate.h @@ -9,7 +9,6 @@ #ifndef _REL_PROPAGATE_H_ #define _REL_PROPAGATE_H_ -#include "sql_relation.h" #include "sql_symbol.h" #include "sql_mvc.h" #include "sql_query.h" diff --git a/sql/server/rel_rewriter.c b/sql/server/rel_rewriter.c --- a/sql/server/rel_rewriter.c +++ b/sql/server/rel_rewriter.c @@ -8,11 +8,8 @@ #include "monetdb_config.h" #include "rel_rewriter.h" -#include "rel_prop.h" -#include "rel_rel.h" #include "rel_exp.h" #include "rel_basetable.h" -#include "mal_errors.h" /* for SQLSTATE() */ /* simplify expressions, such as not(not(x)) */ /* exp visitor */ @@ -242,37 +239,6 @@ rewrite_reset_used(visitor *v, sql_rel * return rel; } -atom * -exp_flatten(mvc *sql, bool value_based_opt, sql_exp *e) -{ - if (e->type == e_atom) { - return value_based_opt ? exp_value(sql, e) : (atom *) e->l; - } else if (e->type == e_convert) { - atom *v = exp_flatten(sql, value_based_opt, e->l); - - if (v) - return atom_cast(sql->sa, v, exp_subtype(e)); - } else if (e->type == e_func) { - sql_subfunc *f = e->f; - list *l = e->l; - sql_arg *res = (f->func->res)?(f->func->res->h->data):NULL; - - /* TODO handle date + x months */ - if (!f->func->s && strcmp(f->func->base.name, "sql_add") == 0 && list_length(l) == 2 && res && EC_NUMBER(res->type.type->eclass)) { - atom *l1 = exp_flatten(sql, value_based_opt, l->h->data); - atom *l2 = exp_flatten(sql, value_based_opt, l->h->next->data); - if (l1 && l2) - return atom_add(sql->sa, l1, l2); - } else if (!f->func->s && strcmp(f->func->base.name, "sql_sub") == 0 && list_length(l) == 2 && res && EC_NUMBER(res->type.type->eclass)) { - atom *l1 = exp_flatten(sql, value_based_opt, l->h->data); - atom *l2 = exp_flatten(sql, value_based_opt, l->h->next->data); - if (l1 && l2) - return atom_sub(sql->sa, l1, l2); - } - } - return NULL; -} - int find_member_pos(list *l, sql_table *t) { diff --git a/sql/server/rel_rewriter.h b/sql/server/rel_rewriter.h --- a/sql/server/rel_rewriter.h +++ b/sql/server/rel_rewriter.h @@ -10,7 +10,6 @@ #define _REL_REWRITER_H_ #include "sql_relation.h" -#include "sql_mvc.h" #include "rel_rel.h" #define is_ifthenelse_func(sf) (strcmp((sf)->func->base.name, "ifthenelse") == 0) @@ -40,8 +39,6 @@ try_remove_empty_select(visitor *v, sql_ extern sql_rel *rewrite_reset_used(visitor *v, sql_rel *rel); -extern atom *exp_flatten(mvc *sql, bool value_based_opt, sql_exp *e); - extern int find_member_pos(list *l, sql_table *t); extern sql_column *name_find_column(sql_rel *rel, const char *rname, const char *name, int pnr, sql_rel **bt); diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c --- a/sql/server/rel_unnest.c +++ b/sql/server/rel_unnest.c @@ -11,15 +11,10 @@ #include "monetdb_config.h" #include "sql_decimal.h" #include "rel_unnest.h" -#include "rel_optimizer.h" -#include "rel_prop.h" -#include "rel_rel.h" #include "rel_basetable.h" #include "rel_exp.h" #include "rel_select.h" #include "rel_rewriter.h" -#include "sql_query.h" -#include "mal_errors.h" /* for SQLSTATE() */ /* some unnesting steps use the 'used' flag to avoid further rewrites. List them here, so only one reset flag iteration will be used */ #define rewrite_fix_count_used (1 << 0) _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org