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

Reply via email to