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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list