Releases: databricks/dbt-databricks
Releases · databricks/dbt-databricks
Release list
v1.12.2
dbt-databricks 1.12.2 (Jul 9, 2026)
Features
- Add catalogs.yml v2 support (requires
use_catalogs_v2: truein dbt-core) (#1440) - Add
skip_optimizemodel config to opt out of the post-materializationOPTIMIZEcall without droppingzorder/liquid_clustered_by/auto_liquid_clusterfrom the table definition. Useful whenOPTIMIZEis delegated to Predictive Optimization or scheduled out of band. Complements the existing run-wideDATABRICKS_SKIP_OPTIMIZEvar by allowing project-, folder-, or model-level opt-out via standard dbt config inheritance (#703). - Support the connector's Rust kernel backend via
connection_parameters: {use_kernel: true}for SQL warehouses, with personal access token or Databricks OAuth (M2M/U2M) auth (requiresdatabricks-sql-connector[kernel]on Python 3.10+; Azure service principals are not supported by the kernel) (#1576)
Fixes
- Stop dropping existing constraints on incremental runs when
contract.enforcedisfalse(#1557) - Recognize the
skip_not_matched_stepmerge config in the adapter config schema. It was previously declared with a typo (skip_non_matched_step); the merge macro already read the correct key, so merge behavior is unchanged (#1562). - Honor the
expressionfield onprimary_keyconstraints on the V1 materialization path. A primary key declared withexpression: RELY(or any trailing clause) previously had its expression silently dropped. (#1551) - Apply column-level
databricks_tagsfor incremental models on the V1 materialization path (#1520 closes #1307) - Raise a
DbtRuntimeErrorwhen a Python model job run terminates with a non-successresult_state(e.g.FAILED/TIMEDOUT) instead of returning silently (#1477) - Fix PK/FK constraints declaring an
expression(e.g.RELY) being dropped and re-added on every incremental run. Regression: changing theexpressionon an existing PK/FK (RELY↔NORELY, or an expression-form FK's target) is no longer applied on incremental runs — use--full-refresh. (#1552 closes #1513) - Honor
incremental_apply_config_changesin the V1 incremental merge path, allowing users to skip metadata diff queries (tags, column_tags, constraints, column_masks, tblproperties, describe_extended) when set tofalse. Matches the existing V2 behavior. (#1467 partially resolves #1402) - Fix column-level
databricks_tagson Unity Catalog views updated viaALTER(view_update_via_alter: true) (#1526 closes #1525) - Apply
tblpropertiestometric_viewmodels at create time, not only on a later alter/replace run (#1530 closes #1527) - Only emit
INSERT ... BY NAMEin thereplace_where/microbatchstrategies on DBR 18.0+ (and SQL warehouses), since older clusters reject theBY NAME ... REPLACE WHEREcombination with a parse error (#1539 resolves #1532) - Fix materialized views always rebuilding because Databricks-internal
tblpropertieswere read as configuration drift; the diff now compares only the configured properties (#1350 closes #1314). - Stop metric views with
view_update_via_alterfrom re-issuing a redundantALTER VIEW ... ASon every run (#1546) - Fix column comments being permanently dropped from views when
view_update_via_alterissuesALTER VIEW AS; reapply persisted column comments after the query update (#1357)
Under the Hood
- Raise the
databricks-sql-connectorupper bound to<4.3.1to support4.3.0(#1518) - Raise the
dbt-adaptersupper bound to<1.25.0(#1507) - Raise the
databricks-sdkupper bound to<0.118.0to pick up 0.117.0, which fixesWorkspaceClientconstruction failing withCONTEXT_UNAVAILABLE_FOR_REMOTE_CLIENTon Spark Connect clusters (#1517 closes #1252) - Raise the
dbt-coreupper bound to<1.11.13to include dbt-core 1.11.12 (#1578) - Instrument
add_query,get_relation_config,is_uniform,has_dbr_capability, andis_clusterfor dbt's record/replay framework (test-only, no runtime impact) (#1508) - Add a weekly
Kernel Integration Testsworkflow that runs the functional suite against the SQL-warehouse profile through the connector's Rust kernel backend (DBT_DATABRICKS_USE_KERNEL=1) (test-only, no runtime impact) (#1576). - Substantially expand adapter test coverage across the functional and unit suites: broaden functional coverage for materializations (table replace-in-place, view→table conversion), incremental strategies and full-refresh recreate, constraints and row filters, tags and column tags, streaming tables, materialized and metric views,
copy_into, clone, seeds, SQL UDFs,split_part,sync_all_columnstype widening, catalogtable_format, and Python models — shifting assertions to server-observable state rather than compiled SQL or log output; add unit coverage for the live event/logging classes; make stateful functional tests rerun-safe; and add CI upkeep (a weekly Python-model notebook-folder purge and a longer unit-test timeout) (test-only, no runtime impact). (#1511, #1512, #1514, #1521, #1522, #1523, #1524, #1528, #1529, #1531, #1533, #1534, #1535, #1536, #1537, #1538, #1541, #1542, #1543, #1544, #1545, #1548, #1550, #1553, #1558, #1559, #1564, #1565, #1566, #1568, #1569, #1570, #1571, #1573, #1579, #1580, #1581, #1582)
New Contributors
- @aahel made their first contribution in #1440
- @moomindani made their first contribution in #1512
- @tomaioo made their first contribution in #1469
- @ajhlee-dbt made their first contribution in #1508
Full Changelog: v1.12.1...v1.12.2
1.12.1
dbt-databricks 1.12.1 (June 10, 2026)
Features
- Expose
job_id,job_run_id, andtask_run_idfrom the Databricks Jobsdbt_taskruntime inadapter_response, enabling correlation between dbt runs and Databricks workflow executions viarun_results.jsonby @sd-db in #1451, closes #722 - Add support for SPOG (Single Point of Gateway) hosts: account-level vanity URLs with
?o=<workspace-id>inhttp_pathroute correctly for both data-plane (SQL) and control-plane (REST/Jobs/Workspace API) traffic. Requiresdatabricks-sql-connector >= 4.2.6anddatabricks-sdk >= 0.76.0. by @sd-db in #1479
Fixes
- Ignore the server-set
delta.parquet.compression.codectblproperty when diffing relation configs, so streaming tables and materialized views are not flagged as changed after the backend started stamping it automatically by @sd-db in #1489 - Fix missing f-string prefix in
JobRunsApi.submitdebug log by @Dev-X25874 in #1471 - Fix capability-branching macros falling through to their legacy path at parse/compile time on SQL warehouses. The parse-time stub of
has_dbr_capabilitynow returnsTrueon warehouse profiles for capabilities flaggedsql_warehouse_supported, so macros select the modern branch during compilation instead of the legacy fallback. by @sd-db in #1449, closes #1331 - Fix snapshots not applying
databricks_tagson columns by @themattmorris in #1442, closes #1441 - Skip
DESCRIBE TABLE EXTENDED ... AS JSONfor foreign/federated tables inget_columns_in_relation, avoiding repeated failures and extra latency on those sources by @willweld in #1472 EXTRACT_CLUSTER_ID_FROM_HTTP_PATH_REGEXnow stops the capture at?/&, so any trailing query string onhttp_pathno longer corrupts the extracted cluster id. Latent issue on legacy hosts; the fix unblocks SPOG cluster paths. by @sd-db in #1479- Gate column-level constraints on
contract.enforcedto match the existing model-level gate, ensuring column-level NOT NULL / PK / FK / CHECK constraints are only applied whencontract.enforced: trueunderuse_materialization_v2: trueby @sd-db in #1470, closes #1381 - Fix managed Iceberg incremental models configured with
partition_bysilently losing their clustering after the first incremental run. Managed Iceberg storespartition_byas liquid clustering server-side, so the reconciler now treatspartition_byas the desired clustering and no longer issues a spuriousALTER TABLE ... CLUSTER BY NONEby @sd-db in #1496, closes #1495
Under the Hood
- Defer SDK
Configconstruction to connection-open time so offline paths (dbt parse/list/compile) don't trigger the host-metadata probe introduced indatabricks-sdk>=0.103; as a side effect, auth errors now surface at first connection rather than during profile parsing. by @sd-db in #1474 - Bump ceilings on
databricks-sdk(now<0.105.0) anddatabricks-sql-connector[pyarrow](now<4.3.0) to admit newer releases; floors unchanged. by @sd-db in #1474 - BREAKING: users who relied on column-level constraints (NOT NULL, primary key, foreign key, check) being applied under
use_materialization_v2: truewithoutcontract.enforced: truemust now setcontract.enforced: trueexplicitly on the model. by @sd-db in #1470 - Bump upper bound of dbt-core to
<1.11.12to include dbt-core 1.11.9, 1.11.10, and 1.11.11 by @sd-db in #1505
Full Changelog: v1.12.0...v1.12.1
v1.12.0
Features
- Add support for metric views as a materialization by @benc-db in #1285
- Add support for row filters by @sd-db in #1294
- Add support for Python UDFs by @sd-db in #1336
- Add support for key-only
databricks_tagsfor table and column tagging. This can now be configured by setting tag values to empty strings""orNone. by @canbekley in #1339 - Fetch relation metadata like constraints, column masks, row filters, etc with a single
DESCRIBE TABLE EXTENDED ... AS JSONcall, replacing multipleinformation_schemaqueries. Falls back toinformation_schemaon older runtimes. Gated behinduse_describe_as_json_for_relation_metadatabehavior flag, off by default. by @tejassp-db in #1432 - Support
SCHEDULE EVERYandTRIGGER ON UPDATErefresh modes for materialized views and streaming tables, with parser and diff coverage so relations whose actual refresh is not CRON no longer crash on subsequent runs by @sd-db in #1434, closes #1293
Fixes
- Fix
metric_viewfailing withMETRIC_VIEW_INVALID_VIEW_DEFINITIONwhen models use bare{{ ref(...) }}for thesource:field by @sd-db in #1430, closes #1361 - Fix
RefreshConfig.__eq__self/other typo where two configs with the samecronbut differenttime_zone_valuecompared equal by @sd-db in #1434 - Fix streaming-table DROP-SCHEDULE path that was silently filtered out of the changeset by @sd-db in #1434
- Use pydantic v1-compatible API in
refresh.pyso the adapter imports on environments shipping pydantic v1 by @sd-db in #1461
Under the Hood
- BREAKING:
databricks_tagsdefined at different hierarchy levels (e.g. project-level and model-level) now merge additively instead of the child config completely replacing the parent. by @canbekley in #1340 - Skip
information_schema.tagsandinformation_schema.column_tagsmetadata fetches when table tags and column tags are not configured on a model. by @tejassp-db in #1387
Full Changelog: v1.11.8...v1.12.0
v1.11.8
What's Changed
Features
- feat: Add invocation_id to default query comment by @GuyEshdat in #1378
Fixes
- fix: enforce 255-character identifier length limit for Databricks relations by @psaikaushik in #1391
- fix: prevent spurious MicrobatchConcurrency warning on every run (#1406) by @sd-db in #1409
- fix: prevent _cache_dbr_capabilities from caching None-version entries (#1398) by @sd-db in #1414
- fix: missing metadata handling in is_hudi and is_iceberg by @aarushisingh04 in #1435
- test: fix failing
TestStreamingTableLiquidClusteringChangesby @sd-db in #1436 - fix: stop emitting insert_overwrite noise warning on every run (#1305) by @sd-db in #1425
- fix: warn on contract.enforced=true for materialized_view by @sd-db in #1421
- fix: suppress use_managed_iceberg warning for non-Iceberg projects by @tejassp-db in #1429
- fix: refresh materialized_view when databricks_tags is set (#1419) by @sd-db in #1424
- fix: prevent agate type-conflict during catalog merge (#1392) by @sd-db in #1428
- fix: suppress warning on materialization v2 behavior flags. by @tejassp-db in #1431
New Contributors
- @psaikaushik made their first contribution in #1391
- @GuyEshdat made their first contribution in #1378
Full Changelog: v1.11.7...v1.11.8
v1.11.7
What's Changed
Features
Fixes
- fix: convert workflow job spec to SDK dataclasses before jobs.create() (#1338) by @aarushisingh04 in #1364
- fix: enable TestWorkflowJob functional test that was unreachable on all profiles by @sd-db in #1401
- fix: prevent duplicate alias in --empty mode for inline ref/source by @sd-db in #1397
- fix: add insert-by-name support to microbatch and replace_where strategies (#1338) by @aarushisingh04 in #1348
- fix: capability detection for named compute (
databricks_compute) by @trouze in #1355
Under the Hood
- chore: bump dbt-core upper bound to <1.11.9 by @sd-db in #1400
- feat(PECOBLR-2328): bump databricks-sql-connector upper bound to <4.1.6 by @tejassp-db in #1363
New Contributors
- @tejassp-db made their first contribution in #1365
- @trouze made their first contribution in #1355
- @fedemgp made their first contribution in #1321
Full Changelog: v1.11.6...v1.11.7
v1.11.6
What's Changed
Features
- Enable concurrent microbatch execution by @wmjones in #1326
- Add optimize() call to snapshot materialization by @aarushisingh04 in #1341
Fixes
- Quote catalog names in SHOW SCHEMAS commands by @aarushisingh04 in #1332
- Add cluster clause to streaming table alter sql by @ShaneMazur in #1330
- Add missing optimize() call to table v2 materialization by @sd-db in #1345
- Apply column-level tags for V1 table materialization by @sd-db in #1346
- Check constraints enforced config param prior to applying by @colin-rogers-dbt in #1343
New Contributors
- @wmjones made their first contribution in #1326
- @aarushisingh04 made their first contribution in #1332
Full Changelog: v1.11.5...v1.11.6
v1.12.0a1
v1.11.5
What's Changed
- Fix: Retain multiple foreign-keys from one table to another after an incremental run by @Ewan-Keith in #1296
- fix: Use DROP + CREATE for MV partition_by changes by @benc-db in #1327
- chore: Allow dbt-core 1.11.6 by @QMalcolm in #1322
New Contributors
- @Ewan-Keith made their first contribution in #1296
Full Changelog: v1.11.4...v1.11.5