Changeset: 38e69746de3f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=38e69746de3f
Modified Files:
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_gencode.h
        sql/test/Users/Tests/dropManyUsers.Bug-3764.stable.out
Branch: default
Log Message:

make sure we optimize remote - relational calls


diffs (107 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -5084,7 +5084,7 @@ RAstatement2(Client cntxt, MalBlkPtr mb,
        if (!rel)
                throw(SQL, "sql.register", "Cannot register %s", buf);
        if (rel) {
-               monet5_create_relational_function(m, *mod, *nme, rel, 
stmt_list(m->sa, ops));
+               monet5_create_relational_function(m, *mod, *nme, rel, 
stmt_list(m->sa, ops), 0);
                rel_destroy(rel);
        }
        sqlcleanup(m, 0);
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -416,7 +416,7 @@ relational_func_create_result(mvc *sql, 
 
 
 static int
-_create_relational_function(mvc *m, char *mod, char *name, sql_rel *rel, stmt 
*call)
+_create_relational_function(mvc *m, char *mod, char *name, sql_rel *rel, stmt 
*call, int inline_func)
 {
        sql_rel *r;
        Client c = MCgetClient(m->clientid);
@@ -479,7 +479,8 @@ static int
                return -1;
        be->mvc->argc = old_argc;
        /* SQL function definitions meant for inlineing should not be optimized 
before */
-       curBlk->inlineProp =1;
+       if (inline_func)
+               curBlk->inlineProp =1;
        addQueryToCache(c);
        if (backup)
                c->curprg = backup;
@@ -510,7 +511,7 @@ static int
        /* dirty hack, rename (change first char of name) L->l, local
         * functions name start with 'l'         */
        name[0] = 'l';
-       if (_create_relational_function(m, mod, name, rel, call) < 0)
+       if (_create_relational_function(m, mod, name, rel, call, 0) < 0)
                return -1;
 
        /* create stub */
@@ -571,7 +572,7 @@ static int
        p = pushStr(curBlk, p, mod);
        p = pushStr(curBlk, p, name);
 #else
-       /* remote.exec(q, "sql", "register", "mod", "name", "relational_plan"); 
*/
+       /* remote.exec(q, "sql", "register", "mod", "name", "relational_plan", 
"signature"); */
        p = newInstruction(curBlk, ASSIGNsymbol);
        setModuleId(p, remoteRef);
        setFunctionId(p, execRef);
@@ -689,14 +690,14 @@ static int
 }
 
 int
-monet5_create_relational_function(mvc *m, char *mod, char *name, sql_rel *rel, 
stmt *call)
+monet5_create_relational_function(mvc *m, char *mod, char *name, sql_rel *rel, 
stmt *call, int inline_func)
 {
        prop *p = NULL;
 
        if (rel && (p = find_prop(rel->p, PROP_REMOTE)) != NULL)
                return _create_relational_remote(m, mod, name, rel, call, p);
        else
-               return _create_relational_function(m, mod, name, rel, call);
+               return _create_relational_function(m, mod, name, rel, call, 
inline_func);
 }
 
 /*
@@ -2095,7 +2096,7 @@ static int
                        /* dump args */
                        if (s->op1 && _dumpstmt(sql, mb, s->op1) < 0)
                                return -1;
-                       if (monet5_create_relational_function(sql->mvc, mod, 
fimp, rel, s) < 0)
+                       if (monet5_create_relational_function(sql->mvc, mod, 
fimp, rel, s, 1) < 0)
                                 return -1;
 
                        q = newStmt(mb, mod, fimp);
diff --git a/sql/backends/monet5/sql_gencode.h 
b/sql/backends/monet5/sql_gencode.h
--- a/sql/backends/monet5/sql_gencode.h
+++ b/sql/backends/monet5/sql_gencode.h
@@ -23,6 +23,6 @@ sql5_export void backend_call(backend *b
 sql5_export void initSQLreferences(void);
 sql5_export int monet5_resolve_function(ptr M, sql_func *f);
 sql5_export int backend_create_func(backend *be, sql_func *f, list *restypes, 
list *ops);
-sql5_export int monet5_create_relational_function(mvc *m, char *mod, char 
*name, sql_rel *rel, stmt *call);
+sql5_export int monet5_create_relational_function(mvc *m, char *mod, char 
*name, sql_rel *rel, stmt *call, int inline_func);
 
 #endif /* _SQL2MAL_H */
diff --git a/sql/test/Users/Tests/dropManyUsers.Bug-3764.stable.out 
b/sql/test/Users/Tests/dropManyUsers.Bug-3764.stable.out
--- a/sql/test/Users/Tests/dropManyUsers.Bug-3764.stable.out
+++ b/sql/test/Users/Tests/dropManyUsers.Bug-3764.stable.out
@@ -75,10 +75,10 @@ Ready.
 % varchar,     varchar,        int # type
 % 7,   13,     4 # length
 [ "monetdb",   "MonetDB Admin",        2000    ]
-[ "user1",     "1st user",     6884    ]
-[ "user2",     "2nd user",     6884    ]
-[ "user3",     "3rd user",     6884    ]
-[ "user4",     "4th user",     6884    ]
+[ "user1",     "1st user",     7418    ]
+[ "user2",     "2nd user",     7418    ]
+[ "user3",     "3rd user",     7418    ]
+[ "user4",     "4th user",     7418    ]
 #DROP USER user1;
 #DROP USER user2;
 #DROP USER user3;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to