Changeset: 7b049bcc94fd for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7b049bcc94fd
Modified Files:
        clients/Tests/exports.stable.out
        monetdb5/mal/Tests/recycle00.stable.out
        monetdb5/mal/Tests/tst661.stable.out
        monetdb5/mal/Tests/tst662.stable.out
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_function.h
        monetdb5/modules/mal/Tests/partition.stable.out
        monetdb5/modules/mal/mdb.c
        monetdb5/optimizer/Tests/CMexample.stable.out
        monetdb5/optimizer/Tests/CXexample.stable.out
        monetdb5/optimizer/Tests/DCexample.stable.out
        monetdb5/optimizer/Tests/DCexample2.stable.out
        monetdb5/optimizer/Tests/FTexample.stable.out
        monetdb5/optimizer/Tests/GCexample01.stable.out
        monetdb5/optimizer/Tests/JPexample.stable.out
        monetdb5/optimizer/Tests/Mexample.stable.out
        monetdb5/optimizer/Tests/cst00.stable.out
        monetdb5/optimizer/Tests/cst01.stable.out
        monetdb5/optimizer/Tests/cst02.stable.out
        monetdb5/optimizer/Tests/dataflow.stable.out
        monetdb5/optimizer/Tests/garbage.stable.out
        monetdb5/optimizer/Tests/inline00.stable.out
        monetdb5/optimizer/Tests/inline01.stable.out
        monetdb5/optimizer/Tests/inline02.stable.out
        monetdb5/optimizer/Tests/inline03.stable.out
        monetdb5/optimizer/Tests/inline04.stable.out
        monetdb5/optimizer/Tests/inline05.stable.out
        monetdb5/optimizer/Tests/inline06.stable.out
        monetdb5/optimizer/Tests/inline07.stable.out
        monetdb5/optimizer/Tests/inline08.stable.out
        monetdb5/optimizer/Tests/inline09.stable.out
        monetdb5/optimizer/Tests/inline10.stable.out
        monetdb5/optimizer/Tests/inlineCst.stable.out
        monetdb5/optimizer/Tests/inlineIfthen.stable.out
        monetdb5/optimizer/Tests/manifold2.stable.out
        monetdb5/optimizer/Tests/remap.stable.out
        monetdb5/optimizer/Tests/tst4005.stable.out
        monetdb5/optimizer/Tests/tst4600.stable.out
        monetdb5/optimizer/Tests/tst4601.stable.out
        monetdb5/optimizer/Tests/tst4630.stable.out
        monetdb5/scheduler/Tests/sched00.stable.out
        sql/backends/monet5/UDF/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/Tests/udf-reverse.stable.out
Branch: default
Log Message:

Introduce the debug listing option
For debugging it helps to have the underlyin C function name
avaible. In the last clean up, those hidden features were dropped.


