Changeset: 06e7ddcdd814 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=06e7ddcdd814 Added Files: sql/test/BugTracker-2017/Tests/group-by-on-constant.Bug-6082.stable.out.int128 sql/test/BugTracker-2017/Tests/integer_addition_overflow.Bug-6205.sql sql/test/BugTracker-2017/Tests/integer_addition_overflow.Bug-6205.stable.err sql/test/BugTracker-2017/Tests/integer_addition_overflow.Bug-6205.stable.out Removed Files: sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out.single sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.err.single sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out.single sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out.single Modified Files: gdk/Makefile.ag monetdb5/optimizer/opt_support.c sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out sql/backends/monet5/rel_bin.c sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.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/case-overflow.Bug-2239.stable.out sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128 sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out sql/test/BugTracker-2013/Tests/between.Bug-3259.sql sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.sql sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out sql/test/BugTracker-2014/Tests/querylog.Bug-3607.sql sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.sql sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out sql/test/BugTracker-2017/Tests/All sql/test/BugTracker-2017/Tests/group-by-on-constant.Bug-6082.stable.err sql/test/BugTracker-2017/Tests/group-by-on-constant.Bug-6082.stable.out sql/test/BugTracker/Tests/explain.SF-1739353.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out sql/test/mergetables/Tests/mergequery.stable.out sql/test/pg_regress/Tests/float8.stable.err.Windows sql/test/remote/Tests/partition_elim.stable.out Branch: default Log Message:
Merge with Dec2016 branch. diffs (truncated from 2434 to 300 lines): diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag --- a/gdk/Makefile.ag +++ b/gdk/Makefile.ag @@ -34,7 +34,6 @@ lib_gdk = { gdk_unique.c \ gdk_interprocess.c gdk_interprocess.h \ gdk_firstn.c \ - bat.feps bat1.feps bat2.feps \ libbat.rc LIBS = ../common/options/libmoptions \ ../common/stream/libstream \ diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c --- a/monetdb5/optimizer/opt_support.c +++ b/monetdb5/optimizer/opt_support.c @@ -398,6 +398,10 @@ hasSideEffects(InstrPtr p, int strict) { if( getFunctionId(p) == NULL) return FALSE; + /* update instructions have side effects */ + if (isUpdateInstruction(p)) + return TRUE; + if ( (getModuleId(p) == batRef || getModuleId(p)==sqlRef) && (getFunctionId(p) == setAccessRef || getFunctionId(p) == setWriteModeRef || @@ -442,10 +446,6 @@ hasSideEffects(InstrPtr p, int strict) if (getFunctionId(p) == zero_or_oneRef) return FALSE; if (getFunctionId(p) == mvcRef) return FALSE; if (getFunctionId(p) == singleRef) return FALSE; - /* the update instructions for SQL has side effects. - whether this is relevant should be explicitly checked - in the environment of the call */ - if (isUpdateInstruction(p)) return TRUE; return TRUE; } if( getModuleId(p) == languageRef){ 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 @@ -172,15 +172,10 @@ end user.s8_1; function user.s16_1():void; X_1:void := querylog.define("explain select fuse(a,b) from udf_fuse;", "sequential_pipe", 27:int); X_29 := bat.new(nil:str); - X_36 := bat.append(X_29, "sys.L2"); + X_35 := bat.new(nil:int); + X_33 := bat.new(nil:int); + X_32 := bat.new(nil:str); X_31 := bat.new(nil:str); - X_38 := bat.append(X_31, "L2"); - X_32 := bat.new(nil:str); - X_40 := bat.append(X_32, "smallint"); - X_33 := bat.new(nil:int); - X_42 := bat.append(X_33, 16:int); - X_35 := bat.new(nil:int); - X_44 := bat.append(X_35, 0:int); X_4 := sql.mvc(); C_5:bat[:oid] := sql.tid(X_4, "sys", "udf_fuse"); X_8:bat[:bte] := sql.bind(X_4, "sys", "udf_fuse", "a", 0:int); @@ -188,6 +183,11 @@ function user.s16_1():void; X_18:bat[:bte] := sql.bind(X_4, "sys", "udf_fuse", "b", 0:int); X_24 := algebra.projection(C_5, X_18); X_25:bat[:sht] := batudf.fuse(X_17, X_24); + X_36 := bat.append(X_29, "sys.L2"); + X_38 := bat.append(X_31, "L2"); + X_40 := bat.append(X_32, "smallint"); + X_42 := bat.append(X_33, 16:int); + X_44 := bat.append(X_35, 0:int); sql.resultSet(X_36, X_38, X_40, X_42, X_44, X_25); end user.s16_1; #inline actions= 0 time=4 usec @@ -223,15 +223,10 @@ end user.s16_1; function user.s18_1():void; X_1:void := querylog.define("explain select fuse(c,d) from udf_fuse;", "sequential_pipe", 27:int); X_29 := bat.new(nil:str); - X_36 := bat.append(X_29, "sys.L2"); + X_35 := bat.new(nil:int); + X_33 := bat.new(nil:int); + X_32 := bat.new(nil:str); X_31 := bat.new(nil:str); - X_38 := bat.append(X_31, "L2"); - X_32 := bat.new(nil:str); - X_40 := bat.append(X_32, "int"); - X_33 := bat.new(nil:int); - X_42 := bat.append(X_33, 32:int); - X_35 := bat.new(nil:int); - X_44 := bat.append(X_35, 0:int); X_4 := sql.mvc(); C_5:bat[:oid] := sql.tid(X_4, "sys", "udf_fuse"); X_8:bat[:sht] := sql.bind(X_4, "sys", "udf_fuse", "c", 0:int); @@ -239,6 +234,11 @@ function user.s18_1():void; X_18:bat[:sht] := sql.bind(X_4, "sys", "udf_fuse", "d", 0:int); X_24 := algebra.projection(C_5, X_18); X_25:bat[:int] := batudf.fuse(X_17, X_24); + X_36 := bat.append(X_29, "sys.L2"); + X_38 := bat.append(X_31, "L2"); + X_40 := bat.append(X_32, "int"); + X_42 := bat.append(X_33, 32:int); + X_44 := bat.append(X_35, 0:int); sql.resultSet(X_36, X_38, X_40, X_42, X_44, X_25); end user.s18_1; #inline actions= 0 time=2 usec @@ -274,15 +274,10 @@ end user.s18_1; function user.s20_1():void; X_1:void := querylog.define("explain select fuse(e,f) from udf_fuse;", "sequential_pipe", 27:int); X_29 := bat.new(nil:str); - X_36 := bat.append(X_29, "sys.L2"); + X_35 := bat.new(nil:int); + X_33 := bat.new(nil:int); + X_32 := bat.new(nil:str); X_31 := bat.new(nil:str); - X_38 := bat.append(X_31, "L2"); - X_32 := bat.new(nil:str); - X_40 := bat.append(X_32, "bigint"); - X_33 := bat.new(nil:int); - X_42 := bat.append(X_33, 64:int); - X_35 := bat.new(nil:int); - X_44 := bat.append(X_35, 0:int); X_4 := sql.mvc(); C_5:bat[:oid] := sql.tid(X_4, "sys", "udf_fuse"); X_8:bat[:int] := sql.bind(X_4, "sys", "udf_fuse", "e", 0:int); @@ -290,6 +285,11 @@ function user.s20_1():void; X_18:bat[:int] := sql.bind(X_4, "sys", "udf_fuse", "f", 0:int); X_24 := algebra.projection(C_5, X_18); X_25:bat[:lng] := batudf.fuse(X_17, X_24); + X_36 := bat.append(X_29, "sys.L2"); + X_38 := bat.append(X_31, "L2"); + X_40 := bat.append(X_32, "bigint"); + X_42 := bat.append(X_33, 64:int); + X_44 := bat.append(X_35, 0:int); sql.resultSet(X_36, X_38, X_40, X_42, X_44, X_25); end user.s20_1; #inline actions= 0 time=2 usec diff --git a/sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out b/sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out --- a/sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out +++ b/sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out @@ -111,20 +111,20 @@ end user.s4_1; function user.s12_1():void; X_1:void := querylog.define("explain select reverse(x) from udf_reverse;", "sequential_pipe", 22:int); X_22 := bat.new(nil:str); - X_29 := bat.append(X_22, "sys.L2"); + X_28 := bat.new(nil:int); + X_26 := bat.new(nil:int); + X_25 := bat.new(nil:str); X_24 := bat.new(nil:str); - X_31 := bat.append(X_24, "L2"); - X_25 := bat.new(nil:str); - X_33 := bat.append(X_25, "clob"); - X_26 := bat.new(nil:int); - X_35 := bat.append(X_26, 0:int); - X_28 := bat.new(nil:int); - X_36 := bat.append(X_28, 0:int); X_4 := sql.mvc(); C_5:bat[:oid] := sql.tid(X_4, "sys", "udf_reverse"); X_8:bat[:str] := sql.bind(X_4, "sys", "udf_reverse", "x", 0:int); X_17 := algebra.projection(C_5, X_8); X_18:bat[:str] := batudf.reverse(X_17); + X_29 := bat.append(X_22, "sys.L2"); + X_31 := bat.append(X_24, "L2"); + X_33 := bat.append(X_25, "clob"); + X_35 := bat.append(X_26, 0:int); + X_36 := bat.append(X_28, 0:int); sql.resultSet(X_29, X_31, X_33, X_35, X_36, X_18); end user.s12_1; #inline actions= 0 time=4 usec diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -2632,6 +2632,8 @@ rel2bin_groupby(backend *be, sql_rel *re assert(0); return NULL; } + if (!gbcol->nrcols) + gbcol = stmt_const(be, bin_first_column(be, sub), gbcol); groupby = stmt_group(be, gbcol, grp, ext, cnt, !en->next); grp = stmt_result(be, groupby, 0); ext = stmt_result(be, groupby, 1); diff --git a/sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out b/sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out --- a/sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out +++ b/sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out @@ -36,21 +36,20 @@ Ready. % .explain # table_name % mal # name % clob # type -% 121 # length +% 122 # length function user.s8_1():void; - X_58:void := querylog.define("explain alter table blabla add constraint dada unique (id);","sequential_pipe",16:int); -# querylog.define("explain alter table blabla add constraint dada unique (id);","sequential_pipe") - sql.catalog(29:int,"sys",nil:ptr,0:int); - X_39 := bat.new(nil:int); - C_42 := algebra.subselect(X_39,nil:int,nil:int,true,true,true); - X_45 := algebra.projection(C_42,X_39); - (X_46,X_47,X_48) := group.groupdone(X_45); - X_49:lng := aggr.sum(X_48); - X_53 := aggr.count(X_48); - X_51:bit := calc.isnil(X_49); - X_52:lng := calc.ifthenelse(X_51,0:lng,X_49); - X_54:bit := calc.!=(X_53,X_52); - sql.assert(X_54,"UPDATE: UNIQUE constraint 'blabla.dada' violated"); + X_1:void := querylog.define("explain alter table blabla add constraint dada unique (id);", "sequential_pipe", 40:int); + sqlcatalog.alter_table("sys", "blabla", nil:ptr, 0:int); + X_40 := bat.new(nil:int); + C_43 := algebra.select(X_40, nil:int, nil:int, true, true, true); + X_46 := algebra.projection(C_43, X_40); + (X_47, C_48, X_49) := group.groupdone(X_46); + X_50:lng := aggr.sum(X_49); + X_54 := aggr.count(X_49); + X_52:bit := calc.isnil(X_50); + X_53:lng := calc.ifthenelse(X_52, 0:lng, X_50); + X_55:bit := calc.!=(X_54, X_53); + sql.assert(X_55, "UPDATE: UNIQUE constraint 'blabla.dada' violated"); sql.exportOperation(); end user.s8_1; #inline actions= 0 time=1 usec @@ -78,21 +77,20 @@ end user.s8_1; % .explain # table_name % mal # name % clob # type -% 121 # length +% 122 # length function user.s10_1():void; - X_58:void := querylog.define("explain alter table blabla add constraint dada unique (id);","sequential_pipe",16:int); -# querylog.define("explain alter table blabla add constraint dada unique (id);","sequential_pipe") - sql.catalog(29:int,"sys",nil:ptr,0:int); - X_39 := bat.new(nil:int); - C_42 := algebra.subselect(X_39,nil:int,nil:int,true,true,true); - X_45 := algebra.projection(C_42,X_39); - (X_46,X_47,X_48) := group.groupdone(X_45); - X_49:lng := aggr.sum(X_48); - X_53 := aggr.count(X_48); - X_51:bit := calc.isnil(X_49); - X_52:lng := calc.ifthenelse(X_51,0:lng,X_49); - X_54:bit := calc.!=(X_53,X_52); - sql.assert(X_54,"UPDATE: UNIQUE constraint 'blabla.dada' violated"); + X_1:void := querylog.define("explain alter table blabla add constraint dada unique (id);", "sequential_pipe", 40:int); + sqlcatalog.alter_table("sys", "blabla", nil:ptr, 0:int); + X_40 := bat.new(nil:int); + C_43 := algebra.select(X_40, nil:int, nil:int, true, true, true); + X_46 := algebra.projection(C_43, X_40); + (X_47, C_48, X_49) := group.groupdone(X_46); + X_50:lng := aggr.sum(X_49); + X_54 := aggr.count(X_49); + X_52:bit := calc.isnil(X_50); + X_53:lng := calc.ifthenelse(X_52, 0:lng, X_50); + X_55:bit := calc.!=(X_54, X_53); + sql.assert(X_55, "UPDATE: UNIQUE constraint 'blabla.dada' violated"); sql.exportOperation(); end user.s10_1; #inline actions= 0 time=1 usec @@ -132,21 +130,20 @@ end user.s10_1; % .explain # table_name % mal # name % clob # type -% 121 # length +% 122 # length function user.s18_1():void; - X_58:void := querylog.define("explain alter table blabla add constraint dada unique (id);","sequential_pipe",16:int); -# querylog.define("explain alter table blabla add constraint dada unique (id);","sequential_pipe") - sql.catalog(29:int,"sys",nil:ptr,0:int); - X_39 := bat.new(nil:int); - C_42 := algebra.subselect(X_39,nil:int,nil:int,true,true,true); - X_45 := algebra.projection(C_42,X_39); - (X_46,X_47,X_48) := group.groupdone(X_45); - X_49:lng := aggr.sum(X_48); - X_53 := aggr.count(X_48); - X_51:bit := calc.isnil(X_49); - X_52:lng := calc.ifthenelse(X_51,0:lng,X_49); - X_54:bit := calc.!=(X_53,X_52); - sql.assert(X_54,"UPDATE: UNIQUE constraint 'blabla.dada' violated"); + X_1:void := querylog.define("explain alter table blabla add constraint dada unique (id);", "sequential_pipe", 40:int); + sqlcatalog.alter_table("sys", "blabla", nil:ptr, 0:int); + X_40 := bat.new(nil:int); + C_43 := algebra.select(X_40, nil:int, nil:int, true, true, true); + X_46 := algebra.projection(C_43, X_40); + (X_47, C_48, X_49) := group.groupdone(X_46); + X_50:lng := aggr.sum(X_49); + X_54 := aggr.count(X_49); + X_52:bit := calc.isnil(X_50); + X_53:lng := calc.ifthenelse(X_52, 0:lng, X_50); + X_55:bit := calc.!=(X_54, X_53); + sql.assert(X_55, "UPDATE: UNIQUE constraint 'blabla.dada' violated"); sql.exportOperation(); end user.s18_1; #inline actions= 0 time=1 usec diff --git a/sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out b/sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out --- a/sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out +++ b/sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out @@ -22,7 +22,7 @@ Ready. #debug select * from tables; mdb>#X_1=0@0:void := querylog.define("debug select * from tables;", "sequential_pipe", 191:int); -mdb>#X_195=nil:bat[:str] := bat.new(nil:str); +mdb>#X_161=nil:bat[:int] := bat.new(nil:int); # 16:24:01 > # 16:24:01 > "Done." diff --git a/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out.32bit b/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out.32bit --- a/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out.32bit +++ b/sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out.32bit @@ -38,42 +38,55 @@ Ready. _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list