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

Reply via email to