Recent Releases of DBI
DBI - DBI 1.2.3
Bug fixes
dbQuoteLiteral()uses the format"%Y-%m-%d %H-%M-%S%z"which is understood by more databases (#467, #474).
Documentation
- Use relational-data.org as a replacement for relational.fit.cvut.cz.
- Set BS version explicitly for now (@maelle, #478).
- Include
dbGetInfo()in the spec (#477). - Fix typos (@salim-b, #469, @MichaelChirico, #482).
- HTML
Published by github-actions[bot] over 1 year ago
DBI - DBI 1.2.1
Bug fixes
Fix
dbWriteTableArrow()according to spec (#457).Fix type inference in default method for
dbCreateTableArrow()(#450).
Features
dbAppendTableArrow()returns number of rows (#454).Add
temporaryargument todbCreateTableArrow()(#453).Avoid coercing
paramsin default implementation fordbSendQueryArrow()(#447).Use
nanoarrow::infer_nanoarrow_schema()in the default method fordbCreateTable()(#445).
Chore
Add badge to
DBIResultArrowclass (#452).Change maintainer e-mail.
Documentation
Finalize Arrow vignette (#451, #455).
Document new Arrow generics (#444, #449).
Use dbitemplate (@maelle, #442).
- HTML
Published by github-actions[bot] about 2 years ago
DBI - DBI 1.2.0
Breaking changes
dbUnquoteIdentifier()createsId()objects without component names and allows non-NAcharacter input (#421, #422).
Features
New generics
dbSendQueryArrow(),dbFetchArrow(),dbGetQueryArrow(),dbReadTableArrow(),dbWriteTableArrow()(@nbenn, #390),dbCreateTableArrow(),dbAppendTableArrow()(#396),dbBindArrow()(#415) anddbFetchArrowChunk()(#424), with default implementations via nanoarrow (#414).Id()now accepts unnamed components (#417). If names are provided, the components are arranged in SQL order (@eauleaf, #427).New
dbIsValid()method for"DBIResultArrowDefault"objects implemented by DBI (#425).Implement
dbiDataType()for objects of class"blob".
Documentation
Update pkgdown template (@maelle, #428, #438, #437).
Clarify repeated parameter binding (#430).
Deal with sundown of
https://relational.fit.cvut.cz(#423).Correct vignette titles (#419).
Harmonize table documentation (#400).
Tweak typo, add families for data retrieval and command execution.
Testing
Enable BLOB tests for arrow >= 10.0.0 (#395).
Run DBItest for SQLite as part of the checks here (#431).
Fix checks without suggested packages (#420).
Fix Windows tests on GHA (#406).
testthat::use_testthat(3)(#416).
- HTML
Published by github-actions[bot] about 2 years ago
DBI - DBI 1.1.3
Features
dbAppendTable()acceptsId(#381, @renkun-ken).
Documentation
?dbSendQueryand related methods gain a section "The data retrieval flow" (#386).?dbSendStatementand related methods gain a section "The command execution flow" (#386).
- HTML
Published by krlmlr over 3 years ago
DBI - DBI 1.1.2
Features
- Use
dbQuoteLiteral()in default method forsqlData()(#362, #371). - Update specification with changes from DBItest 1.7.2 (#367).
Documentation
- Method documentation on pkgdown is clickable and contains methods from all known DBI backends except ROracle (#360).
?Idgains better examples (#295, #370).- Elaborate on status of
dbWriteTable()in the documentation (#352, #372). - Make method definition more similar to S3. All
setMethod()calls refer to top-level functions (#368). - The pkgdown documentation for DBI generics (e.g.
?dbConnect) contains clickable links to many known backends, and an explanatory sentence (#360). ?dbReadTableand other pages gain pointers toId()andSQL()(#359).
- HTML
Published by krlmlr about 4 years ago
DBI - DBI 1.1.1
Documentation
- Expand "Get started" vignette to two tutorials, basic and advanced (#332, @jawond).
Bug fixes
dbAppendTable()now allows columns namedsep(#336).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 asYYYY-MM-DDwithout time zone (#331).
Internal
- Switch to GitHub Actions (#326).
- Update URL in
DESCRIPTION.
- HTML
Published by krlmlr about 5 years ago
DBI - DBI 1.1.0
New features
New
DBIConnectorclass (#280).Specify
immediateargument todbSendQuery(),dbGetQuery(),dbSendStatement()anddbExecute()(#268).Use specification for
dbGetInfo()(#271).dbUnquoteIdentifier()now supportsId()objects withcatalogmembers (#266, @raffscallion). It also handles unquoted identifiers of the formtable,schema.tableorcatalog.schema.table, for compatibility with dbplyr.
Documentation
New DBI intro article (#286, @cutterkom).
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
paramsinstead ofparam(#235).Improved documentation for
sqlInterpolate()(#100). Add usage ofSQL()tosqlInterpolate()examples (#259, @renkun-ken).Improve documentation for
Id.
Internal
Add tests for
dbUnquoteIdentifier()(#279, @baileych).sqlInterpolate()usesdbQuoteLiteral()instead of checking the type of the input.Avoid partial argument match in
dbWriteTable()(#246, @richfitz).
- HTML
Published by krlmlr about 6 years ago
DBI - DBI 1.0.0
New generics
- New
dbAppendTable()that by default callssqlAppendTableTemplate()and thendbExecute()with aparamargument, without support forrow.namesargument (#74). - New
dbCreateTable()that by default callssqlCreateTable()and thendbExecute(), without support forrow.namesargument (#74). - New
dbCanConnect()generic with default implementation (#87). - New
dbIsReadOnly()generic with default implementation (#190, @anhqle).
Changes
sqlAppendTable()now accepts lists for thevaluesargument, to support lists ofSQLobjects in R 3.1.- Add default implementation for
dbListFields(DBIConnection, Id), this relies ondbQuoteIdentifier(DBIConnection, Id)(#75).
Documentation updates
- The DBI specification vignette is rendered correctly from the installed package (#234).
- Update docs on how to cope with stored procedures (#242, @aryoda).
- Add "Additional arguments" sections and more examples for
dbGetQuery(),dbSendQuery(),dbExecute()anddbSendStatement(). - The
dbColumnInfo()method is now fully specified (#75). - The
dbListFields()method is now fully specified (#75). - The dynamic list of methods in help pages doesn't contain methods in DBI anymore.
Bug fixes
- Pass missing
valueargument to secondarydbWriteTable()call (#737, @jimhester). - The
Idclass now uses<Id>and not<Table>when printing. - The default
dbUnquoteIdentifier()implementation now complies to the spec.
- HTML
Published by krlmlr over 7 years ago
DBI - DBI 0.8
Breaking changes
SQL()now strips the names from the output if thenamesargument is unset.- The
dbReadTable(),dbWriteTable(),dbExistsTable(),dbRemoveTable(), anddbListFields()generics now specialize over the first two arguments to support implementations with theIdS4 class as type for the second argument. Some packages may need to update their documentation to satisfy R CMD check again.
New generics
- Schema support: Export
Id(), new genericsdbListObjects()anddbUnquoteIdentifier(), methods forIdthat calldbQuoteIdentifier()and then forward (#220). - New
dbQuoteLiteral()generic. The default implementation uses switchpatch to avoid dispatch ambiguities, and forwards todbQuoteString()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).
Default implementations
- Default implementations of
dbQuoteIdentifier()anddbQuoteLiteral()preserve names, default implementation ofdbQuoteString()strips names (#173). - Specialized methods for
dbQuoteString()anddbQuoteIdentifier()are available again, for compatibility with clients that usegetMethod()to access them (#218). - Add default implementation of
dbListFields(). - The default implementation of
dbReadTable()now hasrow.names = FALSEas default and also supportsrow.names = NULL(#186).
API changes
- The
SQL()function gains an optionalnamesargument which can be used to assign names to SQL strings.
Deprecated generics
dbListConnections()is soft-deprecated by documentation.dbListResults()is deprecated by documentation (#58).dbGetException()is soft-deprecated by documentation (#51).- The deprecated
print.list.pairs()has been removed.
Bug fixes
- Fix
dbDataType()forAsIsobject (#198, @yutannihilation). - Fix
dbQuoteString()anddbQuoteIdentifier()to ignore invalid UTF-8 strings (r-dbi/DBItest#156).
Documentation
- Help pages for generics now contain a dynamic list of methods implemented by DBI backends (#162).
sqlInterpolate()now supports both named and positional variables (#216, @hannesmuehleisen).- Point to db.rstudio.com (@wibeasley, #209).
- Reflect new 'r-dbi' organization in
DESCRIPTION(@wibeasley, #207).
Internal
- Using switchpatch on the second argument for default implementations of
dbQuoteString()anddbQuoteIdentifier().
- HTML
Published by krlmlr almost 8 years ago
DBI - v0.7
- Import updated specs from
DBItest. - The default implementation of
dbGetQuery()now accepts annargument and forwards it todbFetch(). No warning about pending rows is issued anymore (#76). - Require R >= 3.0.0 (for
slotsargument ofsetClass()) (#169, @mvkorpel).
- HTML
Published by krlmlr over 8 years ago
DBI - v0.6
Interface changes
- Deprecated
dbDriver()anddbUnloadDriver()by documentation (#21). - Renamed arguments to
sqlInterpolate()andsqlParseVariables()to be more consistent with the rest of the interface, and added.dotsargument tosqlParseVariables. DBI drivers are now expected to implementsqlParseVariables(conn, sql, ..., .dots)andsqlInterpolate(conn, sql, ...)(#147).
- Deprecated
Interface enhancements
- Removed
valueClass = "logical"for those generics where the return value is meaningless, to allow backends to return invisibly (#135). - Avoiding using braces in the definitions of generics if possible, so that standard generics can be detected (#146).
- Added default implementation for
dbReadTable(). - All standard generics are required to have an ellipsis (with test), for future extensibility. - Improved default implementation of
dbQuoteString()anddbQuoteIdentifier()(#77). - Removed
tryCatch()call indbGetQuery()(#113).
- Removed
Documentation improvements
- Finalized first draft of DBI specification, now in a vignette.
- Most methods now draw documentation from
DBItest, only those where the behavior is not finally decided don't do this yet yet. - Removed
max.connectionsrequirement from documentation (#56). - Improved
dbBind()documentation and example (#136). - Change
omegahat.orgURL toomegahat.net, the particular document still doesn't exist below the new domain.
Internal
- Use roxygen2 inheritance to copy DBI specification to this package.
- Use
ticpackage for building documentation. - Use markdown in documentation.
- HTML
Published by krlmlr almost 9 years ago
DBI - v0.5
- Interface changes
dbDataType()mapscharactervalues to"TEXT"by default (#102).- The default implementation of
dbQuoteString()doesn't callencodeString()anymore: Neither SQLite nor Postgres understand e.g.\nin a string literal, and all of SQLite, Postgres, and MySQL accept an embedded newline (#121).
- Interface enhancements
- New
dbSendStatement()generic, forwards todbSendQuery()by default (#20, #132). - New
dbExecute(), callsdbSendStatement()by default (#109, @bborgesr). - New
dbWithTransaction()that callsdbBegin()anddbCommit(), anddbRollback()on failure (#110, @bborgesr). - New
dbBreak()function which allows aborting from withindbWithTransaction()(#115, #133). - Export
dbFetch()anddbQuoteString()methods.
- New
- Documentation improvements:
- One example per function (except functions scheduled for deprecation) (#67).
- Consistent layout and identifier naming.
- Better documentation of generics by adding links to the class and related generics in the "See also" section under "Other DBI... generics" (#130). S4 documentation is directed to a hidden page to unclutter documentation index (#59).
- Fix two minor vignette typos (#124, @mdsumner).
- Add package documentation.
- Remove misleading parts in
dbConnect()documentation (#118). - Remove misleading link in
dbDataType()documentation. - Remove full stop from documentation titles.
- New help topic "DBIspec" that contains the full DBI specification (currently work in progress) (#129).
- HTML documentation generated by
staticdocsis now uploaded to http://rstats-db.github.io/DBI for each build of the "production" branch (#131). - Further minor changes and fixes.
- Internal
- Use
containsargument instead ofrepresentation()to denote base classes (#93). - Remove redundant declaration of transaction methods (#110, @bborgesr).
- Use
- HTML
Published by krlmlr over 9 years ago
DBI - v0.4
- New package maintainer: Kirill Müller.
dbGetInfo()gains a default method that extracts the information fromdbGetStatement(),dbGetRowsAffected(),dbHasCompleted(), anddbGetRowCount(). This means that most drivers should no longer need to implementdbGetInfo()(which may be deprecated anyway at some point) (#55).dbDataType()anddbQuoteString()are now properly exported.- The default implementation for
dbDataType()(powered bydbiDataType()) now also supportsdifftimeandAsIsobjects and lists ofraw(#70). - Default
dbGetQuery()method now always callsdbFetch(), in atryCatch()block. - New generic
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.
sqlCreateTable()andsqlAppendTable()create tables from a data frame and insert rows into an existing table. These will power most implementations ofdbWriteTable().sqlAppendTable()is useful for databases that support parameterised queries.sqlRownamesToColumn()andsqlColumnToRownames()provide a standard way of translating row names to and from the database.sqlInterpolate()andsqlParseVariables()allows databases without native parameterised queries to use parameterised queries to avoid SQL injection attacks.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.- The
sqlParseVariablesImpl()is now implemented purely in R, with full test coverage (#83, @hannesmuehleisen).
dbiCheckCompliance()has been removed, the functionality is now available in theDBItestpackage (#80).- Added default
show()methods for driver, connection and results. - New concrete
ANSIConnectionclass andANSI()function to generate a dummy ANSI compliant connection useful for testing. - Default
dbQuoteString()anddbQuoteIdentifer()methods now useencodeString()so that special characters like\nare correctly escaped.dbQuoteString()convertsNAto (unquoted) NULL. - The initial DBI proposal and DBI version 1 specification are now included as a vignette. These are there mostly for historical interest.
- The new
DBItestpackage is described in the vignette. - Deprecated
print.list.pairs(). - Removed unused
dbi_dep().
- HTML
Published by krlmlr almost 10 years ago
DBI - DBI 0.3
New and enhanced generics
dbIsValid()returns a logical value describing whether a connection or result set (or other object) is still valid. (#12).dbQuoteString()anddbQuoteIdentifier()to implement database specific quoting mechanisms.dbFetch()added as alias tofetch()to provide consistent name. Implementers should define methods for bothfetch()anddbFetch()untilfetch()is deprecated in 2015. For now, the default method fordbFetch()callsfetch().dbBegin()begins a transaction (#17). If not supported, DB specific methods should throw an error (as shoulddbCommit()anddbRollback()).
New default methods
dbGetStatement(),dbGetRowsAffected(),dbHasCompleted(), anddbGetRowCount()gain default methods that extract the appropriate elements fromdbGetInfo(). This means that most drivers should no longer need to implement these methods (#13).dbGetQuery()gains a default method forDBIConnectionwhich usesdbSendQuery(),fetch()anddbClearResult().
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 bydbFetch().make.db.names(),isSQLKeyword()andSQLKeywords(): a black list based approach is fundamentally flawed; instead quote strings and identifiers withdbQuoteIdentifier()anddbQuoteString().
dbGetDBIVersion()is deprecated since it's now just a thin wrapper aroundpackageVersion("DBI").dbSetDataMappings()(#9) anddbCallProc()(#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!
- HTML
Published by hadley over 11 years ago