Changeset: 5c3aa10fb758 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5c3aa10fb758
Modified Files:
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_instruction.h
monetdb5/modules/mal/querylog.c
monetdb5/modules/mal/querylog.mal
monetdb5/optimizer/opt_support.c
sql/backends/monet5/sql_gencode.c
Branch: default
Log Message:
Collect total optimizer time directly
In optimizeMALblock the total time spent is left
behind in the MAL block for the querylog.
diffs (104 lines):
diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -133,6 +133,7 @@ newMalBlk(int maxvars, int maxstmts)
mb->trap = 0;
mb->runtime = 0;
mb->calls = 0;
+ mb->optimize = 0;
if (newMalBlkStmt(mb, maxstmts) < 0)
return NULL;
return mb;
@@ -248,6 +249,7 @@ copyMalBlk(MalBlkPtr old)
mb->trap = old->trap;
mb->runtime = old->runtime;
mb->calls = old->calls;
+ mb->optimize = old->optimize;
mb->replica = old->replica;
mb->maxarg = old->maxarg;
mb->profiler = NULL;
diff --git a/monetdb5/mal/mal_instruction.h b/monetdb5/mal/mal_instruction.h
--- a/monetdb5/mal/mal_instruction.h
+++ b/monetdb5/mal/mal_instruction.h
@@ -146,6 +146,7 @@ typedef struct MALBLK {
sht trap; /* call debugger when
called */
lng runtime; /* average execution
time of block in ticks */
int calls; /* number of calls */
+ lng optimize; /* total optimizer time */
} *MalBlkPtr, MalBlkRecord;
/* Allocation of space assumes a rather exotic number of
diff --git a/monetdb5/modules/mal/querylog.c b/monetdb5/modules/mal/querylog.c
--- a/monetdb5/modules/mal/querylog.c
+++ b/monetdb5/modules/mal/querylog.c
@@ -296,9 +296,8 @@ QLOGdefine(Client cntxt, MalBlkPtr mb, M
oid *ret = (oid*) getArgReference(stk,pci,0);
str *q = (str*) getArgReference(stk,pci,1);
str *pipe = (str*) getArgReference(stk,pci,2);
- lng *optimize = (lng*) getArgReference(stk,pci,3);
- str *usr = (str*) getArgReference(stk,pci,4);
- lng *tick = (lng*) getArgReference(stk,pci,5);
+ str *usr = (str*) getArgReference(stk,pci,3);
+ lng *tick = (lng*) getArgReference(stk,pci,4);
oid o;
(void) cntxt;
@@ -311,7 +310,7 @@ QLOGdefine(Client cntxt, MalBlkPtr mb, M
QLOG_cat_query = BUNappend(QLOG_cat_query,*q,FALSE);
QLOG_cat_pipe = BUNappend(QLOG_cat_pipe,*pipe,FALSE);
QLOG_cat_mal = BUNappend(QLOG_cat_mal,&mb->stop,FALSE);
- QLOG_cat_optimize = BUNappend(QLOG_cat_optimize,optimize,FALSE);
+ QLOG_cat_optimize =
BUNappend(QLOG_cat_optimize,&mb->optimize,FALSE);
QLOG_cat_user = BUNappend(QLOG_cat_user,*usr,FALSE);
QLOG_cat_defined = BUNappend(QLOG_cat_defined,tick,FALSE);
}
diff --git a/monetdb5/modules/mal/querylog.mal
b/monetdb5/modules/mal/querylog.mal
--- a/monetdb5/modules/mal/querylog.mal
+++ b/monetdb5/modules/mal/querylog.mal
@@ -20,7 +20,7 @@ command empty()
address QLOGempty
comment "Clear the query log tables";
-pattern define(q:str, pipe:str, optimize:lng, usr:str, tick:timestamp):oid
+pattern define(q:str, pipe:str, usr:str, tick:timestamp):oid
address QLOGdefine
comment "Add a new query call to the query log";
diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c
--- a/monetdb5/optimizer/opt_support.c
+++ b/monetdb5/optimizer/opt_support.c
@@ -268,6 +268,7 @@ optimizeMALBlock(Client cntxt, MalBlkPtr
int qot = 0;
str msg = MAL_SUCCEED;
int cnt = 0;
+ lng clk = GDKusec();
optimizerInit();
/* assume the type and flow have been checked already */
@@ -300,6 +301,7 @@ optimizeMALBlock(Client cntxt, MalBlkPtr
}
}
} while (qot && cnt++ < mb->stop);
+ mb->optimize= GDKusec() - clk;
if (cnt >= mb->stop)
throw(MAL, "optimizer.MALoptimizer", OPTIMIZER_CYCLE);
return 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
@@ -2408,7 +2408,6 @@ backend_dumpproc(backend *be, Client c,
{
char *t;
InstrPtr q;
- lng Toptimize = 0;
if ( be->q && be->q->codestring) {
t = GDKstrdup( be->q->codestring);
@@ -2421,7 +2420,6 @@ backend_dumpproc(backend *be, Client c,
q->token = REMsymbol; // will be patched
q = pushStr(mb, q, t);
q = pushStr(mb, q, pipe= initSQLoptimizer());
- (void) pushLng(mb, q, Toptimize);
m->Tparse = 0;
GDKfree(pipe);
}
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list