Changeset: 3cea50b93bcd for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3cea50b93bcd
Added Files:
        tools/embedded/embeddedr.c
        tools/embedded/embeddedr.h
Modified Files:
        clients/R/MonetDB.R/NEWS
        clients/R/MonetDB.R/R/dbi.R
        clients/R/MonetDB.R/R/dplyr.R
        clients/R/Tests/install.R
        monetdb5/extras/rapi/rapi.c
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_client.h
        monetdb5/mal/mal_private.h
        sql/backends/monet5/sql_scenario.c
        sql/server/sql_scan.c
        tools/Makefile.ag
        tools/embedded/Makefile.ag
        tools/embedded/Tests/lowlevel.R
        tools/embedded/embedded.c
        tools/embedded/embedded.h
        tools/embedded/rpackage/NAMESPACE
        tools/embedded/rpackage/R/monetdb.R
        tools/embedded/rpackage/configure
        tools/embedded/rpackage/man/embedded.Rd
Branch: embedded-java
Log Message:

Merge with embedded branch


diffs (truncated from 1006 to 300 lines):

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
@@ -19,6 +19,7 @@ 1.0.0
 - Fixed a bug when running in a non-UTF8 locale (Thanks, Marcis)
 - Fixed a bug when dbWriteTable would not adhere to transactional semantics 
(Thanks, Anthony)
 - Added transactions to monetdb.read.csv so no empty tables are left over 
