Changeset: c5934afc409e for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c5934afc409e Modified Files: clients/mapiclient/dotmonetdb.c clients/mapiclient/mclient.c gdk/gdk_select.c monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out monetdb5/mal/mal_interpreter.c monetdb5/optimizer/Tests/groups00.stable.out monetdb5/optimizer/Tests/mat00.stable.out monetdb5/optimizer/Tests/mat01.stable.out Branch: default Log Message:
Merge with Feb2013 branch. diffs (truncated from 614 to 300 lines): diff --git a/clients/mapiclient/dotmonetdb.c b/clients/mapiclient/dotmonetdb.c --- a/clients/mapiclient/dotmonetdb.c +++ b/clients/mapiclient/dotmonetdb.c @@ -70,7 +70,7 @@ parse_dotmonetdb(char **user, char **pas if (save_history) *save_history = 0; if (pagewidth) - *pagewidth = -1; + *pagewidth = 0; if (config) { int line = 0; diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -151,7 +151,7 @@ static char *pager = 0; /* use external #include <signal.h> /* to block SIGPIPE */ #endif static int rowsperpage = 0; /* for SQL pagination */ -static int pagewidth = -1; /* -1: take whatever is necessary, >0: limit */ +static int pagewidth = 0; /* -1: take whatever is necessary, >0: limit */ static int pagewidthset = 0; /* whether the user set the width explicitly */ static int croppedfields = 0; /* whatever got cropped/truncated */ static char firstcrop = 1; /* first time we see cropping/truncation */ diff --git a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out --- a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out +++ b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out @@ -55,8 +55,8 @@ Ready. % . # table_name % def # name % clob # type -% 446 # length -[ "optimizer.inline();optimizer.remap();optimizer.evaluate();optimizer.costModel();optimizer.coercions();optimizer.emptySet();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.groups();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.dataflow();optimizer.history();optimizer.multiplex();optimizer.garbageCollector();" ] +% 427 # length +[ "optimizer.inline();optimizer.remap();optimizer.evaluate();optimizer.costModel();optimizer.coercions();optimizer.emptySet();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.dataflow();optimizer.history();optimizer.multiplex();optimizer.garbageCollector();" ] #explain copy into ttt from '/:\tmp/xyz'; % .explain # table_name % mal # name @@ -66,8 +66,8 @@ function user.s2_1{autoCommit=true}():vo X_2 := sql.mvc(); (X_5:bat[:oid,:int] ,X_6:bat[:oid,:int] ,X_7:bat[:oid,:int] ) := sql.copy_from("sys":str,"ttt":str,"|":str,"\\n":str,nil:str,"null":str,"/:\\tmp/xyz":str,-1:lng,0:lng,0:int); X_9 := sql.append(X_2,"sys","ttt","a",X_5); - X_11 := sql.append(X_9,"sys","ttt","b",X_6); - X_15 := sql.append(X_11,"sys","ttt","c",X_7); + X_11 := sql.append(X_9,"sys":str,"ttt":str,"b",X_6); + X_15 := sql.append(X_11,"sys":str,"ttt":str,"c",X_7); X_16 := aggr.count(X_7); sql.affectedRows(X_15,X_16,""); end s2_1; @@ -83,8 +83,8 @@ end s2_1; % . # table_name % def # name % clob # type -% 469 # length -[ "optimizer.inline();optimizer.remap();optimizer.evaluate();optimizer.costModel();optimizer.coercions();optimizer.emptySet();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.groups();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.dataflow();optimizer.history();optimizer.multiplex();optimizer.sql_append();optimizer.garbageCollector();" ] +% 450 # length +[ "optimizer.inline();optimizer.remap();optimizer.evaluate();optimizer.costModel();optimizer.coercions();optimizer.emptySet();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.dataflow();optimizer.history();optimizer.multiplex();optimizer.sql_append();optimizer.garbageCollector();" ] #explain copy into ttt from '/:\tmp/xyz'; % .explain # table_name % mal # name diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c --- a/monetdb5/mal/mal_interpreter.c +++ b/monetdb5/mal/mal_interpreter.c @@ -767,9 +767,9 @@ str runMALsequence(Client cntxt, MalBlkP ret = shutdownFactory(cntxt, mb); if (oldtimer) cntxt->timer = oldtimer; + runtimeProfileExit(cntxt, mb, stk, &runtimeProfile); if (pcicaller && garbageControl(getInstrPtr(mb, 0))) garbageCollector(cntxt, mb, stk, TRUE); - runtimeProfileExit(cntxt, mb, stk, &runtimeProfile); runtimeProfile.ppc = 0; /* also finalize function call event */ if (cntxt->qtimeout && time(NULL) - stk->clock.tv_usec > cntxt->qtimeout){ ret= createException(MAL, "mal.interpreter", RUNTIME_QRY_TIMEOUT); @@ -792,6 +792,10 @@ str runMALsequence(Client cntxt, MalBlkP continue; } + /* monitoring information should reflect the input arguments, + which may be removed by garbage collection */ + runtimeProfileExit(cntxt, mb, stk, &runtimeProfile); + runtimeTiming(cntxt, mb, stk, pci, tid, lock, &runtimeProfile); /* check for strong debugging after each MAL statement */ if ( pci->token != FACcall && ret== MAL_SUCCEED) { if (GDKdebug & (CHECKMASK|PROPMASK) && exceptionVar < 0) { @@ -969,7 +973,6 @@ str runMALsequence(Client cntxt, MalBlkP } } if (stkpc == mb->stop) { - runtimeProfileExit(cntxt, mb, stk, &runtimeProfile); if (cntxt->qtimeout && time(NULL) - stk->clock.tv_usec > cntxt->qtimeout){ ret= createException(MAL, "mal.interpreter", RUNTIME_QRY_TIMEOUT); stkpc = mb->stop; @@ -979,8 +982,6 @@ str runMALsequence(Client cntxt, MalBlkP pci = getInstrPtr(mb, stkpc); } } - runtimeProfileExit(cntxt, mb, stk, &runtimeProfile); - runtimeTiming(cntxt, mb, stk, pci, tid, lock, &runtimeProfile); /* * After the expression has been evaluated we should check for a @@ -1154,7 +1155,6 @@ str runMALsequence(Client cntxt, MalBlkP } } if (stkpc == mb->stop) { - runtimeProfileExit(cntxt, mb, stk, &runtimeProfile); runtimeProfile.ppc = 0; /* also finalize function call event */ runtimeProfileExit(cntxt, mb, stk, &runtimeProfile); break; @@ -1176,7 +1176,6 @@ str runMALsequence(Client cntxt, MalBlkP yieldResult(mb, pci, stkpc); shutdownFactory(cntxt, mb); } else { - runtimeProfileExit(cntxt, mb, stk, &runtimeProfile); /* a fake multi-assignment */ if (env != NULL && pcicaller != NULL) { InstrPtr pp = pci; diff --git a/monetdb5/optimizer/Tests/groups00.stable.out b/monetdb5/optimizer/Tests/groups00.stable.out --- a/monetdb5/optimizer/Tests/groups00.stable.out +++ b/monetdb5/optimizer/Tests/groups00.stable.out @@ -29,13 +29,20 @@ function user.tst():void; bat.append(d,3.1400001); bat.append(d,3.1400001); bat.append(d,3.1400001); - (ext1,grp1) := group.new(b); + (xd,ext1,grp1) := group.subgroup(d); + io.print(xd); io.print(ext1); io.print(grp1); - (ext2,grp2) := group.derive(ext1,grp1,c); + (xc,ext2,grp2) := group.subgroupdone(c,xd); + io.print(xc); io.print(ext2); io.print(grp2); - (ext3,grp3) := group.derive(ext2,grp2,d); + (xb,ext3,grp3) := group.subgroupdone(b,xc); + io.print(xb); + io.print(ext3); + io.print(grp3); + (xb,ext3,grp3) := group.multicolumns(b,c,d); + io.print(xb); io.print(ext3); io.print(grp3); end tst; @@ -56,13 +63,20 @@ function user.tst():void; bat.append(d,3.1400001); bat.append(d,3.1400001); bat.append(d,3.1400001); - (ext1,grp1) := group.multicolumns(b); + (xd,ext1,grp1) := group.multicolumns(d); + io.print(xd); io.print(ext1); io.print(grp1); - (ext2,grp2) := group.multicolumns(b,c); + (xc,ext2,grp2) := group.multicolumns(d,c); + io.print(xc); io.print(ext2); io.print(grp2); - (ext3,grp3) := group.multicolumns(b,c,d); + (xb,ext3,grp3) := group.multicolumns(d,c,b); + io.print(xb); + io.print(ext3); + io.print(grp3); + (xb,ext3,grp3) := group.multicolumns(b,c,d); + io.print(xb); io.print(ext3); io.print(grp3); end tst; @@ -70,9 +84,45 @@ end tst; # h t # name # void wrd # type #-----------------# -[ 0@0, 1 ] +[ 0@0, 0@0 ] +[ 1@0, 0@0 ] +[ 2@0, 0@0 ] +#-----------------# +# h t # name +# void void # type +#-----------------# +[ 0@0, 0@0 ] +#-----------------# +# h t # name +# void wrd # type +#-----------------# +[ 0@0, 3 ] +#-----------------# +# h t # name +# void oid # type +#-----------------# +[ 0@0, 0@0 ] +[ 1@0, 0@0 ] +[ 2@0, 1@0 ] +#-----------------# +# h t # name +# void oid # type +#-----------------# +[ 0@0, 0@0 ] +[ 1@0, 2@0 ] +#-----------------# +# h t # name +# void wrd # type +#-----------------# +[ 0@0, 2 ] [ 1@0, 1 ] -[ 2@0, 1 ] +#-----------------# +# h t # name +# void void # type +#-----------------# +[ 0@0, 0@0 ] +[ 1@0, 1@0 ] +[ 2@0, 2@0 ] #-----------------# # h t # name # void void # type @@ -96,18 +146,18 @@ end tst; [ 2@0, 2@0 ] #-----------------# # h t # name +# void void # type +#-----------------# +[ 0@0, 0@0 ] +[ 1@0, 1@0 ] +[ 2@0, 2@0 ] +#-----------------# +# h t # name # void wrd # type #-----------------# [ 0@0, 1 ] [ 1@0, 1 ] [ 2@0, 1 ] -#-----------------# -# h t # name -# void void # type -#-----------------# -[ 0@0, 0@0 ] -[ 1@0, 1@0 ] -[ 2@0, 2@0 ] # 12:47:43 > # 12:47:43 > "Done." diff --git a/monetdb5/optimizer/Tests/mat00.stable.out b/monetdb5/optimizer/Tests/mat00.stable.out --- a/monetdb5/optimizer/Tests/mat00.stable.out +++ b/monetdb5/optimizer/Tests/mat00.stable.out @@ -25,16 +25,16 @@ function user.main():void; bat.append(m1,1@0); m2 := bat.new(:oid,:oid); bat.append(m2,2@0); - X_32 := algebra.select(m0,0@0,2@0); - X_33 := algebra.select(m1,0@0,2@0); - X_34 := algebra.select(m2,0@0,2@0); - X_36 := aggr.count(X_32); - X_37 := aggr.count(X_33); - X_38 := aggr.count(X_34); - X_35 := mat.pack(X_36,X_37,X_38); - X_39 := algebra.selectNotNil(X_35); - i := aggr.sum(X_39); - s := mat.pack(X_32,X_33,X_34); + X_35 := algebra.select(m0,0@0,2@0); + X_36 := algebra.select(m1,0@0,2@0); + X_37 := algebra.select(m2,0@0,2@0); + X_39 := aggr.count(X_35); + X_40 := aggr.count(X_36); + X_41 := aggr.count(X_37); + X_38 := mat.pack(X_39,X_40,X_41); + X_42 := algebra.selectNotNil(X_38); + i := aggr.sum(X_42); + s := mat.pack(X_35,X_36,X_37); io.print(s); io.print(i); c0 := bat.new(:oid,:oid); @@ -43,49 +43,49 @@ function user.main():void; bat.append(c1,5@0); c := mat.pack(c0,c1); bat.append(c,6@0); - X_40 := algebra.join(m0,c); - X_41 := algebra.join(m1,c); - X_42 := algebra.join(m2,c); - j := mat.pack(X_40,X_41,X_42); + b := mat.pack(m0,m1,m2); + c := mat.pack(c0,c1); + j := algebra.join(b,c); io.print(j); b := mat.pack(m0,m1,m2); io.print(b); + c := mat.pack(c0,c1); io.print(c); end main; function user.main():void; # 0 main:void := user.main() {G} # the Multi Assocation Tables mdb.List(); # 2 _2:void := MDBlistDetail() - m0 := bat.new(:oid,:oid); # 3 m0:bat[:oid,:oid] := CMDBATnew(_4:oid, _4:oid) {G} - bat.append(m0,0@0); # 4 _5:bat[:oid,:oid] := BKCappend_val_wrap(m0:bat[:oid,:oid], _6:oid) {G} - m1 := bat.new(:oid,:oid); # 5 m1:bat[:oid,:oid] := CMDBATnew(_4:oid, _4:oid) {G} - bat.append(m1,1@0); # 6 _8:bat[:oid,:oid] := BKCappend_val_wrap(m1:bat[:oid,:oid], _9:oid) {G} - m2 := bat.new(:oid,:oid); # 7 m2:bat[:oid,:oid] := CMDBATnew(_4:oid, _4:oid) {G} - bat.append(m2,2@0); # 8 _11:bat[:oid,:oid] := BKCappend_val_wrap(m2:bat[:oid,:oid], _12:oid) {G} - X_32 := algebra.select(m0,0@0,2@0); # 9 _32:bat[:oid,:oid] := ALGselect(m0:bat[:oid,:oid], _6:oid, _12:oid) {G} _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list