Changelog
Source:NEWS.md
DBItest 1.8.1 (2024-03-31)
Features
Chore
Avoid dplyr (#364).
Remove
.dotsargument totest_select_with_null()(#362).Prefer
map()overlapply()(#361) andmap_*()overvapply()(#356).Bump DBI dependency to fix tests (#359).
Document sources for autogenerated files (#353), add comments to generated code (#358).
Make test names unique, with a numeric suffix (#355).
Align with RSQLite (#351).
Replace unconditional skip with versioned skip (#347).
Consistent use of
skip_if_not_dbitest()(#346).
DBItest 1.8.0 (2023-12-21)
Bug fixes
- Fix
create_roundtrip_keywordsandcreate_roundtrip_quotestests (#283).
Features
Relax specification of
dbUnquoteIdentifier(), character vectors are now allowed too.Specify
dbFetchChunk()(#331),dbFetchArrowChunk()(#301) anddbBindArrow()(#328).Inline all tests for
dbBind()(#326).New
allow_na_rows_affectedtweak to supportNAvalues returned fromdbGetRowsAffected()(#297, #312).Switch to nanoarrow (#291).
Basic tests for the new
db*Arrow()interface (#287).New
skip_if_not_dbitest()(#289).reexporttest uses interface for dev DBI if the backend is compatible with DBItest > 1.7.3.Remove interface to dblog in the CRAN version.
DBItest 1.7.3 (2022-10-18)
Features
Use and enable compatibility with testthat edition 3 (#263, #268). Complete removal of
expect_is()(@MichaelChirico, #257).Adapt to new Arrow DBI generics (#265).
Better stack traces for visibility tests.
dbQuoteIdentifier()roundtrip is tested for tables only (@dpprdan, #256).test_some()also tests a test if it would normally be skipped.
DBItest 1.7.2 (2021-12-17)
Features
-
tweaks()gainsdbitest_versionargument to support targeting a specific version of the DBItest package. The default is 1.7.1 (#236). - Reuse database connection for most tests (#245).
- New
roundtrip_date_extended,roundtrip_timestamp_extended,append_roundtrip_date_extendedandappend_roundtrip_timestamp_extendedtest dates between 1800 and 2999 (#148, #249). - New
quote_literal_emptytest (#248). - New
bind_character_escapetest for binding special characters (#242). - New
bind_time_minutes_integertest for integer durations.
Documentation
- Improve documentation: list
spec_objects in pkgdown help index, add cross references (#128). - Add specification for
valueargument toDBI::dbWriteTable()(#235).
Internal
- Replace internal
with_result(),with_remove_test_tables()andwith_rollback_on_error()for better error traces (#184, #250, #251, #253). - Use
palmerpenguins::penguinsinstead ofiris(#241). - Fix MySQL ODBC test on GitHub Actions (#237).
- Improve testthat 3e compatibility: remove
testthat::expect_is()andtestthat::expect_that()from tests (#231, @michaelquinn32). - Decompose query used for testing
dbBind().
DBItest 1.7.1 (2021-07-30)
Features
- Many tests now emit simpler stack traces, because the connection is opened by the test driver and not by the test itself (#187). Reduce usage of
with_remove_test_table()for better stack traces on error (#196). Removewith_*connection()(#193). -
test_some()shows DBI code via dblog (#217) ifdblog = TRUE(#226). - New
"bind_date_integer","bind_time_seconds"and"bind_time_hours"tests (#218). - New
create_table_astweak (#131). -
"roundtrip_time"and"append_roundtrip_time"tests now also test values of class"difftime"with units other than"secs"(#199). - All tables created by the tests have the
"dbit"prefix. Almost all tests now use random table names to avoid collisions and unrelated test failures (#197). -
"roundtrip_timestamp"tests now accept a time zone set by the database backend (#178, #198). - Support more than one class of each type in DBI backend packages.
Bug fixes
- Fix input dataset in
"overwrite_table_missing"test (#210, @martinstuder). - Use original test name to decide if a test is skipped (#225).
- Fix reexport test: skip if package is not installed, remove checks for deprecated functions and functions not reexported (#203).
DBItest 1.7.0 (2019-12-16)
Testing infrastructure
- Document how to run tests externally and how to debug tests (#165).
-
test_*()gain newrun_only = NULLargument that allow restricting the tests to be run with a positive match.test_some()usesrun_onlyinstead of constructing a regular expression with negative lookahead. This helps troubleshooting a single test withtestthat::set_reporter(DebugReporter$new()). -
make_context()gainsdefault_skipargument and uses theDBIConnectorclass. - Support
NULLdefault value in driver constructor (#171).
Internal
- Fulfill CII badge requirements (#179, @TSchiefer).
- Use debugme.
- Require R 3.2.
- Avoid subsetting vectors out of bounds, for consistency with vctrs.
DBItest 1.6.0 (2018-05-03)
New checks
- Now checking that
Id()is reexported. - Support
temporaryargument indbRemoveTable()(default:FALSE) (r-dbi/DBI#141). - Added specification for the behavior in case of duplicate column names (#137).
- The
bigintargument todbConnect()is now specified. Accepts"integer64","integer","numeric"and"character", large integers are returned as values of that type (#133). - Add specification for partially filled
field.typesargument. - Specify
dbRemoveTable(fail_if_missing = FALSE)(r-dbi/DBI#197). - Add specification for
dbColumnInfo()(r-dbi/DBI#75). - Add specification for
dbListFields()(r-dbi/DBI#75). - Test that named parameters are actually matched by name in
dbBind(), by shuffling them (#138). - Explicitly specify default
row.names = FALSEfordbReadTable()anddbWriteTable()(#139). - Add specification for writing 64-bit values, backends must support roundtripping values returned from the database (#146).
- Add specification for the
paramsargument todbGetQuery(),dbSendQuery(),dbExecute()anddbSendStatement()(#159). - Add test for
dbQuoteIdentifier(): “The names of the input argument are preserved in the output” (r-lib/DBI#173). - Blob tests now also read and write zero bytes ().
- Add string encoded in Latin-1 to the character tests.
- Added test for
dbIsValid()on stale connections.
Removed checks
- Don’t test selecting untyped
NULLanymore. - Full interface compliance doesn’t require a method for
dbGetInfo(DBIDriver)for now. - Remove
"cannot_forget_disconnect"test that fails on R-devel (#150). - Methods without
dbprefix are not checked for ellipsis in the signature anymore. - Don’t specify
InfandNaNfor lack of consistent support across DBMS (#142).
Updated/corrected checks
- Fix query that is supposed to generate a syntax error.
- Fix typo (#147, @jonmcalder).
- Implement
POSIXltbind test correctly. - Improve error detection for
dbBind(). - Redesign tests for
dbBind(), now queries of the formSELECT CASE WHEN (? = ?) AND (? IS NULL) THEN 1.5 ELSE 2.5are issued. The original tests were inappropriate for RMariaDB, because an untyped placeholder is returned as a blob. - Transaction tests now use
dbWriteTable()instead ofdbCreateTable(), because some DBMS don’t support transactions for DML. - Fix timestamp tests for RMariaDB.
- Fix string constants.
- The
"roundtrip_timestamp"test now correctly handles timezone information. The output timezone is ignored. - Clear result in
spec_meta_get_info_result(#143). - Use named argument for
nindbGetQuery()call. - Minor fixes.
Tweaks
- New tweak
blob_castallows specifying a conversion function to the BLOB data type. - New
is_null_checktweak that allows specifying a function that is used when checking values forNULL. Required for RPostgres. - New
list_temporary_tablestweak that can be enabled independently oftemporary_tablesto indicate that the DBMS does not support listing temporary tables.
Infrastructure
- Allow running only a subset of tests in
test_all()by specifying an environment variable. -
test_all()andtest_some()returnNULLinvisibly.
Internals
- Compatibility code if
DBI::dbQuoteLiteral()is unavailable. - New
trivial_query()replaces many hard-coded queries and uses non-integer values for better compatibility with RMariaDB. - Convert factor to character for iris data (#141).
DBItest 1.5-1 (2017-12-10)
- Remove
"cannot_forget_disconnect"test that fails on R-devel (#150).
DBItest 1.5 (2017-06-18)
Finalize specification. Most tests now come with a corresponding prose, only those where the behavior is not finally decided don’t have a prose version yet (#88).
New tests
- Test behavior of methods in presence of placeholders (#120).
- Test column name mismatch behavior for appending tables (#93).
- Test that
dbBind()against factor works but raises a warning (#91). - Test roundtrip of alternating empty and non-empty strings (#42).
- Test multiple columns of different types in one statement or table (#35).
- Test
field.typesargument todbWriteTable()(#12). - Added tests for invalid or closed connection argument to all methods that expect a connection as first argument (#117).
- Enabled test that tests a missing
dbDisconnect(). - Add test for unambiguous escaping of identifiers (rstats-db/RSQLite#123).
- Reenable tests for visibility (#89).
- Fix and specify 64-bit roundtrip test.
- 64-bit integers only need to be coercible to
numericandcharacter(#74). - Added roundtrip test for time values (#14).
- Added tweaks for handling date, time, timestamp, … (#53, #76).
- Test that
dbFetch()on update-only query returns warning (#66).
Adapted tests
-
NULLis a valid value for therow.namesargument, same asFALSE. - A column named
row_namesreceives no special handling (#54). - A warning (not an error anymore) is expected when calling
dbDisconnect()on a closed or invalid connection. -
row.names = FALSEis now the default for methods that read or write tables. - Add
NAto beginning and end of columns in table roundtrip tests (#24). - Stricter tests for confusion of named and unnamed SQL parameters and placeholders (#107).
- Also check names of all returned data frames.
- The return value for all calls to
dbGetQuery(),dbFetch(), anddbReadTable()is now checked for consistency (all columns have the same length, length matches number of rows) (#126). - Removed stress tests that start a new session.
- Allow
hms(or other subclasses ofdifftime) to be returned as time class (#135, @jimhester). - Test that dates are of type
numeric(#99, @jimhester). - Replace
POSIXltbyPOSIXct(#100, @jimhester). - Use
"PST8PDT"instead of"PST"as time zone (#110, @thrasibule). - Added tests for support of
blobobjects (input and output), but backends are not required to returnblobobjects (#98). - The
logical_return,date_typedandtimestamp_typedtweaks are respected by the bind tests. - Fixed tests involving time comparison; now uses UTC timezone and compares against a
difftime. - Tests for roundtrip of character values now includes tabs, in addition to many other special characters (#85).
- Make sure at least one table exists in the
dbListTables()test. - Fix roundtrip tests for raw columns: now expecting
NULLand notNAentries for SQL NULL values. - Fix
expect_equal_df()for list columns. - Testing that a warning is given if the user forgets to call
dbDisconnect()ordbClearResult()(#103). - Numeric roundtrip accepts conversion of
NaNtoNA(#79).
Internal
- Fix R CMD check errors.
- Internal consistency checks (#114).
- Skip patterns that don’t match any of the tests now raise a warning (#84).
- New
test_some()to test individual tests (#136). - Use desc instead of devtools (#40).
- All unexpected warnings are now reported as test failures (#113).
-
DBItest_tweaksclass gains a$method, accessing an undefined tweak now raises an error. - The arguments of the
tweaks()function now have default values that further describe their intended usage. - New
with_closed_connection(ctx = ctx, ),with_invalid_connection(ctx = ctx, ),with_result()andwith_remove_test_table()helpers, andexpect_visible(),expect_inbisible_true(), andexpect_equal_df()expectations for more concise tests.
DBItest 1.4 (2016-12-02)
DBI specification
- Use markdown in documentation.
- Description of parametrized queries and statements (#88).
- New hidden
DBIspec-wippage for work-in-progress documentation. - Get rid of “Format” and “Usage” sections, and aliases, in the specs.
Tests
- Not testing for presence of
max.connectionselement indbGetInfo(Driver)(rstats-db/DBI#56). - Test multi-row binding for queries and statements (#96).
- New
ellipsischeck that verifies that all implemented DBI methods contain...in their formals. This excludesshow()and all methods defined in this or other packages. - Refactored
bind_tests to use the newparameter_patterntweak (#95). - Rough draft of transaction tests (#36).
- New
fetch_zero_rowstest, split fromfetch_premature_close. - The “compliance” test tests that the backend package exports exactly one subclass of each DBI virtual class.
- Document and enhance test for
dbDataType("DBIDriver", "ANY")(#88). - Minor corrections for “bind” tests.
Internal
- Isolate stress tests from main test suite (#92).
- Refactor test specification in smaller modules, isolated from actual test execution (#81). This breaks the documentation of the tests, which will be substituted by a DBI specification in prose.
- Align description of binding with code.
- Refactor tests for
dbBind(), test is run byBindTesterclass, and behavior is specified by members and by instances of the newBindTesterExtraclass. - The
skipargument to thetest_()functions is again evaluated withperl = TRUEto support negative lookaheads (#33). - Use
dbSendStatement()anddbExecute()where appropriate. - Avoid empty subsections in Rd documentation to satisfy
R CMD check(#81).
DBItest 1.3 (2016-07-07)
New tests
- Test
dbDataType()on connections (#69, #75, @imanuelcostigan). - Check returned strings for UTF-8 encoding (#72).
- Repeated
dbBind()+dbFetch()on the same result set (#51).
Features
-
tweaks()gains an...as first argument to support future/deprecated tweaks (with a warning), and also to avoid unnamed arguments (#83). -
testthatnow shows a more accurate location for the source of errors, failures, and skips (#78). - Aggregate skipped tests, only one
skip()call per test function. - Indicate that some tests are optional in documentation (#15).
Internal
- New
constructor_relax_argstweak, currently not queried. - The
ctxargument is now explicit in the test functions. - Change underscores to dashes in file names.
- Remove
testthatcompatibility hack. - New
all_have_utf8_or_ascii_encoding()which vectorizeshas_utf8_or_ascii_encoding(). - Test on AppVeyor (#73).
- Work around regression in R 3.3.0 (fix scheduled for R 3.3.1) which affected stress tests.
DBItest 1.2 (2016-05-21)
- Infrastructure
- Improve tests
-
testthatdependency- Import all of
testthatto avoidR CMD checkwarnings. - Compatibility with dev version of
testthat(#62).
- Import all of
- Improve Travis builds
- Use container-based builds on Travis.
- Install
RPostgresandRMySQLfromrstats-db. - Install
DBIandtestthatfrom GitHub.
Version 1.1 (2016-02-12)
- New feature: tweaks
- New argument
tweakstomake_context()(#49). - New
tweaks(), essentially constructs a named list of tweaks but with predefined and documented argument names. -
constructor_name, respected by theconstructor.*tests. -
strict_identifier, ifTRUEall identifier must be syntactic names even if quoted. The quoting test is now split, and a part is ignored conditional to this tweak. Theroundtrip_quotestests also respects this tweak. -
omit_blob_testsfor DBMS that don’t have a BLOB data type. -
current_needs_parens– some SQL dialects (e.g., BigQuery) require parentheses for the functionscurrent_date,current_timeandcurrent_timestamp. -
union, for specifying a nonstandard way of combining queries. All union queries now name each column in each subquery (required forbigrquery).
- New argument
- New tests
-
dbGetInfo(Result)(rstats-db/DBI#55). -
dbListFields()(#26). - New
package_nametest intest_getting_started().
-
- Improved tests
- Stress test now installs package in temporary library (before loading
DBI) usingR CMD INSTALLbefore loading DBI (rstats-db/RSQLite#128, #48). - Row count is now tested for equality but not identity, so that backends can return a numeric value > 2^31 at their discretion.
- Call
dbRemoveTable()instead of issuingDROPrequests, the latter might be unsupported. - Use subqueries in queries that use
WHERE. - Test that
dbClearResult()on a closed result set raises a warning. - Expect a warning instead of an error for double disconnect (#50).
- Move connection test that requires
dbFetch()totest_result(). - Split
can_connect_and_disconnecttest. - Expect
DBIto be inImports, not inDepends.
- Stress test now installs package in temporary library (before loading
- Removed tests
- Remove test for
dbGetException()(rstats-db/DBI#51).
- Remove test for
- Bug fixes
- Fix broken tests for quoting.
- Self-testing
- Test
RPostgres,RMySQL,RSQLiteandRKazamas part of the Travis-CI tests (#52). - Travis CI now installs rstats-db/DBI, updated namespace imports (
dbiCheckCompliance(),dbListResults()). - Use fork of
testthat.
- Test
- Utilities
- Return test results as named array of logical. Requires hadley/testthat#360, gracefully degrades with the CRAN version.
- Internal
- Refactored the
get_info_()tests to use a vector of names. - Use versioned dependency for DBI
- Use unqualified calls to
dbBind()again
- Refactored the
Version 1.0 (2015-12-17)
- CRAN release
- Eliminate errors on win-builder
- Satisfy R CMD check
- Use LGPL-2 license
- Add RStudio as copyright holder
- Move
devtoolspackage from “Imports” to “Suggests”
Version 0.3 (2015-11-15)
- Feature-complete, ready for review
- Tests from the proposal
- Add missing methods to compliance check
- Add simple read-only test (#27)
- Add stress tests for repeated load/unload (with and without connecting) in new R session (#2),
- Migrate all tests from existing backends (#28)
- Refactor
data_tests to use a worker functiontest_select() - Test tables with
NAvalues above and below the non-NAvalue indata_tests - Test return values and error conditions for
dbBind()anddbClearResult()(#31) - Test vectorization of
dbQuoteString()anddbQuoteIdentifier()(#18) - Test that dates have
integeras underlying data type (#9) - Roundtrip tests sort output table to be sure (#32)
- Test
NAtoNULLconversion indbQuoteString(), and false friends (#23) - Enhance test for
dbQuoteIdentifier()(#30)
- Style
- Avoid using
data.frame()for date and time columns (#10) - Use
expect_identical()instead ofexpect_equal()in many places (#13) - Catch all errors in
on.exit()handlers viaexpect_error()(#20). - Combine “meta” tests into new
test_meta()(#37)
- Avoid using
- Documentation
- Same as 0.2-5
Version 0.2 (2015-11-11)
- Tests from the proposal
- SQL
- Metadata
- DBI compliance (not testing read-only yet)
- Migrate most of the tests from RMySQL
- Test improvements
- Testing infrastructure
- Disambiguate test names (#21)
- Use regex matching for deciding skipped tests, skip regex must match the entire test name
- Documentation
- Document all tests in each test function using the new inline documentation feature of roxygen2
- Improve documentation for
test_all(): Tests are listed in new “Tests” section - Add brief instructions to README
- Move repository to rstats-db namespace
- Same as 0.1-6
Version 0.1 (2015-10-11)
- First GitHub release
- Builds successfully on Travis
- Testing infrastructure
- Test context
- Skipped tests call
skip() - Function
test_all()that runs all tests
- Tests from the proposal
- Getting started
- Driver
- Connection
- Results
- Code formatting is checked with lintr
- Same as 0.0-5