(Thanks, Anthony)
+- Fixed != comparisions in dplyr (Thanks, Anthony)
 
 0.9.7
 - Fixed crash on Windows (Sorry, everyone)
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/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
@@ -10,7 +10,9 @@ src_monetdb <- function(dbname, host = "
 
 src_translate_env.src_monetdb <- function(x) {
   dplyr::sql_variant(
-    dplyr::base_scalar,
+    dplyr::sql_translator(.parent = dplyr::base_scalar,
+    `!=` = dplyr::sql_infix("<>")
+    ),
     dplyr::sql_translator(.parent = dplyr::base_agg,
       n = function() dplyr::sql("COUNT(*)"),
       sd =  dplyr::sql_prefix("STDDEV_SAMP"),
diff --git a/clients/R/Tests/install.R b/clients/R/Tests/install.R
--- a/clients/R/Tests/install.R
+++ b/clients/R/Tests/install.R
@@ -7,8 +7,8 @@ if (basedir == "" || srcdir == "") {
 builddir   <- file.path(basedir, "rbuilddir")
 installdir <- file.path(basedir, "rlibdir")
 dir.create(builddir)
+if (file.exists(installdir)) unlink(installdir, recursive=T)
 dir.create(installdir)
-file.remove(file.path(builddir, "MonetDB.R"), recursive=T, showWarnings=F)
 file.copy(from=file.path(srcdir, "..", "MonetDB.R"), to=builddir, recursive=T)
 dd <- capture.output(suppressMessages( {
        sink(file=file(tempfile(), open = "wt"), type = "message") 
diff --git a/monetdb5/extras/rapi/rapi.c b/monetdb5/extras/rapi/rapi.c
--- a/monetdb5/extras/rapi/rapi.c
+++ b/monetdb5/extras/rapi/rapi.c
@@ -329,7 +329,6 @@ str RAPIeval(Client cntxt, MalBlkPtr mb,
        size_t pos;
        char* rcall;
        size_t rcalllen;
-       size_t ret_rows = 0;
        int ret_cols = 0; /* int because pci->retc is int, too*/
        str *args;
        int evalErr;
@@ -490,7 +489,6 @@ str RAPIeval(Client cntxt, MalBlkPtr mb,
 
        // ret should be a data frame with exactly as many columns as we need 
from retc
        ret_cols = LENGTH(retval);
-       ret_rows = LENGTH(VECTOR_ELT(retval, 0));
        if (ret_cols != pci->retc) {
                msg = createException(MAL, "rapi.eval",
                                                          "Expected result of 
%d columns, got %d", pci->retc, ret_cols);
diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -254,7 +254,7 @@ MCinitClient(oid user, bstream *fin, str
 
        if ((c = MCnewClient()) == NULL)
                return NULL;
-       return MCinitClientRecord(c, user, fin,fout);
+       return MCinitClientRecord(c, user, fin, fout);
 }
 
 /*
diff --git a/monetdb5/mal/mal_client.h b/monetdb5/mal/mal_client.h
--- a/monetdb5/mal/mal_client.h
+++ b/monetdb5/mal/mal_client.h
@@ -188,6 +188,7 @@ mal_export Client  MCgetClient(int id);
 mal_export Client  MCinitClient(oid user, bstream *fin, stream *fout);
 mal_export Client  MCinitClientRecord(Client c, oid user, bstream *fin, stream 
*fout);
 mal_export int     MCinitClientThread(Client c);
+mal_export Client  MCforkClient(Client father);
 mal_export void           MCstopClients(Client c);
 mal_export int     MCshutdowninprogress(void);
 mal_export int    MCactiveClients(void);
@@ -195,5 +196,4 @@ mal_export void    MCcloseClient(Client 
 mal_export str     MCsuspendClient(int id);
 mal_export str     MCawakeClient(int id);
 mal_export int     MCpushClientInput(Client c, bstream *new_input, int 
listing, char *prompt);
-
 #endif /* _MAL_CLIENT_H_ */
diff --git a/monetdb5/mal/mal_private.h b/monetdb5/mal/mal_private.h
--- a/monetdb5/mal/mal_private.h
+++ b/monetdb5/mal/mal_private.h
@@ -16,8 +16,6 @@
 /* FREECLIENT is defined in the same file as Client */
 __hidden void MCexitClient(Client c)
        __attribute__((__visibility__("hidden")));
-__hidden Client MCforkClient(Client c)
-       __attribute__((__visibility__("hidden")));
 __hidden int MCreadClient(Client c)
        __attribute__((__visibility__("hidden")));
 __hidden void MCpopClientInput(Client c)
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -449,7 +449,7 @@ SQLinitClient(Client c)
        if (m->session->tr)
                reset_functions(m->session->tr);
        /* pass through credentials of the user if not console */
-       if (!isAdministrator(c)) {
+       if (c->user != 0) {
                schema = monet5_user_get_def_schema(m, c->user);
                if (!schema) {
                        _DELETE(schema);
diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -404,12 +404,13 @@ scanner_query_processed(struct scanner *
                s->rs->buf[s->rs->pos + s->yycur] = s->yybak;
                s->yybak = 0;
        }
-
-       s->rs->pos += s->yycur;
-       /* completely eat the query including white space after the ; */
-       while (s->rs->pos < s->rs->len &&
-              (cur = s->rs->buf[s->rs->pos], iswspace(cur))) {
-               s->rs->pos++;
+       if (s->rs) {
+               s->rs->pos += s->yycur;
+               /* completely eat the query including white space after the ; */
+               while (s->rs->pos < s->rs->len &&
+                          (cur = s->rs->buf[s->rs->pos], iswspace(cur))) {
+                       s->rs->pos++;
+               }
        }
        /*assert(s->rs->pos <= s->rs->len);*/
        s->yycur = 0;
diff --git a/tools/embedded/Makefile.ag b/tools/embedded/Makefile.ag
--- a/tools/embedded/Makefile.ag
+++ b/tools/embedded/Makefile.ag
@@ -34,7 +34,7 @@ INCLUDES = ../../monetdb5/mal \
                   -I"/Library/Frameworks/R.framework/Resources/include" \
                   $(pcre_CFLAGS)
 
-lib_embedded  =  {
+lib_embedded  = {
        SOURCES = embedded.c embedded.h
        VERSION = 1
        LIBS = ../../monetdb5/tools/libmonetdb5 \
@@ -42,3 +42,12 @@ lib_embedded  =  {
                $(pcre_LIBS) $(PSAPILIB) \
                $(SOCKET_LIBS) $(MALLOC_LIBS) $(DL_LIBS) $(PTHREAD_LIBS)
 }
+
+lib_embeddedr  = {
+       SOURCES = embeddedr.c embeddedr.h
+       VERSION = 1
+       LIBS = libembedded \
+               ../../gdk/libbat \
+               $(pcre_LIBS) $(PSAPILIB) \
+               $(SOCKET_LIBS) $(MALLOC_LIBS) $(DL_LIBS) $(PTHREAD_LIBS)
+}
diff --git a/tools/embedded/Tests/lowlevel.R b/tools/embedded/Tests/lowlevel.R
--- a/tools/embedded/Tests/lowlevel.R
+++ b/tools/embedded/Tests/lowlevel.R
@@ -3,96 +3,111 @@ if (basedir == "") {
        stop("Need TSTTRGDIR environment vars")
 }
 library(MonetDBLite, quietly=T, lib.loc=file.path(basedir, "rlibdir"))
-
 library(testthat)
 
 test_that("db starts up", {
        expect_error(monetdb_embedded_startup("/dev/null"))
-       expect_equal(monetdb_embedded_startup(), TRUE)
-       expect_warning(monetdb_embedded_startup())
+       dbdir <- tempdir()
+       expect_equal(monetdb_embedded_startup(dbdir), TRUE)
+       expect_warning(monetdb_embedded_startup("/tmp"))
+       expect_equal(monetdb_embedded_startup(dbdir), TRUE)
+})
+
+
+test_that("one can connect", {
+       con <- monetdb_embedded_connect()
+       expect_that(con, is_a("monetdb_embedded_connection"))
+       monetdb_embedded_disconnect(con)
+       monetdb_embedded_disconnect(con)
+       expect_error(monetdb_embedded_disconnect(NULL))
 })
 
 test_that("db runs queries and returns results", {
-       res <- monetdb_embedded_query("SELECT 42")
+       con <- monetdb_embedded_connect()
+       res <- monetdb_embedded_query(con, "SELECT 42")
        expect_equal(res$type, 1)
        expect_equal(res$tuples$single_value, 42)
-       res <- monetdb_embedded_query("SELECT * FROM tables")
+       res <- monetdb_embedded_query(con, "SELECT * FROM tables")
        expect_equal(res$type, 1)
        expect_is(res$tuples, "data.frame")
        expect_true(nrow(res$tuples) > 0)
        expect_true(ncol(res$tuples) > 0)
+       monetdb_embedded_disconnect(con)
 })
 
 test_that("commit", {
-       monetdb_embedded_query("START TRANSACTION")
-       monetdb_embedded_query("CREATE TABLE foo (i integer)")
-       monetdb_embedded_query("INSERT INTO foo VALUES (42)")
-       res <- monetdb_embedded_query("SELECT i FROM foo")
+       con <- monetdb_embedded_connect()
+       monetdb_embedded_query(con, "START TRANSACTION")
+       monetdb_embedded_query(con, "CREATE TABLE foo (i integer)")
+       monetdb_embedded_query(con, "INSERT INTO foo VALUES (42)")
+       res <- monetdb_embedded_query(con, "SELECT i FROM foo")
        expect_equal(res$tuples$i, 42)
-       monetdb_embedded_query("COMMIT")
-       res <- monetdb_embedded_query("SELECT i FROM foo")
+       monetdb_embedded_query(con, "COMMIT")
+       res <- monetdb_embedded_query(con, "SELECT i FROM foo")
        expect_equal(res$tuples$i, 42)
-       res <- monetdb_embedded_query("SELECT * FROM tables WHERE name='foo'")
+       res <- monetdb_embedded_query(con, "SELECT * FROM tables WHERE 
name='foo'")
        expect_equal(nrow(res$tuples), 1)
-       monetdb_embedded_query("DROP TABLE foo")
+       monetdb_embedded_query(con, "DROP TABLE foo")
+       monetdb_embedded_disconnect(con)
 })
 
 test_that("rollback works", {
-       monetdb_embedded_query("START TRANSACTION")
-       monetdb_embedded_query("CREATE TABLE foo (i integer)")
-       monetdb_embedded_query("INSERT INTO foo VALUES (42)")
-       res <- monetdb_embedded_query("SELECT i FROM foo")
+       con <- monetdb_embedded_connect()
+       monetdb_embedded_query(con, "START TRANSACTION")
+       monetdb_embedded_query(con, "CREATE TABLE foo (i integer)")
+       monetdb_embedded_query(con, "INSERT INTO foo VALUES (42)")
+       res <- monetdb_embedded_query(con, "SELECT i FROM foo")
        expect_equal(res$tuples$i, 42)
-       monetdb_embedded_query("ROLLBACK")
-       res <- monetdb_embedded_query("SELECT * FROM tables WHERE name='foo'")
+       monetdb_embedded_query(con, "ROLLBACK")
+       res <- monetdb_embedded_query(con, "SELECT * FROM tables WHERE 
name='foo'")
        expect_equal(nrow(res$tuples), 0)
-       res <- monetdb_embedded_query("SELECT i FROM foo")
+       res <- monetdb_embedded_query(con, "SELECT i FROM foo")
        expect_equal(res$type, "!")
+       monetdb_embedded_disconnect(con)
 })
 
 test_that("rollback with errors", {
-       monetdb_embedded_query("START TRANSACTION")
-       res <- monetdb_embedded_query("BULLSHIT")
+       con <- monetdb_embedded_connect()
+       monetdb_embedded_query(con,"START TRANSACTION")
+       res <- monetdb_embedded_query(con, "BULLSHIT")
        expect_equal(res$type, "!")
-       res <- monetdb_embedded_query("SELECT 1")
+       res <- monetdb_embedded_query(con, "SELECT 1")
        expect_equal(res$type, "!")
-       monetdb_embedded_query("ROLLBACK")
-       res <- monetdb_embedded_query("SELECT 42")
+       monetdb_embedded_query(con, "ROLLBACK")
+       res <- monetdb_embedded_query(con, "SELECT 42")
        expect_equal(res$type, 1)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to