Changeset: b01446d8caa7 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b01446d8caa7 Modified Files: clients/R/MonetDB.R/NEWS tools/embedded/Tests/dbi.R tools/embedded/Tests/lowlevel.R tools/embedded/embedded.c tools/embedded/rpackage/configure.win Branch: embedded-java Log Message:
Merge with embedded branch diffs (130 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 @@ -4,10 +4,10 @@ 1.0.0 - Now creating actual R integers if data fits - dbWriteTable now quotes table/column names if necessary, and outputs warnings if it did - New mdbapply function to automatically create and run embedded R functions in MonetDB -- Fixes for dplyr backend (Thanks, Anthony) +- Fixes for dplyr backend - Fix for case when query only returns a prompt (CALL ..., Thanks, Roman) - Fix for empty result set on dbGetQuery(), no longer returning NULL (Thanks, Fabian) -- Fix for dbConnect(), it ignored the url parameter somehow, which broke some sqlsurvey (Thanks, Anthony) +- Fix for dbConnect(), it ignored the url parameter somehow, which broke some sqlsurvey - Added col.names argument to monet.read.csv() - Added lower.case.names argument to monet.read.csv() in case users want to avoid quoting (a bit) - Fix for dbConnect() that should be more robust to invalid connections @@ -17,9 +17,9 @@ 1.0.0 - Fixed a bug in monetdb.read.csv for multiple CSV files without headers - dplyr src_monetdb now has a con parameter to pass an existing DBI connection - 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) +- Fixed a bug when dbWriteTable would not adhere to transactional semantics +- Added transactions to monetdb.read.csv so no empty tables are left over +- Fixed != comparisions in dplyr (Thanks, David) 0.9.7 - Fixed crash on Windows (Sorry, everyone) diff --git a/tools/embedded/Tests/dbi.R b/tools/embedded/Tests/dbi.R --- a/tools/embedded/Tests/dbi.R +++ b/tools/embedded/Tests/dbi.R @@ -1,8 +1,9 @@ basedir <- Sys.getenv("TSTTRGDIR") -if (basedir == "") { - stop("Need TSTTRGDIR environment vars") +if (basedir != "") { + library(MonetDBLite, quietly=T, lib.loc=file.path(basedir, "rlibdir")) +} else { + library(MonetDBLite) } -library(MonetDBLite, quietly=T, lib.loc=file.path(basedir, "rlibdir")) library(MonetDB.R) library(testthat) @@ -258,7 +259,7 @@ test_that("dis/re-connect", { expect_false(dbIsValid(con)) expect_error(dbSendQuery(con, "SELECT 1")) # this throws a warning because we cannot re-initialize embedded monetdb - expect_warning(con <- dbConnect(MonetDB.R::MonetDB.R(), embedded=tempdir())) + expect_warning(con <- dbConnect(MonetDB.R::MonetDB.R(), embedded="/tmp")) res <- dbSendQuery(con, "SELECT 1") expect_true(dbIsValid(res)) }) 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 @@ -1,9 +1,11 @@ +library(testthat) + basedir <- Sys.getenv("TSTTRGDIR") -if (basedir == "") { - stop("Need TSTTRGDIR environment vars") +if (basedir != "") { + library(MonetDBLite, quietly=T, lib.loc=file.path(basedir, "rlibdir")) +} else { + library(MonetDBLite) } -library(MonetDBLite, quietly=T, lib.loc=file.path(basedir, "rlibdir")) -library(testthat) test_that("db starts up", { expect_error(monetdb_embedded_startup("/dev/null")) @@ -79,6 +81,18 @@ test_that("rollback with errors", { monetdb_embedded_disconnect(con) }) +test_that("transaction immediately after rollback", { + con <- monetdb_embedded_connect() + monetdb_embedded_query(con, "START TRANSACTION") + res <- monetdb_embedded_query(con, "SELECT 42") + expect_equal(res$type, 1) + monetdb_embedded_query(con, "ROLLBACK") + monetdb_embedded_query(con, "START TRANSACTION") + res <- monetdb_embedded_query(con, "SELECT 42") + expect_equal(res$type, 1) + monetdb_embedded_disconnect(con) +}) + test_that("pointless rollback/commit", { con <- monetdb_embedded_connect() expect_equal(monetdb_embedded_query(con, "SELECT 1")$type, 1) diff --git a/tools/embedded/embedded.c b/tools/embedded/embedded.c --- a/tools/embedded/embedded.c +++ b/tools/embedded/embedded.c @@ -174,6 +174,7 @@ char* monetdb_query(void* conn, char* qu while (*query == ' ' || *query == '\t') query++; if (strncasecmp(query, "START", 5) == 0) { // START TRANSACTION m->session->auto_commit = 0; + m->session->status = 0; } else if (strncasecmp(query, "ROLLBACK", 8) == 0) { m->session->status = -1; @@ -185,7 +186,7 @@ char* monetdb_query(void* conn, char* qu else if (strncasecmp(query, "SHIBBOLEET", 10) == 0) { res = GDKstrdup("\x46\x6f\x72\x20\x69\x6d\x6d\x65\x64\x69\x61\x74\x65\x20\x74\x65\x63\x68\x6e\x69\x63\x61\x6c\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x63\x61\x6c\x6c\x20\x2b\x33\x31\x20\x32\x30\x20\x35\x39\x32\x20\x34\x30\x33\x39"); } - else if (m->session->status < 0 && m->session->auto_commit ==0){ + else if (m->session->status < 0 && m->session->auto_commit == 0){ res = GDKstrdup("Current transaction is aborted (please ROLLBACK)"); } else { res = (*SQLstatementIntern_ptr)(c, &query, "name", 1, 0, (res_table **) result); diff --git a/tools/embedded/rpackage/configure.win b/tools/embedded/rpackage/configure.win --- a/tools/embedded/rpackage/configure.win +++ b/tools/embedded/rpackage/configure.win @@ -14,11 +14,11 @@ cd src make make install cd tools/embedded -cp libembedded_la-embedded.lo libmonetdb5.o -cp libembedded.la libembedded.a +cp libembeddedr_la-embeddedr.lo libmonetdb5.o +cp libembeddedr.la libembeddedr.a cp ../../sql/backends/monet5/lib_sql.la ../../sql/backends/monet5/libsql.a -"${R_HOME}/bin/R.exe" CMD SHLIB -o libmonetdb5.dll libmonetdb5.o -L. -L../../sql/backends/monet5 -Wl,--whole-archive -lembedded -lsql -Wl,--no-whole-archive -lpthread -lpsapi -lws2_32 -static-libgcc -static-libstdc++ -Wl,--export-all-symbols -Wl,--allow-multiple-definition -Lwindows/pcre-8.37/libs/x64/ -lpcre +"${R_HOME}/bin/R.exe" CMD SHLIB -o libmonetdb5.dll libmonetdb5.o -L. -L../../sql/backends/monet5 -Wl,--whole-archive -lembeddedr -lsql -Wl,--no-whole-archive -lpthread -lpsapi -lws2_32 -static-libgcc -static-libstdc++ -Wl,--export-all-symbols -Wl,--allow-multiple-definition -Lwindows/pcre-8.37/libs/x64/ -lpcre cd ../../.. mkdir -p $R_PACKAGE_DIR/libs/x64 _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list