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 -- [email protected]
To unsubscribe send an email to [email protected]