Changeset: fe4f0ebb6f0f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fe4f0ebb6f0f Added Files: sql/test/BugTracker-2014/Tests/union_with_subqueries.Bug-3518.sql sql/test/BugTracker-2014/Tests/union_with_subqueries.Bug-3518.stable.err sql/test/BugTracker-2014/Tests/union_with_subqueries.Bug-3518.stable.out sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.sql sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.err sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.out Modified Files: buildtools/autogen/autogen/am.py clients/R/MonetDB.R/R/monetdb.R monetdb5/optimizer/opt_mergetable.c sql/backends/monet5/rel_bin.c sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out sql/benchmarks/tpch/LOCKED/Tests/18.stable.out sql/benchmarks/tpch/Tests/01-22.stable.out sql/benchmarks/tpch/Tests/16-explain.stable.out sql/benchmarks/tpch/Tests/16-plan.stable.out sql/benchmarks/tpch/Tests/18-explain.stable.out sql/benchmarks/tpch/Tests/18-plan.stable.out sql/benchmarks/tpch/Tests/18.stable.out sql/benchmarks/tpch/Tests/20-explain.stable.out sql/benchmarks/tpch/Tests/20-plan.stable.out sql/server/rel_exp.c sql/server/rel_optimizer.c sql/test/BugTracker-2014/Tests/All Branch: bamloader Log Message:
Merge with default branch. diffs (truncated from 1278 to 300 lines): diff --git a/buildtools/autogen/autogen/am.py b/buildtools/autogen/autogen/am.py --- a/buildtools/autogen/autogen/am.py +++ b/buildtools/autogen/autogen/am.py @@ -1046,7 +1046,7 @@ def am_ant(fd, var, ant, am): if "COND" in ant: fd.write("\nif " + ant["COND"][0] +"\n\n") - fd.write("\n%s_ant_target:\n\t\"$(ANT)\" -f \"`$(anttranslatepath) $(srcdir)/build.xml`\" -Dbuilddir=\"`$(anttranslatepath) $(PWD)/%s`\" -Djardir=\"`$(anttranslatepath) $(PWD)`\" -Dbasedir=\"`$(anttranslatepath) $(srcdir)`\" %s\n" % (target, target, target)) + fd.write("\n%s_ant_target:\n\t\"$(ANT)\" -f \"`$(anttranslatepath) $(srcdir)/build.xml`\" -Dbuilddir=\"`$(anttranslatepath) $(PWD)`/%s\" -Djardir=\"`$(anttranslatepath) $(PWD)`\" -Dbasedir=\"`$(anttranslatepath) $(srcdir)`\" %s\n" % (target, target, target)) for file in ant['FILES']: sfile = file.replace(".", "_") diff --git a/clients/R/MonetDB.R/R/monetdb.R b/clients/R/MonetDB.R/R/monetdb.R --- a/clients/R/MonetDB.R/R/monetdb.R +++ b/clients/R/MonetDB.R/R/monetdb.R @@ -148,7 +148,7 @@ setMethod("dbDisconnect", "MonetDBConnec }) setMethod("dbListTables", "MonetDBConnection", def=function(conn, ..., sys_tables=F, schema_names=F, quote=F) { - q <- "select schemas.name as sn, tables.name as tn from tables join sys.schemas on tables.schema_id=schemas.id" + q <- "select schemas.name as sn, tables.name as tn from sys.tables join sys.schemas on tables.schema_id=schemas.id" if (!sys_tables) q <- paste0(q, " where tables.system=false") df <- dbGetQuery(conn, q) if (quote) { diff --git a/monetdb5/optimizer/opt_mergetable.c b/monetdb5/optimizer/opt_mergetable.c --- a/monetdb5/optimizer/opt_mergetable.c +++ b/monetdb5/optimizer/opt_mergetable.c @@ -710,18 +710,6 @@ mat_aggr(MalBlkPtr mb, InstrPtr p, mat_t s = pushArgument(mb, s, getArg(r,0)); pushInstruction(mb, s); r = s; - -/* DEAD CODE FOUND BY COVERITY - if (isAvg) { - s = newInstruction(mb,ASSIGNsymbol); - setModuleId(s, algebraRef); - setFunctionId(s, selectNotNilRef); - getArg(s,0) = newTmpVariable(mb, battp2); - s = pushArgument(mb, s, getArg(u,0)); - pushInstruction(mb, s); - u = s; - } -*/ } /* for avg we do sum (avg*(count/sumcount) ) */ 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 @@ -2516,7 +2516,9 @@ rel2bin_groupby( mvc *sql, sql_rel *rel, stmt *aggrstmt = NULL; - /* first look in the group by column list */ + /* first look in the current aggr list (l) and group by column list */ + if (l && !aggrstmt && aggrexp->type == e_column) + aggrstmt = list_find_column(sql->sa, l, aggrexp->l, aggrexp->r); if (gbexps && !aggrstmt && aggrexp->type == e_column) { aggrstmt = list_find_column(sql->sa, gbexps, aggrexp->l, aggrexp->r); if (aggrstmt && groupby) diff --git a/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out b/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out --- a/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out +++ b/sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out @@ -1216,7 +1216,7 @@ Ready. % rewrite, count # name % clob, int # type % 7, 1 # length -[ "joinidx", 2 ] +[ "joinidx", 1 ] # 11:48:06 > # 11:48:06 > Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb --host=localhost --port=35781 diff --git a/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out b/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out --- a/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out +++ b/sql/benchmarks/tpch/LOCKED/Tests/18.stable.out @@ -70,7 +70,7 @@ Ready. % rewrite, count # name % clob, int # type % 7, 1 # length -[ "joinidx", 2 ] +[ "joinidx", 1 ] # 09:17:20 > # 09:17:20 > Done. diff --git a/sql/benchmarks/tpch/Tests/01-22.stable.out b/sql/benchmarks/tpch/Tests/01-22.stable.out --- a/sql/benchmarks/tpch/Tests/01-22.stable.out +++ b/sql/benchmarks/tpch/Tests/01-22.stable.out @@ -1216,7 +1216,7 @@ Ready. % rewrite, count # name % clob, int # type % 7, 1 # length -[ "joinidx", 2 ] +[ "joinidx", 1 ] # 11:48:06 > # 11:48:06 > Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb --host=localhost --port=35781 diff --git a/sql/benchmarks/tpch/Tests/16-explain.stable.out b/sql/benchmarks/tpch/Tests/16-explain.stable.out --- a/sql/benchmarks/tpch/Tests/16-explain.stable.out +++ b/sql/benchmarks/tpch/Tests/16-explain.stable.out @@ -63,94 +63,94 @@ Ready. function user.s2_1{autoCommit=true}(A0:str,A1:str,A2:int,A3:int,A4:int,A5:int,A6:int,A7:int,A8:int,A9:int,A10:str):void; X_13 := sql.mvc(); X_14:bat[:oid,:oid] := sql.tid(X_13,"sys","partsupp"); - X_17 := sql.bind_idxbat(X_13,"sys","partsupp","partsupp_ps_partkey_fkey",0); - (X_20,r1_20) := sql.bind_idxbat(X_13,"sys","partsupp","partsupp_ps_partkey_fkey",2); - X_23 := sql.bind_idxbat(X_13,"sys","partsupp","partsupp_ps_partkey_fkey",1); + X_17 := sql.bind(X_13,"sys","partsupp","ps_suppkey",0); + (X_20,r1_20) := sql.bind(X_13,"sys","partsupp","ps_suppkey",2); + X_23 := sql.bind(X_13,"sys","partsupp","ps_suppkey",1); X_25 := sql.delta(X_17,X_20,r1_20,X_23); X_26 := algebra.leftfetchjoin(X_14,X_25); - X_27:bat[:oid,:oid] := sql.tid(X_13,"sys","part"); - X_29 := sql.bind(X_13,"sys","part","p_size",0); - (X_31,r1_31) := sql.bind(X_13,"sys","part","p_size",2); - X_33 := sql.bind(X_13,"sys","part","p_size",1); - X_34 := sql.delta(X_29,X_31,r1_31,X_33); - X_35 := algebra.leftfetchjoin(X_27,X_34); - X_36 := sql.bind(X_13,"sys","part","p_type",0); - (X_38,r1_39) := sql.bind(X_13,"sys","part","p_type",2); - X_40 := sql.bind(X_13,"sys","part","p_type",1); - X_41 := sql.delta(X_36,X_38,r1_39,X_40); - X_42 := algebra.leftfetchjoin(X_27,X_41); - X_44 := sql.bind(X_13,"sys","part","p_brand",0); - (X_47,r1_50) := sql.bind(X_13,"sys","part","p_brand",2); - X_49 := sql.bind(X_13,"sys","part","p_brand",1); - X_50 := sql.delta(X_44,X_47,r1_50,X_49); - X_51 := algebra.leftfetchjoin(X_27,X_50); - X_52 := algebra.subselect(X_51,A0,A0,true,true,true); - X_54 := algebra.likesubselect(X_42,X_52,A1,"",true); - X_55 := algebra.subselect(X_35,X_54,A2,A2,true,true,false); - X_57 := algebra.subselect(X_35,X_54,A3,A3,true,true,false); - X_58 := bat.mergecand(X_55,X_57); - X_59 := algebra.subselect(X_35,X_54,A4,A4,true,true,false); - X_60 := bat.mergecand(X_58,X_59); - X_61 := algebra.subselect(X_35,X_54,A5,A5,true,true,false); - X_62 := bat.mergecand(X_60,X_61); - X_63 := algebra.subselect(X_35,X_54,A6,A6,true,true,false); - X_64 := bat.mergecand(X_62,X_63); - X_65 := algebra.subselect(X_35,X_54,A7,A7,true,true,false); - X_66 := bat.mergecand(X_64,X_65); - X_67 := algebra.subselect(X_35,X_54,A8,A8,true,true,false); - X_68 := bat.mergecand(X_66,X_67); - X_69 := algebra.subselect(X_35,X_54,A9,A9,true,true,false); - X_70 := bat.mergecand(X_68,X_69); - X_71 := algebra.leftfetchjoin(X_70,X_27); - (X_72,r1_83) := algebra.join(X_26,X_71); - X_74 := sql.bind(X_13,"sys","partsupp","ps_suppkey",0); - (X_79,r1_90) := sql.bind(X_13,"sys","partsupp","ps_suppkey",2); - X_82 := sql.bind(X_13,"sys","partsupp","ps_suppkey",1); - X_84 := sql.delta(X_74,X_79,r1_90,X_82); - X_85:bat[:oid,:int] := algebra.leftfetchjoinPath(X_72,X_14,X_84); - X_86 := bat.mirror(X_85); - X_87:bat[:oid,:oid] := sql.tid(X_13,"sys","supplier"); - X_89 := sql.bind(X_13,"sys","supplier","s_comment",0); - (X_91,r1_103) := sql.bind(X_13,"sys","supplier","s_comment",2); - X_93 := sql.bind(X_13,"sys","supplier","s_comment",1); - X_94 := sql.delta(X_89,X_91,r1_103,X_93); - X_95 := algebra.leftfetchjoin(X_87,X_94); - X_97 := algebra.likesubselect(X_95,A10,"",false); - X_99 := sql.bind(X_13,"sys","supplier","s_suppkey",0); - (X_101,r1_115) := sql.bind(X_13,"sys","supplier","s_suppkey",2); - X_103 := sql.bind(X_13,"sys","supplier","s_suppkey",1); - X_104 := sql.delta(X_99,X_101,r1_115,X_103); - X_105:bat[:oid,:int] := algebra.leftfetchjoinPath(X_97,X_87,X_104); - (X_106,r1_121) := algebra.join(X_85,X_105); - X_108 := algebra.tdiff(X_86,X_106); - X_207 := algebra.leftfetchjoin(X_108,r1_83); - X_109:bat[:oid,:str] := algebra.leftfetchjoinPath(X_207,X_70,X_42); - X_110:bat[:oid,:str] := algebra.leftfetchjoinPath(X_207,X_70,X_51); - X_111:bat[:oid,:int] := algebra.leftfetchjoinPath(X_207,X_70,X_35); - X_112 := algebra.leftfetchjoin(X_108,X_85); - (X_113,r1_134,r2_134) := group.subgroup(X_112); - (X_116,r1_137,r2_137) := group.subgroup(X_111,X_113); - (X_119,r1_140,r2_140) := group.subgroup(X_110,X_116); - (X_122,r1_143,r2_143) := group.subgroupdone(X_109,X_119); - X_125 := algebra.leftfetchjoin(r1_143,X_109); - X_126 := algebra.leftfetchjoin(r1_143,X_110); - X_127 := algebra.leftfetchjoin(r1_143,X_111); - X_140 := algebra.leftfetchjoin(r1_143,X_112); - (X_128,r1_149,r2_149) := group.subgroup(X_127); - (X_131,r1_152,r2_152) := group.subgroup(X_126,X_128); - (X_134,r1_155,r2_155) := group.subgroupdone(X_125,X_131); - X_137 := algebra.leftfetchjoin(r1_155,X_127); - X_138 := algebra.leftfetchjoin(r1_155,X_125); - X_139 := algebra.leftfetchjoin(r1_155,X_126); - X_141:bat[:oid,:wrd] := aggr.subcount(X_140,X_134,r1_155,true); - (X_143,r1_164,r2_164) := algebra.subsort(X_141,true,false); - (X_147,r1_168,r2_168) := algebra.subsort(X_139,r1_164,r2_164,false,false); - (X_150,r1_171,r2_171) := algebra.subsort(X_138,r1_168,r2_168,false,false); - (X_153,r1_174,r2_174) := algebra.subsort(X_137,r1_171,r2_171,false,false); - X_156 := algebra.leftfetchjoin(r1_174,X_139); - X_159 := algebra.leftfetchjoin(r1_174,X_141); - X_158 := algebra.leftfetchjoin(r1_174,X_137); - X_157 := algebra.leftfetchjoin(r1_174,X_138); + X_27 := bat.mirror(X_26); + X_28:bat[:oid,:oid] := sql.tid(X_13,"sys","supplier"); + X_30 := sql.bind(X_13,"sys","supplier","s_comment",0); + (X_32,r1_32) := sql.bind(X_13,"sys","supplier","s_comment",2); + X_34 := sql.bind(X_13,"sys","supplier","s_comment",1); + X_35 := sql.delta(X_30,X_32,r1_32,X_34); + X_36 := algebra.leftfetchjoin(X_28,X_35); + X_38 := algebra.likesubselect(X_36,A10,"",false); + X_40 := sql.bind(X_13,"sys","supplier","s_suppkey",0); + (X_42,r1_44) := sql.bind(X_13,"sys","supplier","s_suppkey",2); + X_44 := sql.bind(X_13,"sys","supplier","s_suppkey",1); + X_45 := sql.delta(X_40,X_42,r1_44,X_44); + X_46:bat[:oid,:int] := algebra.leftfetchjoinPath(X_38,X_28,X_45); + (X_47,r1_50) := algebra.join(X_26,X_46); + X_49 := algebra.tdiff(X_27,X_47); + X_50 := sql.bind_idxbat(X_13,"sys","partsupp","partsupp_ps_partkey_fkey",0); + (X_55,r1_58) := sql.bind_idxbat(X_13,"sys","partsupp","partsupp_ps_partkey_fkey",2); + X_58 := sql.bind_idxbat(X_13,"sys","partsupp","partsupp_ps_partkey_fkey",1); + X_60 := sql.delta(X_50,X_55,r1_58,X_58); + X_61:bat[:oid,:oid] := algebra.leftfetchjoinPath(X_49,X_14,X_60); + X_62:bat[:oid,:oid] := sql.tid(X_13,"sys","part"); + X_64 := sql.bind(X_13,"sys","part","p_size",0); + (X_66,r1_70) := sql.bind(X_13,"sys","part","p_size",2); + X_68 := sql.bind(X_13,"sys","part","p_size",1); + X_69 := sql.delta(X_64,X_66,r1_70,X_68); + X_70 := algebra.leftfetchjoin(X_62,X_69); + X_71 := sql.bind(X_13,"sys","part","p_type",0); + (X_73,r1_78) := sql.bind(X_13,"sys","part","p_type",2); + X_75 := sql.bind(X_13,"sys","part","p_type",1); + X_76 := sql.delta(X_71,X_73,r1_78,X_75); + X_77 := algebra.leftfetchjoin(X_62,X_76); + X_79 := sql.bind(X_13,"sys","part","p_brand",0); + (X_82,r1_89) := sql.bind(X_13,"sys","part","p_brand",2); + X_84 := sql.bind(X_13,"sys","part","p_brand",1); + X_85 := sql.delta(X_79,X_82,r1_89,X_84); + X_86 := algebra.leftfetchjoin(X_62,X_85); + X_87 := algebra.subselect(X_86,A0,A0,true,true,true); + X_89 := algebra.likesubselect(X_77,X_87,A1,"",true); + X_90 := algebra.subselect(X_70,X_89,A2,A2,true,true,false); + X_92 := algebra.subselect(X_70,X_89,A3,A3,true,true,false); + X_93 := bat.mergecand(X_90,X_92); + X_94 := algebra.subselect(X_70,X_89,A4,A4,true,true,false); + X_95 := bat.mergecand(X_93,X_94); + X_96 := algebra.subselect(X_70,X_89,A5,A5,true,true,false); + X_97 := bat.mergecand(X_95,X_96); + X_98 := algebra.subselect(X_70,X_89,A6,A6,true,true,false); + X_99 := bat.mergecand(X_97,X_98); + X_100 := algebra.subselect(X_70,X_89,A7,A7,true,true,false); + X_101 := bat.mergecand(X_99,X_100); + X_102 := algebra.subselect(X_70,X_89,A8,A8,true,true,false); + X_103 := bat.mergecand(X_101,X_102); + X_104 := algebra.subselect(X_70,X_89,A9,A9,true,true,false); + X_105 := bat.mergecand(X_103,X_104); + X_106 := algebra.leftfetchjoin(X_105,X_62); + (X_107,r1_122) := algebra.join(X_61,X_106); + X_207 := algebra.leftfetchjoin(r1_122,X_105); + X_109:bat[:oid,:str] := algebra.leftfetchjoin(X_207,X_77); + X_110:bat[:oid,:str] := algebra.leftfetchjoin(X_207,X_86); + X_111:bat[:oid,:int] := algebra.leftfetchjoin(X_207,X_70); + X_112:bat[:oid,:int] := algebra.leftfetchjoinPath(X_107,X_49,X_26); + (X_113,r1_132,r2_132) := group.subgroup(X_112); + (X_116,r1_135,r2_135) := group.subgroup(X_111,X_113); + (X_119,r1_138,r2_138) := group.subgroup(X_110,X_116); + (X_122,r1_141,r2_141) := group.subgroupdone(X_109,X_119); + X_125 := algebra.leftfetchjoin(r1_141,X_109); + X_126 := algebra.leftfetchjoin(r1_141,X_110); + X_127 := algebra.leftfetchjoin(r1_141,X_111); + X_140 := algebra.leftfetchjoin(r1_141,X_112); + (X_128,r1_147,r2_147) := group.subgroup(X_127); + (X_131,r1_150,r2_150) := group.subgroup(X_126,X_128); + (X_134,r1_153,r2_153) := group.subgroupdone(X_125,X_131); + X_137 := algebra.leftfetchjoin(r1_153,X_127); + X_138 := algebra.leftfetchjoin(r1_153,X_125); + X_139 := algebra.leftfetchjoin(r1_153,X_126); + X_141:bat[:oid,:wrd] := aggr.subcount(X_140,X_134,r1_153,true); + (X_143,r1_162,r2_162) := algebra.subsort(X_141,true,false); + (X_147,r1_166,r2_166) := algebra.subsort(X_139,r1_162,r2_162,false,false); + (X_150,r1_169,r2_169) := algebra.subsort(X_138,r1_166,r2_166,false,false); + (X_153,r1_172,r2_172) := algebra.subsort(X_137,r1_169,r2_169,false,false); + X_156 := algebra.leftfetchjoin(r1_172,X_139); + X_159 := algebra.leftfetchjoin(r1_172,X_141); + X_158 := algebra.leftfetchjoin(r1_172,X_137); + X_157 := algebra.leftfetchjoin(r1_172,X_138); X_160 := sql.resultSet(4,1,X_156); sql.rsColumn(X_160,"sys.part","p_brand","varchar",10,0,X_156); sql.rsColumn(X_160,"sys.part","p_type","varchar",25,0,X_157); diff --git a/sql/benchmarks/tpch/Tests/16-plan.stable.out b/sql/benchmarks/tpch/Tests/16-plan.stable.out --- a/sql/benchmarks/tpch/Tests/16-plan.stable.out +++ b/sql/benchmarks/tpch/Tests/16-plan.stable.out @@ -58,24 +58,24 @@ Ready. % .plan # table_name % rel # name % clob # type -% 337 # length +% 335 # length project ( | group by ( | | group by ( | | | project ( -| | | | antijoin ( -| | | | | join ( +| | | | join ( +| | | | | antijoin ( | | | | | | table(sys.partsupp) [ partsupp.ps_suppkey NOT NULL, partsupp.%partsupp_ps_partkey_fkey NOT NULL JOINIDX sys.partsupp.partsupp_ps_partkey_fkey ] COUNT , -| | | | | | select ( -| | | | | | | table(sys.part) [ part.p_brand NOT NULL, part.p_type NOT NULL, part.p_size NOT NULL, part.%TID% NOT NULL ] COUNT _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list