Changeset: 4ae0f6e63e07 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4ae0f6e63e07 Modified Files: sql/server/rel_unnest.c Branch: default Log Message:
Packing more rel_unnest rewriters diffs (50 lines): 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 @@ -3161,7 +3161,7 @@ rewrite_compare_exps(visitor *v, sql_rel } /* add an dummy true projection column */ -static sql_rel * +static inline sql_rel * rewrite_compare_exp(visitor *v, sql_rel *rel) { if ((is_select(rel->op) || is_join(rel->op) || is_semi(rel->op)) && !list_empty(rel->exps)) @@ -3170,7 +3170,7 @@ rewrite_compare_exp(visitor *v, sql_rel return rel; } -static sql_rel * +static inline sql_rel * rewrite_remove_xp_project(visitor *v, sql_rel *rel) { if (rel->op == op_join && list_empty(rel->exps)) { @@ -3596,6 +3596,16 @@ rel_unnest_projects(visitor *v, sql_rel return rel; } +static sql_rel * +rel_unnest_comparison_rewriters(visitor *v, sql_rel *rel) +{ + rel = rewrite_join2semi(v, rel); /* where possible convert anyequal functions into marks */ + rel = rewrite_compare_exp(v, rel); /* only allow for e_cmp in selects and handling */ + rel = rewrite_remove_xp_project(v, rel); /* remove crossproducts with project ( project [ atom ] ) [ etc ] */ + rel = rewrite_simplify(v, rel); /* as expressions got merged before, lets try to simplify again */ + return rel; +} + sql_rel * rel_unnest(mvc *sql, sql_rel *rel) { @@ -3613,10 +3623,7 @@ rel_unnest(mvc *sql, sql_rel *rel) rel = rel_exp_visitor_bottomup(&v, rel, &rewrite_ifthenelse, false); /* add isnull handling */ rel = rel_exp_visitor_bottomup(&v, rel, &rewrite_exp_rel, true); - rel = rel_visitor_bottomup(&v, rel, &rewrite_join2semi); /* where possible convert anyequal functions into marks */ - rel = rel_visitor_bottomup(&v, rel, &rewrite_compare_exp); /* only allow for e_cmp in selects and handling */ - rel = rel_visitor_bottomup(&v, rel, &rewrite_remove_xp_project); /* remove crossproducts with project ( project [ atom ] ) [ etc ] */ - rel = rel_visitor_bottomup(&v, rel, &rewrite_simplify); /* as expressions got merged before, lets try to simplify again */ + rel = rel_visitor_bottomup(&v, rel, &rel_unnest_comparison_rewriters); rel = rel_visitor_bottomup(&v, rel, &_rel_unnest); rel = rel_visitor_bottomup(&v, rel, &rewrite_fix_count); /* fix count inside a left join (adds a project (if (cnt IS null) then (0) else (cnt)) */ rel = rel_visitor_bottomup(&v, rel, &rel_unnest_projects); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list