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

Reply via email to