- The workspace Connections pane identifies managed and foreign Iceberg tables as
ICEBERG, distinguishes Delta tables with Iceberg reads asDELTA (UniForm: Iceberg), and shows Iceberg metadata instead of Delta protocol versions. Tables without a source format, including metric views, no longer fail when opening metadata (#311, @zacdav). - The RStudio connection pane now shows the storage location, last commit time, and minimum reader and writer versions of Delta tables (#304, @m-muecke).
db_jobs_repair_run()now sendsjob_parameterscorrectly (#307, @m-muecke).access_control_req_group()now sends the group asgroup_name, so jobs created with group permissions no longer fail with "Principal name not defined" (#305, @m-muecke).dbListFields()no longer returns extra rows for partitioned and clustered tables (#306, @m-muecke).- Fixed
db_sql_query(),dbGetQuery(), anddbFetch()silently returning only the first chunk ofINLINEresults. Additional chunks are fetched in order up to the requested row limit (#303, @zacdav). db_list_all_pages()collects all records from token-paginated listings, omitting pagination metadata automatically. Pass a listing function and its arguments, for exampledb_list_all_pages(db_cluster_list, page_size = 100)(#301, @zacdav-db).- Cluster wrappers now use Clusters API 2.1. Breaking change:
db_cluster_list()anddb_cluster_events()return full single-page responses, preserving pagination tokens; extract$clustersor$eventsfor records. Both acceptpage_sizeandpage_token. The Connections pane follows all cluster pages (#301, @zacdav-db). db_cluster_events()deprecatesoffset/limitin favor ofpage_token/page_sizeahead of Databricks' November 30, 2026 migration deadline. Legacy arguments default toNULL; explicitly supplied values still work with a warning but cannot be mixed with token pagination. Obtain tokens from preceding responses rather than converting numeric offsets. Millisecond timestamps are now preserved without integer overflow (#301, @zacdav-db).cumprod()now uses built-in Databricks SQL functions instead of requiring sparklyr's session-registered aggregate. Cumulative products use a row frame and propagateNULLvalues to subsequent rows in each group (#295, @zacdav-db).- Breaking change:
db_jobs_list()anddb_jobs_runs_list()now return the full single-page API response, including pagination tokens and metadata. Extract$jobsor$runsto access the records.offsetnow defaults toNULLto enable token pagination; explicit numeric offsets are still forwarded. Usepage_tokenfrom the preceding response to fetch another page. Job and run get wrappers also acceptpage_tokenfor additional array elements. Use named arguments with these four wrappers because their argument order has changed (#282, @zacdav). - Fixed the workspace connection pane's Catalog availability check so accessible Unity Catalog resources appear (#283, @zacdav).
- The RStudio connection pane now follows all Unity Catalog listing pages for catalogs, schemas, tables, volumes, models, functions, and model versions, including empty pages with continuation tokens. Volume details are fetched by name so volumes beyond the first listing page can be inspected.
db_uc_volumes_get()now sendsinclude_browseas a query parameter, and the pane handles optional metadata omitted from browse-only responses (#283, @zacdav). - Volume-based
dbWriteTable()now creates the schema requested byfield.types, includingCHAR/VARCHARlength limits. Volume writes and appends useINSERTto convert staged values to the target column types (#287, @zacdav). db_volume_list()now acceptspage_sizeandpage_token. Directory downloads and recursive deletion follow every listing page, preventing files beyond the first page from being omitted. Listing failures now stop recursive deletion instead of being treated as empty directories (#281, @zacdav).db_volume_upload_dir()now creates each parent directory only once, avoiding repeated API calls for files in the same directory (#269, @zacdav-db).dbWriteTable()anddbAppendTable()now write POSIXct values as epoch microseconds without shifting their time zone, using the same microsecond conversion as volume-based writes (#298, @m-muecke).- Standard-path table writes now detect binary columns once per column, avoiding quadratic serialization time for lists of raw vectors (#268, @zacdav-db).
- Volume file requests now encode reserved characters and literal percent sequences in paths correctly, preventing
#and?in filenames from changing the request target (#267, @zacdav-db). db_volume_dir_delete()now respectsperform_request = FALSEwhenrecursive = TRUE, returning a directory-delete request without listing or deleting contents (#266, @zacdav-db).db_cluster_create()anddb_cluster_edit()no longer ignorelog_conf(#299, @m-muecke).db_vs_indexes_upsert_data()no longer rounds numbers to four decimal places (#308, @m-muecke).- Volume-backed
dbWriteTable()anddbAppendTable()avoid an extra staging-directory creation request before uploading files (#309, @m-muecke). - Databricks CLI authentication now limits token retrieval to 60 seconds instead of waiting up to 60,000 seconds (#296, @m-muecke).
- Fixed OAuth U2M and M2M authentication across multiple Databricks workspaces in one R session by isolating OAuth clients and cached tokens per workspace (#256, @zacdav-db)
- OAuth tokens are now refreshed 40 seconds before expiry, avoiding Databricks API rejections during the final 30 seconds of a token's lifetime; this requires
{httr2}1.3.0 or later (#258, @zacdav-db) - Added
databricks-cliauthentication support for profiles created bydatabricks auth login;{brickster}obtains tokens throughdatabricks auth token, caches only the short-lived access token in memory, and leaves durable credentials and refresh to the CLI (#258, @zacdav-db) - Authentication mode overrides now come from
auth_typein the selected.databrickscfgprofile; replaceDATABRICKS_AUTH_TYPEwith the profile field. Environment-only authentication continues to infer the mode from available credentials (#258, @zacdav-db) - Fixed
dbWriteTable()anddbAppendTable()standard-path writes for binary columns, which now use DatabricksBINARYtypes andX'...'literals when no staging volume is configured (#246, @zacdav-db) dbConnect()now preserves Databricks API error details when its validation query fails (#247, @zacdav)db_perform_request()anddb_perform_response()now preserve useful error messages when Databricks returns non-JSON error bodies such as empty, plain-text, or HTML responses (#247, @zacdav)- Fixed
git_source()erroring whentypewas left at its default (#225, @m-muecke) - Fixed Unity Catalog volume file requests so
db_volume_*paths containing spaces are encoded correctly (#233, @zacdav-db) db_cluster_events()now forwards theevent_typesargument to the API, which was previously ignored (#236, @m-muecke)db_sql_warehouse_create()anddb_sql_warehouse_edit()now forward thetagsargument to the API, which was previously ignored (#240, @m-muecke)- Unity Catalog list helpers now preserve
next_page_tokenmetadata in list responses for catalogs, schemas, tables, and volumes; their list arguments are sent as documented query parameters (#244, @zacdav-db) db_uc_volumes_list()now forwards themax_results,include_browse, andpage_tokenarguments to the API, which were previously ignored (#228, @m-muecke)db_vs_indexes_query()now sends thescore_thresholdargument to the API, which was previously ignored (#235, @m-muecke)- Added
show_progresstodbConnect()for the DBI backend;dbGetQuery(),dbFetch(),dbWriteTable(), and dbplyrcollect()now use the connection default while preserving per-callshow_progressoverrides (#223, @zacdav-db)
- Enabled
db_request()retries for transient low-level HTTP request failures, improving resilience to intermittent curl/HTTP2 framing errors (#215) - Added a DBI connection-level
dispositionsetting sodbSendQuery()and defaultdbGetQuery()calls can useINLINEresults when direct cloud-storage downloads are blocked (#205) - Added Azure AD service principal OAuth M2M support (
ARM_CLIENT_ID,ARM_CLIENT_SECRET,ARM_TENANT_ID) with optionalDATABRICKS_AUTH_TYPEoverride (oauth-m2m,azure-client-secret,oauth-u2m); default auth resolution now prefers Azure M2M over U2M when ARM credentials are present (#185) - Marked DBFS REST wrappers (
db_dbfs_*) as deprecated and moved them to internal-only, guiding users towards using volumes (db_volume_*) - Added
db_volume_download_dir()for parallel directory downloads from Unity Catalog volumes to local directories - Renamed
preserve_structuretorecursiveindb_volume_upload_dir()anddb_volume_download_dir()for consistent directory traversal semantics - Added a new vignette for working with volumes
- Added compact, colorized
{cli}S3 print methods fordb_cluster_get()/db_cluster_list(),db_sql_warehouse_get()/db_sql_warehouse_list(), anddb_jobs_get()/db_jobs_list()that preserve nested list structures while improving at-a-glance summaries - Standardized DBI write progress argument naming:
dbWriteTable()and internaldb_write_table_volume()now useshow_progress(#201)
- Fixed
dbplyr::computeinteraction for DBI backend (#184) - Added OAuth M2M support for workspace-level service principal authentication (#173, #103)
- DBI connections accept
http_pathas an alternative towarehouse_idand extract the warehouse ID from/sql/1.0/warehouses/<id>. - Added RStudio/Positron Connections Pane support for the DBI backend.
- Added DBI helpers for
dbCreateTable(),dbReadTable(), anddbRemoveTable()withId/AsIssupport, plus offline tests for DBI table helpers. - Optimized SQL result fetching for single-chunk external links by using the inline link from the initial response when available.
- Increment version of testthat required (>= 3.3.0)
- Added Lakebase workspace database helpers (
db_lakebase_*) including credential generation, instance listing, instance lookup by name or UID, and catalog retrieval (#113) - Moving all filesystem related calls to {fs} (#140)
- The DBI backend now always respects a staging volume when specified, even for small data (#143)
schemaEvolutionModeis now alwaysnonewhen writing to tables with DBI backend and staging volumes (#147)
- Increment version of httr2 required (>= 1.1.1)
- DBI connections expose
max_active_connectionsandfetch_timeoutto control result download concurrency and timeouts - DBI/dbplyr write table methods now make two transactions (create empty table --> insert into) to ensure type correctness
- Allow optional schedules in
db_jobs_reset()and propagate parameters in reset/update requests. - DBI/dbplyr inline writes now preserve single quotes in character columns via explicit escaping (#130)
- Added DBI + dbplyr backend support:
DatabricksSQL()driver for standard DBI operations - Increase support for job level parameters
- Added
db_jobs_repair_run
- Added SQL Queries API coverage
- Updated Jobs to 2.2
- Added additional tasks for jobs:
for_each_task,condition_task,sql_query_task,sql_file_task,run_job_task - Removing the Python SQL connector as
db_sql_querysupersedes it. - Added
db_sql_queryto simplify execution of SQL - Adjusted
db_replto handle mulit-line expressions (R only) - Removed RStudio Addins to send lines/selection/files to console
- Moved arrow to Suggests
- Exporting UC table functions (
db_uc_table*) (#72) - Adding support for
direct_downloadoption indb_workspace_export() - Exporting UC Catalog/Schema get/list functions (#72)
- Adding support for UC Volume management (#72)
- Fixing command execution context cancel (#86, #87)
- Adding stricter version requirements for {httr2} (#81, #63)
- Fixing
db_volume_delete()function (#73, @vladimirobucina) - Adjustments to ensure {httr2} changes don't break things (#75, @hadley)
- Adding
db_repl()a remote REPL to a Databricks cluster (#53) - Removing defunct RStudio add-in for browsing Databricks compute
- Changes to DESCRIPTION file in preperation for CRAN (#64)
- Removal of
notebook_use_posit_repo()andnotebook_enable_htmlwidgets()as they are incompatible with CRAN (#64) - Removing kntir engine due to many render edge cases not being solvable
- Adding shortcuts for REPL under addins
- Added
db_context_command_run_and_wait - Adjusted tests to use
withr(#68)
open_workspace()and the rstudio connection pane have been heavily revised to enhance browsing unity catalog and also remove DBFS and WSFS browsing (#52)
- Adding NEWS.md
- Renamed
set_lib_pathtoadd_lib_pathand added theafterparameter - Adding OAuth U2M support (workspace level), considered the default when
DATABRICKS_TOKENisn't specified (e.gdb_token()returnsNULL) - Updating authentication vignette to include information on OAuth
- Updating README.md to include quick start and clearer information
- Adding vector search index functions