Changeset: 6d92ae5e37f2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6d92ae5e37f2
Added Files:
        clients/R/MonetDB.R/man/MonetDBLite.Rd
        sql/test/BugTracker-2015/Tests/dump-DELETE.Bug-3850.sql
        sql/test/BugTracker-2015/Tests/dump-DELETE.Bug-3850.stable.err
        sql/test/BugTracker-2015/Tests/dump-DELETE.Bug-3850.stable.out
        sql/test/BugTracker-2015/Tests/hugeint-wrong-value.Bug-3849.sql
        sql/test/BugTracker-2015/Tests/hugeint-wrong-value.Bug-3849.stable.err
        sql/test/BugTracker-2015/Tests/hugeint-wrong-value.Bug-3849.stable.out
Removed Files:
        monetdb5/mal/mal_properties.c
        monetdb5/mal/mal_properties.h
Modified Files:
        MonetDB.spec
        clients/R/MonetDB.R/DESCRIPTION
        clients/R/MonetDB.R/NAMESPACE
        clients/R/MonetDB.R/NEWS
        clients/R/MonetDB.R/R/dbi.R
        clients/R/MonetDB.R/R/dplyr.R
        clients/R/MonetDB.R/R/mapi.R
        clients/R/MonetDB.R/man/MonetDB.R.Rd
        clients/R/MonetDB.R/man/monetdb.read.csv.Rd
        clients/R/Tests/dbi.stable.out
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/Tests/malcheck.stable.err
        clients/mapiclient/dump.c
        clients/ruby/Tests/All
        clients/ruby/Tests/rubytest.rb
        clients/ruby/Tests/rubytest.stable.err
        clients/ruby/Tests/rubytest.stable.out
        clients/ruby/doc/readme.txt
        gdk/gdk_atoms.c
        geom/monetdb5/geom.mal
        monetdb5/ChangeLog
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.err
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
        monetdb5/mal/Makefile.ag
        monetdb5/mal/Tests/All
        monetdb5/mal/Tests/tst3050.mal
        monetdb5/mal/mal.h
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_errors.h
        monetdb5/mal/mal_factory.c
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_instruction.h
        monetdb5/mal/mal_listing.c
        monetdb5/mal/mal_listing.h
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_session.c
        monetdb5/modules/atoms/mtime.mal
        monetdb5/modules/atoms/streams.mal
        monetdb5/modules/kernel/alarm.mal
        monetdb5/modules/kernel/mmath.mal
        monetdb5/modules/mal/batExtensions.c
        monetdb5/modules/mal/inspect.c
        monetdb5/modules/mal/manifold.c
        monetdb5/optimizer/Tests/All
        monetdb5/optimizer/Tests/dataflow3.mal
        monetdb5/optimizer/Tests/dataflow3.stable.out
        monetdb5/optimizer/Tests/inline00.mal
        monetdb5/optimizer/Tests/inline00.stable.out
        monetdb5/optimizer/Tests/inline01.mal
        monetdb5/optimizer/Tests/inline01.stable.out
        monetdb5/optimizer/Tests/inline02.mal
        monetdb5/optimizer/Tests/inline02.stable.out
        monetdb5/optimizer/Tests/inline03.mal
        monetdb5/optimizer/Tests/inline03.stable.out
        monetdb5/optimizer/Tests/inline04.mal
        monetdb5/optimizer/Tests/inline04.stable.out
        monetdb5/optimizer/Tests/inline05.mal
        monetdb5/optimizer/Tests/inline05.stable.out
        monetdb5/optimizer/Tests/inline06.mal
        monetdb5/optimizer/Tests/inline06.stable.out
        monetdb5/optimizer/Tests/inline07.mal
        monetdb5/optimizer/Tests/inline07.stable.out
        monetdb5/optimizer/Tests/inline08.mal
        monetdb5/optimizer/Tests/inline08.stable.out
        monetdb5/optimizer/Tests/inline09.mal
        monetdb5/optimizer/Tests/inline09.stable.out
        monetdb5/optimizer/Tests/inline10.mal
        monetdb5/optimizer/Tests/inline10.stable.out
        monetdb5/optimizer/Tests/inline11.mal
        monetdb5/optimizer/Tests/inlineCst.mal
        monetdb5/optimizer/Tests/inlineCst.stable.out
        monetdb5/optimizer/Tests/inlineFunction.mal
        monetdb5/optimizer/Tests/inlineFunction.stable.out
        monetdb5/optimizer/Tests/inlineFunction1.mal
        monetdb5/optimizer/Tests/inlineFunction1.stable.out
        monetdb5/optimizer/Tests/inlineFunction2.mal
        monetdb5/optimizer/Tests/inlineFunction2.stable.out
        monetdb5/optimizer/Tests/inlineFunction3.mal
        monetdb5/optimizer/Tests/inlineFunction3.stable.out
        monetdb5/optimizer/Tests/inlineFunction4.mal
        monetdb5/optimizer/Tests/inlineFunction4.stable.out
        monetdb5/optimizer/Tests/inlineIfthen.mal
        monetdb5/optimizer/Tests/inlineIfthen.stable.out
        monetdb5/optimizer/opt_costModel.c
        monetdb5/optimizer/opt_costModel.h
        monetdb5/optimizer/opt_dataflow.c
        monetdb5/optimizer/opt_deadcode.c
        monetdb5/optimizer/opt_evaluate.c
        monetdb5/optimizer/opt_garbageCollector.c
        monetdb5/optimizer/opt_generator.c
        monetdb5/optimizer/opt_inline.c
        monetdb5/optimizer/opt_joinpath.c
        monetdb5/optimizer/opt_macro.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_remap.c
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_support.h
        monetdb5/optimizer/opt_wrapper.c
        monetdb5/scheduler/Tests/sched00.mal
        monetdb5/scheduler/Tests/sched00.stable.out
        sql/backends/monet5/UDF/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/Tests/udf-reverse.stable.out
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_inspect.mal
        sql/benchmarks/ssbm/Tests/01-explain.stable.out
        sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/02-explain.stable.out
        sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/03-explain.stable.out
        sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/04-explain.stable.out
        sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/05-explain.stable.out
        sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/06-explain.stable.out
        sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/07-explain.stable.out
        sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/08-explain.stable.out
        sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/09-explain.stable.out
        sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/10-explain.stable.out
        sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/11-explain.stable.out
        sql/benchmarks/ssbm/Tests/11-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/12-explain.stable.out
        sql/benchmarks/ssbm/Tests/12-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/13-explain.stable.out
        sql/benchmarks/ssbm/Tests/13-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/01-explain.stable.out
        sql/benchmarks/tpch/Tests/01-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/02-explain.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/04-explain.stable.out
        sql/benchmarks/tpch/Tests/04-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/05-explain.stable.out
        sql/benchmarks/tpch/Tests/05-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/05-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/06-explain.stable.out
        sql/benchmarks/tpch/Tests/06-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/07-explain.stable.out
        sql/benchmarks/tpch/Tests/07-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/08-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/09-explain.stable.out
        sql/benchmarks/tpch/Tests/09-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/10-explain.stable.out
        sql/benchmarks/tpch/Tests/10-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/11-explain.stable.out
        sql/benchmarks/tpch/Tests/11-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/12-explain.stable.out
        sql/benchmarks/tpch/Tests/12-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/13-explain.stable.out
        sql/benchmarks/tpch/Tests/13-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/14-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/15-explain.stable.out
        sql/benchmarks/tpch/Tests/15-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/16-explain.stable.out
        sql/benchmarks/tpch/Tests/17-explain.stable.out
        sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/18-explain.stable.out
        sql/benchmarks/tpch/Tests/18-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/19-explain.stable.out
        sql/benchmarks/tpch/Tests/19-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/20-explain.stable.out
        sql/benchmarks/tpch/Tests/20-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/20-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/21-explain.stable.out
        sql/benchmarks/tpch/Tests/21-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/22-explain.stable.out
        sql/benchmarks/tpch/Tests/22-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/22-explain.stable.out.int128
        sql/server/rel_optimizer.c
        sql/server/rel_select.c
        sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
        sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.stable.out
        sql/test/BugTracker-2015/Tests/All
        sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out
        sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out.single
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        sql/test/mapi/Tests/sql_int128.stable.out
        sql/test/mergetables/Tests/mergequery.stable.out
        sql/test/pg_regress/Tests/strings.stable.err.int128
        sql/test/remote/Tests/partition_elim.stable.out
        sql/test/testdb-upgrade-hge/Tests/dump.stable.out
        sql/test/testdb-upgrade/Tests/dump.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
        testing/Mfilter.py
        testing/Mtest.py.in
        tools/embedded/Tests/dbi.R
