IDE.
Auto-update from GitHub Actions.
Run: https://github.com/r-dbi/RPostgres/actions/runs/10425486593
Run: https://github.com/r-dbi/RPostgres/actions/runs/10224248168
Run: https://github.com/r-dbi/RPostgres/actions/runs/10200112323
Run: https://github.com/r-dbi/RPostgres/actions/runs/9728443553
Run: https://github.com/r-dbi/RPostgres/actions/runs/9692464325
Test on older Windows versions.
Avoid failure in fledge workflow if no changes (#479).
Remove Aviator.
Fetch tags for fledge workflow to avoid unnecessary NEWS entries (#478).
Use stable pak (#477).
Latest changes (#475).
Import from actions-sync, check carefully (#474).
Use pkgdown branch (#473).
ci: Use pkgdown branch
ci: Updates from duckdb
ci: Trigger run
Install via R CMD INSTALL ., not pak (#471).
ci: Install via R CMD INSTALL ., not pak
ci: Bump version of upload-artifact action
Install local package for pkgdown builds.
Improve support for protected branches with fledge.
Improve support for protected branches, without fledge.
Sync with latest developments.
Use v2 instead of master.
Inline action.
Use dev roxygen2 and decor.
Fix on Windows, tweak lock workflow.
Avoid checking bashisms on Windows.
Allow NOTEs on R-devel.
Better commit message.
Bump versions, better default, consume custom matrix.
Recent updates.
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).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).
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
.