Changeset: 956d0549eafc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=956d0549eafc
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk_tracer.h
        monetdb5/mal/Tests/All
        monetdb5/mal/mal.h
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_dataflow.c
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_function.h
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_listing.c
        monetdb5/mal/mal_listing.h
        monetdb5/mal/mal_namespace.c
        monetdb5/mal/mal_profiler.c
        monetdb5/mal/mal_resolve.c
        monetdb5/modules/atoms/inet.c
        monetdb5/modules/mal/groupby.c
        monetdb5/modules/mal/inspect.c
        monetdb5/modules/mal/manifold.c
        monetdb5/modules/mal/mdb.c
        monetdb5/modules/mal/oltp.c
        monetdb5/modules/mal/orderidx.c
        monetdb5/modules/mal/tablet.c
        monetdb5/modules/mal/wlc.c
        monetdb5/optimizer/Tests/ARexample.malC
        monetdb5/optimizer/Tests/CRexample.malC
        monetdb5/optimizer/Tests/CXerror1.malC
        monetdb5/optimizer/Tests/CXexample.stable.out
        monetdb5/optimizer/Tests/FTexample.malC
        monetdb5/optimizer/Tests/cst01.stable.out
        monetdb5/optimizer/Tests/dataflow4.malC
        monetdb5/optimizer/Tests/dataflow4.stable.out
        monetdb5/optimizer/Tests/dataflow5.malC
        monetdb5/optimizer/Tests/ifthencst.malC
        monetdb5/optimizer/Tests/inline02.stable.out
        monetdb5/optimizer/Tests/inline03.stable.out
        monetdb5/optimizer/Tests/inline04.stable.out
        monetdb5/optimizer/Tests/inline07.stable.out
        monetdb5/optimizer/Tests/inline09.stable.out
        monetdb5/optimizer/Tests/inline10.stable.out
        monetdb5/optimizer/Tests/inline11.malC
        monetdb5/optimizer/Tests/inline12.stable.out
        monetdb5/optimizer/Tests/inlineCst.stable.out
        monetdb5/optimizer/Tests/inlineFunction.malC
        monetdb5/optimizer/Tests/inlineFunction.stable.out
        monetdb5/optimizer/Tests/inlineFunction1.malC
        monetdb5/optimizer/Tests/inlineFunction2.malC
        monetdb5/optimizer/Tests/inlineFunction2.stable.out
        monetdb5/optimizer/Tests/inlineFunction3.malC
        monetdb5/optimizer/Tests/inlineFunction4.malC
        monetdb5/optimizer/Tests/inlineFunction4.stable.out
        monetdb5/optimizer/Tests/joinpath.malC
        monetdb5/optimizer/Tests/leftjoinpath.malC
        monetdb5/optimizer/Tests/mat00.malC
        monetdb5/optimizer/Tests/mat01.malC
        monetdb5/optimizer/Tests/projectionchain.malC
        monetdb5/optimizer/Tests/qep02.malC
        monetdb5/optimizer/Tests/reorder00.malC
        monetdb5/optimizer/Tests/replicator00.malC
        monetdb5/optimizer/Tests/tst4000.stable.out
        monetdb5/optimizer/Tests/tst4002.malC
        monetdb5/optimizer/Tests/tst4003.stable.out
        monetdb5/optimizer/Tests/tst4004.malC
        monetdb5/optimizer/Tests/tst4005.stable.out
        monetdb5/optimizer/Tests/tst4030.malC
        monetdb5/optimizer/opt_aliases.c
        monetdb5/optimizer/opt_candidates.c
        monetdb5/optimizer/opt_coercion.c
        monetdb5/optimizer/opt_commonTerms.c
        monetdb5/optimizer/opt_constants.c
        monetdb5/optimizer/opt_costModel.c
        monetdb5/optimizer/opt_dataflow.c
        monetdb5/optimizer/opt_deadcode.c
        monetdb5/optimizer/opt_emptybind.c
        monetdb5/optimizer/opt_evaluate.c
        monetdb5/optimizer/opt_garbageCollector.c
        monetdb5/optimizer/opt_generator.c
        monetdb5/optimizer/opt_inline.c
        monetdb5/optimizer/opt_json.c
        monetdb5/optimizer/opt_macro.c
        monetdb5/optimizer/opt_matpack.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_multiplex.c
        monetdb5/optimizer/opt_oltp.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_profiler.c
        monetdb5/optimizer/opt_projectionpath.c
        monetdb5/optimizer/opt_pushselect.c
        monetdb5/optimizer/opt_querylog.c
        monetdb5/optimizer/opt_reduce.c
        monetdb5/optimizer/opt_remap.c
        monetdb5/optimizer/opt_remoteQueries.c
        monetdb5/optimizer/opt_reorder.c
        monetdb5/scheduler/Tests/sched00.stable.out
        monetdb5/scheduler/run_memo.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_optimizer.c
        sql/backends/monet5/sql_orderidx.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/wlr.c
        sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out
