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