diffs (truncated from 1466 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
@@ -2162,6 +2162,7 @@ int daytime_fromstr(const char *buf, int
 int daytime_tostr(str *buf, int *len, const daytime *val);
 int daytime_tz_fromstr(const char *buf, int *len, daytime **ret);
 str dblRef;
+void debugFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int flg, int 
first, int size);
 void debugLifespan(Client cntxt, MalBlkPtr mb, Lifespan span);
 str debugOptimizers(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 void debugParser(int i);
diff --git a/monetdb5/mal/Tests/recycle00.stable.out 
b/monetdb5/mal/Tests/recycle00.stable.out
--- a/monetdb5/mal/Tests/recycle00.stable.out
+++ b/monetdb5/mal/Tests/recycle00.stable.out
@@ -40,11 +40,11 @@ function user.qry():void;
     j := calc.*(i,i);
     io.print(j);
 end user.qry;
-function user.qry():void;
-    i:int := 23:int;
-    j:int := calc.*(i:int,i:int);
-    io.print(j:int);
-end user.qry;
+function user.qry():void;                               # 
+    i:int := 23:int;                                    # 
+    j:int := calc.*(i:int,i:int);                       # CMDvarMULsignal
+    io.print(j:int);                                    # IOprint_val
+end user.qry;                                           # 
 [ "start" ]
 [ 529 ]
 [ "next" ]
diff --git a/monetdb5/mal/Tests/tst661.stable.out 
b/monetdb5/mal/Tests/tst661.stable.out
--- a/monetdb5/mal/Tests/tst661.stable.out
+++ b/monetdb5/mal/Tests/tst661.stable.out
@@ -37,13 +37,13 @@ function user.tst():void;
     z := user.fs(1);
     (y,z) := user.fs(1);
 end user.tst;
-function user.tst():void;
-    a:int := user.fi(1:int);
-    (a:int,b:int) := user.fi(1:int);
-    (a:int,b:int,c:int) := user.fi(1:int);
-    z:str := user.fs(1:int);
-    (y:str,z:str) := user.fs(1:int);
-end user.tst;
+function user.tst():void;                               # 
+    a:int := user.fi(1:int);                            # MDBdummy
+    (a:int,b:int) := user.fi(1:int);                    # MDBdummy
+    (a:int,b:int,c:int) := user.fi(1:int);              # MDBdummy
+    z:str := user.fs(1:int);                            # MDBdummy
+    (y:str,z:str) := user.fs(1:int);           # MDBdummy
+end user.tst;                                  # 
 
 # 16:47:50 >  
 # 16:47:50 >  Done.
diff --git a/monetdb5/mal/Tests/tst662.stable.out 
b/monetdb5/mal/Tests/tst662.stable.out
--- a/monetdb5/mal/Tests/tst662.stable.out
+++ b/monetdb5/mal/Tests/tst662.stable.out
@@ -34,16 +34,16 @@ function user.main():void;
 #Testing variable return lists 
     mdb.List("user","tst");
 end user.main;
-function user.tst():void;
-    X100:lng := -1:lng;
-    X102:lng := -1:lng;
-    X103:lng := -1:lng;
-    X104:lng := -1:lng;
-    (X112:bte,X113:bte,X114:bte,X115:bte,X116:bte) := 
user.makeSchedule(2:int,X100:lng,X103:lng,X102:lng,X104:lng);
-    (X118:int,X113:bte,X114:bte,X115:bte,X116:bte) := 
user.makeScheduleB(2:int,X100:lng,X103:lng,X102:lng,X104:lng);
-    (X118:int,X113:bte,X114:bte,X115:bte,X116:bte) := 
user.makeScheduleC(2:int,X100:lng,X103:lng,X102:lng,X104:lng);
-    (X118:int,X113:bte,X114:bte,X115:bte,X116:bte) := 
user.makeScheduleD(2:int,X100:lng,X103:lng,X102:lng,X104:lng);
-end user.tst;
+function user.tst():void;                      # 
+    X100:lng := -1:lng;                        # 
+    X102:lng := -1:lng;                        # 
+    X103:lng := -1:lng;                        # 
+    X104:lng := -1:lng;                        # 
+    (X112:bte,X113:bte,X114:bte,X115:bte,X116:bte) := 
user.makeSchedule(2:int,X100:lng,X103:lng,X102:lng,X104:lng);    # MDBdummy
+    (X118:int,X113:bte,X114:bte,X115:bte,X116:bte) := 
user.makeScheduleB(2:int,X100:lng,X103:lng,X102:lng,X104:lng);   # MDBdummy
+    (X118:int,X113:bte,X114:bte,X115:bte,X116:bte) := 
user.makeScheduleC(2:int,X100:lng,X103:lng,X102:lng,X104:lng);   # MDBdummy
+    (X118:int,X113:bte,X114:bte,X115:bte,X116:bte) := 
user.makeScheduleD(2:int,X100:lng,X103:lng,X102:lng,X104:lng);   # MDBdummy
+end user.tst;                                  # 
 
 # 16:39:29 >  
 # 16:39:29 >  Done.
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
@@ -910,7 +910,7 @@ retryRead:
                                } else if (isdigit((int) *b) || *b == '-' || *b 
== '+')
                                        goto partial;
                                if (m)
-                                       printFunction(out, m, 0, lstng);
+                                       debugFunction(out, m, 0, lstng, 
0,m->stop);
                        } else {
 /*
  * Listing the program starts at the pc last given.
@@ -932,7 +932,7 @@ partial:
                                *b = 0;
                                if (stepsize < 0)
                                        first -= stepsize;
-                               listFunction(out, mb, 0, lstng, first, 
stepsize);
+                               debugFunction(out, mb, 0, lstng, first, 
stepsize);
                                first = first + stepsize > mb->stop ? first : 
first + stepsize;
                        }
                        continue;
diff --git a/monetdb5/mal/mal_function.c b/monetdb5/mal/mal_function.c
--- a/monetdb5/mal/mal_function.c
+++ b/monetdb5/mal/mal_function.c
@@ -466,6 +466,30 @@ cloneFunction(stream *out, Module scope,
  * is returned.
  */
 void
+debugFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int flg, int first, int 
size)
+{
+       int i;
+       str ps;
+       InstrPtr p;
+
+       if (mb == NULL) {
+               mnstr_printf(fd, "# function definition missing\n");
+               return;
+       }
+       if ( flg == 0)
+               return;
+       assert(size>=0);
+       assert(first>=0 && first <mb->stop);
+       for (i = first; i < first +size && i < mb->stop; i++){
+               ps = instruction2str(mb, stk, (p=getInstrPtr(mb, i)), flg);
+               if (ps) {
+                       mnstr_printf(fd,"%-40s\t# %s\n",ps, (p->blk && 
p->blk->binding? p->blk->binding:""));
+                       GDKfree(ps);
+               }
+       }
+}
+
+void
 listFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int flg, int first, int 