Branch: gdk_tracer
Log Message:

A major cleanup of (very) old debugging code.
Testing optimizers can use the SQL DEBUG method to access the results.
Tracing instructions is better supported by the profiler, including
properties.
Optimizer tests has been extended to include the variable reducer
and garbagecollector.


diffs (truncated from 2716 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -2145,8 +2145,7 @@ ssize_t daytime_tz_fromstr(const char *b
 int daytime_usec(daytime tm);
 str dblRef;
 str deblockdataflow(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-void debugFunction(COMPONENT comp, MalBlkPtr mb, MalStkPtr stk, int flg);
-void debugInstruction(COMPONENT comp, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, 
int p_idx, int flg);
+void debugFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int flg, int 
first, int size);
 int defConstant(MalBlkPtr mb, int type, ValPtr cst);
 str defineRef;
 void delArgument(InstrPtr p, int varid);
@@ -2289,7 +2288,7 @@ str initQlog(void);
 int inlineMALblock(MalBlkPtr mb, int pc, MalBlkPtr mc);
 str inplaceRef;
 void insertSymbol(Module scope, Symbol prg);
-str instruction2str(MalBlkPtr mb, MalStkPtr stl, InstrPtr p, int p_idx, int 
hidden);
+str instruction2str(MalBlkPtr mb, MalStkPtr stl, InstrPtr p, int hidden);
 str intRef;
 str intersectRef;
 str intersectcandRef;
@@ -2496,7 +2495,7 @@ str preludeRef;
 MalStkPtr prepareMALstack(MalBlkPtr mb, int size);
 int prepareMalBlk(MalBlkPtr mb, str s);
 void printFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int flg);
-void printInstruction(stream *fd, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, int 
p_idx, int flg);
+void printInstruction(stream *fd, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, int 
flg);
 str printRef;
 void printSignature(stream *fd, Symbol s, int flg);
 void printStack(stream *f, MalBlkPtr mb, MalStkPtr s);
@@ -2618,7 +2617,6 @@ str singleRef;
 str sinkRef;
 void slash_2_dir_sep(str fname);
 str sliceRef;
-void snprintFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int flg, int 
first, int size);
 str sortRef;
 str sortReverseRef;
 str soundex_impl(str *res, str *Name);
@@ -2675,6 +2673,8 @@ timestamp timestamp_fromusec(lng usec);
 ssize_t timestamp_precision_tostr(str *buf, size_t *len, timestamp val, int 
precision, bool external);
 ssize_t timestamp_tostr(str *buf, size_t *len, const timestamp *val, bool 
external);
 ssize_t timestamp_tz_fromstr(const char *buf, size_t *len, timestamp **ret, 
bool external);
+void traceFunction(COMPONENT comp, MalBlkPtr mb, MalStkPtr stk, int flg);
+void traceInstruction(COMPONENT comp, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, 
int flg);
 str transactionRef;
 str transaction_abortRef;
 str transaction_beginRef;
