More explicit message on constructive errors.
Bump DBI dependency.
Set BS version explicitly for now (@maelle, #370).
Add package to \link{} targets.
Allow multiple warnings in disconnect tests (#363).
Fix specification for Arrow tests (#357).
Show DBItest function in backtrace (#349, #354).
Specify value argument for
dbCreateTable() and dbCreateTableArrow()
(#345).
Enable two tests for dbGetQueryArrow()
(#342).
Relax dbListObjects() spec (#339, #341).
Avoid dplyr (#364).
Remove .dots argument to
test_select_with_null() (#362).
Prefer map() over lapply() (#361) and
map_*() over vapply() (#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).
Use dbitemplate (@maelle, #360).
Mention dbBindArrow() in documentation
(#350).
Minor specification fixes (#344).
create_roundtrip_keywords and
create_roundtrip_quotes tests (#283).Relax specification of dbUnquoteIdentifier(),
character vectors are now allowed too.
Specify dbFetchChunk() (#331),
dbFetchArrowChunk() (#301) and dbBindArrow()
(#328).
Inline all tests for dbBind() (#326).
Require support for dbFetch(n = NA) (#296,
#316).
New allow_na_rows_affected tweak to support
NA values returned from dbGetRowsAffected()
(#297, #312).
Switch to nanoarrow (#291).
Basic tests for the new db*Arrow() interface
(#287).
New skip_if_not_dbitest() (#289).
reexport test uses interface for dev DBI if the
backend is compatible with DBItest > 1.7.3.
Slightly better code generated for tweaks()
(#313).
Remove interface to dblog in the CRAN version.
Add adbi to check matrix (#314).
Reenable ODBC MySQL tests (#288).
Tweak read_table_missing test (#285).
Remove rlang qualification (#332).
No longer need as.data.frame() twice for Arrow
(#302, #330).
Consistent use of skip_if_not_dbitest()
(#317).
Disable Arrow skips (#303).
Modernize sql_union() (#304).
Make better use of trivial_df() (#284).
Run DBItest for SQLite as part of the checks here (#318).
Enable remaining Arrow tests (#307).
Fix checks without suggested packages (#300).
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.
Bump minimum DBI version to 1.1.3.
Refactor DBI tests in preparation for inlining them.
dbIsValid() is not
implemented.tweaks() gains dbitest_version argument to
support targeting a specific version of the DBItest package. The default
is 1.7.1 (#236).roundtrip_date_extended,
roundtrip_timestamp_extended,
append_roundtrip_date_extended and
append_roundtrip_timestamp_extended test dates between 1800
and 2999 (#148, #249).quote_literal_empty test (#248).bind_character_escape test for binding special
characters (#242).bind_time_minutes_integer test for integer
durations.column_info_consistent no longer tests mangling of
column names (#181).spec_sql_append_table test: Remove bad argument.spec_ objects in pkgdown
help index, add cross references (#128).value argument to
DBI::dbWriteTable() (#235).with_result(),
with_remove_test_tables() and
with_rollback_on_error() for better error traces (#184,
#250, #251, #253).palmerpenguins::penguins instead of
iris (#241).testthat::expect_is() and
testthat::expect_that() from tests (#231, @michaelquinn32).dbBind().with_remove_test_table() for better stack traces
on error (#196). Remove with_*connection() (#193).test_some() shows DBI code via dblog (#217) if
dblog = TRUE (#226)."bind_date_integer",
"bind_time_seconds" and "bind_time_hours"
tests (#218).create_table_as tweak (#131)."roundtrip_time" and
"append_roundtrip_time" tests now also test values of class
"difftime" with units other than "secs"
(#199)."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)."overwrite_table_missing" test
(#210, @martinstuder).dbGetInfo().immediate argument (r-dbi/DBI#268).dbCreateTable() and
dbAppendTable() (#169).unquote_identifier_table_schema test: Identifiers
of the form table.schema can be processed with
dbUnquoteIdentifier().has_completed_statement test (#176).test_*() gain new run_only = NULL argument
that allow restricting the tests to be run with a positive match.
test_some() uses run_only instead of
constructing a regular expression with negative lookahead. This helps
troubleshooting a single test with
testthat::set_reporter(DebugReporter$new()) .make_context() gains default_skip argument
and uses the DBIConnector class.NULL default value in driver constructor
(#171).Id() is reexported.temporary argument in
dbRemoveTable() (default: FALSE)
(r-dbi/DBI#141).bigint argument to dbConnect() is now
specified. Accepts "integer64", "integer",
"numeric" and "character", large integers are
returned as values of that type (#133).field.types
argument.dbRemoveTable(fail_if_missing = FALSE)
(r-dbi/DBI#197).dbColumnInfo()
(r-dbi/DBI#75).dbListFields()
(r-dbi/DBI#75).dbBind(), by shuffling them (#138).row.names = FALSE for
dbReadTable() and dbWriteTable() (#139).params argument to
dbGetQuery(), dbSendQuery(),
dbExecute() and dbSendStatement() (#159).dbQuoteIdentifier(): “The names of the
input argument are preserved in the output” (r-lib/DBI#173).dbIsValid() on stale connections.NULL anymore.dbGetInfo(DBIDriver) for now."cannot_forget_disconnect" test that fails on
R-devel (#150).db prefix are not checked for ellipsis
in the signature anymore.Inf and NaN for lack of
consistent support across DBMS (#142).POSIXlt bind test correctly.dbBind().dbBind(), now queries of the form
SELECT CASE WHEN (? = ?) AND (? IS NULL) THEN 1.5 ELSE 2.5
are issued. The original tests were inappropriate for RMariaDB, because
an untyped placeholder is returned as a blob.dbWriteTable() instead of
dbCreateTable(), because some DBMS don’t support
transactions for DML."roundtrip_timestamp" test now correctly handles
timezone information. The output timezone is ignored.spec_meta_get_info_result (#143).n in dbGetQuery()
call.blob_cast allows specifying a conversion
function to the BLOB data type.is_null_check tweak that allows specifying a
function that is used when checking values for NULL.
Required for RPostgres.list_temporary_tables tweak that can be enabled
independently of temporary_tables to indicate that the DBMS
does not support listing temporary tables.test_all() by
specifying an environment variable.test_all() and test_some() return
NULL invisibly.DBI::dbQuoteLiteral() is
unavailable.trivial_query() replaces many hard-coded queries
and uses non-integer values for better compatibility with RMariaDB."cannot_forget_disconnect" test that fails on
R-devel (#150).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).
dbBind() against factor works but raises a
warning (#91).field.types argument to
dbWriteTable() (#12).dbDisconnect().numeric
and character (#74).dbFetch() on update-only query returns
warning (#66).NULL is a valid value for the row.names
argument, same as FALSE.row_names receives no special handling
(#54).dbDisconnect() on a closed or invalid connection.row.names = FALSE is now the default for methods that
read or write tables.NA to beginning and end of columns in table
roundtrip tests (#24).dbGetQuery(),
dbFetch(), and dbReadTable() is now checked
for consistency (all columns have the same length, length matches number
of rows) (#126).hms (or other subclasses of
difftime) to be returned as time class (#135, @jimhester).numeric (#99, @jimhester).POSIXlt by POSIXct (#100, @jimhester)."PST8PDT" instead of "PST" as time
zone (#110, @thrasibule).blob objects (input and
output), but backends are not required to return blob
objects (#98).logical_return, date_typed and
timestamp_typed tweaks are respected by the bind
tests.difftime.dbListTables() test.NULL
and not NA entries for SQL NULL values.expect_equal_df() for list columns.dbDisconnect() or dbClearResult() (#103).NaN to
NA (#79).test_some() to test individual tests (#136).DBItest_tweaks class gains a $ method,
accessing an undefined tweak now raises an error.tweaks() function now have default
values that further describe their intended usage.with_closed_connection(ctx = ctx, ),
with_invalid_connection(ctx = ctx, ),
with_result() and with_remove_test_table()
helpers, and expect_visible(),
expect_inbisible_true(), and expect_equal_df()
expectations for more concise tests.DBIspec-wip page for work-in-progress
documentation.max.connections element in
dbGetInfo(Driver) (rstats-db/DBI#56).ellipsis check that verifies that all implemented
DBI methods contain ... in their formals. This excludes
show() and all methods defined in this or other
packages.bind_ tests to use the new
parameter_pattern tweak (#95).fetch_zero_rows test, split from
fetch_premature_close.dbDataType("DBIDriver", "ANY") (#88).dbBind(), test is run by
BindTester class, and behavior is specified by members and
by instances of the new BindTesterExtra class.skip argument to the test_() functions
is again evaluated with perl = TRUE to support negative
lookaheads (#33).dbSendStatement() and dbExecute()
where appropriate.R CMD check (#81).read_table test when the backend actually returns
the data in a different order.dbDataType() on connections (#69, #75, @imanuelcostigan).dbBind() + dbFetch() on the same
result set (#51).tweaks() gains an ... as first argument to
support future/deprecated tweaks (with a warning), and also to avoid
unnamed arguments (#83).testthat now shows a more accurate location for the
source of errors, failures, and skips (#78).skip() call per test
function.constructor_relax_args tweak, currently not
queried.ctx argument is now explicit in the test
functions.testthat compatibility hack.all_have_utf8_or_ascii_encoding() which vectorizes
has_utf8_or_ascii_encoding().skip argument to the test functions is now treated
as a Perl regular expression to allow negative lookahead. Use
skip = "(?!test_regex).*" to choose a single test to run
(#33).simultaneous_connections test always closes all
connections on exit (@hoesler, #68).testthat dependency
testthat to avoid
R CMD check warnings.testthat (#62).RPostgres and RMySQL from
rstats-db.DBI and testthat from GitHub.tweaks to make_context()
(#49).tweaks(), essentially constructs a named list of
tweaks but with predefined and documented argument names.constructor_name, respected by the
constructor.* tests.strict_identifier, if TRUE all identifier
must be syntactic names even if quoted. The quoting test is now split,
and a part is ignored conditional to this tweak. The
roundtrip_quotes tests also respects this tweak.omit_blob_tests for DBMS that don’t have a BLOB data
type.current_needs_parens – some SQL dialects (e.g.,
BigQuery) require parentheses for the functions
current_date, current_time and
current_timestamp.union, for specifying a nonstandard way of combining
queries. All union queries now name each column in each subquery
(required for bigrquery).dbGetInfo(Result) (rstats-db/DBI#55).dbListFields() (#26).package_name test in
test_getting_started().DBI) using R CMD INSTALL before
loading DBI (rstats-db/RSQLite#128, #48).dbRemoveTable() instead of issuing
DROP requests, the latter might be unsupported.WHERE.dbClearResult() on a closed result set raises
a warning.dbFetch() to
test_result().can_connect_and_disconnect test.DBI to be in Imports, not in
Depends.dbGetException()
(rstats-db/DBI#51).RPostgres, RMySQL,
RSQLite and RKazam as part of the Travis-CI
tests (#52).dbiCheckCompliance(), dbListResults()).testthat.get_info_() tests to use a vector of
names.dbBind() againdevtools package from “Imports” to “Suggests”data_ tests to use a worker function
test_select()NA values above and below the
non-NA value in data_ testsdbBind()
and dbClearResult() (#31)dbQuoteString() and
dbQuoteIdentifier() (#18)integer as underlying data type
(#9)NA to NULL conversion in
dbQuoteString(), and false friends (#23)dbQuoteIdentifier() (#30)data.frame() for date and time columns
(#10)expect_identical() instead of
expect_equal() in many places (#13)on.exit() handlers via
expect_error() (#20).test_meta() (#37)dbDataType() (#19)test_all(): Tests are listed
in new “Tests” sectionskip()test_all() that runs all tests