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

Reply via email to