Changeset: ce3300816d59 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ce3300816d59
Modified Files:
        monetdb5/ChangeLog
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
        monetdb5/mal/mal_listing.c
        monetdb5/optimizer/Tests/GCexample01.stable.out
        monetdb5/optimizer/Tests/dataflow.stable.out
        monetdb5/optimizer/Tests/tst4006.stable.out
        sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out
        sql/backends/monet5/sql_execute.c
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
        sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out
        sql/test/mergetables/Tests/mergequery.stable.out
        sql/test/remote/Tests/partition_elim.stable.out
Branch: default
Log Message:

Include type information in MAL plans
The EXPLAIN command now shows all the MAL type resolutions, because in
general users may not be aware of their signatures.  It also simplifies
programs to analyse such plans.


diffs (truncated from 2739 to 300 lines):

diff --git a/monetdb5/ChangeLog b/monetdb5/ChangeLog
--- a/monetdb5/ChangeLog
+++ b/monetdb5/ChangeLog
@@ -1,6 +1,11 @@
 # ChangeLog file for MonetDB5
 # This file is updated with Maddlog
 
+* Wed Aug 23 2017 Martin Kersten <[email protected]>
+- The EXPLAIN command now shows all the MAL type resolutions, because in
+  general users may not be aware of their signatures.  It also simplifies
+  programs to analyse such plans.
+
 * Sat Aug 19 2017 Sjoerd Mullender <[email protected]>
 - Implemented versions of group.(sub)group(done) that don't return
   a histogram.
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
@@ -61,16 +61,16 @@ Ready.
 % .explain # table_name
 % mal # name
 % clob # type
-% 158 # length
+% 174 # length
 function user.s10_1():void;
-    X_1:void := querylog.define("explain copy into ttt from \\'/tmp/xyz\\';", 
"sequential_pipe", 21:int);
-    X_4 := sql.mvc();
-    (X_25:bat[:int], X_26:bat[:int], X_27:bat[:int]) := sql.copy_from(nil:ptr, 
"|", "\\n", nil:str, "null", "/tmp/xyz", -1:lng, 0:lng, 0:int, 0:int, nil:str);
-    X_29 := sql.append(X_4, "sys", "ttt", "a", X_25);
-    X_34 := sql.append(X_29, "sys", "ttt", "b", X_26);
-    X_37 := sql.append(X_34, "sys", "ttt", "c", X_27);
-    X_39 := aggr.count(X_27);
-    sql.affectedRows(X_37, X_39);
+    X_1:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';":str, "sequential_pipe":str, 21:int);
+    X_4:int := sql.mvc();
+    (X_25:bat[:int], X_26:bat[:int], X_27:bat[:int]) := sql.copy_from(nil:ptr, 
"|":str, "\\n":str, nil:str, "null":str, "/tmp/xyz":str, -1:lng, 0:lng, 0:int, 
0:int, nil:str);
+    X_29:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str, 
X_25:bat[:int]);
+    X_34:int := sql.append(X_29:int, "sys":str, "ttt":str, "b":str, 
X_26:bat[:int]);
+    X_37:int := sql.append(X_34:int, "sys":str, "ttt":str, "c":str, 
X_27:bat[:int]);
+    X_39:lng := aggr.count(X_27:bat[:int]);
+    sql.affectedRows(X_37:int, X_39:lng);
 end user.s10_1;
 #inline               actions= 0 time=1 usec 
 #candidates           actions= 1 time=14 usec 
@@ -120,16 +120,16 @@ end user.s10_1;
 % .explain # table_name
 % mal # name
 % clob # type
-% 158 # length
+% 174 # length
 function user.s26_1():void;
