postgresImportLargeObject() for importing large
objects from client side (@toppyy, #376, #472).dbWriteTable() correctly handles name clashes between
temporary and permanent tables (#402, #431).dbQuoteIdentifier() for Id() objects
to no longer rely on names (#460).dbListTables() et al. (@dpprdan, #413).list_fields() (#462).Id in exists_table() (#461).dbQuoteIdentifier() (@dpprdan, #263, #372).dbListObjects() only allows
Id() objects as prefix argument (@dpprdan, #390).NULL in favor of NULL::text when
quoting strings and literals, to support JSON and other text-ish types.
Fixes a regression introduced in #370 (#393, #425).dbQuoteLiteral() correctly quotes 64-bit integers
from the bit64 package (of class "integer64") (@karawoo, #435,
#436).
Breaking change: dbListObjects() only allows
Id() objects as prefix argument (@dpprdan, #390).
Windows: update to libpq-15.3 (#442).
Upgrade boost to 1.81.0-1 to fix sprintf warnings (#417).
Suppress warning in gcc-12 (#443).
Tweak driver docs (@dpprdan, #433).
Relicense as MIT.
Upgrade boost to 1.81.0-1 to fix sprintf warnings (#417).
One-click setup for https://gitpod.io (@Antonov548, #407).
Use testthat edition 3 (#408).
pg_type table is missing (#394,
#395, @pedrobtz).dbExecute(immediate = TRUE) after
dbAppendTable() (#382, #384).dbConnect(check_interrupts = TRUE)
(#385, @zozlak).postgresIsTransacting() (#351, @jakob-r).Redshift() connections, all DBItest tests pass (#358, @galachad).setMethod() calls refer to top-level functions (#380).dbWriteTable() uses savepoints for its transactions,
even if an external transaction is open. This does not affect Redshift,
because savepoints are not supproted there (#342).dbConnect(check_interrupts = TRUE), interrupting a
query now gives a dedicated error message. Very short-running queries no
longer take one second to complete (#344).dbQuoteLiteral() correctly quotes length-0 values
(#355) and generates typed NULL expressions for
NA values (#357).SET DATESTYLE query sent after connecting uses
quotes for compatibility with CockroachDB (#360).dbConnect() executes initial queries with
immediate = TRUE (#346).libssl-dev in configure script
(#350).Redshift() connections now adhere to almost all of the
DBI specification when connecting to a Redshift cluster. BLOBs are not
supported on Redshift, and there are limitations with enumerating
temporary and persistent tables (#215, #326).dbBegin(), dbCommit() and
dbRollback() gain name argument to support
savepoints. An unnamed transaction must be started beforehand
(#13).dbWriteTable() uses a transaction (#307).dbSendQuery() gains immediate argument.
Multiple queries (separated by semicolons) can be passed in this mode,
query parameters are not supported (#272).dbConnect(check_interrupts = TRUE) now aborts a running
query faster and more reliably when the user signals an interrupt,
e.g. by pressing Ctrl+C (#336).dbAppendTable() gains copy argument. If
set to TRUE, data is imported via
COPY name FROM STDIN (#241, @hugheylab).NOTICE messages are now forwarded as proper R
messages and can be captured and suppressed (#208).dbQuoteLiteral() converts timestamp values to input
time zone, used when writing tables to Redshift (#325).dbSendQuery() and dbQuoteLiteral() use
single dispatch (#320).dbWriteTable() and dbAppendTable() default
to copy = NULL, this translates to TRUE for
Postgres() and FALSE for
Redshift() connections (#329).@examplesIf in method documentation.field.types is used in
dbWriteTable() (#206).params argument to
dbBind() (#266).dbConnect(check_interrupts = TRUE) on Windows
(#244, @zozlak).dbConnect() now issues
SET datestyle to iso, mdy to avoid translation errors for
datetime values with databases configured differently (#287, @baderstine).Inf, -Inf and NaN values are
returned correctly on Windows (#267).dbConnect() defaults to
timezone_out = NULL, this means to use
timezone.FORCE_AUTOBREW environment variable enforces use of
autobrew in configure (#283, @jeroen).configure on macOS, small tweaks (#282, #283, @jeroen).configure script, remove $() not
reliably detected by checkbashisms.configure uses a shell script and no longer forwards to
src/configure.bash (#265).dbConnect() gains timezone_out argument,
the default NULL means to use timezone
(#222).dbQuoteLiteral() now quotes difftime values as
interval (#270).postgresWaitForNotify() adds
LISTEN/NOTIFY support (#237, @lentinj).Inf, -Inf and NaN values are
returned correctly on Windows (#267).DATETIME values (=without time zone) and
DATETIMETZ values (=with time zone) are returned correctly
(#190, #205, #229), also if they start before 1970 (#221).configure uses a shell script and no longer forwards to
src/configure.bash (#265).Redshift driver for connecting to Redshift
databases. Redshift databases behave almost identically to Postgres so
this driver allows downstream packages to distinguish between the two
(#258).Postgres() together with
dbConnect() (#242).DOUBLE PRECISION by default (#194).dbWriteTable(copy = FALSE), sqlData() and
dbAppendTable() now work for character columns (#209),
which are always converted to UTF-8.timezone argument to dbConnect()
(#187, @trafficonese).dbGetInfo() for the driver and the connection
object.dbConnect() gains check_interrupts
argument that allows interrupting execution safely while waiting for
query results to be ready (#193, @zozlak).dbUnquoteIdentifier() also handles unquoted identifiers
of the form table or schema.table, for
compatibility with dbplyr. In addition, a catalog component
is supported for quoting and unquoting with Id().dbQuoteLiteral() available for "character"
(#209).dbAppendTable()
(r-dbi/DBI#249).POSIXt timestamps
(#191).sqlData(copy = FALSE) now uses
dbQuoteLiteral() (#209).dbUnquoteIdentifier() (#220, @baileych).REAL to
DOUBLE PRECISION (#204, @harvey131).dbAppendTable() for own connection class,
don’t hijack base class implementation (r-dbi/RMariaDB#119).DbResult and other classes with RSQLite and
RMariaDB.std::mem_fn() by boost::mem_fn()
which works for older compilers.std::mem_fun_ref() by
std::mem_fn().bigint argument to
dbConnect(), supported values are "integer64",
"integer", "numeric" and
"character". Large integers are returned as values of that
type (r-dbi/DBItest#133).temporary and
fail_if_missing (default: TRUE) to
dbRemoveTable() (r-dbi/DBI#141, r-dbi/DBI#197).dbCreateTable() and dbAppendTable()
internally (r-dbi/DBI#74).field.types argument to dbWriteTable()
now must be named.current_schemas(true) also in
dbListObjects() and dbListTables(), for
consistency with dbListFields(). Objects from the
pg_catalog schema are still excluded.dbListFields() doesn’t list fields from tables found in
the pg_catalog schema.dbListFields() method now works correctly if the
name argument is a quoted identifier or of class
Id, and throws an error if the table is not found
(r-dbi/DBI#75).format() method for
SqliteConnection (r-dbi/DBI#163).Id(), DBI::dbIsReadOnly() and
DBI::dbCanConnect().dbGetException() is no longer
reexported from DBI.dbFetch()
and dbGetQuery(). Values of unknown type are returned as
character vector of class "pq_xxx", where
"xxx" is the “typname” returned from PostgreSQL. In
particular, JSON and JSONB values now have
class "pq_json" and "pq_jsonb", respectively.
The return value of dbColumnInfo() gains new columns
".oid" (integer), ". known"
(logical) and ".typname"
(character) (#114, @etiennebr)."integer64" are now supported for
dbWriteTable() and dbBind() (#178).dbListObjects(),
dbUnquoteIdentifier() and Id().x argument to
dbQuoteIdentifier() are preserved in the output
(r-dbi/DBI#173).dbGetQuery()) are
now exported, even if the package doesn’t provide a custom
implementation (#168).timegm() with private
implementation.PQcancel() if the query hasn’t completed,
fixes transactions on Amazon Redshift (#159, @mmuurr).Initial release, compliant to the DBI specification.
bit64
package. This also means that numeric literals (as in
SELECT 1) are returned as 64-bit integers. The
bigint argument to dbConnect() allows
overriding the data type on a per-connection basis.row.names = FALSE.