size)
 {
        int i;
@@ -499,6 +523,7 @@ listFunction(stream *fd, MalBlkPtr mb, M
        for (i = first; i < first +size && i < mb->stop; i++)
                printInstruction(fd, mb, stk, getInstrPtr(mb, i), flg);
 }
+
 void printFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int flg)
 {
        listFunction(fd,mb,stk,flg,0,mb->stop);
diff --git a/monetdb5/mal/mal_function.h b/monetdb5/mal/mal_function.h
--- a/monetdb5/mal/mal_function.h
+++ b/monetdb5/mal/mal_function.h
@@ -39,6 +39,7 @@ mal_export int getBlockBegin(MalBlkPtr m
 mal_export Lifespan setLifespan(MalBlkPtr mb);
 
 mal_export void printFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int 
flg);
+mal_export void debugFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int 
flg, int first, int size);
 mal_export void showFlowGraph(MalBlkPtr mb, MalStkPtr stk, str fname);
 
 #include "mal_exception.h"
diff --git a/monetdb5/modules/mal/Tests/partition.stable.out 
b/monetdb5/modules/mal/Tests/partition.stable.out
--- a/monetdb5/modules/mal/Tests/partition.stable.out
+++ b/monetdb5/modules/mal/Tests/partition.stable.out
@@ -35,26 +35,26 @@ function user.main():void;
     mdb.List("user","tst");
     user.tst();
 end user.main;
