Changeset: 5a1c1f25c8d0 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5a1c1f25c8d0 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_function.c monetdb5/modules/mal/Tests/partition.stable.out 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/Tests/optimizers.stable.err sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/11-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/12-explain.stable.out.int128 sql/benchmarks/ssbm/Tests/13-explain.stable.out.int128 sql/benchmarks/tpch/Tests/01-explain.stable.out.int128 sql/benchmarks/tpch/Tests/02-explain.stable.out sql/benchmarks/tpch/Tests/03-explain.stable.out.int128 sql/benchmarks/tpch/Tests/05-explain.stable.out.int128 sql/benchmarks/tpch/Tests/07-explain.stable.out.int128 sql/benchmarks/tpch/Tests/08-explain.stable.out.int128 sql/benchmarks/tpch/Tests/09-explain.stable.out.int128 sql/benchmarks/tpch/Tests/10-explain.stable.out.int128 sql/benchmarks/tpch/Tests/11-explain.stable.out sql/benchmarks/tpch/Tests/11-explain.stable.out.int128 sql/benchmarks/tpch/Tests/14-explain.stable.out.int128 sql/benchmarks/tpch/Tests/15-explain.stable.out.int128 sql/benchmarks/tpch/Tests/17-explain.stable.out sql/benchmarks/tpch/Tests/17-explain.stable.out.int128 sql/benchmarks/tpch/Tests/18-explain.stable.out.int128 sql/benchmarks/tpch/Tests/19-explain.stable.out sql/benchmarks/tpch/Tests/19-explain.stable.out.int128 sql/benchmarks/tpch/Tests/20-explain.stable.out sql/benchmarks/tpch/Tests/20-explain.stable.out.32bit sql/benchmarks/tpch/Tests/20-explain.stable.out.int128 sql/benchmarks/tpch/Tests/21-explain.stable.out sql/benchmarks/tpch/Tests/22-explain.stable.out sql/benchmarks/tpch/Tests/22-explain.stable.out.32bit sql/benchmarks/tpch/Tests/22-explain.stable.out.int128 sql/test/mergetables/Tests/mergequery.stable.out Branch: default Log Message:
Show dataflow between variables in extended debugging output diffs (truncated from 7207 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 @@ -2228,23 +2228,31 @@ str generatorRef; MALfcn getAddress(stream *out, str filename, str modnme, str fcnname, int silent); str getArgDefault(MalBlkPtr mb, InstrPtr p, int idx); ptr getArgReference(MalStkPtr stk, InstrPtr pci, int k); +int getBitConstant(MalBlkPtr mb, bit val); int getBlockBegin(MalBlkPtr mb, int pc); int getBlockExit(MalBlkPtr mb, int pc); +int getBteConstant(MalBlkPtr mb, bte val); char *getConsoleInput(Client c, const char *prompt, int linemode, int exit_on_error); +int getDblConstant(MalBlkPtr mb, dbl val); lng getDiskReads(void); lng getDiskSpace(void); lng getDiskWrites(void); str getExceptionMessage(str); str getExceptionPlace(str); enum malexception getExceptionType(str); +int getFltConstant(MalBlkPtr mb, flt val); Scenario getFreeScenario(void); Symbol getFunctionSymbol(Module scope, InstrPtr p); char **getHelp(Module m, str pat, int flag); char **getHelpMatch(char *pat); +int getHgeConstant(MalBlkPtr mb, hge val); +int getIntConstant(MalBlkPtr mb, int val); +int getLngConstant(MalBlkPtr mb, lng val); MalBlkPtr getMalBlkHistory(MalBlkPtr mb, int idx); MalBlkPtr getMalBlkMarker(MalBlkPtr mb, str marker); lng getMemoryClaim(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int i, int flag); str getName(const char *nme, size_t len); +int getOidConstant(MalBlkPtr mb, oid val); int getPC(MalBlkPtr mb, InstrPtr p); str getPipeCatalog(bat *nme, bat *def, bat *stat); str getPipeDefinition(str name); @@ -2252,6 +2260,8 @@ int getProfileCounter(int idx); stream *getProfilerStream(void); str getRef; str getScenarioLanguage(Client c); +int getShtConstant(MalBlkPtr mb, sht val); +int getStrConstant(MalBlkPtr mb, str val); lng getSystemTime(void); BAT *getTrace(const char *ev); int getTraceType(const char *nme); @@ -2263,6 +2273,7 @@ lng getUserTime(void); str getVarName(MalBlkPtr mb, int i); wrd getVarRows(MalBlkPtr mb, int v); lng getVolume(MalStkPtr stk, InstrPtr pci, int rd); +int getWrdConstant(MalBlkPtr mb, wrd val); MalBlkPtr gotoMalBlkMarker(MalBlkPtr mb, str marker); str grabRef; str groupRef; 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); # CMDvarMULsignal - io.print(j:int); # IOprint_val -end user.qry; # +function user.qry():void; #[0] 0 <- + i:int := 23:int; #[1] 1 <- 2 + j:int := calc.*(i:int,i:int); #[2] CMDvarMULsignal 3 <- 1 1 + io.print(j:int); #[3] IOprint_val 4 <- 3 +end user.qry; #[4] [ "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); # 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; # +function user.tst():void; #[0] 0 <- + a:int := user.fi(1:int); #[1] MDBdummy 1 <- 2 + (a:int,b:int) := user.fi(1:int); #[2] MDBdummy 1 3 <- 2 + (a:int,b:int,c:int) := user.fi(1:int); #[3] MDBdummy 1 3 4 <- 2 + z:str := user.fs(1:int); #[4] MDBdummy 5 <- 2 + (y:str,z:str) := user.fs(1:int); #[5] MDBdummy 6 5 <- 2 +end user.tst; #[6] # 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); # 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; # +function user.tst():void; #[0] 0 <- + X100:lng := -1:lng; #[1] 1 <- 2 + X102:lng := -1:lng; #[2] 3 <- 2 + X103:lng := -1:lng; #[3] 4 <- 2 + X104:lng := -1:lng; #[4] 5 <- 2 + (X112:bte,X113:bte,X114:bte,X115:bte,X116:bte) := user.makeSchedule(2:int,X100:lng,X103:lng,X102:lng,X104:lng); #[5] MDBdummy 6 7 8 9 10 <- 11 1 4 3 5 + (X118:int,X113:bte,X114:bte,X115:bte,X116:bte) := user.makeScheduleB(2:int,X100:lng,X103:lng,X102:lng,X104:lng); #[6] MDBdummy 12 7 8 9 10 <- 11 1 4 3 5 + (X118:int,X113:bte,X114:bte,X115:bte,X116:bte) := user.makeScheduleC(2:int,X100:lng,X103:lng,X102:lng,X104:lng); #[7] MDBdummy 12 7 8 9 10 <- 11 1 4 3 5 + (X118:int,X113:bte,X114:bte,X115:bte,X116:bte) := user.makeScheduleD(2:int,X100:lng,X103:lng,X102:lng,X104:lng); #[8] MDBdummy 12 7 8 9 10 <- 11 1 4 3 5 +end user.tst; #[9] # 16:39:29 > # 16:39:29 > Done. 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 @@ -468,7 +468,7 @@ cloneFunction(stream *out, Module scope, void debugFunction(stream *fd, MalBlkPtr mb, MalStkPtr stk, int flg, int first, int step) { - int i; + int i,j; str ps; InstrPtr p; @@ -482,7 +482,14 @@ debugFunction(stream *fd, MalBlkPtr mb, for (i = first; i < first +step && 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:"")); + mnstr_printf(fd,"%-40s\t#[%d] %s ",ps, i, (p->blk && p->blk->binding? p->blk->binding:"")); + for(j =0; j < p->retc; j++) + mnstr_printf(fd,"%d ",getArg(p,j)); + if( p->argc) + mnstr_printf(fd,"<- "); + for(; j < p->argc; j++) + mnstr_printf(fd,"%d ",getArg(p,j)); + mnstr_printf(fd,"\n"); GDKfree(ps); } } 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); # 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; # +function user.tst():void; #[0] 0 <- + b:bat[:oid,:int] := bat.new(:oid,:int); #[1] CMDBATnew 1 <- 2 3 + bat.append(b:bat[:oid,:int],1:int); #[2] BKCappend_val_wrap 4 <- 1 5 + bat.append(b:bat[:oid,:int],2:int); #[3] BKCappend_val_wrap 6 <- 1 7 + bat.append(b:bat[:oid,:int],3:int); #[4] BKCappend_val_wrap 8 <- 1 9 + bat.append(b:bat[:oid,:int],4:int); #[5] BKCappend_val_wrap 10 <- 1 11 + bat.append(b:bat[:oid,:int],5:int); #[6] BKCappend_val_wrap 12 <- 1 13 + c:bat[:oid,:int] := bat.partition(b:bat[:oid,:int],2:int,0:int); #[7] CMDBATpartition2 14 <- 1 7 15 + io.print(c:bat[:oid,:int]); #[8] IOprint_val 16 <- 14 + d:bat[:oid,:int] := bat.partition(b:bat[:oid,:int],2:int,1:int); #[9] CMDBATpartition2 17 <- 1 7 5 + io.print(d:bat[:oid,:int]); #[10] IOprint_val 18 <- 17 + (b1:bat[:oid,:int],b2:bat[:oid,:int]) := bat.partition(b:bat[:oid,:int]); #[11] CMDBATpartition 19 20 <- 1 + io.print(b1:bat[:oid,:int]); #[12] IOprint_val 21 <- 19 + io.print(b2:bat[:oid,:int]); #[13] IOprint_val 22 <- 20 + b3:bat[:oid,:int] := bat.partition(b:bat[:oid,:int]); #[14] CMDBATpartition 23 <- 1 + io.print(b3:bat[:oid,:int]); #[15] IOprint_val 24 <- 23 +# an error should be produced #[16] 25 <- + e:bat[:oid,:int] := bat.partition(b:bat[:oid,:int],2:int,-1:int); #[17] CMDBATpartition2 26 <- 1 7 27 + io.print(e:bat[:oid,:int]); #[18] IOprint_val 28 <- 26 +end user.tst; #[19] #--------------------------# # h t # name # void int # type 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); # 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],x:bat[:oid,:oid],1:int,1:int,true:bit,true:bit,false:bit); # ALGsubselect2 - j:bat[:oid,:int]{rows=100} := algebra.leftfetchjoin(rs:bat[:oid,:oid],r:bat[:oid,:int]); # ALGleftfetchjoin -end user.q; # +function user.q():void; #[0] 0 <- + r:bat[:oid,:int]{rows=100} := bat.new(:oid,:int); #[1] CMDBATnew 1 <- 3 4 + s:bat[:oid,:int]{rows=1000} := bat.new(:oid,:int); #[2] CMDBATnew 5 <- 3 7 + r:bat[:oid,:int]{rows=100} := bat.new(:oid,:int); #[3] CMDBATnew 1 <- 3 8 + s:bat[:oid,:int]{rows=1000} := bat.new(:oid,:int); #[4] CMDBATnew 5 <- 3 9 + x:bat[:oid,:oid]{rows=300} := bat.new(:oid,:oid); #[5] CMDBATnew 10 <- 3 3 + rs:bat[:oid,:oid]{rows=151} := algebra.subselect(s:bat[:oid,:int],x:bat[:oid,:oid],1:int,1:int,true:bit,true:bit,false:bit); #[6] ALGsubselect2 12 <- 5 10 13 13 14 14 15 + j:bat[:oid,:int]{rows=100} := algebra.leftfetchjoin(rs:bat[:oid,:oid],r:bat[:oid,:int]); #[7] ALGleftfetchjoin 16 <- 12 1 +end user.q; #[8] # 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); # 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; # +function user.main():void; #[0] 0 <- +# The 4000 series deals with strategic optimizer constructs #[1] 1 <- +# common subexpression evaluation #[2] 2 <- + b:bat[:oid,:int] := bat.new(:oid,:int); #[3] CMDBATnew 5 <- 6 7 + c:bat[:oid,:int] := bat.new(:oid,:int); #[4] CMDBATnew 8 <- 6 7 + d:bat[:oid,:int] := algebra.select(b:bat[:oid,:int],0:int,100:int); #[5] ALGselect 9 <- 5 10 11 + l:int := calc.+(24:int,27:int); #[6] CMDvarADDsignal 17 <- 14 16 + l3:int := calc.+(l:int,24:int); #[7] CMDvarADDsignal 19 <- 17 14 + mdb.List(); #[8] MDBlistDetail 20 <- +end user.main; #[9] # 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; mdb.List(); end user.main; [ "done" ] -function user.main():void; # - io.print("done":str); # IOprint_val - mdb.List(); # MDBlistDetail -end user.main; # +function user.main():void; #[0] 0 <- + io.print("done":str); #[1] IOprint_val 15 <- 16 + mdb.List(); #[2] MDBlistDetail 18 <- +end user.main; #[3] # 23:53:03 > # 23:53:03 > Done. diff --git a/monetdb5/optimizer/Tests/DCexample2.stable.out b/monetdb5/optimizer/Tests/DCexample2.stable.out --- a/monetdb5/optimizer/Tests/DCexample2.stable.out +++ b/monetdb5/optimizer/Tests/DCexample2.stable.out @@ -19,14 +19,14 @@ function user.main():void; b := algebra.subsort(b,false,false); mdb.List(); end user.main; -function user.main():void; # - b:bat[:oid,:int] := bat.new(:oid,:int); # CMDBATnew - bat.append(b:bat[:oid,:int],2:int); # BKCappend_val_wrap - bat.append(b:bat[:oid,:int],5:int); # BKCappend_val_wrap - bat.append(b:bat[:oid,:int],3:int); # BKCappend_val_wrap - b:bat[:oid,:int] := algebra.subsort(b:bat[:oid,:int],false:bit,false:bit); # ALGsubsort11 - mdb.List(); # MDBlistDetail -end user.main; # +function user.main():void; #[0] 0 <- + b:bat[:oid,:int] := bat.new(:oid,:int); #[1] CMDBATnew 2 <- 3 4 + bat.append(b:bat[:oid,:int],2:int); #[2] BKCappend_val_wrap 5 <- 2 6 + bat.append(b:bat[:oid,:int],5:int); #[3] BKCappend_val_wrap 7 <- 2 8 + bat.append(b:bat[:oid,:int],3:int); #[4] BKCappend_val_wrap 9 <- 2 10 _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list