Changelog
Source:NEWS.md
quak 0.1.1
CRAN release: 2026-09-28
New
collect_arrow()andstream_arrow()return the result of a lazy Azure table as Arrow data, either all at once or in batches, without converting it to a data frame. They need the nanoarrow package. The new “Arrow output” article on the package website shows how to use them with arrow.New “DuckDB connection settings” article on the package website explains which DuckDB settings to change for shared servers, containers and large queries.
quak now requires duckdb 1.5.4 or later and DBI 1.2.0 or later, the first releases with the DBI Arrow interface. It also declares R 4.1.0 or later, which it already needed.
The extension repository check now runs when quak is attached rather than when it is loaded. It reports through startup messages, which
suppressPackageStartupMessages()silences. It gives up on a repository after 10 seconds without a connection, and never stops quak from loading.
Bug fixes
The default extension cache directory is now worked out on the machine where quak runs. It was worked out when the package was built, so binary packages pointed it at the build machine’s home directory, for example
/home/builder/.cache/R/quak. When DuckDB’s ownINSTALLfailed, the manual install then stopped with “permission denied” (#15).tbl_delta(),load_delta(),az_delta_files()and the Delta readers behindaz_schema()andaz_glimpse()work again. They passed thedeltaextension the account-host URL form (abfss://account.dfs.core.windows.net/container/path), which it rejects with “URL did not match any known pattern”. They now passabfss://container@account.dfs.core.windows.net/path. Delta tables never match an account-scoped secret, so use an unscoped secret for them (#18).load_delta()andtbl_delta()no longer accepttimestamp. DuckDB’sdeltaextension accepts aTIMESTAMPattach option but ignores it, so callers silently received the latest snapshot instead of a historical one. Supplyingtimestampnow raises an error; useversion, which DuckDB does honour (#2).Account-scoped Azure secrets are now scoped to the account’s actual hosts (
abfss://<account>.dfs.core.windows.net/andaz://<account>.blob.core.windows.net/) rather thanabfss://<account>/, which matched no real URL. Account secrets registered byaz_set_token_secret(),az_set_sp_secret()andaz_set_chain_secret()were therefore never selected, letting queries fall back to another secret or to anonymous access (#3).Azure URLs written as
abfss://container@account/pathare now normalised toabfss://account.dfs.core.windows.net/container/path. The former is not a URL form DuckDB supports, and no account-scoped secret could match it (#3).az_copy_to()andaz_write_parquet()now reject a lazy table that belongs to a different connection thanconn, instead of rendering its SQL and running it againstconn— which silently exported the wrong rows when both connections held a table of the same name (#4).load_dataset()now forwards reader options toload_csv()andload_json(). Valid options such asheaderandmaximum_object_sizewere rejected before reaching the loader, making the dispatcher less capable than the loaders it wraps (#5).