Changeset: 8d015dbc4ffa for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/8d015dbc4ffa Modified Files: sql/server/rel_rel.c Branch: default Log Message:
rank functions have a list of expression lists as e->r diffs (47 lines): diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c --- a/sql/server/rel_rel.c +++ b/sql/server/rel_rel.c @@ -1815,7 +1815,7 @@ exp_deps(mvc *sql, sql_exp *e, list *ref } break; case e_atom: - if (e->f && exp_deps(sql, e->f, refs, l) != 0) + if (e->f && exps_deps(sql, e->f, refs, l) != 0) return -1; break; case e_column: @@ -2195,6 +2195,7 @@ rel_exp_visitor_bottomup(visitor *v, sql } static list *exps_rel_visitor(visitor *v, list *exps, rel_rewrite_fptr rel_rewriter, bool topdown); +static list *exps_exps_rel_visitor(visitor *v, list *lists, rel_rewrite_fptr rel_rewriter, bool topdown); static sql_exp * exp_rel_visitor(visitor *v, sql_exp *e, rel_rewrite_fptr rel_rewriter, bool topdown) @@ -2213,7 +2214,7 @@ exp_rel_visitor(visitor *v, sql_exp *e, case e_aggr: case e_func: if (e->r) /* rewrite rank */ - if ((e->r = exps_rel_visitor(v, e->r, rel_rewriter, topdown)) == NULL) + if ((e->r = exps_exps_rel_visitor(v, e->r, rel_rewriter, topdown)) == NULL) return NULL; if (e->l) if ((e->l = exps_rel_visitor(v, e->l, rel_rewriter, topdown)) == NULL) @@ -2278,6 +2279,17 @@ exps_rel_visitor(visitor *v, list *exps, return exps; } +static list * +exps_exps_rel_visitor(visitor *v, list *lists, rel_rewrite_fptr rel_rewriter, bool topdown) +{ + if (list_empty(lists)) + return lists; + for (node *n = lists->h; n; n = n->next) + if (n->data && (n->data = exps_rel_visitor(v, n->data, rel_rewriter, topdown)) == NULL) + return NULL; + return lists; +} + static inline sql_rel * do_rel_visitor(visitor *v, sql_rel *rel, rel_rewrite_fptr rel_rewriter, bool topdown) { _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org