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