Changeset: 983b8e240c9a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=983b8e240c9a
Added Files:
        sql/test/BugTracker-2016/Tests/assert-on-project.Bug-6078.sql
        sql/test/BugTracker-2016/Tests/assert-on-project.Bug-6078.stable.err
        sql/test/BugTracker-2016/Tests/assert-on-project.Bug-6078.stable.out
        sql/test/BugTracker-2016/Tests/assert-on-push-project-up.Bug-6077.sql
        
sql/test/BugTracker-2016/Tests/assert-on-push-project-up.Bug-6077.stable.err
        
sql/test/BugTracker-2016/Tests/assert-on-push-project-up.Bug-6077.stable.out
        
sql/test/BugTracker-2016/Tests/assert-on-table-producing-function.Bug-6076.sql
        
sql/test/BugTracker-2016/Tests/assert-on-table-producing-function.Bug-6076.stable.err
        
sql/test/BugTracker-2016/Tests/assert-on-table-producing-function.Bug-6076.stable.out
Modified Files:
        sql/backends/monet5/Tests/pyapi29.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_gencode.c
        sql/benchmarks/ssbm/Tests/01-explain.stable.out
        sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/02-explain.stable.out
        sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/03-explain.stable.out
        sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/04-explain.stable.out
        sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/05-explain.stable.out
        sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/06-explain.stable.out
        sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/07-explain.stable.out
        sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/08-explain.stable.out
        sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/09-explain.stable.out
        sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/10-explain.stable.out
        sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/11-explain.stable.out
        sql/benchmarks/ssbm/Tests/11-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/12-explain.stable.out
        sql/benchmarks/ssbm/Tests/12-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/13-explain.stable.out
        sql/benchmarks/ssbm/Tests/13-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/01-explain.stable.out
        sql/benchmarks/tpch/Tests/01-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/02-explain.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/04-explain.stable.out
        sql/benchmarks/tpch/Tests/04-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/05-explain.stable.out
        sql/benchmarks/tpch/Tests/05-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/05-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/06-explain.stable.out
        sql/benchmarks/tpch/Tests/06-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/07-explain.stable.out
        sql/benchmarks/tpch/Tests/07-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/08-explain.stable.out
        sql/benchmarks/tpch/Tests/08-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/09-explain.stable.out
        sql/benchmarks/tpch/Tests/09-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/10-explain.stable.out
        sql/benchmarks/tpch/Tests/10-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/11-explain.stable.out
        sql/benchmarks/tpch/Tests/11-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/12-explain.stable.out
        sql/benchmarks/tpch/Tests/12-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/13-explain.stable.out
        sql/benchmarks/tpch/Tests/13-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/14-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/15-explain.stable.out
        sql/benchmarks/tpch/Tests/15-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/16-explain.stable.out
        sql/benchmarks/tpch/Tests/16-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/17-explain.stable.out
        sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/18-explain.stable.out
        sql/benchmarks/tpch/Tests/18-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/19-explain.stable.out
        sql/benchmarks/tpch/Tests/19-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/20-explain.stable.out
        sql/benchmarks/tpch/Tests/20-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/20-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/21-explain.stable.out
        sql/benchmarks/tpch/Tests/21-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/22-explain.stable.out
        sql/benchmarks/tpch/Tests/22-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/22-explain.stable.out.int128
        sql/server/rel_exp.c
        sql/server/rel_exp.h
        sql/server/rel_select.c
        sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
        
sql/test/BugTracker-2009/Tests/error_while_drop_func_returns_table_type.SF-2604573.stable.out
        sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out.32bit
        sql/test/BugTracker-2011/Tests/UDF_in_schema.Bug-2817.stable.out
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out
        sql/test/BugTracker-2012/Tests/mal_syntax_error.Bug-2949.stable.out
        sql/test/BugTracker-2012/Tests/querycache.Bug-3212.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-2014/Tests/nil_2dec_lng.Bug-3592.stable.out
        sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out.single
        sql/test/BugTracker-2014/Tests/queueError.Bug-3604.stable.out
        sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out
        sql/test/BugTracker-2016/Tests/All
        sql/test/BugTracker-2016/Tests/outer_constant_predicate.Bug-4070.sql
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out.32bit
        sql/test/mergetables/Tests/mergequery.stable.out
