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 =
"[email protected]"),
- 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 <[email protected]>
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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list