Changeset: cd3db36bcacc for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cd3db36bcacc
Modified Files:
        sql/backends/monet5/sql_statement.c
Branch: Jul2015
Log Message:

cleaned up st_func handling (ie is a wrapper around a relational sub query), ie 
not a st_Nop (ie a normal mal function wrapper)


diffs (54 lines):

diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -385,7 +385,7 @@ stmt_deps(list *dep_list, stmt *s, int d
                                        push(s->op2);
                                if (s->op3)
                                        push(s->op3);
-                               if (depend_type == FUNC_DEPENDENCY) {
+                               if (depend_type == FUNC_DEPENDENCY && s->type 
== st_Nop) {
                                        dep_list = cond_append(dep_list, 
&s->op4.funcval->func->base.id);
                                }
                                break;
@@ -595,15 +595,17 @@ stmt_const_(sql_allocator *sa, stmt *s, 
 static stmt *
 push_project(sql_allocator *sa, stmt *rows, stmt *val)
 {
+       node *n;
+       stmt *l;
+
        switch (val->type) {
        case st_convert:
                val->op1 = push_project(sa, rows, val->op1);
                break;
-       case st_func:
        case st_Nop:
                if (val->op4.funcval->func->side_effect) {
-                       stmt *l = val->op1;
-                       node *n = l->op4.lval->h;
+                       l = val->op1;
+                       n = l->op4.lval->h;
                        if (n) {
                                n->data = stmt_const_(sa, rows, n->data);
                        } else {        
@@ -611,13 +613,17 @@ push_project(sql_allocator *sa, stmt *ro
                        }
                } else {
                        /* push through arguments of Nop */
-                       node *n;
-                       stmt *l = val->op1;
-
+                       l = val->op1;
                        for (n = l->op4.lval->h; n; n = n->next)
                                n->data = push_project(sa, rows, n->data);
                }
                break;
+       case st_func:
+               /* push through arguments of func */
+               l = val->op1;
+               for (n = l->op4.lval->h; n; n = n->next)
+                       n->data = push_project(sa, rows, n->data);
+               break;
        default:
                if (!val->nrcols)
                        val = stmt_const_(sa, rows, val);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to