Changeset: 791a8e3a206e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=791a8e3a206e
Modified Files:
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_gencode.h
        sql/backends/monet5/sql_scenario.c
Branch: default
Log Message:

restored trace/debug functionality when we do not cache queries


diffs (169 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
@@ -4596,7 +4596,7 @@ RAstatement(Client cntxt, MalBlkPtr mb, 
                MSinitClientPrg(cntxt, "user", "test");
 
                /* generate MAL code */
-               backend_callinline(b, cntxt, s);
+               backend_callinline(b, cntxt, s, 1);
                addQueryToCache(cntxt);
 
                msg = (str) runMAL(cntxt, cntxt->curprg->def, 0, 0);
diff --git a/sql/backends/monet5/sql_execute.c 
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -179,7 +179,7 @@ SQLstatementIntern(Client c, str *expr, 
                        goto endofcompile;
                }
                /* generate MAL code */
-               if (backend_callinline(sql, c, s) == 0)
+               if (backend_callinline(sql, c, s, 1) == 0)
                        addQueryToCache(c);
                else
                        err = 1;
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
@@ -43,7 +43,7 @@
 #include <rel_bin.h>
 
 static int _dumpstmt(backend *sql, MalBlkPtr mb, stmt *s);
-static int backend_dumpstmt(backend *be, MalBlkPtr mb, stmt *s, int top);
+static int backend_dumpstmt(backend *be, MalBlkPtr mb, stmt *s, int top, int 
addend);
 
 /*
  * @+ MAL code support
@@ -362,7 +362,7 @@ static int
        }
 
        be->mvc->argc = 0;
-       if (backend_dumpstmt(be, curBlk, s, 0) < 0)
+       if (backend_dumpstmt(be, curBlk, s, 0, 1) < 0)
                return -1;
        be->mvc->argc = old_argc;
        /* SQL function definitions meant for inlineing should not be optimized 
before */
@@ -2535,7 +2535,7 @@ setCommitProperty(MalBlkPtr mb)
 }
 
 static int
-backend_dumpstmt(backend *be, MalBlkPtr mb, stmt *s, int top)
+backend_dumpstmt(backend *be, MalBlkPtr mb, stmt *s, int top, int add_end)
 {
        mvc *c = be->mvc;
        stmt **stmts = stmt_array(c->sa, s);
@@ -2575,12 +2575,13 @@ backend_dumpstmt(backend *be, MalBlkPtr 
                getArg(q, 0) = getArg(getInstrPtr(mb, 0), 0);
                q->barrier = RETURNsymbol;
        }
-       pushEndInstruction(mb);
+       if (add_end)
+               pushEndInstruction(mb);
        return 0;
 }
 
 int
-backend_callinline(backend *be, Client c, stmt *s)
+backend_callinline(backend *be, Client c, stmt *s, int add_end)
 {
        mvc *m = be->mvc;
        InstrPtr curInstr = 0;
@@ -2612,7 +2613,7 @@ backend_callinline(backend *be, Client c
                        }
                }
        }
-       if (backend_dumpstmt(be, curBlk, s, 1) < 0)
+       if (backend_dumpstmt(be, curBlk, s, 1, add_end) < 0)
                return -1;
        c->curprg->def = curBlk;
        return 0;
@@ -2679,7 +2680,7 @@ backend_dumpproc(backend *be, Client c, 
                }
        }
 
-       if (backend_dumpstmt(be, mb, s, 1) < 0)
+       if (backend_dumpstmt(be, mb, s, 1, 1) < 0)
                return NULL;
 
        // Always keep the SQL query around for monitoring
@@ -2909,7 +2910,7 @@ backend_create_sql_func(backend *be, sql
        if (m->session->auto_commit)
                setCommitProperty(curBlk);
 
-       if (backend_dumpstmt(be, curBlk, s, 0) < 0)
+       if (backend_dumpstmt(be, curBlk, s, 0, 1) < 0)
                return -1;
        /* selectively make functions available for inlineing */
        /* for the time being we only inline scalar functions */
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
@@ -18,7 +18,7 @@
 #include <mal_function.h>
 
 sql5_export Symbol backend_dumpproc(backend *be, Client c, cq *q, stmt *s);
-sql5_export int backend_callinline(backend *be, Client c, stmt *s);
+sql5_export int backend_callinline(backend *be, Client c, stmt *s, int 
add_end);
 sql5_export void backend_call(backend *be, Client c, cq *q);
 sql5_export void initSQLreferences(void);
 sql5_export int monet5_resolve_function(ptr M, sql_func *f);
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -950,7 +950,7 @@ SQLparser(Client c)
        mvc *m;
        int oldvtop, oldstop;
        int pstatus = 0;
-       int err = 0;
+       int err = 0, opt = 0;
 
        be = (backend *) c->sqlcontext;
        if (be == 0) {
@@ -1143,20 +1143,9 @@ recompilequery:
                if (m->emod & mod_debug)
                        SQLsetDebugger(c, m, TRUE);
                if (!caching(m) || !cachable(m, s)) {
-                       MalBlkPtr mb;
-
                        scanner_query_processed(&(m->scanner));
-                       if (backend_callinline(be, c, s) == 0) {
-                               trimMalBlk(c->curprg->def);
-                               mb = c->curprg->def;
-                               chkProgram(c->fdout, c->nspace, mb);
-                               addOptimizerPipe(c, mb, "default_pipe");
-                               msg = optimizeMALBlock(c, mb);
-                               if (msg != MAL_SUCCEED) {
-                                       sqlcleanup(m, err);
-                                       goto finalize;
-                               }
-                               c->curprg->def = mb;
+                       if (backend_callinline(be, c, s, 0) == 0) {
+                               opt = 1;
                        } else {
                                err = 1;
                        }
@@ -1209,10 +1198,23 @@ recompilequery:
                 * The default action is to print them out at the end of the
                 * query block.
                 */
-               if (be->q)
+               //if (be->q || opt)
                        pushEndInstruction(c->curprg->def);
 
                chkTypes(c->fdout, c->nspace, c->curprg->def, TRUE);    /* 
resolve types */
+               if (opt) {
+                       MalBlkPtr mb = c->curprg->def;
+
+                       trimMalBlk(mb);
+                       chkProgram(c->fdout, c->nspace, mb);
+                       addOptimizerPipe(c, mb, "default_pipe");
+                       msg = optimizeMALBlock(c, mb);
+                       if (msg != MAL_SUCCEED) {
+                               sqlcleanup(m, err);
+                               goto finalize;
+                       }
+                       c->curprg->def = mb;
+               }
                /* we know more in this case than
                   chkProgram(c->fdout, c->nspace, c->curprg->def); */
                if (c->curprg->def->errors) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to