Changeset: e586c6d357ae for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e586c6d357ae
Added Files:
        sql/test/BugTracker-2014/Tests/oid-table-assert.Bug-3514.sql
        sql/test/BugTracker-2014/Tests/oid-table-assert.Bug-3514.stable.err
        sql/test/BugTracker-2014/Tests/oid-table-assert.Bug-3514.stable.out
        sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql
        sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.err
        sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out
Modified Files:
        clients/R/MonetDB.R/DESCRIPTION
        clients/R/MonetDB.R/NEWS
        clients/R/MonetDB.R/R/monetdb.R
        clients/R/db.tests/monetdb.test.R
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures_gsl.stable.out
        clients/Tests/MAL-signatures_nocfitsio.stable.out
        clients/Tests/MAL-signatures_sphinxclient.stable.out
        clients/Tests/exports.stable.out
        gdk/gdk.h
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_imprints.c
        gdk/gdk_join.c
        gdk/gdk_join_legacy.c
        gdk/gdk_logger.c
        gdk/gdk_sample.c
        gdk/gdk_select.c
        gdk/gdk_storage.c
        gdk/gdk_unique.c
        gdk/gdk_utils.c
        geom/monetdb5/geom.c
        monetdb5/extras/sphinx/sphinx.c
        monetdb5/mal/Tests/All
        monetdb5/mal/mal_authorize.c
        monetdb5/mal/mal_builder.c
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_linker.c
        monetdb5/mal/mal_listing.c
        monetdb5/mal/mal_module.c
        monetdb5/mal/mal_profiler.c
        monetdb5/modules/atoms/batxml.c
        monetdb5/modules/atoms/json.c
        monetdb5/modules/atoms/mtime.c
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/array.c
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/kernel/batmmath.c
        monetdb5/modules/kernel/batstr.c
        monetdb5/modules/kernel/microbenchmark.c
        monetdb5/modules/mal/bbp.c
        monetdb5/modules/mal/clients.c
        monetdb5/modules/mal/cluster.c
        monetdb5/modules/mal/inspect.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/mat.c
        monetdb5/modules/mal/mdb.c
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/profiler.c
        monetdb5/modules/mal/querylog.c
        monetdb5/modules/mal/remote.c
        monetdb5/modules/mal/sample.c
        monetdb5/modules/mal/sample.h
        monetdb5/modules/mal/sysmon.c
        monetdb5/modules/mal/tablet.c
        monetdb5/modules/mal/zorder.c
        monetdb5/optimizer/opt_pushselect.c
        monetdb5/optimizer/opt_wrapper.c
        monetdb5/scheduler/run_octopus.c
        monetdb5/tests/gdkTests/Tests/bat_insert.stable.out
        monetdb5/tests/gdkTests/Tests/reload.stable.out
        sql/backends/monet5/datacell/basket.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_round_impl.h
        sql/backends/monet5/sql_scenario.c
        sql/benchmarks/ssbm/Tests/01-13.reqtests
        sql/benchmarks/ssbm/Tests/01-explain.reqtests
        sql/benchmarks/ssbm/Tests/01-plan.reqtests
        sql/benchmarks/ssbm/Tests/01.reqtests
        sql/benchmarks/ssbm/Tests/02-explain.reqtests
        sql/benchmarks/ssbm/Tests/02-plan.reqtests
        sql/benchmarks/ssbm/Tests/02.reqtests
        sql/benchmarks/ssbm/Tests/03-explain.reqtests
        sql/benchmarks/ssbm/Tests/03-plan.reqtests
        sql/benchmarks/ssbm/Tests/03.reqtests
        sql/benchmarks/ssbm/Tests/04-explain.reqtests
        sql/benchmarks/ssbm/Tests/04-plan.reqtests
        sql/benchmarks/ssbm/Tests/04.reqtests
        sql/benchmarks/ssbm/Tests/05-explain.reqtests
        sql/benchmarks/ssbm/Tests/05-plan.reqtests
        sql/benchmarks/ssbm/Tests/05.reqtests
        sql/benchmarks/ssbm/Tests/06-explain.reqtests
        sql/benchmarks/ssbm/Tests/06-plan.reqtests
        sql/benchmarks/ssbm/Tests/06.reqtests
        sql/benchmarks/ssbm/Tests/07-explain.reqtests
        sql/benchmarks/ssbm/Tests/07-plan.reqtests
        sql/benchmarks/ssbm/Tests/07.reqtests
        sql/benchmarks/ssbm/Tests/08-explain.reqtests
        sql/benchmarks/ssbm/Tests/08-plan.reqtests
        sql/benchmarks/ssbm/Tests/08.reqtests
        sql/benchmarks/ssbm/Tests/09-explain.reqtests
        sql/benchmarks/ssbm/Tests/09-plan.reqtests
        sql/benchmarks/ssbm/Tests/09.reqtests
        sql/benchmarks/ssbm/Tests/10-explain.reqtests
        sql/benchmarks/ssbm/Tests/10-plan.reqtests
        sql/benchmarks/ssbm/Tests/10.reqtests
        sql/benchmarks/ssbm/Tests/11-explain.reqtests
        sql/benchmarks/ssbm/Tests/11-plan.reqtests
        sql/benchmarks/ssbm/Tests/11.reqtests
        sql/benchmarks/ssbm/Tests/12-explain.reqtests
        sql/benchmarks/ssbm/Tests/12-plan.reqtests
        sql/benchmarks/ssbm/Tests/12.reqtests
        sql/benchmarks/ssbm/Tests/13-explain.reqtests
        sql/benchmarks/ssbm/Tests/13-plan.reqtests
        sql/benchmarks/ssbm/Tests/13.reqtests
        sql/benchmarks/ssbm/Tests/check1.reqtests
        sql/benchmarks/ssbm/Tests/load.reqtests
        sql/storage/bat/bat_logger.c
        sql/storage/bat/bat_utils.c
        sql/test/BugTracker-2014/Tests/All
        sql/test/pg_regress/Tests/numeric.sql
        sql/test/pg_regress/Tests/numeric.stable.err
        sql/test/pg_regress/Tests/numeric.stable.out
        sql/test/pg_regress/postgresql2sql99.sh