-    X_1:void := querylog.define("explain copy into ttt from \\'/tmp/xyz\\';", 
"user_1", 21:int);
-    X_4 := sql.mvc();
-    (X_25:bat[:int], X_26:bat[:int], X_27:bat[:int]) := sql.copy_from(nil:ptr, 
"|", "\\n", nil:str, "null", "/tmp/xyz", -1:lng, 0:lng, 0:int, 0:int, nil:str);
-    X_29 := sql.append(X_4, "sys", "ttt", "a", X_25);
-    X_34 := sql.append(X_29, "sys", "ttt", "b", X_26);
-    X_39 := aggr.count(X_27);
-    X_37 := sql.append(X_34, "sys", "ttt", "c", X_27);
-    sql.affectedRows(X_37, X_39);
+    X_1:void := querylog.define("explain copy into ttt from 
\\'/tmp/xyz\\';":str, "user_1":str, 21:int);
+    X_4:int := sql.mvc();
+    (X_25:bat[:int], X_26:bat[:int], X_27:bat[:int]) := sql.copy_from(nil:ptr, 
"|":str, "\\n":str, nil:str, "null":str, "/tmp/xyz":str, -1:lng, 0:lng, 0:int, 
0:int, nil:str);
+    X_29:int := sql.append(X_4:int, "sys":str, "ttt":str, "a":str, 
X_25:bat[:int]);
+    X_34:int := sql.append(X_29:int, "sys":str, "ttt":str, "b":str, 
X_26:bat[:int]);
+    X_39:lng := aggr.count(X_27:bat[:int]);
+    X_37:int := sql.append(X_34:int, "sys":str, "ttt":str, "c":str, 
X_27:bat[:int]);
+    sql.affectedRows(X_37:int, X_39:lng);
 end user.s26_1;
 #inline               actions= 0 time=1 usec 
 #candidates           actions= 1 time=14 usec 
diff --git a/monetdb5/mal/mal_listing.c b/monetdb5/mal/mal_listing.c
--- a/monetdb5/mal/mal_listing.c
+++ b/monetdb5/mal/mal_listing.c
@@ -99,7 +99,7 @@ renderTerm(MalBlkPtr mb, MalStkPtr stk, 
                                strcat(buf+len,"\"");
                                len++;
                        }
-                       showtype = showtype || closequote > TYPE_str || 
((isVarUDFtype(mb,varid) || isVarTypedef(mb,varid) || (flg & LIST_MAL_REMOTE)) 
&& isVarConstant(mb,varid)) ||
+                       showtype = showtype || closequote > TYPE_str || 
((isVarUDFtype(mb,varid) || isVarTypedef(mb,varid) || (flg & (LIST_MAL_REMOTE | 
LIST_MAL_TYPE))) && isVarConstant(mb,varid)) ||
                                (isaBatType(getVarType(mb,varid)) && idx < 
p->retc);
 
                        if (stk && isaBatType(getVarType(mb,varid)) && 
stk->stk[varid].val.bval ){
diff --git a/monetdb5/optimizer/Tests/GCexample01.stable.out 
b/monetdb5/optimizer/Tests/GCexample01.stable.out
--- a/monetdb5/optimizer/Tests/GCexample01.stable.out
+++ b/monetdb5/optimizer/Tests/GCexample01.stable.out
@@ -29,44 +29,44 @@ Ready.
 # 06:41:05 >  "mclient" "-lmal" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-8837" "--port=33343"
 # 06:41:05 >  
 
-function user.qry():void;                      #[0] (0)  0 
-    b:bat[:int] := bat.new(:int);              #[1] (0) CMDBATnew 1 <- 2 
-    c:bat[:int] := bat.new(:int);              #[2] (0) CMDBATnew 3 <- 2 
-    d:bat[:int] := bat.new(:int);              #[3] (0) CMDBATnew 4 <- 2 
-    bat.append(b:bat[:int], 1:int);            #[4] (0) BKCappend_val_wrap 5 
<- 1 6 
-barrier (x:oid, z:int) := iterator.new(b:bat[:int]);   #[5] (0) ITRbunIterator 
7 8 <- 1 
-    io.print(x:oid);                           #[6] (0) IOprint_val 9 <- 7 
-exit (x:oid, z:int);                           #[7] (0)  7 8 
-barrier (x:oid, z:int) := iterator.new(c:bat[:int]);   #[8] (0) ITRbunIterator 
7 8 <- 3 
-    io.print(x:oid);                           #[9] (0) IOprint_val 10 <- 7 
-    redo (x:oid, z:int) := iterator.next(c:bat[:int]); #[10] (0) ITRbunNext 7 
8 <- 3 
-exit (x:oid, z:int);                           #[11] (0)  7 8 
+function user.qry():void;                      #[0] (0)  0  type check needed 
+    b:bat[:int] := bat.new(:int);              #[1] (0) CMDBATnew 1 <- 2  type 
check needed 
+    c:bat[:int] := bat.new(:int);              #[2] (0) CMDBATnew 3 <- 2  type 
check needed 
+    d:bat[:int] := bat.new(:int);              #[3] (0) CMDBATnew 4 <- 2  type 
check needed 
+    bat.append(b:bat[:int], 1:int);            #[4] (0) BKCappend_val_wrap 5 
<- 1 6  type check needed 
+barrier (x:oid, z:int) := iterator.new(b:bat[:int]);   #[5] (0) ITRbunIterator 
7 8 <- 1  type check needed 
+    io.print(x:oid);                           #[6] (0) IOprint_val 9 <- 7  
type check needed 
+exit (x:oid, z:int);                           #[7] (0)  7 8  type check 
needed 
+barrier (x:oid, z:int) := iterator.new(c:bat[:int]);   #[8] (0) ITRbunIterator 
7 8 <- 3  type check needed 
+    io.print(x:oid);                           #[9] (0) IOprint_val 10 <- 7  
type check needed 
+    redo (x:oid, z:int) := iterator.next(c:bat[:int]); #[10] (0) ITRbunNext 7 
8 <- 3  type check needed 
+exit (x:oid, z:int);                           #[11] (0)  7 8  type check 
needed 
 # do not close d, it may be reused 
-barrier go:bit := true:bit;                    #[13] (0)  12 <- 13 
-    io.print(d:bat[:int]);                     #[14] (0) IOprint_val 14 <- 4 
-    redo go:bit := true:bit;                   #[15] (0)  12 <- 13 
-exit go:bit;                                   #[16] (0)  12 
-end user.qry;                                  #[17] (0)  
-#garbagecollector     actions= 0 time=18 usec 
-function user.qry():void;                      #[0] (0)  0 
-    b:bat[:int] := bat.new(:int);              #[1] (0) CMDBATnew 1 <- 2 
-    c:bat[:int] := bat.new(:int);              #[2] (0) CMDBATnew 3 <- 2 
-    d:bat[:int] := bat.new(:int);              #[3] (0) CMDBATnew 4 <- 2 
-    bat.append(b:bat[:int], 1:int);            #[4] (0) BKCappend_val_wrap 5 
<- 1 6 
-barrier (x:oid, z:int) := iterator.new(b:bat[:int]);   #[5] (0) ITRbunIterator 
7 8 <- 1 
-    io.print(x:oid);                           #[6] (0) IOprint_val 9 <- 7 
-exit (x:oid, z:int);                           #[7] (0)  7 8 
-barrier (x:oid, z:int) := iterator.new(c:bat[:int]);   #[8] (0) ITRbunIterator 
7 8 <- 3 
-    io.print(x:oid);                           #[9] (0) IOprint_val 10 <- 7 
-    redo (x:oid, z:int) := iterator.next(c:bat[:int]); #[10] (0) ITRbunNext 7 
8 <- 3 
-exit (x:oid, z:int);                           #[11] (0)  7 8 
+barrier go:bit := true:bit;                    #[13] (0)  12 <- 13  type check 
needed 
+    io.print(d:bat[:int]);                     #[14] (0) IOprint_val 14 <- 4  
type check needed 
+    redo go:bit := true:bit;                   #[15] (0)  12 <- 13  type check 
needed 
+exit go:bit;                                   #[16] (0)  12  type check 
needed 
+end user.qry;                                  #[17] (0)   type check needed 
+#garbagecollector     actions= 0 time=11 usec 
+function user.qry():void;                      #[0] (0)  0  type check needed 
+    b:bat[:int] := bat.new(:int);              #[1] (0) CMDBATnew 1 <- 2  type 
check needed 
+    c:bat[:int] := bat.new(:int);              #[2] (0) CMDBATnew 3 <- 2  type 
check needed 
+    d:bat[:int] := bat.new(:int);              #[3] (0) CMDBATnew 4 <- 2  type 
check needed 
+    bat.append(b:bat[:int], 1:int);            #[4] (0) BKCappend_val_wrap 5 
<- 1 6  type check needed 
+barrier (x:oid, z:int) := iterator.new(b:bat[:int]);   #[5] (0) ITRbunIterator 
7 8 <- 1  type check needed 
+    io.print(x:oid);                           #[6] (0) IOprint_val 9 <- 7  
type check needed 
+exit (x:oid, z:int);                           #[7] (0)  7 8  type check 
needed 
+barrier (x:oid, z:int) := iterator.new(c:bat[:int]);   #[8] (0) ITRbunIterator 
7 8 <- 3  type check needed 
+    io.print(x:oid);                           #[9] (0) IOprint_val 10 <- 7  
type check needed 
+    redo (x:oid, z:int) := iterator.next(c:bat[:int]); #[10] (0) ITRbunNext 7 
8 <- 3  type check needed 
+exit (x:oid, z:int);                           #[11] (0)  7 8  type check 
needed 
 # do not close d, it may be reused      
-barrier go:bit := true:bit;                    #[13] (0)  12 <- 13 
-    io.print(d:bat[:int]);                     #[14] (0) IOprint_val 14 <- 4 
-    redo go:bit := true:bit;                   #[15] (0)  12 <- 13 
-exit go:bit;                                   #[16] (0)  12 
-end user.qry;                                  #[17] (0)  
-#garbagecollector     actions= 0 time=18 usec 
+barrier go:bit := true:bit;                    #[13] (0)  12 <- 13  type check 
needed 
+    io.print(d:bat[:int]);                     #[14] (0) IOprint_val 14 <- 4  
type check needed 
+    redo go:bit := true:bit;                   #[15] (0)  12 <- 13  type check 
needed 
+exit go:bit;                                   #[16] (0)  12  type check 
needed 
+end user.qry;                                  #[17] (0)   type check needed 
+#garbagecollector     actions= 0 time=11 usec 
 
 # 23:17:49 >  
 # 23:17:49 >  Done.
diff --git a/monetdb5/optimizer/Tests/dataflow.stable.out 
b/monetdb5/optimizer/Tests/dataflow.stable.out
--- a/monetdb5/optimizer/Tests/dataflow.stable.out
+++ b/monetdb5/optimizer/Tests/dataflow.stable.out
@@ -20,37 +20,37 @@ stdout of test 'dataflow` in directory '
 
 Ready.
 
-# 07:59:33 >  
-# 07:59:33 >  "mclient" "-lmal" "-ftest" "-Eutf-8" 
"--host=/var/tmp/mtest-23820" "--port=35704"
-# 07:59:33 >  
+# 10:28:25 >  
+# 10:28:25 >  "mclient" "-lmal" "-ftest" "-Eutf-8" 
"--host=/var/tmp/mtest-28254" "--port=34870"
+# 10:28:25 >  
 
-function user.tst():void;                      #[0] (0)  0 
-barrier X_35:bit := language.dataflow();       #[1] (0) MALstartDataflow 35 
-    s:bat[:int] := microbenchmark.uniform(0@0:oid, 100000:lng, 100000:int);    
#[2] (0) MBMuniform 1 <- 2 3 4 
-    l:int := aggr.min(s:bat[:int]);            #[3] (0) ALGminany 5 <- 1 
-    h:int := l:int;                            #[4] (0)  6 <- 5 
+function user.tst():void;                      #[0] (0)  0  type check needed 
+barrier X_35:bit := language.dataflow();       #[1] (0) MALstartDataflow 35  
type check needed 
+    s:bat[:int] := microbenchmark.uniform(0@0:oid, 100000:lng, 100000:int);    
#[2] (0) MBMuniform 1 <- 2 3 4  type check needed 
+    l:int := aggr.min(s:bat[:int]);            #[3] (0) ALGminany 5 <- 1  type 
check needed 
+    h:int := l:int;                            #[4] (0)  6 <- 5  type check 
needed 
 #mdb.setTimer(true);                    
 #mdb.setThread(true);                   
-    z:bat[:oid] := nil:bat[:oid];              #[7] (0)  9 <- 10 
-    t1:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[8] (0) ALGselect2 11 <- 1 12 5 6 13 14 15 
-    t2:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[9] (0) ALGselect2 16 <- 1 17 5 6 13 13 15 
-    t3:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[10] (0) ALGselect2 18 <- 1 19 5 6 13 13 15 
-    t4:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[11] (0) ALGselect2 20 <- 1 21 5 6 13 13 15 
-    t5:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[12] (0) ALGselect2 22 <- 1 23 5 6 13 13 15 
-    t6:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[13] (0) ALGselect2 24 <- 1 25 5 6 13 13 15 
-    t7:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[14] (0) ALGselect2 26 <- 1 27 5 6 13 13 15 
-    t8:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[15] (0) ALGselect2 28 <- 1 29 5 6 13 13 15 
-    language.pass(s:bat[:int]);                #[16] (0) MALpass 37 <- 1 
-exit X_35:bit;                                 #[17] (0)  35 
-    z:bat[:oid] := mat.pack(t1:bat[:oid], t2:bat[:oid], t3:bat[:oid], 
t4:bat[:oid], t5:bat[:oid], t6:bat[:oid], t7:bat[:oid], t8:bat[:oid]);   #[18] 
(0) MATpack 9 <- 11 16 18 20 22 24 26 28 
-    mdb.var();                                 #[19] (0) MDBvar 30 
-    c:lng := aggr.count(z:bat[:oid]);          #[20] (0) ALGcount_bat 31 <- 9 
-    io.print(c:lng);                           #[21] (0) IOprint_val 32 <- 31 
-    io.print("done":str);                      #[22] (0) IOprint_val 33 <- 34 
-end user.tst;                                  #[23] (0)  
-#dataflow             actions= 1 time=43 usec 
-#garbagecollector     actions= 0 time=51 usec 
-#Stack 'tst' size=43 top=33
+    z:bat[:oid] := nil:bat[:oid];              #[7] (0)  9 <- 10  type check 
needed 
+    t1:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[8] (0) ALGselect2 11 <- 1 12 5 6 13 14 15  
type check needed 
+    t2:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[9] (0) ALGselect2 16 <- 1 17 5 6 13 13 15  
type check needed 
+    t3:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[10] (0) ALGselect2 18 <- 1 19 5 6 13 13 15  
type check needed 
+    t4:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[11] (0) ALGselect2 20 <- 1 21 5 6 13 13 15  
type check needed 
+    t5:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[12] (0) ALGselect2 22 <- 1 23 5 6 13 13 15  
type check needed 
+    t6:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[13] (0) ALGselect2 24 <- 1 25 5 6 13 13 15  
type check needed 
+    t7:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[14] (0) ALGselect2 26 <- 1 27 5 6 13 13 15  
type check needed 
+    t8:bat[:oid] := algebra.select(s:bat[:int], nil:bat[:oid], l:int, h:int, 
true:bit, true:bit, false:bit);   #[15] (0) ALGselect2 28 <- 1 29 5 6 13 13 15  
type check needed 
+    language.pass(s:bat[:int]);                #[16] (0) MALpass 37 <- 1  type 
check needed 
+exit X_35:bit;                                 #[17] (0)  35  type check 
needed 
+    z:bat[:oid] := mat.pack(t1:bat[:oid], t2:bat[:oid], t3:bat[:oid], 
t4:bat[:oid], t5:bat[:oid], t6:bat[:oid], t7:bat[:oid], t8:bat[:oid]);   #[18] 
(0) MATpack 9 <- 11 16 18 20 22 24 26 28  type check needed 
+    mdb.var();                                 #[19] (0) MDBvar 30  type check 
needed 
+    c:lng := aggr.count(z:bat[:oid]);          #[20] (0) ALGcount_bat 31 <- 9  
type check needed 
+    io.print(c:lng);                           #[21] (0) IOprint_val 32 <- 31  
type check needed 
+    io.print("done":str);                      #[22] (0) IOprint_val 33 <- 34  
type check needed 
+end user.tst;                                  #[23] (0)   type check needed 
+#dataflow             actions= 1 time=30 usec 
+#garbagecollector     actions= 0 time=19 usec 
+#Stack 'tst' size=55 top=41
 #[ 0]   tst (0,0,17) = 0@0 :void   not used 
 #[ 1]     s (2,2,16) = <tmp_21> :bat[:int] rows=100000   
 #[ 2]   X_2 (2,2,2) = 0@0 :oid  constant  
diff --git a/monetdb5/optimizer/Tests/tst4006.stable.out 
b/monetdb5/optimizer/Tests/tst4006.stable.out
--- a/monetdb5/optimizer/Tests/tst4006.stable.out
+++ b/monetdb5/optimizer/Tests/tst4006.stable.out
@@ -36,7 +36,7 @@ barrier V12:bit := true:bit;            
 exit V12:bit;                                  #[7] (0)  6  type check needed 
     return V31:bat[:int] := V30:bat[:int];     #[8] (0)  9 <- 5  type check 
needed 
 end user.getz;                                 #[9] (0)   type check needed 
-#aliases              actions= 0 time=4 usec 
+#aliases              actions= 0 time=8 usec 
 #garbagecollector     actions= 0 time=8 usec 
 function user.getz(p:int):bat[:int];           #[0] (0)  0 <- 1  type check 
needed 
     x:bat[:int] := bat.new(:int);              #[1] (0) CMDBATnew 2 <- 3  type 
check needed 
@@ -48,8 +48,8 @@ barrier V12:bit := true:bit;            
 exit V12:bit;                                  #[7] (0)  6  type check needed 
     return V31:bat[:int] := V30:bat[:int];     #[8] (0)  9 <- 5  type check 
needed 
 end user.getz;                                 #[9] (0)   type check needed 
-#aliases              actions= 0 time=4 usec 
-#garbagecollector     actions= 1 time=12 usec 
+#aliases              actions= 0 time=8 usec 
+#garbagecollector     actions= 0 time=8 usec 
 
 # 15:27:10 >  
 # 15:27:10 >  "Done."
diff --git a/sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out 
b/sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
--- a/sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
+++ b/sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
@@ -27,11 +27,11 @@ Ready.
 % .explain # table_name
 % mal # name
 % clob # type
-% 87 # length
+% 95 # length
 function user.s4_1():void;
-    X_3:void := querylog.define("explain select fuse(1,2);", 
"sequential_pipe", 8:int);
+    X_3:void := querylog.define("explain select fuse(1,2);":str, 
"sequential_pipe":str, 8:int);
     X_9:sht := udf.fuse(1:bte, 2:bte);
-    sql.resultSet(".L2", "L2", "smallint", 16:int, 0:int, 7:int, X_9);
+    sql.resultSet(".L2":str, "L2":str, "smallint":str, 16:int, 0:int, 7:int, 
X_9:sht);
 end user.s4_1;
 #inline               actions= 0 time=2 usec 
 #candidates           actions= 1 time=12 usec 
@@ -68,11 +68,11 @@ end user.s4_1;
 % .explain # table_name
 % mal # name
 % clob # type
-% 93 # length
+% 101 # length
 function user.s6_1():void;
-    X_3:void := querylog.define("explain select fuse(1000,2000);", 
"sequential_pipe", 8:int);
+    X_3:void := querylog.define("explain select fuse(1000,2000);":str, 
"sequential_pipe":str, 8:int);
     X_9:int := udf.fuse(1000:sht, 2000:sht);
-    sql.resultSet(".L2", "L2", "int", 32:int, 0:int, 7:int, X_9);
+    sql.resultSet(".L2":str, "L2":str, "int":str, 32:int, 0:int, 7:int, 
X_9:int);
 end user.s6_1;
 #inline               actions= 0 time=2 usec 
 #candidates           actions= 1 time=10 usec 
@@ -109,11 +109,11 @@ end user.s6_1;
 % .explain # table_name
 % mal # name
 % clob # type
-% 99 # length
+% 107 # length
 function user.s8_1():void;
-    X_3:void := querylog.define("explain select fuse(1000000,2000000);", 
"sequential_pipe", 8:int);
+    X_3:void := querylog.define("explain select fuse(1000000,2000000);":str, 
"sequential_pipe":str, 8:int);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to