-function user.tst():void;
-    b:bat[:oid,:int] := bat.new(:oid,:int);
-    bat.append(b:bat[:oid,:int],1:int);
-    bat.append(b:bat[:oid,:int],2:int);
-    bat.append(b:bat[:oid,:int],3:int);
-    bat.append(b:bat[:oid,:int],4:int);
-    bat.append(b:bat[:oid,:int],5:int);
-    c:bat[:oid,:int] := bat.partition(b:bat[:oid,:int],2:int,0:int);
-    io.print(c:bat[:oid,:int]);
-    d:bat[:oid,:int] := bat.partition(b:bat[:oid,:int],2:int,1:int);
-    io.print(d:bat[:oid,:int]);
-    (b1:bat[:oid,:int],b2:bat[:oid,:int]) := bat.partition(b:bat[:oid,:int]);
-    io.print(b1:bat[:oid,:int]);
-    io.print(b2:bat[:oid,:int]);
-    b3:bat[:oid,:int] := bat.partition(b:bat[:oid,:int]);
-    io.print(b3:bat[:oid,:int]);
-# an error should be produced 
-    e:bat[:oid,:int] := bat.partition(b:bat[:oid,:int],2:int,-1:int);
-    io.print(e:bat[:oid,:int]);
-end user.tst;
+function user.tst():void;                      # 
+    b:bat[:oid,:int] := bat.new(:oid,:int);    # CMDBATnew
+    bat.append(b:bat[:oid,:int],1:int);        # BKCappend_val_wrap
+    bat.append(b:bat[:oid,:int],2:int);        # BKCappend_val_wrap
+    bat.append(b:bat[:oid,:int],3:int);        # BKCappend_val_wrap
+    bat.append(b:bat[:oid,:int],4:int);        # BKCappend_val_wrap
+    bat.append(b:bat[:oid,:int],5:int);        # BKCappend_val_wrap
+    c:bat[:oid,:int] := bat.partition(b:bat[:oid,:int],2:int,0:int);   # 
CMDBATpartition2
+    io.print(c:bat[:oid,:int]);                # IOprint_val
+    d:bat[:oid,:int] := bat.partition(b:bat[:oid,:int],2:int,1:int);   # 
CMDBATpartition2
+    io.print(d:bat[:oid,:int]);                # IOprint_val
+    (b1:bat[:oid,:int],b2:bat[:oid,:int]) := bat.partition(b:bat[:oid,:int]);  
# CMDBATpartition
+    io.print(b1:bat[:oid,:int]);               # IOprint_val
+    io.print(b2:bat[:oid,:int]);               # IOprint_val
+    b3:bat[:oid,:int] := bat.partition(b:bat[:oid,:int]);      # 
CMDBATpartition
+    io.print(b3:bat[:oid,:int]);               # IOprint_val
+# an error should be produced                  # 
+    e:bat[:oid,:int] := bat.partition(b:bat[:oid,:int],2:int,-1:int);  # 
CMDBATpartition2
+    io.print(e:bat[:oid,:int]);                # IOprint_val
+end user.tst;                                  # 
 #--------------------------#
 # h    t         # name
 # void int       # type
diff --git a/monetdb5/modules/mal/mdb.c b/monetdb5/modules/mal/mdb.c
--- a/monetdb5/modules/mal/mdb.c
+++ b/monetdb5/modules/mal/mdb.c
@@ -38,6 +38,7 @@
 
 #include "monetdb_config.h"
 #include "mdb.h"
+#include "mal_function.h"
 
 #define MDBstatus(X) \
        if( stk->cmd && X==0 ) \
