Changeset: 1f13da8eb937 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1f13da8eb937
Modified Files:
        clients/R/MonetDB.R/R/dplyr.R
        gdk/gdk_imprints.c
        monetdb5/modules/mal/Tests/inspect05.stable.out
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.sql
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
Branch: default
Log Message:

Merge with Oct2014 branch.


diffs (truncated from 636 to 300 lines):

diff --git a/clients/R/MonetDB.R/R/dplyr.R b/clients/R/MonetDB.R/R/dplyr.R
--- a/clients/R/MonetDB.R/R/dplyr.R
+++ b/clients/R/MonetDB.R/R/dplyr.R
@@ -1,19 +1,19 @@
 src_monetdb <- function(dbname, host = "localhost", port = 50000L, user = 
"monetdb",
   password = "monetdb", ...) {
-  require(dplyr)
+  requireNamespace("dplyr", quietly = TRUE)
   con <- dbConnect(MonetDB.R(), dbname = dbname , host = host, port = port,
     user = user, password = password, ...)
-  src_sql("monetdb", con, info = dbGetInfo(con))
+  dplyr::src_sql("monetdb", con, info = dbGetInfo(con))
 }
 
 src_translate_env.src_monetdb <- function(x) {
-  sql_variant(
-    base_scalar,
-    sql_translator(.parent = base_agg,
-      n = function() sql("COUNT(*)"),
-      sd =  sql_prefix("STDDEV_SAMP"),
-      var = sql_prefix("VAR_SAMP"),
-      median = sql_prefix("MEDIAN")
+  dplyr::sql_variant(
+    dplyr::base_scalar,
+    dplyr::sql_translator(.parent = dplyr::base_agg,
+      n = function() dplyr::sql("COUNT(*)"),
+      sd =  dplyr::sql_prefix("STDDEV_SAMP"),
+      var = dplyr::sql_prefix("VAR_SAMP"),
+      median = dplyr::sql_prefix("MEDIAN")
     )
   )
 }
@@ -24,12 +24,12 @@ src_desc.src_monetdb <- function(x) {
 
 tbl.src_monetdb <- function(src, from, ...) {
   monetdb_check_subquery(from)
-  tbl_sql("monetdb", src = src, from = from, ...)
+  dplyr::tbl_sql("monetdb", src = src, from = from, ...)
 }
 
 db_query_fields.MonetDBConnection <- function(con, sql, ...) {
   # prepare gives us column info without actually running a query. Nice.
-  dbGetQuery(con, build_sql("PREPARE SELECT * FROM ", sql))$column
+  dbGetQuery(con, dplyr::build_sql("PREPARE SELECT * FROM ", sql))$column
 }
 
 db_query_rows.MonetDBConnection <- function(con, sql, ...) {
@@ -43,7 +43,7 @@ db_insert_into.MonetDBConnection <- func
 
 db_save_query.MonetDBConnection <- function(con, sql, name, temporary = TRUE,
                                             ...) {
-  tt_sql <- build_sql("CREATE TEMPORARY TABLE ", ident(name), " AS ",
+  tt_sql <- dplyr::build_sql("CREATE TEMPORARY TABLE ", dplyr::ident(name), " 
AS ",
     sql, " WITH DATA", con = con)
   dbGetQuery(con, tt_sql)
   name
@@ -59,9 +59,9 @@ db_analyze.MonetDBConnection <- function
 }
 
 sql_subquery.MonetDBConnection <- function(con, sql, name = unique_name(), 
...) {
-  if (is.ident(sql)) return(sql)
+  if (dplyr::is.ident(sql)) return(sql)
   monetdb_check_subquery(sql)
-  build_sql("(", sql, ") AS ", ident(name), con = con)
+  dplyr::build_sql("(", sql, ") AS ", dplyr::ident(name), con = con)
 }
 
 monetdb_check_subquery <- function(sql) {
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -896,14 +896,15 @@ IMPSremove(BAT *b)
        assert(!VIEWtparent(b));
 
        MT_lock_set(&GDKimprintsLock(abs(b->batCacheid)), "BATimprints");
-       imprints = b->T->imprints;
-       b->T->imprints = NULL;
+       if ((imprints = b->T->imprints) != NULL) {
+               b->T->imprints = NULL;
 
-       HEAPdelete(imprints->imprints, BBP_physical(b->batCacheid),
-                  b->batCacheid > 0 ? "timprints" : "himprints");
+               HEAPdelete(imprints->imprints, BBP_physical(b->batCacheid),
+                          b->batCacheid > 0 ? "timprints" : "himprints");
 
-       GDKfree(imprints->imprints);
-       GDKfree(imprints);
+               GDKfree(imprints->imprints);
+               GDKfree(imprints);
+       }
 
        MT_lock_unset(&GDKimprintsLock(abs(b->batCacheid)), "BATimprints");
 
diff --git a/monetdb5/modules/mal/Tests/inspect05.stable.out 
b/monetdb5/modules/mal/Tests/inspect05.stable.out
--- a/monetdb5/modules/mal/Tests/inspect05.stable.out
+++ b/monetdb5/modules/mal/Tests/inspect05.stable.out
@@ -79,9 +79,9 @@ end main;
 [ "imprintsize",       "command",      "bat",  "(b:bat[:oid,:bte]):lng ",      
"CMDBATimprintsize;"  ]
 [ "info",      "command",      "bat",  "(b:bat[:oid,:any_2]) 
(X_2:bat[:oid,:str],X_3:bat[:oid,:str]) ",        "BKCinfo;"  ]
 [ "inplace",                             "command",      "bat",          
"(o:bat[:any_1,:any_2],d:bat[:any_1,:any_2],force:bit):bat[:any_1,:any_2] ",    
                                                "BKCbat_inplace_force;"         
                ]
-[ "inplace",                             "command",      "bat",          
"(o:bat[:any_1,:any_2],id:any_1,t:any_2,force:bit):bat[:any_1,:any_2] ",        
                                                "BKCbun_inplace_force;"         
                ]
+[ "inplace",   "command",      "bat",  
"(o:bat[:any_1,:any_2],id:oid,t:any_2,force:bit):bat[:oid,:any_2] ",    
"BKCbun_inplace_force;"  ]
 [ "inplace",                             "command",      "bat",          
"(o:bat[:any_1,:any_2],d:bat[:any_1,:any_2]):bat[:any_1,:any_2] ",              
                                                "BKCbat_inplace;"               
                ]
-[ "inplace",                             "command",      "bat",          
"(o:bat[:any_1,:any_2],id:any_1,t:any_2):bat[:any_1,:any_2] ",                  
                                                "BKCbun_inplace;"               
                ]
+[ "inplace",   "command",      "bat",  
"(o:bat[:any_1,:any_2],id:oid,t:any_2):bat[:oid,:any_2] ",      
"BKCbun_inplace;"  ]
 [ "insert",                      "command",      "bat",          
"(b:bat[:any_1,:any_2],h:any_1,t:any_2,force:bit):bat[:any_1,:any_2] ",         
                                                        "BKCinsert_bun_force;"  
                                ]
 [ "insert",                      "command",      "bat",          
"(b:bat[:any_1,:any_2],h:any_1,t:any_2):bat[:any_1,:any_2] ",                   
                                                        "BKCinsert_bun;"        
                                ]
 [ "insert",                      "command",      "bat",          
"(b:bat[:any_1,:any_2],src:bat[:any_1,:any_2],force:bit):bat[:any_1,:any_2] ",  
                                                        "BKCinsert_bat_force;"  
                                ]
diff --git a/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.sql 
b/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.sql
--- a/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.sql
+++ b/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.sql
@@ -1,3 +1,4 @@
+set optimizer='sequential_pipe';
 explain select replace(a1,a2,a3), id
 from (
   select name as a1, 'a' as a2, 'A' as a3, id as id 
diff --git a/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out 
b/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
--- a/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
+++ b/sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
@@ -61,124 +61,28 @@ Ready.
 % .explain # table_name
 % mal # name
 % clob # type
-% 173 # length
-function user.s1_1{autoCommit=true}(A0:str,A1:str):void;
-barrier X_189 := language.dataflow();
+% 176 # length
+function user.s2_1{autoCommit=true}(A0:str,A1:str):void;
     X_4 := sql.mvc();
-    X_44:bat[:oid,:oid]  := sql.tid(X_4,"sys","functions",0,8);
-    X_59:bat[:oid,:str]  := sql.bind(X_4,"sys","functions","name",0,0,8);
-    (X_67:bat[:oid,:oid] ,X_68:bat[:oid,:str] ) := 
sql.bind(X_4,"sys","functions","name",2,0,8);
-    X_117 := sql.delta(X_59,X_67,X_68);
-    X_125 := algebra.leftfetchjoin(X_44,X_117);
-    X_140 := mal.manifold("str","replace",X_125,A0,A1);
-    X_46:bat[:oid,:oid]  := sql.tid(X_4,"sys","functions",1,8);
-    X_60:bat[:oid,:str]  := sql.bind(X_4,"sys","functions","name",0,1,8);
-    (X_69:bat[:oid,:oid] ,X_70:bat[:oid,:str] ) := 
sql.bind(X_4,"sys","functions","name",2,1,8);
-    X_118 := sql.delta(X_60,X_69,X_70);
-    X_127 := algebra.leftfetchjoin(X_46,X_118);
-    X_141 := mal.manifold("str","replace",X_127,A0,A1);
-    X_48:bat[:oid,:oid]  := sql.tid(X_4,"sys","functions",2,8);
-    X_61:bat[:oid,:str]  := sql.bind(X_4,"sys","functions","name",0,2,8);
-    (X_71:bat[:oid,:oid] ,X_72:bat[:oid,:str] ) := 
sql.bind(X_4,"sys","functions","name",2,2,8);
-    X_119 := sql.delta(X_61,X_71,X_72);
-    X_129 := algebra.leftfetchjoin(X_48,X_119);
-    X_142 := mal.manifold("str","replace",X_129,A0,A1);
-    X_50:bat[:oid,:oid]  := sql.tid(X_4,"sys","functions",3,8);
-    X_62:bat[:oid,:str]  := sql.bind(X_4,"sys","functions","name",0,3,8);
-    (X_73:bat[:oid,:oid] ,X_74:bat[:oid,:str] ) := 
sql.bind(X_4,"sys","functions","name",2,3,8);
-    X_120 := sql.delta(X_62,X_73,X_74);
-    X_131 := algebra.leftfetchjoin(X_50,X_120);
-    X_143 := mal.manifold("str","replace",X_131,A0,A1);
-    X_52:bat[:oid,:oid]  := sql.tid(X_4,"sys","functions",4,8);
-    X_63:bat[:oid,:str]  := sql.bind(X_4,"sys","functions","name",0,4,8);
-    (X_75:bat[:oid,:oid] ,X_76:bat[:oid,:str] ) := 
sql.bind(X_4,"sys","functions","name",2,4,8);
-    X_121 := sql.delta(X_63,X_75,X_76);
-    X_133 := algebra.leftfetchjoin(X_52,X_121);
-    X_144 := mal.manifold("str","replace",X_133,A0,A1);
-    X_54:bat[:oid,:oid]  := sql.tid(X_4,"sys","functions",5,8);
-    X_64:bat[:oid,:str]  := sql.bind(X_4,"sys","functions","name",0,5,8);
-    (X_78:bat[:oid,:oid] ,X_79:bat[:oid,:str] ) := 
sql.bind(X_4,"sys","functions","name",2,5,8);
-    X_122 := sql.delta(X_64,X_78,X_79);
-    X_135 := algebra.leftfetchjoin(X_54,X_122);
-    X_145 := mal.manifold("str","replace",X_135,A0,A1);
-    X_56:bat[:oid,:oid]  := sql.tid(X_4,"sys","functions",6,8);
-    X_65:bat[:oid,:str]  := sql.bind(X_4,"sys","functions","name",0,6,8);
-    (X_80:bat[:oid,:oid] ,X_81:bat[:oid,:str] ) := 
sql.bind(X_4,"sys","functions","name",2,6,8);
-    X_123 := sql.delta(X_65,X_80,X_81);
-    X_137 := algebra.leftfetchjoin(X_56,X_123);
-    X_146 := mal.manifold("str","replace",X_137,A0,A1);
-    X_58:bat[:oid,:oid]  := sql.tid(X_4,"sys","functions",7,8);
-    X_66:bat[:oid,:str]  := sql.bind(X_4,"sys","functions","name",0,7,8);
-    (X_82:bat[:oid,:oid] ,X_83:bat[:oid,:str] ) := 
sql.bind(X_4,"sys","functions","name",2,7,8);
-    X_10:bat[:oid,:str]  := sql.bind(X_4,"sys","functions","name",1);
-    X_124 := sql.delta(X_66,X_82,X_83,X_10);
-    X_139 := algebra.leftfetchjoin(X_58,X_124);
-    X_147 := mal.manifold("str","replace",X_139,A0,A1);
-    X_165 := mat.packIncrement(X_140,8);
-    X_166 := mat.packIncrement(X_165,X_141);
-    X_167 := mat.packIncrement(X_166,X_142);
-    X_168 := mat.packIncrement(X_167,X_143);
-    X_169 := mat.packIncrement(X_168,X_144);
-    X_170 := mat.packIncrement(X_169,X_145);
-    X_171 := mat.packIncrement(X_170,X_146);
-    X_12:bat[:oid,:str]  := mat.packIncrement(X_171,X_147);
-    X_99:bat[:oid,:int]  := sql.bind(X_4,"sys","functions","id",0,7,8);
-    (X_115:bat[:oid,:oid] ,X_116:bat[:oid,:int] ) := 
sql.bind(X_4,"sys","functions","id",2,7,8);
-    X_16:bat[:oid,:int]  := sql.bind(X_4,"sys","functions","id",1);
-    X_156 := sql.delta(X_99,X_115,X_116,X_16);
-    X_164 := algebra.leftfetchjoin(X_58,X_156);
-    X_97:bat[:oid,:int]  := sql.bind(X_4,"sys","functions","id",0,6,8);
-    (X_113:bat[:oid,:oid] ,X_114:bat[:oid,:int] ) := 
sql.bind(X_4,"sys","functions","id",2,6,8);
-    X_155 := sql.delta(X_97,X_113,X_114);
-    X_163 := algebra.leftfetchjoin(X_56,X_155);
-    X_95:bat[:oid,:int]  := sql.bind(X_4,"sys","functions","id",0,5,8);
-    (X_111:bat[:oid,:oid] ,X_112:bat[:oid,:int] ) := 
sql.bind(X_4,"sys","functions","id",2,5,8);
-    X_154 := sql.delta(X_95,X_111,X_112);
-    X_162 := algebra.leftfetchjoin(X_54,X_154);
-    X_93:bat[:oid,:int]  := sql.bind(X_4,"sys","functions","id",0,4,8);
-    (X_108:bat[:oid,:oid] ,X_109:bat[:oid,:int] ) := 
sql.bind(X_4,"sys","functions","id",2,4,8);
-    X_153 := sql.delta(X_93,X_108,X_109);
-    X_161 := algebra.leftfetchjoin(X_52,X_153);
-    X_91:bat[:oid,:int]  := sql.bind(X_4,"sys","functions","id",0,3,8);
-    (X_106:bat[:oid,:oid] ,X_107:bat[:oid,:int] ) := 
sql.bind(X_4,"sys","functions","id",2,3,8);
-    X_152 := sql.delta(X_91,X_106,X_107);
-    X_160 := algebra.leftfetchjoin(X_50,X_152);
-    X_89:bat[:oid,:int]  := sql.bind(X_4,"sys","functions","id",0,2,8);
-    (X_104:bat[:oid,:oid] ,X_105:bat[:oid,:int] ) := 
sql.bind(X_4,"sys","functions","id",2,2,8);
-    X_151 := sql.delta(X_89,X_104,X_105);
-    X_159 := algebra.leftfetchjoin(X_48,X_151);
-    X_87:bat[:oid,:int]  := sql.bind(X_4,"sys","functions","id",0,1,8);
-    (X_102:bat[:oid,:oid] ,X_103:bat[:oid,:int] ) := 
sql.bind(X_4,"sys","functions","id",2,1,8);
-    X_150 := sql.delta(X_87,X_102,X_103);
-    X_158 := algebra.leftfetchjoin(X_46,X_150);
-    X_85:bat[:oid,:int]  := sql.bind(X_4,"sys","functions","id",0,0,8);
-    (X_100:bat[:oid,:oid] ,X_101:bat[:oid,:int] ) := 
sql.bind(X_4,"sys","functions","id",2,0,8);
-    X_149 := sql.delta(X_85,X_100,X_101);
-    X_157 := algebra.leftfetchjoin(X_44,X_149);
-    language.pass(X_58);
-    language.pass(X_56);
-    language.pass(X_54);
-    language.pass(X_52);
-    language.pass(X_50);
-    language.pass(X_48);
-    language.pass(X_46);
-    language.pass(X_44);
-exit X_189;
-    X_18 := sql.resultSet(2,1,X_12);
-    sql.rsColumn(X_18,"sys.L1","L1","varchar",0,0,X_12);
-    X_173 := mat.packIncrement(X_157,8);
-    X_174 := mat.packIncrement(X_173,X_158);
-    X_175 := mat.packIncrement(X_174,X_159);
-    X_176 := mat.packIncrement(X_175,X_160);
-    X_177 := mat.packIncrement(X_176,X_161);
-    X_178 := mat.packIncrement(X_177,X_162);
-    X_179 := mat.packIncrement(X_178,X_163);
-    X_17 := mat.packIncrement(X_179,X_164);
-    sql.rsColumn(X_18,"sys.x","id","int",32,0,X_17);
-    X_27 := io.stdout();
-    sql.exportResult(X_27,X_18);
-end s1_1;
-# querylog.define("explain select replace(a1,a2,a3), id\nfrom (\n  select name 
as a1, \\'a\\' as a2, \\'A\\' as a3, id as id \n  from sys.functions\n) as 
x;","default_pipe")
+    X_5:bat[:oid,:oid]  := sql.tid(X_4,"sys","functions");
+    X_8:bat[:oid,:str]  := sql.bind(X_4,"sys","functions","name",0);
+    (X_11,r1_11) := sql.bind(X_4,"sys","functions","name",2);
+    X_14:bat[:oid,:str]  := sql.bind(X_4,"sys","functions","name",1);
+    X_16 := sql.delta(X_8,X_11,r1_11,X_14);
+    X_17 := algebra.leftfetchjoin(X_5,X_16);
+    X_18:bat[:oid,:str]  := mal.manifold("str","replace",X_17,A0,A1);
+    X_21:bat[:oid,:int]  := sql.bind(X_4,"sys","functions","id",0);
+    (X_23,r1_25) := sql.bind(X_4,"sys","functions","id",2);
+    X_25:bat[:oid,:int]  := sql.bind(X_4,"sys","functions","id",1);
+    X_26 := sql.delta(X_21,X_23,r1_25,X_25);
+    X_27 := algebra.leftfetchjoin(X_5,X_26);
+    X_28 := sql.resultSet(2,1,X_18);
+    sql.rsColumn(X_28,"sys.L1","L1","varchar",0,0,X_18);
+    sql.rsColumn(X_28,"sys.x","id","int",32,0,X_27);
+    X_37 := io.stdout();
+    sql.exportResult(X_37,X_28);
+end s2_1;
+# querylog.define("explain select replace(a1,a2,a3), id\nfrom (\n  select name 
as a1, \\'a\\' as a2, \\'A\\' as a3, id as id \n  from sys.functions\n) as 
x;","sequential_pipe")
 #explain select replace(a1,a2,a3), id
 #from (
 #  select name as a1, 'a' as a2, 'A' as a3, id + 1 as id 
@@ -187,164 +91,32 @@ end s1_1;
 % .explain # table_name
 % mal # name
 % clob # type
-% 177 # length
-function user.s2_1{autoCommit=true}(A0:str,A1:str,A2:lng):void;
-barrier X_247 := language.dataflow();
+% 180 # length
+function user.s3_1{autoCommit=true}(A0:str,A1:str,A2:lng):void;
     X_5 := sql.mvc();
-    X_45:bat[:oid,:oid]  := sql.tid(X_5,"sys","functions",0,8);
-    X_61:bat[:oid,:str]  := sql.bind(X_5,"sys","functions","name",0,0,8);
-    (X_69:bat[:oid,:oid] ,X_70:bat[:oid,:str] ) := 
sql.bind(X_5,"sys","functions","name",2,0,8);
-    X_119 := sql.delta(X_61,X_69,X_70);
-    X_134 := algebra.leftfetchjoin(X_45,X_119);
-    X_86:bat[:oid,:int]  := sql.bind(X_5,"sys","functions","id",0,0,8);
-    (X_102:bat[:oid,:oid] ,X_103:bat[:oid,:int] ) := 
sql.bind(X_5,"sys","functions","id",2,0,8);
-    X_142 := sql.delta(X_86,X_102,X_103);
-    X_151 := algebra.leftfetchjoin(X_45,X_142);
-    X_159 := algebra.project(X_151,A0);
-    X_174 := algebra.project(X_151,A1);
-    X_182 := mal.manifold("str","replace",X_134,X_159,X_174);
-    X_47:bat[:oid,:oid]  := sql.tid(X_5,"sys","functions",1,8);
-    X_62:bat[:oid,:str]  := sql.bind(X_5,"sys","functions","name",0,1,8);
-    (X_71:bat[:oid,:oid] ,X_72:bat[:oid,:str] ) := 
sql.bind(X_5,"sys","functions","name",2,1,8);
-    X_121 := sql.delta(X_62,X_71,X_72);
-    X_135 := algebra.leftfetchjoin(X_47,X_121);
-    X_88:bat[:oid,:int]  := sql.bind(X_5,"sys","functions","id",0,1,8);
-    (X_104:bat[:oid,:oid] ,X_105:bat[:oid,:int] ) := 
sql.bind(X_5,"sys","functions","id",2,1,8);
-    X_143 := sql.delta(X_88,X_104,X_105);
-    X_152 := algebra.leftfetchjoin(X_47,X_143);
-    X_161 := algebra.project(X_152,A0);
-    X_175 := algebra.project(X_152,A1);
-    X_183 := mal.manifold("str","replace",X_135,X_161,X_175);
-    X_49:bat[:oid,:oid]  := sql.tid(X_5,"sys","functions",2,8);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to