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