@@ -482,7 +483,7 @@ MDBlistDetail(Client cntxt, MalBlkPtr mb
 {
        (void) p;
        (void) stk;
-       printFunction(cntxt->fdout, mb, 0, LIST_MAL_NAME | LIST_MAL_VALUE | 
LIST_MAL_TYPE | LIST_MAL_PROPS );
+       debugFunction(cntxt->fdout, mb, 0, LIST_MAL_NAME | LIST_MAL_VALUE | 
LIST_MAL_TYPE | LIST_MAL_PROPS, 0, mb->stop );
        return MAL_SUCCEED;
 }
 
@@ -496,7 +497,7 @@ MDBlist3Detail(Client cntxt, MalBlkPtr m
        s = findSymbol(cntxt->nspace, putName(modnme,strlen(modnme)), 
putName(fcnnme, strlen(fcnnme)));
        if (s == NULL)
                throw(MAL,"mdb.list","Could not find %s.%s", modnme, fcnnme);
-       printFunction(cntxt->fdout, s->def, 0,  LIST_MAL_NAME | LIST_MAL_VALUE 
| LIST_MAL_TYPE | LIST_MAL_PROPS );
+       debugFunction(cntxt->fdout, s->def, 0,  LIST_MAL_NAME | LIST_MAL_VALUE 
| LIST_MAL_TYPE | LIST_MAL_PROPS , 0, s->def->stop);
        (void) mb;              /* fool compiler */
        return NULL;
 }
diff --git a/monetdb5/optimizer/Tests/CMexample.stable.out 
b/monetdb5/optimizer/Tests/CMexample.stable.out
--- a/monetdb5/optimizer/Tests/CMexample.stable.out
+++ b/monetdb5/optimizer/Tests/CMexample.stable.out
@@ -30,15 +30,15 @@ function user.main():void;
 # Cost model example 
     mdb.List("user","q");
 end user.main;
-function user.q():void;
-    r:bat[:oid,:int]{rows=100} := bat.new(:oid,:int);
-    s:bat[:oid,:int]{rows=1000} := bat.new(:oid,:int);
-    r:bat[:oid,:int]{rows=100} := bat.new(:oid,:int);
-    s:bat[:oid,:int]{rows=1000} := bat.new(:oid,:int);
-    x:bat[:oid,:oid]{rows=300} := bat.new(:oid,:oid);
-    rs:bat[:oid,:oid]{rows=151} := 
algebra.subselect(s:bat[:oid,:int]{rows=1000},x:bat[:oid,:oid]{rows=300},1:int,1:int,true:bit,true:bit,false:bit);
-    j:bat[:oid,:int]{rows=100} := 
algebra.leftfetchjoin(rs:bat[:oid,:oid]{rows=151},r:bat[:oid,:int]{rows=100});
-end user.q;
+function user.q():void;                        # 
+    r:bat[:oid,:int]{rows=100} := bat.new(:oid,:int);  # CMDBATnew
+    s:bat[:oid,:int]{rows=1000} := bat.new(:oid,:int); # CMDBATnew
+    r:bat[:oid,:int]{rows=100} := bat.new(:oid,:int);  # CMDBATnew
+    s:bat[:oid,:int]{rows=1000} := bat.new(:oid,:int); # CMDBATnew
+    x:bat[:oid,:oid]{rows=300} := bat.new(:oid,:oid);  # CMDBATnew
+    rs:bat[:oid,:oid]{rows=151} := 
algebra.subselect(s:bat[:oid,:int]{rows=1000},x:bat[:oid,:oid]{rows=300},1:int,1:int,true:bit,true:bit,false:bit);
  # ALGsubselect2
+    j:bat[:oid,:int]{rows=100} := 
algebra.leftfetchjoin(rs:bat[:oid,:oid]{rows=151},r:bat[:oid,:int]{rows=100});  
     # ALGleftfetchjoin
+end user.q;                                    # 
 
 # 08:55:26 >  
 # 08:55:26 >  Done.
diff --git a/monetdb5/optimizer/Tests/CXexample.stable.out 
b/monetdb5/optimizer/Tests/CXexample.stable.out
--- a/monetdb5/optimizer/Tests/CXexample.stable.out
+++ b/monetdb5/optimizer/Tests/CXexample.stable.out
@@ -22,16 +22,16 @@ function user.main():void;
     l3 := calc.+(l,24);
     mdb.List();
 end user.main;
-function user.main():void;
-# The 4000 series deals with strategic optimizer constructs 
-# common subexpression evaluation 
-    b:bat[:oid,:int] := bat.new(:oid,:int);
-    c:bat[:oid,:int] := bat.new(:oid,:int);
-    d:bat[:oid,:int] := algebra.select(b:bat[:oid,:int],0:int,100:int);
-    l:int := calc.+(24:int,27:int);
-    l3:int := calc.+(l:int,24:int);
-    mdb.List();
-end user.main;
+function user.main():void;                     # 
+# The 4000 series deals with strategic optimizer constructs    # 
+# common subexpression evaluation              # 
+    b:bat[:oid,:int] := bat.new(:oid,:int);    # CMDBATnew
+    c:bat[:oid,:int] := bat.new(:oid,:int);    # CMDBATnew
+    d:bat[:oid,:int] := algebra.select(b:bat[:oid,:int],0:int,100:int);        
# ALGselect
+    l:int := calc.+(24:int,27:int);            # CMDvarADDsignal
+    l3:int := calc.+(l:int,24:int);            # CMDvarADDsignal
+    mdb.List();                                # MDBlistDetail
+end user.main;                                 # 
 
 # 23:53:03 >  
 # 23:53:03 >  Done.
diff --git a/monetdb5/optimizer/Tests/DCexample.stable.out 
b/monetdb5/optimizer/Tests/DCexample.stable.out
--- a/monetdb5/optimizer/Tests/DCexample.stable.out
+++ b/monetdb5/optimizer/Tests/DCexample.stable.out
@@ -17,10 +17,10 @@ function user.main():void;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to