Changeset: 503571785830 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=503571785830 Modified Files: clients/R/MonetDB.R/NEWS clients/R/MonetDB.R/R/dbi.R clients/R/Tests/dbapply.reqtests clients/R/Tests/dbi.R clients/R/Tests/dbi.stable.err clients/R/Tests/dbi.stable.out clients/R/Tests/dplyr.reqtests clients/R/Tests/survey.reqtests Branch: default Log Message:
R Connector: more identifier quoting fun diffs (236 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,7 +4,7 @@ 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 +- Fixes for dplyr backend (Thanks, Anthony) - 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) 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 @@ -287,15 +287,15 @@ setMethod("dbSendQuery", signature(conn= # quoting quoteIfNeeded <- function(conn, x, ...) { - chars <- !grepl("^[A-Za-z][A-Za-z0-9_]*$", x, perl=T) && !grepl("^\"[^\"]*\"$", x, perl=T) + chars <- !grepl("^[a-z][a-z0-9_]*$", x, perl=T) & !grepl("^\"[^\"]*\"$", x, perl=T) if (any(chars)) { - message("Identifier(s) ", paste(x[chars], collapse=", "), " contain reserved SQL characters and need to be quoted.") + message("Identifier(s) ", paste(x[chars], collapse=", "), " contain uppercase or reserved SQL characters and need(s) to be quoted in queries.") } reserved <- toupper(x) %in% .SQL92Keywords if (any(reserved)) { - message("Identifier(s) ", paste(x[reserved], collapse=", "), " are reserved SQL keywords and need to be quoted.") + message("Identifier(s) ", paste(x[reserved], collapse=", "), " are reserved SQL keywords and need(s) to be quoted in queries.") } - qts <- reserved || chars + qts <- reserved | chars x[qts] <- dbQuoteIdentifier(conn, x[qts]) x } diff --git a/clients/R/Tests/dbapply.reqtests b/clients/R/Tests/dbapply.reqtests --- a/clients/R/Tests/dbapply.reqtests +++ b/clients/R/Tests/dbapply.reqtests @@ -1,1 +1,2 @@ install +dbi diff --git a/clients/R/Tests/dbi.R b/clients/R/Tests/dbi.R --- a/clients/R/Tests/dbi.R +++ b/clients/R/Tests/dbi.R @@ -53,7 +53,6 @@ dbWriteTable(con,tname,iris) stopifnot(identical(dbExistsTable(con,tname),TRUE)) stopifnot(identical(dbExistsTable(con,"monetdbtest2"),FALSE)) stopifnot(tname %in% dbListTables(con)) - stopifnot(identical(dbListFields(con,tname),names(iris))) # get stuff, first very convenient iris2 <- dbReadTable(con,tname) @@ -178,7 +177,18 @@ dbWriteTable(conn, "evilt", data.frame(y stopifnot(dbExistsTable(conn, "evilt")) dbRollback(conn) -stopifnot(dbGetQuery(conn, "SELECT * FROM tables WHERE 1=0") != NULL) +# evil table from survey +stopifnot(dbIsValid(conn)) +dbBegin(conn) +data(api, package="survey") +x <- apiclus1 +x$idkey <- seq( nrow( x ) ) +dbWriteTable( conn , 'x' , x , transaction=F) +stopifnot(dbExistsTable(conn, "x")) +dbRollback(conn) + +# empty result set +stopifnot(!is.null(dbGetQuery(conn, "SELECT * FROM tables WHERE 1=0"))) stopifnot(dbIsValid(conn)) #thrice to catch null pointer errors diff --git a/clients/R/Tests/dbi.stable.err b/clients/R/Tests/dbi.stable.err --- a/clients/R/Tests/dbi.stable.err +++ b/clients/R/Tests/dbi.stable.err @@ -1,11 +1,11 @@ stderr of test 'dbi` in directory 'clients/R` itself: -# 16:49:50 > -# 16:49:50 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=36003" "--set" "mapi_usock=/var/tmp/mtest-66827/.s.monetdb.36003" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/Users/hannes/monetdb-install/var/MonetDB/mTests_clients_R" "--set" "mal_listing=0" "--set" "embedded_r=yes" -# 16:49:50 > +# 12:27:25 > +# 12:27:25 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=31728" "--set" "mapi_usock=/var/tmp/mtest-43693/.s.monetdb.31728" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/Users/hannes/monetdb-install/var/MonetDB/mTests_clients_R" "--set" "mal_listing=0" "--set" "embedded_r=yes" +# 12:27:25 > -# builtin opt gdk_dbpath = /Users/hannes/monetdb-install/var/monetdb5/dbfarm/demo +# builtin opt gdk_dbpath = /usr/local/Cellar/monetdb/11.19.9/var/monetdb5/dbfarm/demo # builtin opt gdk_debug = 0 # builtin opt gdk_vmtrim = no # builtin opt monet_prompt = > @@ -17,8 +17,8 @@ stderr of test 'dbi` in directory 'clien # builtin opt sql_debug = 0 # cmdline opt gdk_nr_threads = 0 # cmdline opt mapi_open = true -# cmdline opt mapi_port = 36003 -# cmdline opt mapi_usock = /var/tmp/mtest-66827/.s.monetdb.36003 +# cmdline opt mapi_port = 31728 +# cmdline opt mapi_usock = /var/tmp/mtest-43693/.s.monetdb.31728 # cmdline opt monet_prompt = # cmdline opt mal_listing = 2 # cmdline opt gdk_dbpath = /Users/hannes/monetdb-install/var/MonetDB/mTests_clients_R @@ -26,15 +26,18 @@ stderr of test 'dbi` in directory 'clien # cmdline opt embedded_r = yes # cmdline opt gdk_debug = 536870922 -# 16:49:50 > -# 16:49:50 > "R" "--vanilla" "--slave" "--args" "36003" -# 16:49:50 > +# 12:27:25 > +# 12:27:25 > "R" "--vanilla" "--slave" "--args" "31728" +# 12:27:25 > -Identifier(s) Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, Species contain reserved SQL characters and need to be quoted. -Identifier(s) Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, Species contain reserved SQL characters and need to be quoted. -Identifier(s) year, month, day are reserved SQL keywords and need to be quoted. +Identifier(s) Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, Species contain uppercase or reserved SQL characters and need(s) to be quoted in queries. +Identifier(s) Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, Species contain uppercase or reserved SQL characters and need(s) to be quoted in queries. +Identifier(s) some.dot contain uppercase or reserved SQL characters and need(s) to be quoted in queries. +Identifier(s) year, month, day are reserved SQL keywords and need(s) to be quoted in queries. +Identifier(s) sch.wide, comp.imp, yr.rnd, acs.k3, acs.46, acs.core, pct.resp, not.hsg, some.col, col.grad, grad.sch, avg.ed, api.stu contain uppercase or reserved SQL characters and need(s) to be quoted in queries. +Identifier(s) full are reserved SQL keywords and need(s) to be quoted in queries. -# 16:49:52 > -# 16:49:52 > "Done." -# 16:49:52 > +# 12:27:27 > +# 12:27:27 > "Done." +# 12:27:27 > diff --git a/clients/R/Tests/dbi.stable.out b/clients/R/Tests/dbi.stable.out --- a/clients/R/Tests/dbi.stable.out +++ b/clients/R/Tests/dbi.stable.out @@ -1,25 +1,20 @@ stdout of test 'dbi` in directory 'clients/R` itself: -# 16:49:50 > -# 16:49:50 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=36003" "--set" "mapi_usock=/var/tmp/mtest-66827/.s.monetdb.36003" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/Users/hannes/monetdb-install/var/MonetDB/mTests_clients_R" "--set" "mal_listing=0" "--set" "embedded_r=yes" -# 16:49:50 > +# 12:26:31 > +# 12:26:31 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=31372" "--set" "mapi_usock=/var/tmp/mtest-43570/.s.monetdb.31372" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/Users/hannes/monetdb-install/var/MonetDB/mTests_clients_R" "--set" "mal_listing=0" "--set" "embedded_r=yes" +# 12:26:31 > -# MonetDB 5 server v11.22.0 -# This is an unreleased version -# Serving database 'mTests_clients_R', using 4 threads -# Compiled for x86_64-apple-darwin14.3.0/64bit with 64bit OIDs and 128bit integers dynamically linked +# MonetDB 5 server v11.19.9 "Oct2014-SP2" +# Serving database 'mTests_clients_R', using 8 threads +# Compiled for x86_64-apple-darwin14.1.0/64bit with 64bit OIDs dynamically linked # Found 16.000 GiB available main-memory. # Copyright (c) 1993-July 2008 CWI. # Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved # Visit http://www.monetdb.org/ for further information -# Listening for connection requests on mapi:monetdb://dakar.da.cwi.nl.hhk.dk:36003/ -# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-66827/.s.monetdb.36003 -# MonetDB/GIS module loaded -# Start processing logs sql/sql_logs version 52200 -# Finished processing logs sql/sql_logs +# Listening for connection requests on mapi:monetdb://herbert2.local:31372/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-43570/.s.monetdb.31372 # MonetDB/SQL module loaded -# MonetDB/R module loaded Ready. # SQL catalog created, loading sql scripts once @@ -31,7 +26,7 @@ Ready. # loading sql script: 14_inet.sql # loading sql script: 15_querylog.sql # loading sql script: 16_tracelog.sql -# loading sql script: 17_temporal.sql +# loading sql script: 19_cluster.sql # loading sql script: 20_vacuum.sql # loading sql script: 21_dependency_functions.sql # loading sql script: 22_clients.sql @@ -39,27 +34,19 @@ Ready. # loading sql script: 24_zorder.sql # loading sql script: 25_debug.sql # loading sql script: 26_sysmon.sql -# loading sql script: 27_rejects.sql # loading sql script: 39_analytics.sql -# loading sql script: 39_analytics_hge.sql -# loading sql script: 40_geom.sql # loading sql script: 40_json.sql -# loading sql script: 40_json_hge.sql -# loading sql script: 41_md5sum.sql +# loading sql script: 41_jsonstore.sql # loading sql script: 45_uuid.sql -# loading sql script: 46_gsl.sql -# loading sql script: 51_sys_schema_extension.sql # loading sql script: 75_storagemodel.sql # loading sql script: 80_statistics.sql # loading sql script: 80_udf.sql -# loading sql script: 80_udf_hge.sql # loading sql script: 90_generator.sql -# loading sql script: 90_generator_hge.sql # loading sql script: 99_system.sql -# 16:49:50 > -# 16:49:50 > "R" "--vanilla" "--slave" "--args" "36003" -# 16:49:50 > +# 12:26:31 > +# 12:26:31 > "R" "--vanilla" "--slave" "--args" "31372" +# 12:26:31 > [1] TRUE [1] TRUE @@ -85,9 +72,12 @@ 1 150 [1] TRUE [1] TRUE [1] TRUE +[1] TRUE +[1] TRUE +[1] TRUE [1] "SUCCESS" -# 16:49:52 > -# 16:49:52 > "Done." -# 16:49:52 > +# 12:26:33 > +# 12:26:33 > "Done." +# 12:26:33 > diff --git a/clients/R/Tests/dplyr.reqtests b/clients/R/Tests/dplyr.reqtests --- a/clients/R/Tests/dplyr.reqtests +++ b/clients/R/Tests/dplyr.reqtests @@ -1,1 +1,2 @@ install +dbi diff --git a/clients/R/Tests/survey.reqtests b/clients/R/Tests/survey.reqtests --- a/clients/R/Tests/survey.reqtests +++ b/clients/R/Tests/survey.reqtests @@ -1,1 +1,2 @@ install +dbi _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list