Branch: RIntegration-default
Log Message:

merge with default


diffs (truncated from 7541 to 300 lines):

diff --git a/clients/R/MonetDB.R/DESCRIPTION b/clients/R/MonetDB.R/DESCRIPTION
--- a/clients/R/MonetDB.R/DESCRIPTION
+++ b/clients/R/MonetDB.R/DESCRIPTION
@@ -1,6 +1,6 @@
 Package: MonetDB.R
 Version: 0.9.4
-Date: 2013-07-14
+Date: 2013-07-18
 Title: Connect MonetDB to R
 Authors@R: c(person("Hannes Muehleisen", role = c("aut", "cre"),email = 
"han...@cwi.nl"),
        person("Thomas Lumley", role = "ctb"),
diff --git a/clients/R/MonetDB.R/NEWS b/clients/R/MonetDB.R/NEWS
--- a/clients/R/MonetDB.R/NEWS
+++ b/clients/R/MonetDB.R/NEWS
@@ -1,5 +1,6 @@
 0.9.4
 - dbWriteTable overhaul (thanks, Anthony)
+- Fix for dbListTables for MonetDB versions after Jan2014
 
 0.9.3
 - Remove trailing slashes for monetdb.program.path parameter for 
monetdb.server.setup (Thanks, Anthony!)
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
@@ -149,7 +149,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 schemas 
on tables.schema_id=schemas.id"
-  if (!sys_tables) q <- paste0(q, " where system=false")
+  if (!sys_tables) q <- paste0(q, " where tables.system=false")
   df <- dbGetQuery(conn, q)
   if (quote) {
     df$tn <- paste0("\"", df$tn, "\"")
@@ -275,8 +275,8 @@ setMethod("dbSendQuery", signature(conn=
 
 
 # adapted from RMonetDB, very useful...
-setMethod("dbWriteTable", "MonetDBConnection", def=function(conn, name, value, 
overwrite=FALSE, append=FALSE, insert=FALSE,
-                                                            ...) {
+setMethod("dbWriteTable", "MonetDBConnection", def=function(conn, name, value, 
overwrite=FALSE, 
+  append=FALSE, csvdump=FALSE, ...) {
   if (is.vector(value) && !is.list(value)) value <- data.frame(x=value)
   if (length(value)<1) stop("value must have at least one column")
   if (is.null(names(value))) names(value) <- paste("V", 1:length(value), 
sep='')
@@ -291,8 +291,9 @@ setMethod("dbWriteTable", "MonetDBConnec
   qname <- make.db.names(conn, name, allow.keywords=FALSE)
   if (dbExistsTable(conn, name)) {
     if (overwrite) dbRemoveTable(conn, name)
-    if (!overwrite && !append) stop("Table '", name, "' already exists. Set 
overwrite=TRUE if you want to remove 
-      the existing table. Set append=TRUE if you would like to add the new 
data to the existing table.")
+    if (!overwrite && !append) stop("Table '", name, "' already exists. Set 
overwrite=TRUE if you want 
+      to remove the existing table. Set append=TRUE if you would like to add 
the new data to the 
+      existing table.")
   }
   if (!dbExistsTable(conn, name)) {
     fts <- sapply(value, dbDataType, dbObj=conn)
@@ -301,18 +302,24 @@ setMethod("dbWriteTable", "MonetDBConnec
     dbSendUpdate(conn, ct)
   }
   if (length(value[[1]])) {
-    if (insert) {
-       inss <- paste("INSERT INTO ", qname, " VALUES (", paste(rep("?", 
length(value)), collapse=', '), 
-                  ")", sep='')
-      dbTransaction(conn)
-      for (j in 1:length(value[[1]])) dbSendUpdate(conn, inss, 
list=as.list(value[j, ]))
-      dbCommit(conn)
-    } else {
+    if (csvdump) {
       tmp <- tempfile(fileext = ".csv")
       write.table(value, tmp, sep = ",", quote = TRUE,row.names = FALSE, 
col.names = FALSE,na="")
       dbSendQuery(conn, paste0("COPY ",format(nrow(value), scientific=FALSE)," 
RECORDS INTO ", qname,
       " FROM '", tmp, "' USING DELIMITERS ',','\\n','\"' NULL AS '' LOCKED"))
-      file.remove(tmp)
+      file.remove(tmp) 
+    } else {
+      vins <- paste("(", paste(rep("?", length(value)), collapse=', '), ")", 
sep='')
+      dbTransaction(conn)
+      # chunk some inserts together so we do not need to do a round trip for 
every one
+      splitlen <- 0:(nrow(value)-1) %/% getOption("monetdb.insert.splitsize", 
1000)
+      lapply(split(value, splitlen), 
+        function(valueck) {
+        bvins <- c()
+        for (j in 1:length(valueck[[1]])) bvins <- 
c(bvins,.bindParameters(vins, as.list(valueck[j, ])))
+        dbSendUpdate(conn, paste0("INSERT INTO ", qname, " VALUES 
",paste0(bvins, collapse=", ")))
+      })
+      dbCommit(conn)
     }
   }
   return(invisible(TRUE))
@@ -324,7 +331,6 @@ setMethod("dbDataType", signature(dbObj=
   else if (is.integer(obj)) "INTEGER"
   else if (is.numeric(obj)) "DOUBLE PRECISION"
   else if (is.raw(obj)) "BLOB"
-  
   else "STRING"
 }, valueClass = "character")
 
diff --git a/clients/R/db.tests/monetdb.test.R 
b/clients/R/db.tests/monetdb.test.R
--- a/clients/R/db.tests/monetdb.test.R
+++ b/clients/R/db.tests/monetdb.test.R
@@ -1,4 +1,5 @@
 options(monetdb.debug.query=T)
+options(monetdb.insert.splitsize=10)
 
 library(MonetDB.R)
 
diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -32028,12 +32028,24 @@ pattern bat.new(b:bat[:oid,:any_1],size:
 address CMDBATnewDerived;
 pattern bat.new(b:bat[:oid,:any_1]):bat[:oid,:any_1] 
 address CMDBATnewDerived;
+pattern bat.new_persistent(ht:oid,tt:any_1,size:lng):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new BAT in the persistent farm and allocate space.
+
+pattern bat.new_persistent(ht:oid,tt:any_1,size:int):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new BAT in the persistent farm with sufficient space.
+
+pattern bat.new_persistent(ht:oid,tt:any_1):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new empty transient BAT in the persistent farm, with head- 
and tail-types as indicated.
+
 pattern bat.new(ht:oid,tt:any_1,size:lng):bat[:oid,:any_1] 
 address CMDBATnew;
 comment Creates a new BAT and allocate space.
 
 pattern bat.new(ht:oid,tt:any_1,size:int):bat[:oid,:any_1] 
-address CMDBATnewint;
+address CMDBATnew;
 comment Creates a new BAT with sufficient space.
 
 pattern bat.new(ht:oid,tt:any_1):bat[:oid,:any_1] 
diff --git a/clients/Tests/MAL-signatures_gsl.stable.out 
b/clients/Tests/MAL-signatures_gsl.stable.out
--- a/clients/Tests/MAL-signatures_gsl.stable.out
+++ b/clients/Tests/MAL-signatures_gsl.stable.out
@@ -32040,12 +32040,24 @@ pattern bat.new(b:bat[:oid,:any_1],size:
 address CMDBATnewDerived;
 pattern bat.new(b:bat[:oid,:any_1]):bat[:oid,:any_1] 
 address CMDBATnewDerived;
+pattern bat.new_persistent(ht:oid,tt:any_1,size:lng):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new BAT in the persistent farm and allocate space.
+
+pattern bat.new_persistent(ht:oid,tt:any_1,size:int):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new BAT in the persistent farm with sufficient space.
+
+pattern bat.new_persistent(ht:oid,tt:any_1):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new empty transient BAT in the persistent farm, with head- 
and tail-types as indicated.
+
 pattern bat.new(ht:oid,tt:any_1,size:lng):bat[:oid,:any_1] 
 address CMDBATnew;
 comment Creates a new BAT and allocate space.
 
 pattern bat.new(ht:oid,tt:any_1,size:int):bat[:oid,:any_1] 
-address CMDBATnewint;
+address CMDBATnew;
 comment Creates a new BAT with sufficient space.
 
 pattern bat.new(ht:oid,tt:any_1):bat[:oid,:any_1] 
diff --git a/clients/Tests/MAL-signatures_nocfitsio.stable.out 
b/clients/Tests/MAL-signatures_nocfitsio.stable.out
--- a/clients/Tests/MAL-signatures_nocfitsio.stable.out
+++ b/clients/Tests/MAL-signatures_nocfitsio.stable.out
@@ -32028,12 +32028,24 @@ pattern bat.new(b:bat[:oid,:any_1],size:
 address CMDBATnewDerived;
 pattern bat.new(b:bat[:oid,:any_1]):bat[:oid,:any_1] 
 address CMDBATnewDerived;
+pattern bat.new_persistent(ht:oid,tt:any_1,size:lng):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new BAT in the persistent farm and allocate space.
+
+pattern bat.new_persistent(ht:oid,tt:any_1,size:int):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new BAT in the persistent farm with sufficient space.
+
+pattern bat.new_persistent(ht:oid,tt:any_1):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new empty transient BAT in the persistent farm, with head- 
and tail-types as indicated.
+
 pattern bat.new(ht:oid,tt:any_1,size:lng):bat[:oid,:any_1] 
 address CMDBATnew;
 comment Creates a new BAT and allocate space.
 
 pattern bat.new(ht:oid,tt:any_1,size:int):bat[:oid,:any_1] 
-address CMDBATnewint;
+address CMDBATnew;
 comment Creates a new BAT with sufficient space.
 
 pattern bat.new(ht:oid,tt:any_1):bat[:oid,:any_1] 
diff --git a/clients/Tests/MAL-signatures_sphinxclient.stable.out 
b/clients/Tests/MAL-signatures_sphinxclient.stable.out
--- a/clients/Tests/MAL-signatures_sphinxclient.stable.out
+++ b/clients/Tests/MAL-signatures_sphinxclient.stable.out
@@ -32028,12 +32028,24 @@ pattern bat.new(b:bat[:oid,:any_1],size:
 address CMDBATnewDerived;
 pattern bat.new(b:bat[:oid,:any_1]):bat[:oid,:any_1] 
 address CMDBATnewDerived;
+pattern bat.new_persistent(ht:oid,tt:any_1,size:lng):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new BAT in the persistent farm and allocate space.
+
+pattern bat.new_persistent(ht:oid,tt:any_1,size:int):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new BAT in the persistent farm with sufficient space.
+
+pattern bat.new_persistent(ht:oid,tt:any_1):bat[:oid,:any_1] 
+address CMDBATnew_persistent;
+comment Creates a new empty transient BAT in the persistent farm, with head- 
and tail-types as indicated.
+
 pattern bat.new(ht:oid,tt:any_1,size:lng):bat[:oid,:any_1] 
 address CMDBATnew;
 comment Creates a new BAT and allocate space.
 
 pattern bat.new(ht:oid,tt:any_1,size:int):bat[:oid,:any_1] 
-address CMDBATnewint;
+address CMDBATnew;
 comment Creates a new BAT with sufficient space.
 
 pattern bat.new(ht:oid,tt:any_1):bat[:oid,:any_1] 
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -160,7 +160,7 @@ int BATmmap(BAT *b, int hb, int tb, int 
 BAT *BATmode(BAT *b, int onoff);
 gdk_return BATmultiprintf(stream *f, int argc, BAT *argv[], int printoid, int 
order, int printorderby);
 int BATname(BAT *b, const char *nme);
-BAT *BATnew(int hdtype, int tltype, BUN capacity, int role);
+BAT *BATnew(int hdtype, int tltype, BUN capacity, int role) 
__attribute__((warn_unused_result));
 BAT *BATorder(BAT *b);
 BAT *BATorder_rev(BAT *b);
 int BATordered(BAT *b);
@@ -1837,8 +1837,8 @@ str SABmarchConnection(int *ret, str *ho
 str SABmarchScenario(int *ret, str *lang);
 str SABprelude(int *ret);
 str SABretreatScenario(int *ret, str *lang);
-str SAMPLEuniform(bat *r, bat *b, ptr s);
-str SAMPLEuniform_dbl(bat *r, bat *b, ptr p);
+str SAMPLEuniform(bat *r, bat *b, wrd *s);
+str SAMPLEuniform_dbl(bat *r, bat *b, dbl *p);
 str SERVERbindBAT(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str SERVERclient(int *res, stream **In, stream **Out);
 str SERVERconnect(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pc);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1127,7 +1127,8 @@ gdk_export void HEAP_free(Heap *heap, va
  */
 #define BATDELETE      (-9999)
 
-gdk_export BAT *BATnew(int hdtype, int tltype, BUN capacity, int role);
+gdk_export BAT *BATnew(int hdtype, int tltype, BUN capacity, int role)
+       __attribute__((warn_unused_result));
 gdk_export BAT *BATextend(BAT *b, BUN newcap);
 
 /* internal */
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -389,10 +389,12 @@ BATclone(BAT *b, BUN cap, int role)
 {
        BAT *c = BATnew(b->htype, b->ttype, cap, role);
 
-       if (c && c->htype == TYPE_void && b->hseqbase != oid_nil)
-               BATseqbase(c, b->hseqbase);
-       if (c && c->ttype == TYPE_void && b->tseqbase != oid_nil)
-               BATseqbase(BATmirror(c), b->tseqbase);
+       if (c) {
+               if (c->htype == TYPE_void && b->hseqbase != oid_nil)
+                       BATseqbase(c, b->hseqbase);
+               if (c->ttype == TYPE_void && b->tseqbase != oid_nil)
+                       BATseqbase(BATmirror(c), b->tseqbase);
+       }
        return c;
 }
 
@@ -1286,6 +1288,7 @@ BUNappend(BAT *b, const void *t, bit for
                return NULL;
        }
 
+       assert(!isVIEW(b));
        bm = BBP_cache(-b->batCacheid);
        if ((b->tkey & BOUND2BTRUE) && BUNfnd(bm, t) != BUN_NONE) {
                return b;
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -457,6 +457,7 @@ BATappend(BAT *b, BAT *n, bit force)
        if (b == NULL || n == NULL || (sz = BATcount(n)) == 0) {
                return b;
        }
+       assert(!isVIEW(b));
        if (b->htype != TYPE_void && b->htype != TYPE_oid) {
                GDKerror("BATappend: input must be (V)OID headed\n");
                return NULL;
@@ -2256,8 +2257,10 @@ BATintersectcand(BAT *a, BAT *b)
 
        if (BATcount(a) == 0 || BATcount(b) == 0) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to