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

Reply via email to