diff --git a/gdk/gdk_tracer.h b/gdk/gdk_tracer.h
--- a/gdk/gdk_tracer.h
+++ b/gdk/gdk_tracer.h
@@ -148,57 +148,20 @@ typedef enum {
         COMP( SQL_STATEMENT )         \
         COMP( SQL_BAT )               \
                                       \
-        COMP( MAL_MEMO )              \
         COMP( MAL_INTERPRETER )       \
-        COMP( MAL_SCHEDULER )         \
         COMP( MAL_WLC )               \
-        COMP( MAL_CLIENT )            \
-        COMP( MAL_OIDX )              \
         COMP( MAL_REMOTE )            \
-        COMP( MAL_INET )              \
-        COMP( MAL_GROUPBY )           \
+        COMP( MAL_ATOMS )              \
         COMP( MAL_TABLET )            \
         COMP( MAL_OLTP )              \
-        COMP( MAL_MANIFOLD )          \
-        COMP( MAL_RESOLVE )           \
-        COMP( MAL_FCN )               \
+        COMP( MAL_MAPI )              \
+        COMP( MAL_SERVER )              \
         COMP( MAL_DATAFLOW )          \
-        COMP( MAL_SERVER )            \
+        COMP( MAL_MANIFOLD )          \
         COMP( MAL_EXCEPTION )         \
-        COMP( MAL_NAMESPACE )         \
-        COMP( MAL_PROFILER )          \
         COMP( MAL_MAL )               \
                                       \
-        COMP( MAL_OPT_ALIASES )       \
-        COMP( MAL_OPT_CANDIDATES )    \
-        COMP( MAL_OPT_COERCION )      \
-        COMP( MAL_OPT_COMMONTERMS )   \
-        COMP( MAL_OPT_PIPES )         \
-        COMP( MAL_OPT_REMAP )         \
-        COMP( MAL_OPT_DATAFLOW )      \
-        COMP( MAL_OPT_EVALUATE )      \
-        COMP( MAL_OPT_INLINE )        \
-        COMP( MAL_OPT_MULTIPLEX )     \
-        COMP( MAL_OPT_REORDER )       \
-        COMP( MAL_OPT_PROJECTIONPATH )\
-        COMP( MAL_OPT_WLC )           \
-        COMP( MAL_OPT_CONSTANTS )     \
-        COMP( MAL_OPT_COSTMODEL )     \
-        COMP( MAL_OPT_DEADCODE )      \
-        COMP( MAL_OPT_EMPTYBIND )     \
-        COMP( MAL_OPT_GENERATOR )     \
-        COMP( MAL_OPT_JSON )          \
-        COMP( MAL_OPT_MATPACK )       \
-        COMP( MAL_OPT_GC )            \
-        COMP( MAL_OPT_MERGETABLE )    \
-        COMP( MAL_OPT_PUSHSELECT )    \
-        COMP( MAL_OPT_QUERYLOG )      \
-        COMP( MAL_OPT_OLTP )          \
-        COMP( MAL_OPT_PROFILER )      \
-        COMP( MAL_OPT_REDUCE )        \
-        COMP( MAL_OPT_REMOTE )        \
-        COMP( MAL_OPT_VOLCANO )       \
-        COMP( MAL_OPT_MACRO )         \
+        COMP( MAL_OPTIMIZER )            \
                                       \
         COMP( GDK_TM )                \
         COMP( GDK_UTILS )             \
diff --git a/monetdb5/mal/Tests/All b/monetdb5/mal/Tests/All
--- a/monetdb5/mal/Tests/All
+++ b/monetdb5/mal/Tests/All
@@ -196,4 +196,4 @@ pithole
 malids
 
 # Tracer
-tracer00
+# tracer00 Output is call dependent
diff --git a/monetdb5/mal/mal.h b/monetdb5/mal/mal.h
--- a/monetdb5/mal/mal.h
+++ b/monetdb5/mal/mal.h
@@ -95,8 +95,9 @@ mal_export void mserver_reset(void);
 #define LIST_MAL_PROPS 16       /* show variable properties */
 #define LIST_MAL_MAPI  32       /* output Mapi compatible output */
 #define LIST_MAL_REMOTE  64       /* output MAL for remote execution */
+#define LIST_MAL_FLOW   128       /* output MAL dataflow dependencies */
 #define LIST_MAL_CALL  (LIST_MAL_NAME | LIST_MAL_VALUE )
-#define LIST_MAL_DEBUG (LIST_MAL_NAME | LIST_MAL_VALUE | LIST_MAL_TYPE | 
LIST_MAL_PROPS)
+#define LIST_MAL_DEBUG (LIST_MAL_NAME | LIST_MAL_VALUE | LIST_MAL_TYPE | 
LIST_MAL_PROPS | LIST_MAL_FLOW)
 #define LIST_MAL_ALL   (LIST_MAL_NAME | LIST_MAL_VALUE | LIST_MAL_TYPE | 
LIST_MAL_PROPS | LIST_MAL_MAPI)
 
 /* type check status is kept around to improve type checking efficiency */
diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -74,7 +74,7 @@ MCinit(void)
        MAL_MAXCLIENTS = /* client connections */ maxclients;
        mal_clients = GDKzalloc(sizeof(ClientRec) * MAL_MAXCLIENTS);
        if( mal_clients == NULL){
-               TRC_CRITICAL(MAL_CLIENT, "Initialization failed: " 
MAL_MALLOC_FAIL "\n");
+               TRC_CRITICAL(MAL_MAL, "Initialization failed: " MAL_MALLOC_FAIL 
"\n");
                return false;
        }
        for (int i = 0; i < MAL_MAXCLIENTS; i++){
@@ -142,7 +142,6 @@ MCnewClient(void)
        if (c == mal_clients + MAL_MAXCLIENTS)
                return NULL;
        c->idx = (int) (c - mal_clients);
-       TRC_DEBUG(MAL_CLIENT, "New client created: %d\n", (int) (c - 
mal_clients));
        return c;
 }
 
@@ -183,7 +182,6 @@ MCresetProfiler(stream *fdout)
 void
 MCexitClient(Client c)
 {
-       TRC_DEBUG(MAL_CLIENT, "Exit client: %d\n", c->idx);
        finishSessionProfiler(c);
        MCresetProfiler(c->fdout);
        if (c->father == NULL) { /* normal client */
@@ -217,7 +215,7 @@ MCinitClientRecord(Client c, oid user, b
        c->fdin = fin ? fin : bstream_create(GDKstdin, 0);
        if ( c->fdin == NULL){
                c->mode = FREECLIENT;
-               TRC_ERROR(MAL_CLIENT, "No stdin channel available\n");
+               TRC_ERROR(MAL_MAL, "No stdin channel available\n");
                return NULL;
        }
        c->yycur = 0;
@@ -252,7 +250,6 @@ MCinitClientRecord(Client c, oid user, b
                        bstream_destroy(c->fdin);
                        c->mode = FREECLIENT;
                }
-               TRC_ERROR(MAL_CLIENT, "Client prompt undefined\n");
                return NULL;
        }
        c->promptlength = strlen(prompt);
@@ -513,7 +510,6 @@ MCactiveClients(void)
 void
 MCcloseClient(Client c)
 {
-       TRC_DEBUG(MAL_CLIENT, "Close client: %d " OIDFMT "\n", (int) (c - 
mal_clients), c->user);
        /* free resources of a single thread */
        MCfreeClient(c);
 }
@@ -563,7 +559,6 @@ MCreadClient(Client c)
 {
        bstream *in = c->fdin;
 
-       TRC_DEBUG(MAL_CLIENT, "Stream client: %d %d\n", c->idx, 
isa_block_stream(in->s));
        while (in->pos < in->len &&
                   (isspace((unsigned char) (in->buf[in->pos])) ||
                        in->buf[in->pos] == ';' || !in->buf[in->pos]))
@@ -595,11 +590,9 @@ MCreadClient(Client c)
                        if (p != in->buf + in->len - 1)
                                in->len++;
                }
-               TRC_DEBUG(MAL_CLIENT, "Received simple stream: %d - sum %zu\n", 
c->idx, sum);
        }
        if (in->pos >= in->len) {
                /* end of stream reached */
-               TRC_DEBUG(MAL_CLIENT, "End of received stream: %d %d\n", 
c->idx, c->bak == 0);
                if (c->bak) {
                        MCpopClientInput(c);
                        if (c->fdin == NULL)
@@ -608,8 +601,6 @@ MCreadClient(Client c)
                }
                return 0;
        }
-       TRC_DEBUG(MAL_CLIENT, "Finished reading stream: %d %d\n", (int) 
in->pos, (int) in->len);
-       TRC_DEBUG(MAL_CLIENT, "%s\n", in->buf);
        return 1;
 }
 
