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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list