Changeset: ced50192c27c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ced50192c27c
Modified Files:
clients/R/MonetDB.R/R/dbi.R
tools/embedded/rpackage/R/monetdb.R
Branch: embedded
Log Message:
Client updates
diffs (72 lines):
diff --git a/clients/R/MonetDB.R/R/dbi.R b/clients/R/MonetDB.R/R/dbi.R
--- a/clients/R/MonetDB.R/R/dbi.R
+++ b/clients/R/MonetDB.R/R/dbi.R
@@ -93,6 +93,7 @@ setMethod("dbConnect", "MonetDBDriver",
}
MonetDBLite::monetdb_embedded_startup(embedded,
!getOption("monetdb.debug.embedded", FALSE))
connenv <- new.env(parent=emptyenv())
+ connenv$conn <- MonetDBLite::monetdb_embedded_connect()
connenv$open <- TRUE
return(new("MonetDBEmbeddedConnection", connenv=connenv))
}
@@ -167,6 +168,7 @@ setMethod("dbDisconnect", "MonetDBConnec
setMethod("dbDisconnect", "MonetDBEmbeddedConnection", def=function(conn, ...)
{
conn@connenv$open <- FALSE
+ MonetDBLite::monetdb_embedded_disconnect(conn@connenv$conn)
invisible(TRUE)
})
@@ -325,7 +327,7 @@ setMethod("dbSendQuery", signature(conn=
env <- NULL
if (getOption("monetdb.debug.query", F)) message("QQ: '", statement, "'")
- resp <- MonetDBLite::monetdb_embedded_query(statement, notreally)
+ resp <- MonetDBLite::monetdb_embedded_query(conn@connenv$conn, statement,
notreally)
env <- new.env(parent=emptyenv())
if (resp$type == Q_TABLE) {
@@ -446,7 +448,7 @@ setMethod("dbWriteTable", "MonetDBConnec
value[[c]] <- as.character(value[[c]])
}
- insres <- MonetDBLite::monetdb_embedded_append(qname, value)
+ insres <- MonetDBLite::monetdb_embedded_append(conn@connenv$conn, qname,
value)
if (!is.logical(insres)) {
stop("Failed to insert data: ", insres)
}
diff --git a/tools/embedded/rpackage/R/monetdb.R
b/tools/embedded/rpackage/R/monetdb.R
--- a/tools/embedded/rpackage/R/monetdb.R
+++ b/tools/embedded/rpackage/R/monetdb.R
@@ -1,5 +1,7 @@
# we need this to find our MAL scripts and DLLs on Windows
installdir <- ""
+is_started <- FALSE
+started_dir <- ""
.onLoad <- function(libname, pkgname){
installdir <<- file.path(libname, pkgname, "libs")
@@ -20,13 +22,22 @@ monetdb_embedded_startup <- function(dir
if (file.access(dir, mode=2) < 0) {
stop("Cannot write to ", dir)
}
- res <- .Call("monetdb_startup_R", installdir, dir, quiet,
PACKAGE="libmonetdb5")
+ if (!is_started) {
+ res <- .Call("monetdb_startup_R", installdir, dir, quiet,
PACKAGE="libmonetdb5")
+ } else {
+ if (!identical(dir, started_dir)) {
+ stop("MonetDBLite cannot change database directories
(already started in ", started_dir, ").")
+ }
+ return(invisible(TRUE))
+ }
if (is.character(res)) {
stop("Failed to initialize embedded MonetDB ", res)
}
if (res == FALSE) {
warning("monetdb_embedded_startup() was already called.
Ignoring this invocation.")
}
+ is_started <<- TRUE
+ started_dir <<- dir
invisible(TRUE)
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list