Branch: Dec2016
Log Message:

merged with Dec2016


diffs (truncated from 930 to 300 lines):

diff --git a/sql/backends/monet5/Tests/pyapi29.stable.out 
b/sql/backends/monet5/Tests/pyapi29.stable.out
--- a/sql/backends/monet5/Tests/pyapi29.stable.out
+++ b/sql/backends/monet5/Tests/pyapi29.stable.out
@@ -76,11 +76,11 @@ Ready.
 #   return result
 #};
 #SELECT * FROM myfunc();
-% . # table_name
+% .L1 # table_name
 % n # name
 % clob # type
 % 20 # length
-[ "{'L5': array([ 5.])}"       ]
+[ "{'L6': array([ 5.])}"       ]
 #DROP TABLE mytable;
 #DROP FUNCTION myfunc;
 #ROLLBACK;
diff --git a/sql/benchmarks/tpch/Tests/01-explain.stable.out.32bit 
b/sql/benchmarks/tpch/Tests/01-explain.stable.out.32bit
--- a/sql/benchmarks/tpch/Tests/01-explain.stable.out.32bit
+++ b/sql/benchmarks/tpch/Tests/01-explain.stable.out.32bit
@@ -113,17 +113,17 @@ function user.s2_1(A0:bte,A1:bte,A2:bte,
     C_7:bat[:oid] := sql.tid(X_6,"sys","lineitem");
     X_18:date := mtime.date_sub_msec_interval(A3,A4);
     C_198 := algebra.thetasubselect(X_10,C_7,X_18,"<=");
-    (C_13,r1_13) := sql.bind(X_6,"sys","lineitem","l_shipdate",2);
+    (C_13:bat[:oid],r1_13:bat[:date]) := 
sql.bind(X_6,"sys","lineitem","l_shipdate",2);
     C_199 := algebra.thetasubselect(r1_13,nil:bat[:oid],X_18,"<=");
     X_16:bat[:date] := sql.bind(X_6,"sys","lineitem","l_shipdate",1);
     C_201 := algebra.thetasubselect(X_16,C_7,X_18,"<=");
     C_19 := sql.subdelta(C_198,C_7,C_13,C_199,C_201);
     X_21:bat[:str] := sql.bind(X_6,"sys","lineitem","l_linestatus",0);
-    (C_23,r1_27) := sql.bind(X_6,"sys","lineitem","l_linestatus",2);
+    (C_23:bat[:oid],r1_27:bat[:str]) := 
sql.bind(X_6,"sys","lineitem","l_linestatus",2);
     X_25:bat[:str] := sql.bind(X_6,"sys","lineitem","l_linestatus",1);
     X_26 := sql.projectdelta(C_19,X_21,C_23,r1_27,X_25);
     X_27:bat[:str] := sql.bind(X_6,"sys","lineitem","l_returnflag",0);
-    (C_29,r1_35) := sql.bind(X_6,"sys","lineitem","l_returnflag",2);
+    (C_29:bat[:oid],r1_35:bat[:str]) := 
sql.bind(X_6,"sys","lineitem","l_returnflag",2);
     X_31:bat[:str] := sql.bind(X_6,"sys","lineitem","l_returnflag",1);
     X_32 := sql.projectdelta(C_19,X_27,C_29,r1_35,X_31);
     (X_33,r1_41,r2_41) := group.subgroup(X_32);
diff --git a/sql/benchmarks/tpch/Tests/04-explain.stable.out.32bit 
b/sql/benchmarks/tpch/Tests/04-explain.stable.out.32bit
--- a/sql/benchmarks/tpch/Tests/04-explain.stable.out.32bit
+++ b/sql/benchmarks/tpch/Tests/04-explain.stable.out.32bit
@@ -71,40 +71,40 @@ function user.s2_1(A0:date,A1:date,A2:in
     X_4 := sql.mvc();
     C_5:bat[:oid] := sql.tid(X_4,"sys","orders");
     X_8:bat[:date] := sql.bind(X_4,"sys","orders","o_orderdate",0);
-    (C_11,r1_11) := sql.bind(X_4,"sys","orders","o_orderdate",2);
+    (C_11:bat[:oid],r1_11:bat[:date]) := 
sql.bind(X_4,"sys","orders","o_orderdate",2);
     X_14:bat[:date] := sql.bind(X_4,"sys","orders","o_orderdate",1);
     X_16 := sql.delta(X_8,C_11,r1_11,X_14);
     X_17 := algebra.projection(C_5,X_16);
     X_18:date := mtime.addmonths(A1,A2);
     C_19 := algebra.subselect(X_17,A0,X_18,true,false,false);
     X_22:bat[:int] := sql.bind(X_4,"sys","orders","o_orderkey",0);
-    (C_24,r1_28) := sql.bind(X_4,"sys","orders","o_orderkey",2);
+    (C_24:bat[:oid],r1_28:bat[:int]) := 
sql.bind(X_4,"sys","orders","o_orderkey",2);
     X_26:bat[:int] := sql.bind(X_4,"sys","orders","o_orderkey",1);
     X_27 := sql.delta(X_22,C_24,r1_28,X_26);
     X_28:bat[:int] := algebra.projectionpath(C_19,C_5,X_27);
     X_29 := bat.mirror(X_28);
     C_30:bat[:oid] := sql.tid(X_4,"sys","lineitem");
     X_32:bat[:date] := sql.bind(X_4,"sys","lineitem","l_commitdate",0);
-    (C_34,r1_39) := sql.bind(X_4,"sys","lineitem","l_commitdate",2);
+    (C_34:bat[:oid],r1_39:bat[:date]) := 
sql.bind(X_4,"sys","lineitem","l_commitdate",2);
     X_36:bat[:date] := sql.bind(X_4,"sys","lineitem","l_commitdate",1);
     X_37 := sql.delta(X_32,C_34,r1_39,X_36);
     X_38 := algebra.projection(C_30,X_37);
     X_39:bat[:date] := sql.bind(X_4,"sys","lineitem","l_receiptdate",0);
-    (C_41,r1_46) := sql.bind(X_4,"sys","lineitem","l_receiptdate",2);
+    (C_41:bat[:oid],r1_46:bat[:date]) := 
sql.bind(X_4,"sys","lineitem","l_receiptdate",2);
     X_43:bat[:date] := sql.bind(X_4,"sys","lineitem","l_receiptdate",1);
     X_44 := sql.delta(X_39,C_41,r1_46,X_43);
     X_45 := algebra.projection(C_30,X_44);
     X_46:bat[:bit] := batcalc.<(X_38,X_45);
     C_47 := algebra.subselect(X_46,true,true,true,true,false);
     X_48:bat[:int] := sql.bind(X_4,"sys","lineitem","l_orderkey",0);
-    (C_50,r1_57) := sql.bind(X_4,"sys","lineitem","l_orderkey",2);
+    (C_50:bat[:oid],r1_57:bat[:int]) := 
sql.bind(X_4,"sys","lineitem","l_orderkey",2);
     X_52:bat[:int] := sql.bind(X_4,"sys","lineitem","l_orderkey",1);
     X_53 := sql.delta(X_48,C_50,r1_57,X_52);
     X_54:bat[:int] := algebra.projectionpath(C_47,C_30,X_53);
     (X_55,r1_63) := algebra.subjoin(X_28,X_54,nil:BAT,nil:BAT,false,nil:lng);
     C_59 := algebra.subinter(X_29,X_55,nil:BAT,nil:BAT,false,nil:lng);
     X_60:bat[:str] := sql.bind(X_4,"sys","orders","o_orderpriority",0);
-    (C_62,r1_72) := sql.bind(X_4,"sys","orders","o_orderpriority",2);
+    (C_62:bat[:oid],r1_72:bat[:str]) := 
sql.bind(X_4,"sys","orders","o_orderpriority",2);
     X_64:bat[:str] := sql.bind(X_4,"sys","orders","o_orderpriority",1);
     X_65 := sql.delta(X_60,C_62,r1_72,X_64);
     X_66:bat[:str] := algebra.projectionpath(C_59,C_19,C_5,X_65);
diff --git a/sql/benchmarks/tpch/Tests/13-explain.stable.out.32bit 
b/sql/benchmarks/tpch/Tests/13-explain.stable.out.32bit
--- a/sql/benchmarks/tpch/Tests/13-explain.stable.out.32bit
+++ b/sql/benchmarks/tpch/Tests/13-explain.stable.out.32bit
@@ -78,19 +78,19 @@ function user.s2_1(A0:str):void;
     X_20 := algebra.projection(C_9,X_19);
     (X_21,r1_21) := algebra.subjoin(C_6,X_20,nil:BAT,nil:BAT,false,nil:lng);
     X_26:bat[:str] := sql.bind(X_2,"sys","orders","o_comment",0);
-    (C_28,r1_29) := sql.bind(X_2,"sys","orders","o_comment",2);
+    (C_28:bat[:oid],r1_29:bat[:str]) := 
sql.bind(X_2,"sys","orders","o_comment",2);
     X_30:bat[:str] := sql.bind(X_2,"sys","orders","o_comment",1);
     X_31 := sql.delta(X_26,C_28,r1_29,X_30);
     X_32:bat[:str] := algebra.projectionpath(r1_21,C_9,X_31);
     C_34 := algebra.likesubselect(X_32,nil:BAT,A0,"",true);
     X_36:bat[:int] := sql.bind(X_2,"sys","orders","o_orderkey",0);
-    (C_38,r1_43) := sql.bind(X_2,"sys","orders","o_orderkey",2);
+    (C_38:bat[:oid],r1_43:bat[:int]) := 
sql.bind(X_2,"sys","orders","o_orderkey",2);
     X_40:bat[:int] := sql.bind(X_2,"sys","orders","o_orderkey",1);
     X_41 := sql.delta(X_36,C_38,r1_43,X_40);
     X_42:bat[:int] := algebra.projectionpath(C_34,r1_21,C_9,X_41);
     X_43 := bat.append(X_3,X_42,true);
     X_44:bat[:int] := sql.bind(X_2,"sys","customer","c_custkey",0);
-    (C_46,r1_52) := sql.bind(X_2,"sys","customer","c_custkey",2);
+    (C_46:bat[:oid],r1_52:bat[:int]) := 
sql.bind(X_2,"sys","customer","c_custkey",2);
     X_48:bat[:int] := sql.bind(X_2,"sys","customer","c_custkey",1);
     X_49 := sql.delta(X_44,C_46,r1_52,X_48);
     X_50 := algebra.projection(C_6,X_49);
diff --git a/sql/benchmarks/tpch/Tests/21-explain.stable.out.32bit 
b/sql/benchmarks/tpch/Tests/21-explain.stable.out.32bit
--- a/sql/benchmarks/tpch/Tests/21-explain.stable.out.32bit
+++ b/sql/benchmarks/tpch/Tests/21-explain.stable.out.32bit
@@ -81,12 +81,12 @@ function user.s2_1(A0:str,A1:str):void;
     X_3 := sql.mvc();
     C_4:bat[:oid] := sql.tid(X_3,"sys","lineitem");
     X_7:bat[:date] := sql.bind(X_3,"sys","lineitem","l_receiptdate",0);
-    (C_10,r1_10) := sql.bind(X_3,"sys","lineitem","l_receiptdate",2);
+    (C_10:bat[:oid],r1_10:bat[:date]) := 
sql.bind(X_3,"sys","lineitem","l_receiptdate",2);
     X_13:bat[:date] := sql.bind(X_3,"sys","lineitem","l_receiptdate",1);
     X_15 := sql.delta(X_7,C_10,r1_10,X_13);
     X_16 := algebra.projection(C_4,X_15);
     X_17:bat[:date] := sql.bind(X_3,"sys","lineitem","l_commitdate",0);
-    (C_19,r1_19) := sql.bind(X_3,"sys","lineitem","l_commitdate",2);
+    (C_19:bat[:oid],r1_19:bat[:date]) := 
sql.bind(X_3,"sys","lineitem","l_commitdate",2);
     X_21:bat[:date] := sql.bind(X_3,"sys","lineitem","l_commitdate",1);
     X_22 := sql.delta(X_17,C_19,r1_19,X_21);
     X_23 := algebra.projection(C_4,X_22);
@@ -99,7 +99,7 @@ function user.s2_1(A0:str,A1:str):void;
     X_34:bat[:oid] := algebra.projectionpath(C_25,C_4,X_33);
     C_35:bat[:oid] := sql.tid(X_3,"sys","orders");
     X_37:bat[:str] := sql.bind(X_3,"sys","orders","o_orderstatus",0);
-    (C_39,r1_43) := sql.bind(X_3,"sys","orders","o_orderstatus",2);
+    (C_39:bat[:oid],r1_43:bat[:str]) := 
sql.bind(X_3,"sys","orders","o_orderstatus",2);
     X_41:bat[:str] := sql.bind(X_3,"sys","orders","o_orderstatus",1);
     X_42 := sql.delta(X_37,C_39,r1_43,X_41);
     X_43 := algebra.projection(C_35,X_42);
@@ -107,7 +107,7 @@ function user.s2_1(A0:str,A1:str):void;
     X_45 := algebra.projection(C_44,C_35);
     (X_46,r1_51) := algebra.subjoin(X_34,X_45,nil:BAT,nil:BAT,false,nil:lng);
     X_50:bat[:int] := sql.bind(X_3,"sys","lineitem","l_suppkey",0);
-    (C_52,r1_58) := sql.bind(X_3,"sys","lineitem","l_suppkey",2);
+    (C_52:bat[:oid],r1_58:bat[:int]) := 
sql.bind(X_3,"sys","lineitem","l_suppkey",2);
     X_54:bat[:int] := sql.bind(X_3,"sys","lineitem","l_suppkey",1);
     X_55 := sql.delta(X_50,C_52,r1_58,X_54);
     X_56 := algebra.projection(C_4,X_55);
@@ -115,7 +115,7 @@ function user.s2_1(A0:str,A1:str):void;
     X_58 := algebra.projection(X_46,X_57);
     C_59:bat[:oid] := sql.tid(X_3,"sys","supplier");
     X_61:bat[:int] := sql.bind(X_3,"sys","supplier","s_suppkey",0);
-    (C_63,r1_69) := sql.bind(X_3,"sys","supplier","s_suppkey",2);
+    (C_63:bat[:oid],r1_69:bat[:int]) := 
sql.bind(X_3,"sys","supplier","s_suppkey",2);
     X_65:bat[:int] := sql.bind(X_3,"sys","supplier","s_suppkey",1);
     X_66 := sql.delta(X_61,C_63,r1_69,X_65);
     X_67 := algebra.projection(C_59,X_66);
@@ -127,7 +127,7 @@ function user.s2_1(A0:str,A1:str):void;
     X_76:bat[:oid] := algebra.projectionpath(r1_74,C_59,X_75);
     C_77:bat[:oid] := sql.tid(X_3,"sys","nation");
     X_79:bat[:str] := sql.bind(X_3,"sys","nation","n_name",0);
-    (C_81,r1_89) := sql.bind(X_3,"sys","nation","n_name",2);
+    (C_81:bat[:oid],r1_89:bat[:str]) := 
sql.bind(X_3,"sys","nation","n_name",2);
     X_83:bat[:str] := sql.bind(X_3,"sys","nation","n_name",1);
     X_84 := sql.delta(X_79,C_81,r1_89,X_83);
     X_85 := algebra.projection(C_77,X_84);
@@ -137,7 +137,7 @@ function user.s2_1(A0:str,A1:str):void;
     X_90:bat[:int] := algebra.projectionpath(X_88,r1_74,X_67);
     X_91 := bat.mirror(X_90);
     X_92:bat[:int] := sql.bind(X_3,"sys","lineitem","l_orderkey",0);
-    (C_94,r1_108) := sql.bind(X_3,"sys","lineitem","l_orderkey",2);
+    (C_94:bat[:oid],r1_108:bat[:int]) := 
sql.bind(X_3,"sys","lineitem","l_orderkey",2);
     X_96:bat[:int] := sql.bind(X_3,"sys","lineitem","l_orderkey",1);
     X_97 := sql.delta(X_92,C_94,r1_108,X_96);
     X_98 := algebra.projection(C_4,X_97);
@@ -162,7 +162,7 @@ function user.s2_1(A0:str,A1:str):void;
     X_119 := algebra.projection(C_118,X_113);
     X_120 := algebra.subdiff(X_111,X_119,nil:BAT,nil:BAT,false,nil:lng);
     X_121:bat[:str] := sql.bind(X_3,"sys","supplier","s_name",0);
-    (C_123,r1_202) := sql.bind(X_3,"sys","supplier","s_name",2);
+    (C_123:bat[:oid],r1_202:bat[:str]) := 
sql.bind(X_3,"sys","supplier","s_name",2);
     X_125:bat[:str] := sql.bind(X_3,"sys","supplier","s_name",1);
     X_126 := sql.delta(X_121,C_123,r1_202,X_125);
     X_127:bat[:str] := 
algebra.projectionpath(X_120,C_109,X_88,r1_74,C_59,X_126);
diff --git a/sql/benchmarks/tpch/Tests/22-explain.stable.out.32bit 
b/sql/benchmarks/tpch/Tests/22-explain.stable.out.32bit
--- a/sql/benchmarks/tpch/Tests/22-explain.stable.out.32bit
+++ b/sql/benchmarks/tpch/Tests/22-explain.stable.out.32bit
@@ -82,7 +82,7 @@ function user.s2_1(A0:int,A1:int,A2:int,
     X_22 := sql.mvc();
     C_23:bat[:oid] := sql.tid(X_22,"sys","customer");
     X_26:bat[:str] := sql.bind(X_22,"sys","customer","c_phone",0);
-    (C_29,r1_29) := sql.bind(X_22,"sys","customer","c_phone",2);
+    (C_29:bat[:oid],r1_29:bat[:str]) := 
sql.bind(X_22,"sys","customer","c_phone",2);
     X_32:bat[:str] := sql.bind(X_22,"sys","customer","c_phone",1);
     X_34 := sql.delta(X_26,C_29,r1_29,X_32);
     X_35 := algebra.projection(C_23,X_34);
@@ -101,13 +101,13 @@ function user.s2_1(A0:int,A1:int,A2:int,
     C_50 := algebra.subselect(X_36,A10,A10,true,false,false);
     X_51 := bat.mergecand(X_49,C_50);
     X_52:bat[:int] := sql.bind(X_22,"sys","customer","c_custkey",0);
-    (C_54,r1_66) := sql.bind(X_22,"sys","customer","c_custkey",2);
+    (C_54:bat[:oid],r1_66:bat[:int]) := 
sql.bind(X_22,"sys","customer","c_custkey",2);
     X_56:bat[:int] := sql.bind(X_22,"sys","customer","c_custkey",1);
     X_57 := sql.delta(X_52,C_54,r1_66,X_56);
     X_58:bat[:int] := algebra.projectionpath(X_51,C_23,X_57);
     X_59 := bat.mirror(X_58);
     X_60:bat[:lng] := sql.bind(X_22,"sys","customer","c_acctbal",0);
-    (C_62,r1_75) := sql.bind(X_22,"sys","customer","c_acctbal",2);
+    (C_62:bat[:oid],r1_75:bat[:lng]) := 
sql.bind(X_22,"sys","customer","c_acctbal",2);
     X_64:bat[:lng] := sql.bind(X_22,"sys","customer","c_acctbal",1);
     X_65 := sql.delta(X_60,C_62,r1_75,X_64);
     X_66 := algebra.projection(C_23,X_65);
@@ -139,7 +139,7 @@ function user.s2_1(A0:int,A1:int,A2:int,
     X_97 := bat.mirror(X_96);
     C_98:bat[:oid] := sql.tid(X_22,"sys","orders");
     X_100:bat[:int] := sql.bind(X_22,"sys","orders","o_custkey",0);
-    (C_102,r1_155) := sql.bind(X_22,"sys","orders","o_custkey",2);
+    (C_102:bat[:oid],r1_155:bat[:int]) := 
sql.bind(X_22,"sys","orders","o_custkey",2);
     X_104:bat[:int] := sql.bind(X_22,"sys","orders","o_custkey",1);
     X_105 := sql.delta(X_100,C_102,r1_155,X_104);
     X_106 := algebra.projection(C_98,X_105);
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -615,14 +615,19 @@ exp_setrelname(sql_allocator *sa, sql_ex
        e->rname = sa_strdup(sa, nme);
 }
 
-sql_exp*
-exp_label(sql_allocator *sa, sql_exp *e, int nr)
+char *
+make_label(sql_allocator *sa, int nr)
 {
        char name[16], *nme;
 
        nme = number2name(name, 16, nr);
-       e->name = sa_strdup(sa, nme);
-       e->rname = sa_strdup(sa, nme);
+       return sa_strdup(sa, nme);
+}
+
+sql_exp*
+exp_label(sql_allocator *sa, sql_exp *e, int nr)
+{
+       e->rname = e->name = make_label(sa, nr);
        return e;
 }
 
diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h
--- a/sql/server/rel_exp.h
+++ b/sql/server/rel_exp.h
@@ -84,6 +84,7 @@ extern void exp_setname(sql_allocator *s
 extern void exp_setrelname(sql_allocator *sa, sql_exp *e, int nr );
 
 extern void noninternexp_setname(sql_allocator *sa, sql_exp *e, const char 
*rname, const char *name );
+extern char* make_label(sql_allocator *sa, int nr);
 extern sql_exp* exp_label(sql_allocator *sa, sql_exp *e, int nr);
 
 extern sql_exp * exp_copy( sql_allocator *sa, sql_exp *e);
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -641,6 +641,8 @@ rel_named_table_function(mvc *sql, sql_r
 
        if (query->data.lval->h->next->data.sym)
                tname = 
query->data.lval->h->next->data.sym->data.lval->h->data.sval;
+       else
+               tname = make_label(sql->sa, ++sql->label);
 
        /* column or table function */
        sf = e->f;
diff --git 
a/sql/test/BugTracker-2009/Tests/error_while_drop_func_returns_table_type.SF-2604573.stable.out
 
b/sql/test/BugTracker-2009/Tests/error_while_drop_func_returns_table_type.SF-2604573.stable.out
--- 
a/sql/test/BugTracker-2009/Tests/error_while_drop_func_returns_table_type.SF-2604573.stable.out
+++ 
b/sql/test/BugTracker-2009/Tests/error_while_drop_func_returns_table_type.SF-2604573.stable.out
@@ -24,13 +24,35 @@ Ready.
 # 00:56:20 >  mclient -lsql -umonetdb -Pmonetdb --host=alviss --port=35664 
 # 00:56:20 >  
 
-% . # table_name
+# 14:45:08 >  
+# 14:45:08 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-2914" "--port=33884"
+# 14:45:08 >  
+
+#start transaction;
+#create function test_002() returns table(i int)
+#begin
+#declare table tbl(i int);
+#insert into tbl values(110);
+#insert into tbl values(210);
+#return tbl;
+#end;
+#select * from test_002();
+% .L1 # table_name
 % i # name
 % int # type
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to