Update ccache-action reference.
Bump action version.
.gitignore and .Rbuildignore.Create snapshot update PR against correct branch.
Add reference to /apply-patch workflow in commit message.
Clarify rationale for not deploying on schedule.
Only run fledge on pushes to main.
Tweak fledge workflow and ccache action.
Cosmetics.
Bump action versions.
Align fledge workflow.
Harmonize.
Merge tag 'v1.4.9'.
New postgresExportLargeObject() function for exporting large objects to files (#519, #520).
Remove plogr (#545).
Format C++ code with clang-format.
Add comprehensive GitHub Copilot instructions (#522).
Remove plogr (#545).
Format C++ code with clang-format.
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.