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