Changes:
- New dbAppendTable() that by default calls sqlAppendTableTemplate()
and then dbExecute() with a param argument, without support for
row.names argument.
- New dbCreateTable() that by default calls sqlCreateTable() and then
dbExecute(), without support for row.names argument.
- New dbCanConnect() generic with default implementation.
- New dbIsReadOnly() generic with default implementation.
- sqlAppendTable() now accepts lists for the values argument, to
support lists of SQL objects in R 3.1.
- Add default implementation for dbListFields(DBIConnection, Id), this
relies on dbQuoteIdentifier(DBIConnection, Id).
- Documentation updates and ug fixes.
Notable changes since 0.7.0:
- SQL() now strips the names from the output if the names argument is
unset.
- The dbReadTable(), dbWriteTable(), dbExistsTable(), dbRemoveTable(),
and dbListFields() generics now specialize over the first two
arguments to support implementations with the Id S4 class as type
for the second argument. Some packages may need to update their
documentation to satisfy R CMD check again.
- Schema support: Export Id(), new generics dbListObjects() and
dbUnquoteIdentifier(), methods for Id that call dbQuoteIdentifier()
and then forward.
- New 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.
Notable changes since 0.3.1:
- dbGetInfo() gains a default method.
- New generic dbBind() for binding values to a parameterised query.
- DBI gains a number of SQL generation functions.
- dbDataType() maps character values to "TEXT" by default.
- The default implementation of dbQuoteString() doesn’t call
encodeString() anymore.
- Deprecated dbDriver() and dbUnloadDriver().
- Import updated specs from DBItest.
- Require R>=3.0.0.
Upstream changes:
# Version 0.3.1
* Actually export `dbIsValid()` :/
* `dbGetQuery()` uses `dbFetch()` in the default implementation.
# Version 0.3.0
## New and enhanced generics
* `dbIsValid()` returns a logical value describing whether a connection or
result set (or other object) is still valid. (#12).
* `dbQuoteString()` and `dbQuoteIdentifier()` to implement database specific
quoting mechanisms.
* `dbFetch()` added as alias to `fetch()` to provide consistent name.
Implementers should define methods for both `fetch()` and `dbFetch()` until
`fetch()` is deprecated in 2015. For now, the default method for `dbFetch()`
calls `fetch()`.
* `dbBegin()` begins a transaction (#17). If not supported, DB specific
methods should throw an error (as should `dbCommit()` and `dbRollback()`).
## New default methods
* `dbGetStatement()`, `dbGetRowsAffected()`, `dbHasCompleted()`, and
`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).
* `dbGetQuery()` gains a default method for `DBIConnection` which uses
`dbSendQuery()`, `fetch()` and `dbClearResult()`.
## Deprecated features
* 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.
* `fetch()` is replaced by `dbFetch()`.
* `make.db.names()`, `isSQLKeyword()` and `SQLKeywords()`: a black list
based approach is fundamentally flawed; instead quote strings and
identifiers with `dbQuoteIdentifier()` and `dbQuoteString()`.
* `dbGetDBIVersion()` is deprecated since it's now just a thin wrapper
around `packageVersion("DBI")`.
* `dbSetDataMappings()` (#9) and `dbCallProc()` (#7) are deprecated as no
implementations were ever provided.
## Other improvements
* `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).
* `dbDriver()` gains a more effective search mechanism that doesn't rely on
packages being loaded (#1).
* 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!
Upstream changes:
Version 0.2-7
* Trivial changes (updated package fields, daj)
Version 0.2-6
* Removed deprecated \synopsis in some Rd files (thanks to Prof. Ripley)
A database interface (DBI) definition for communication between R and
relational database management systems. All classes in this package
are virtual and need to be extended by the various R/DBMS
implementations.