?dbConnect) contains clickable links to all known backends (except ROracle), and an explanatory sentence (#360).
?Idgains better examples (#295, #370).
dbWriteTable()in the documentation (#352, #372).
setMethod()calls refer to top-level functions (#368).
?dbReadTableand other pages gain pointers to
dbAppendTable()now allows columns named
dbAppendTable()shows a better error message if the input has zero columns (#313).
sqlInterpolate()now correctly interprets consecutive comments (#329, @rnorberg).
dbQuoteLiteral()works for difftime objects (#325).
dbQuoteLiteral()quotes dates as
YYYY-MM-DDwithout time zone (#331).
DBIConnector class (#280).
dbUnquoteIdentifier() now supports
Id() objects with
catalog members (#266, @raffscallion). It also handles unquoted identifiers of the form
catalog.schema.table, for compatibility with dbplyr.
Add pkgdown reference index (#288).
DBI specification on https://dbi.r-dbi.org/dev/articles/spec now comes with a table of contents and code formatting.
Update examples to refer to
params instead of
Improve documentation for
dbAppendTable()that by default calls
paramargument, without support for
dbCreateTable()that by default calls
dbExecute(), without support for
dbCanConnect()generic with default implementation (#87).
dbIsReadOnly()generic with default implementation (#190, @anhqle).
dbColumnInfo()method is now fully specified (#75).
dbListFields()method is now fully specified (#75).
SQL()now strips the names from the output if the
namesargument is unset.
dbListFields()generics now specialize over the first two arguments to support implementations with the
IdS4 class as type for the second argument. Some packages may need to update their documentation to satisfy R CMD check again.
Id(), new generics
dbUnquoteIdentifier(), methods for
dbQuoteIdentifier()and then forward (#220).
dbQuoteLiteral()generic. The default implementation uses switchpatch to avoid dispatch ambiguities, and forwards to
dbQuoteString()for character vectors. Backends may override methods that also dispatch on the second argument, but in this case also an override for the
"SQL"class is necessary (#172).
dbQuoteLiteral()preserve names, default implementation of
dbQuoteString()strips names (#173).
dbQuoteIdentifier()are available again, for compatibility with clients that use
getMethod()to access them (#218).
row.names = FALSEas default and also supports
row.names = NULL(#186).
SQL()function gains an optional
namesargument which can be used to assign names to SQL strings.
sqlInterpolate()now supports both named and positional variables (#216, @hannesmuehleisen).
dbUnloadDriver()by documentation (#21).
sqlParseVariables()to be more consistent with the rest of the interface, and added
sqlParseVariables. DBI drivers are now expected to implement
sqlParseVariables(conn, sql, ..., .dots)and
sqlInterpolate(conn, sql, ...)(#147).
valueClass = "logical"for those generics where the return value is meaningless, to allow backends to return invisibly (#135).
DBItest, only those where the behavior is not finally decided don’t do this yet yet.
max.connectionsrequirement from documentation (#56).
dbBind()documentation and example (#136).
omegahat.net, the particular document still doesn’t exist below the new domain.
ticpackage for building documentation.
dbSendStatement()generic, forwards to
dbSendQuery()by default (#20, #132).
dbSendStatement()by default (#109, @bborgesr).
dbRollback()on failure (#110, @bborgesr).
dbBreak()function which allows aborting from within
staticdocsis now uploaded to https://rstats-db.github.io/DBI for each build of the “production” branch (#131).
New package maintainer: Kirill Müller.
dbGetInfo() gains a default method that extracts the information from
dbGetRowCount(). This means that most drivers should no longer need to implement
dbGetInfo() (which may be deprecated anyway at some point) (#55).
dbBind() for binding values to a parameterised query.
DBI gains a number of SQL generation functions. These make it easier to write backends by implementing common operations that are slightly tricky to do absolutely correctly.
sqlAppendTable() create tables from a data frame and insert rows into an existing table. These will power most implementations of
sqlAppendTable() is useful for databases that support parameterised queries.
sqlData() is a new generic that converts a data frame into a data frame suitable for sending to the database. This is used to (e.g.) ensure all character vectors are encoded as UTF-8, or to convert R varible types (like factor) to types supported by the database.
dbiCheckCompliance() has been removed, the functionality is now available in the
DBItest package (#80).
show() methods for driver, connection and results.
ANSIConnection class and
ANSI() function to generate a dummy ANSI compliant connection useful for testing.
The initial DBI proposal and DBI version 1 specification are now included as a vignette. These are there mostly for historical interest.
DBItest package is described in the vignette.
dbFetch() added as alias to
fetch() to provide consistent name. Implementers should define methods for both
fetch() is deprecated in 2015. For now, the default method for
dbGetRowCount() gain default methods that extract the appropriate elements from
dbGetInfo(). This means that most drivers should no longer need to implement these methods (#13).
The following functions are soft-deprecated. They are going away, and developers who use the DBI should begin preparing. The formal deprecation process will begin in July 2015, where these function will emit warnings on use.
dbGetDBIVersion() is deprecated since it’s now just a thin wrapper around
dbiCheckCompliance() makes it easier for implementors to check that their package is in compliance with the DBI specification.
All examples now use the RSQLite package so that you can easily try out the code samples (#4).
DBI has been converted to use roxygen2 for documentation, and now most functions have their own documentation files. I would love your feedback on how we could make the documentation better!
Code cleanups contributed by Matthias Burger: avoid partial argument name matching and use TRUE/FALSE, not T/F.
Change behavior of make.db.names.default to quote SQL keywords if allow.keywords is FALSE. Previously, SQL keywords would be name mangled with underscores and a digit. Now they are quoted using ‘“’.
Removed the “valueClass” from some generic functions, namely, dbListConnections, dbListResults, dbGetException, dbGetQuery, and dbGetInfo. The reason is that methods for these generics could potentially return different classes of objects (e.g., the call dbGetInfo(res) could return a list of name-value pairs, while dbGetInfo(res, “statement”) could be a character vector).
Added 00Index to inst/doc
Added dbGetDBIVersion() (simple wrapper to package.description).