diff --git a/monetdb5/mal/mal_dataflow.c b/monetdb5/mal/mal_dataflow.c
--- a/monetdb5/mal/mal_dataflow.c
+++ b/monetdb5/mal/mal_dataflow.c
@@ -547,7 +547,6 @@ DFLOWinitBlk(DataFlow flow, MalBlkPtr mb
                throw(MAL, "dataflow", "DFLOWinitBlk(): Called with flow == 
NULL");
        if (mb == NULL)
                throw(MAL, "dataflow", "DFLOWinitBlk(): Called with mb == 
NULL");
-       TRC_DEBUG(MAL_DATAFLOW, "Initialize dflow block\n");
        assign = (int *) GDKzalloc(mb->vtop * sizeof(int));
        if (assign == NULL)
                throw(MAL, "dataflow", SQLSTATE(HY013) MAL_MALLOC_FAIL);
@@ -615,7 +614,6 @@ DFLOWinitBlk(DataFlow flow, MalBlkPtr mb
                                l = getEndScope(mb, getArg(p, j));
                                if (l != pc && l < flow->stop && l > 
flow->start) {
                                        /* add edge to the target instruction 
for wakeup call */
-                                       TRC_DEBUG(MAL_DATAFLOW, "Endoflife for 
%s is %d -> %d\n", getVarName(mb, getArg(p, j)), n + flow->start, l);
                                        assert(pc < l); /* only dependencies on 
earlier instructions */
                                        l -= flow->start;
                                        if (flow->nodes[n]) {
@@ -658,22 +656,6 @@ DFLOWinitBlk(DataFlow flow, MalBlkPtr mb
        }
        GDKfree(assign);
 
-       /* CHECK 
-       { char buf[8192];
-         int len = 8192;
-
-               // only use in debugging mode compilations 
-               for (n = 0; n < flow->stop - flow->start; n++) {
-                       for (j = n; flow->edges[j]; j = flow->edges[j]) {
-                               len -= snprintf(buf + strlen(buf), len, "%d\n", 
flow->start + flow->nodes[j]);
-                               if (flow->edges[j] == -1)
-                                       break;
-                       }
-                       TRC_DEBUG(MAL_DATAFLOW, "[%d] %d dependents block count 
%d wakeup, %s\n", flow->start + n, n, flow->status[n].blocks, buf);
-               }
-       }
-*/
-
        return MAL_SUCCEED;
 }
 
@@ -695,10 +677,9 @@ static void showFlowEvent(DataFlow flow,
        TRC_DEBUG(MAL_DATAFLOW, "End of data flow '%d' done '%d'\n", pc, 
flow->stop - flow->start);
        for (i = 0; i < flow->stop - flow->start; i++)
                if (fe[i].state != DFLOWwrapup && fe[i].pc >= 0) {
-                       TRC_DEBUG_IF(MAL_DATAFLOW)
                        {
-                               TRC_DEBUG_ENDIF(MAL_DATAFLOW, "Missed pc %d 
status %d %d blocks %d\n", fe[i].state, i, fe[i].pc, fe[i].blocks);
-                               debugInstruction(MAL_DATAFLOW, fe[i].flow->mb, 
0, getInstrPtr(fe[i].flow->mb, fe[i].pc), fe[i].pc, LIST_MAL_MAPI);
+                               TRC_DEBUG(MAL_DATAFLOW, "Missed pc %d status %d 
%d blocks %d\n", fe[i].state, i, fe[i].pc, fe[i].blocks);
+                               traceInstruction(MAL_DATAFLOW, fe[i].flow->mb, 
0, getInstrPtr(fe[i].flow->mb, fe[i].pc),  LIST_MAL_MAPI);
                        }
                }
 }
diff --git a/monetdb5/mal/mal_debugger.c b/monetdb5/mal/mal_debugger.c
--- a/monetdb5/mal/mal_debugger.c
+++ b/monetdb5/mal/mal_debugger.c
@@ -180,7 +180,7 @@ static void
 printCall(Client cntxt, MalBlkPtr mb, MalStkPtr stk, int pc)
 {
        str msg;
-       msg = instruction2str(mb, stk, getInstrPtr(mb, pc), pc, LIST_MAL_CALL);
+       msg = instruction2str(mb, stk, getInstrPtr(mb, pc), LIST_MAL_CALL);
        mnstr_printf(cntxt->fdout, "#%s at %s.%s[%d]\n", (msg?msg:"failed 
instruction2str()") ,
                        getModuleId(getInstrPtr(mb, 0)),
                        getFunctionId(getInstrPtr(mb, 0)), pc);
@@ -486,7 +486,7 @@ printTraceCall(stream *out, MalBlkPtr mb
        InstrPtr p;
 
        p = getInstrPtr(mb, pc);
-       msg = instruction2str(mb, stk, p, pc, flags);
+       msg = instruction2str(mb, stk, p, flags);
        mnstr_printf(out, "#%s%s\n", (mb->errors != MAL_SUCCEED ? "!" : ""), 
msg?msg:"failed instruction2str()");
        GDKfree(msg);
 }
@@ -1101,7 +1101,7 @@ retryRead:
                                                if( lstng == LIST_MAL_NAME)
                                                        printFunction(out, 
fs->def, 0, lstng);
                                                else
-                                                       snprintFunction(out, 
fs->def, 0, lstng, 0,mb->stop);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to