Branch: embedded-java
Log Message:

Merge with embedded branch


diffs (truncated from 15903 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -403,38 +403,12 @@ program.
 
 %files -n rubygem-monetdb-sql
 %defattr(-,root,root)
-%docdir %{gem_dir}/doc/ruby-monetdb-sql-0.1
-%{gem_dir}/doc/ruby-monetdb-sql-0.1/*
-%{gem_dir}/cache/ruby-monetdb-sql-0.1.gem
-# %dir %{gem_dir}/gems/ruby-monetdb-sql-0.1
-%{gem_dir}/gems/ruby-monetdb-sql-0.1
-%{gem_dir}/specifications/ruby-monetdb-sql-0.1.gemspec
-
-%package -n rubygem-activerecord-monetdb-adapter
-Summary: MonetDB ruby interface
-Group: Applications/Databases
-Requires: ruby(release)
-Requires: rubygem-activerecord
-Requires: rubygem-monetdb-sql
-BuildArch: noarch
-
-%description -n rubygem-activerecord-monetdb-adapter
-MonetDB is a database management system that is developed from a
-main-memory perspective with use of a fully decomposed storage model,
-automatic index management, extensibility of data types and search
-accelerators.  It also has an SQL frontend.
-
-This package contains the activerecord adapter for MonetDB.
-
-%files -n rubygem-activerecord-monetdb-adapter
-%defattr(-,root,root)
-%docdir %{gem_dir}/doc/activerecord-monetdb-adapter-0.1
-%{gem_dir}/doc/activerecord-monetdb-adapter-0.1/*
-%{gem_dir}/cache/activerecord-monetdb-adapter-0.1.gem
-# %dir %{gem_dir}/gems/activerecord-monetdb-adapter-0.1
-%{gem_dir}/gems/activerecord-monetdb-adapter-0.1
-%{gem_dir}/specifications/activerecord-monetdb-adapter-0.1.gemspec
-%endif
+%docdir %{gem_dir}/doc/ruby-monetdb-sql-0.2
+%{gem_dir}/doc/ruby-monetdb-sql-0.2/*
+%{gem_dir}/cache/ruby-monetdb-sql-0.2.gem
+# %dir %{gem_dir}/gems/ruby-monetdb-sql-0.2
+%{gem_dir}/gems/ruby-monetdb-sql-0.2
+%{gem_dir}/specifications/ruby-monetdb-sql-0.2.gemspec
 
 %package client-tests
 Summary: MonetDB Client tests package
diff --git a/clients/R/MonetDB.R/DESCRIPTION b/clients/R/MonetDB.R/DESCRIPTION
--- a/clients/R/MonetDB.R/DESCRIPTION
+++ b/clients/R/MonetDB.R/DESCRIPTION
@@ -2,9 +2,9 @@ Package: MonetDB.R
 Version: 1.0.0
 Title: Connect MonetDB to R
 Authors@R: c(person("Hannes Muehleisen", role = c("aut", "cre"),email = 
"han...@cwi.nl"),
-       person("Thomas Lumley", role = "ctb"),
-       person("Anthony Damico", role = "ctb"))
-Author: Hannes Muehleisen [aut, cre], Thomas Lumley [ctb], Anthony Damico [ctb]
+       person("Anthony Damico", role = "aut"),
+       person("Thomas Lumley", role = "ctb"))
+Author: Hannes Muehleisen [aut, cre], Anthony Damico [aut], Thomas Lumley [ctb]
 Maintainer: Hannes Muehleisen <han...@cwi.nl>
 Depends: DBI (>= 0.3.1)
 Imports: digest (>= 0.6.4), methods, codetools
diff --git a/clients/R/MonetDB.R/NAMESPACE b/clients/R/MonetDB.R/NAMESPACE
--- a/clients/R/MonetDB.R/NAMESPACE
+++ b/clients/R/MonetDB.R/NAMESPACE
@@ -2,6 +2,7 @@ import(DBI,digest,methods,codetools,util
 
 # export only driver constructor, everything else is DBI stuff..
 export(MonetDB,MonetR,MonetDBR,MonetDB.R)
+export(MonetDBLite,monetdblite,RMonetDBLite,rmonetdblite)
 export(monet.read.csv,monetdb.read.csv)
 # this one is not in the DBI
 exportMethods(dbSendUpdate,dbSendUpdateAsync,dbTransaction,mdbapply)
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
@@ -8,19 +8,22 @@ 1.0.0
 - 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
-- 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
 - Cleaned up quoting behavior in dbListTables(), dbRemoveTable() etc.
-- Initial support for running MonetDB in embedded mode (MonetDBLite)
 - Now re-establishing connection if interrupt (CMD-C or ESC) occurs
 - Fixed a bug in monetdb.read.csv for multiple CSV files without headers
+- Added transactions to monetdb.read.csv so no empty tables are left over
+- Removed nrows parameter to monetdb.read.csv
+- Added col.names argument to monetdb.read.csv
 - 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
-- Added transactions to monetdb.read.csv so no empty tables are left over
 - Fixed != comparisions in dplyr (Thanks, David)
 - New "mclient" function to get a shell-like DB interface
+- Support for running MonetDB in embedded mode (MonetDBLite)
+- Support for monetdblite:/some/path URLs in dbConnect()
+- Fixed an off-by-one error in type conversion (Thanks, Kirill)
 
 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
@@ -6,19 +6,16 @@ setOldClass(c("sockconn", "connection", 
 
 ### MonetDBDriver
 setClass("MonetDBDriver", representation("DBIDriver"))
+setClass("MonetDBEmbeddedDriver", representation("MonetDBDriver"))
 
 # allow instantiation of this driver with MonetDB to allow existing programs 
to work
-MonetR <- MonetDB <- MonetDBR <- MonetDB.R <- function() {
-  new("MonetDBDriver")
-}
+MonetR <- MonetDB <- MonetDBR <- MonetDB.R <- function() new("MonetDBDriver")
 
-setMethod("dbIsValid", "MonetDBDriver", def=function(dbObj, ...) {
-  return(invisible(TRUE)) # driver object cannot be invalid
-})
+MonetDBLite <- monetdblite <- RMonetDBLite <- rmonetdblite <- function() 
new("MonetDBEmbeddedDriver")
 
-setMethod("dbUnloadDriver", "MonetDBDriver", def=function(drv, ...) {
-  return(invisible(TRUE)) # there is nothing to really unload here...
-})
+setMethod("dbIsValid", "MonetDBDriver", def=function(dbObj, ...) 
invisible(TRUE))
+
+setMethod("dbUnloadDriver", "MonetDBDriver", def=function(drv, ...) 
invisible(TRUE))
 
 setMethod("dbGetInfo", "MonetDBDriver", def=function(dbObj, ...)
   list(name="MonetDBDriver", 
@@ -46,7 +43,7 @@ setMethod("dbConnect", "MonetDBDriver", 
                                                      password="monetdb", 
host="localhost", port=50000L, timeout=86400L, wait=FALSE, language="sql", 
embedded=FALSE,
                                                      ..., url="") {
   
-  if (substring(url, 1, 10) == "monetdb://") {
+  if (substring(url, 1, 10) == "monetdb://" || substring(url, 1, 12) == 
"monetdblite:") {
     dbname <- url
   }
   timeout <- as.integer(timeout)
@@ -81,12 +78,21 @@ setMethod("dbConnect", "MonetDBDriver", 
   }
   # this is important, otherwise we'll trip an assertion
   port <- as.integer(port)
-
   # validate port number
   if (length(port) != 1 || port < 1 || port > 65535) {
     stop("Illegal port number ",port)
   }
 
+  # support monetdblite:/db/dir urls to fool sqlsurvey
+  if (substring(dbname, 1, 12) == "monetdblite:") {
+    embedded <- substring(dbname, 13, nchar(dbname))
+  }
+
+  if (inherits(drv, "MonetDBEmbeddedDriver")) {
+    if (missing(dbname)) embedded <- tempdir()
+    else embedded <- dbname
+  }
+
   if (embedded != FALSE) {
     if (!require("MonetDBLite", character.only=T)) {
       stop("MonetDBLite package required for embedded mode")
@@ -95,7 +101,9 @@ setMethod("dbConnect", "MonetDBDriver", 
     connenv <- new.env(parent=emptyenv())
     connenv$conn <- MonetDBLite::monetdb_embedded_connect()
     connenv$open <- TRUE
-    return(new("MonetDBEmbeddedConnection", connenv=connenv))
+    conn <- new("MonetDBEmbeddedConnection", connenv=connenv)
+    attr(conn, "dbPreExists") <- TRUE
+    return(conn)
   }
   
   if (getOption("monetdb.debug.mapi", F)) message("II: Connecting to MonetDB 
on host ", host, " at "
@@ -138,6 +146,7 @@ setMethod("dbConnect", "MonetDBDriver", 
     message("MonetDB: Switching to single-threaded query execution.")
     dbSendQuery(conn, "set optimizer='sequential_pipe'")
   }
+  attr(conn, "dbPreExists") <- TRUE
   conn
 }, 
 valueClass="MonetDBConnection")
@@ -352,7 +361,7 @@ setMethod("dbSendQuery", signature(conn=
     env$conn <- conn
     env$query <- statement
     env$info <- resp
-
+    env$info$rows <- 0
   }
   if (resp$type == MSG_MESSAGE) {
     env$success = FALSE
@@ -383,13 +392,31 @@ setMethod("dbSendQuery", signature(conn=
   })
 
 
+reserved_monetdb_keywords <- c(.SQL92Keywords, 
+"ADMIN", "AFTER", "AGGREGATE", "ALWAYS", "ASYMMETRIC", "ATOMIC", 
+"AUTO_INCREMENT", "BEFORE", "BEST", "BIGINT", "BIGSERIAL", "BINARY", 
+"BLOB", "CALL", "CHAIN", "CLOB", "COMMITTED", "COPY", "CROSS", 
+"CURRENT_ROLE", "CURRENT_TIME", "CURRENT_USER", "DELIMITERS", 
+"DO", "EACH", "EFFORT", "ELSEIF", "ENCRYPTED", "EXCLUDE", "FOLLOWING", 
+"FUNCTION", "GENERATED", "HUGEINT", "IF", "ILIKE", "LIMIT", "LOCALTIME", 
+"LOCALTIMESTAMP", "LOCKED", "MERGE", "NATURAL", "NEW", "NOCYCLE", 
+"NOMAXVALUE", "NOMINVALUE", "OFFSET", "OLD", "ON", "OTHERS", 
+"OVER", "PARTITION", "PRECEDING", "RANGE", "RECORDS", "REFERENCING", 
+"REMOTE", "RENAME", "REPEATABLE", "REPLICA", "RESTART", "RETURN", 
+"RETURNS", "SAMPLE", "SAVEPOINT", "SEQUENCE", "SERIAL", "SERIALIZABLE", 
+"SESSION_USER", "SIMPLE", "SPLIT_PART", "STDIN", "STDOUT", "STREAM", 
+"SYMMETRIC", "TIES", "TINYINT", "TRIGGER", "UNBOUNDED", "UNCOMMITTED", 
+"UNENCRYPTED", "WHILE", "XMLAGG", "XMLATTRIBUTES", "XMLCOMMENT", 
+"XMLCONCAT", "XMLDOCUMENT", "XMLELEMENT", "XMLFOREST", "XMLNAMESPACES", 
+"XMLPARSE", "XMLPI", "XMLQUERY", "XMLSCHEMA", "XMLTEXT", "XMLVALIDATE")
+
 # quoting
 quoteIfNeeded <- function(conn, x, warn=T, ...) {
   chars <- !grepl("^[a-z_][a-z0-9_]*$", x, perl=T) & !grepl("^\"[^\"]*\"$", x, 
perl=T)
   if (any(chars) && warn) {
     message("Identifier(s) ", paste("\"", x[chars],"\"", collapse=", ", 
sep=""), " contain uppercase or reserved SQL characters and need(s) to be 
quoted in queries.")
   }
-  reserved <- toupper(x) %in% .SQL92Keywords
+  reserved <- toupper(x) %in% reserved_monetdb_keywords
   if (any(reserved) && warn) {
     message("Identifier(s) ", paste("\"", x[reserved],"\"", collapse=", ", 
sep=""), " are reserved SQL keywords and need(s) to be quoted in queries.")
   }
@@ -575,7 +602,7 @@ setClass("MonetDBEmbeddedResult", repres
 .CT_RAW <- 5L
 
 # type mapping matrix
-monetTypes <- rep(c("integer", "numeric", "character", "character", "logical", 
"raw"), c(6, 5, 4, 6, 1, 1))
+monetTypes <- rep(c("integer", "numeric", "character", "character", "logical", 
"raw"), c(5, 6, 4, 6, 1, 1))
 names(monetTypes) <- c(c("WRD", "TINYINT", "SMALLINT", "INT", 
"MONTH_INTERVAL"), # month_interval is the diff between date cols, int
   c("BIGINT", "HUGEINT", "REAL", "DOUBLE", "DECIMAL", "SEC_INTERVAL"),  # 
sec_interval is the difference between timestamps, float
   c("CHAR", "VARCHAR", "CLOB", "STR"), 
@@ -606,9 +633,13 @@ setMethod("dbFetch", signature(res="Mone
   if (!dbIsValid(res)) {
     stop("Cannot fetch results from closed response.")
   }
-  
+ 
   # okay, so we arrive here with the tuples from the first result in 
res@env$data as a list
   info <- res@env$info
+  # apparently, one should be able to fetch results sets from ddl ops
+  if (info$type == Q_UPDATE) { 
+    return(data.frame())
+  }
   if (res@env$delivered < 0) {
     res@env$delivered <- 0
   }
@@ -788,18 +819,14 @@ setMethod("dbGetInfo", "MonetDBResult", 
 }, valueClass="list")
 
 # adapted from RMonetDB, no java-specific things in here...
-monet.read.csv <- monetdb.read.csv <- function(conn, files, tablename, 
nrows=NA, header=TRUE, 
-                                               locked=FALSE, na.strings="", 
nrow.check=500, 
+monet.read.csv <- monetdb.read.csv <- function(conn, files, tablename, 
header=TRUE, 
+                                               locked=FALSE, 
best.effort=FALSE, na.strings="", nrow.check=500, 
                                                delim=",", newline="\\n", 
quote="\"", create=TRUE, 
                                                col.names=NULL, 
lower.case.names=FALSE, ...){
   
   if (length(na.strings)>1) stop("na.strings must be of length 1")
   headers <- lapply(files, utils::read.csv, sep=delim, na.strings=na.strings, 
quote=quote, nrows=nrow.check, header=header, ...)
 
-  if (!missing(nrows)) {
-    warning("monetdb.read.csv(): nrows parameter is not neccessary any more 
and deprecated.")
-  }
-
   if (length(files)>1){
     nn <- sapply(headers, ncol)
     if (!all(nn==nn[1])) stop("Files have different numbers of columns")
@@ -833,7 +860,7 @@ monet.read.csv <- monetdb.read.csv <- fu
     thefile <- normalizePath(files[i])
     dbSendUpdate(conn, paste("COPY", if(header) "OFFSET 2", "INTO", 
       tablename, "FROM", paste("'", thefile, "'", sep=""), delimspec, "NULL 
as", paste("'", 
-      na.strings[1], "'", sep=""), if(locked) "LOCKED"))
+      na.strings[1], "'", sep=""), if(locked) "LOCKED", if(best.effort) "BEST 
EFFORT"))
   }
   dbGetQuery(conn, paste("SELECT COUNT(*) FROM", tablename))[[1]]
   dbCommit(conn)
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
@@ -1,4 +1,4 @@
-src_monetdb <- function(dbname, host = "localhost", port = 50000L, user = 
"monetdb",
+src_monetdb <- function(dbname="demo", host = "localhost", port = 50000L, user 
= "monetdb",
   password = "monetdb", con = FALSE, ...) {
   if (!inherits(con, "MonetDBConnection") || !dbIsValid(con)) {
     con <- dbConnect(MonetDB.R(), dbname = dbname , host = host, port = port,
diff --git a/clients/R/MonetDB.R/R/mapi.R b/clients/R/MonetDB.R/R/mapi.R
--- a/clients/R/MonetDB.R/R/mapi.R
+++ b/clients/R/MonetDB.R/R/mapi.R
@@ -183,7 +183,8 @@ REPLY_SIZE    <- 100 # Apparently, -1 me
     if (typeKey == Q_TABLE || typeKey == Q_PREPARE) {
       header <- .mapiParseHeader(lines[1])
       if (getOption("monetdb.debug.query", F)) message("QQ: Query result for 
query ", header$id, 
-                                                       " with ", header$rows, 
" rows and ", header$cols, " cols, ", header$index, " rows.")
+                                                       " with ", 
.mapiLongInt(header$rows), " rows and ", 
+                                                       header$cols, " cols, ", 
header$index, " rows.")
       
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to