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