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