|
1 | | -## dbt-databricks 1.12.2 (TBD) |
| 1 | +## dbt-databricks 1.12.2 (Jul 9, 2026) |
2 | 2 |
|
3 | 3 | ### Features |
4 | 4 |
|
5 | | -- Add catalogs.yml v2 support (requires `use_catalogs_v2: true` in dbt-core) ([1440](https://github.com/databricks/dbt-databricks/pull/1440)) |
| 5 | +- Add catalogs.yml v2 support (requires `use_catalogs_v2: true` in dbt-core) ([#1440](https://github.com/databricks/dbt-databricks/pull/1440)) |
6 | 6 | - Add `skip_optimize` model config to opt out of the post-materialization `OPTIMIZE` call without dropping `zorder` / `liquid_clustered_by` / `auto_liquid_cluster` from the table definition. Useful when `OPTIMIZE` is delegated to Predictive Optimization or scheduled out of band. Complements the existing run-wide `DATABRICKS_SKIP_OPTIMIZE` var by allowing project-, folder-, or model-level opt-out via standard dbt config inheritance ([#703](https://github.com/databricks/dbt-databricks/issues/703)). |
7 | 7 | - 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 (requires `databricks-sql-connector[kernel]` on Python 3.10+; Azure service principals are not supported by the kernel) ([#1576](https://github.com/databricks/dbt-databricks/pull/1576)) |
8 | 8 |
|
|
13 | 13 | - Apply column-level `databricks_tags` for incremental models on the V1 materialization path ([#1520](https://github.com/databricks/dbt-databricks/pull/1520) closes [#1307](https://github.com/databricks/dbt-databricks/issues/1307)) |
14 | 14 | - Raise a `DbtRuntimeError` when a Python model job run terminates with a non-success `result_state` (e.g. `FAILED`/`TIMEDOUT`) instead of returning silently ([#1477](https://github.com/databricks/dbt-databricks/pull/1477)) |
15 | 15 | - Fix PK/FK constraints declaring an `expression` (e.g. `RELY`) being dropped and re-added on every incremental run. **Regression:** changing the `expression` on an existing PK/FK (`RELY`↔`NORELY`, or an expression-form FK's target) is no longer applied on incremental runs — use `--full-refresh`. ([#1552](https://github.com/databricks/dbt-databricks/pull/1552) closes [#1513](https://github.com/databricks/dbt-databricks/issues/1513)) |
16 | | -- Honor `incremental_apply_config_changes` in the V1 incremental merge path, allowing users to skip metadata diff queries (tags, column_tags, constraints, column_masks, tblproperties, describe_extended) when set to `false`. Matches the existing V2 behavior. ([1467](https://github.com/databricks/dbt-databricks/pull/1467) partially solves [#1402](https://github.com/databricks/dbt-databricks/issues/1402)) |
| 16 | +- Honor `incremental_apply_config_changes` in the V1 incremental merge path, allowing users to skip metadata diff queries (tags, column_tags, constraints, column_masks, tblproperties, describe_extended) when set to `false`. Matches the existing V2 behavior. ([#1467](https://github.com/databricks/dbt-databricks/pull/1467) partially resolves [#1402](https://github.com/databricks/dbt-databricks/issues/1402)) |
17 | 17 | - Fix column-level `databricks_tags` on Unity Catalog views updated via `ALTER` (`view_update_via_alter: true`) ([#1526](https://github.com/databricks/dbt-databricks/pull/1526) closes [#1525](https://github.com/databricks/dbt-databricks/issues/1525)) |
18 | 18 | - Apply `tblproperties` to `metric_view` models at create time, not only on a later alter/replace run ([#1530](https://github.com/databricks/dbt-databricks/pull/1530) closes [#1527](https://github.com/databricks/dbt-databricks/issues/1527)) |
19 | | -- Only emit `INSERT ... BY NAME` in the `replace_where`/`microbatch` strategies on DBR 18.0+ (and SQL warehouses), since older clusters reject the `BY NAME ... REPLACE WHERE` combination with a parse error ([1539](https://github.com/databricks/dbt-databricks/pull/1539) closes [#1532](https://github.com/databricks/dbt-databricks/issues/1532)) |
| 19 | +- Only emit `INSERT ... BY NAME` in the `replace_where`/`microbatch` strategies on DBR 18.0+ (and SQL warehouses), since older clusters reject the `BY NAME ... REPLACE WHERE` combination with a parse error ([#1539](https://github.com/databricks/dbt-databricks/pull/1539) resolves [#1532](https://github.com/databricks/dbt-databricks/issues/1532)) |
20 | 20 | - Fix materialized views always rebuilding because Databricks-internal `tblproperties` were read as configuration drift; the diff now compares only the configured properties ([#1350](https://github.com/databricks/dbt-databricks/pull/1350) closes [#1314](https://github.com/databricks/dbt-databricks/issues/1314)). |
21 | 21 | - Stop metric views with `view_update_via_alter` from re-issuing a redundant `ALTER VIEW ... AS` on every run ([#1546](https://github.com/databricks/dbt-databricks/pull/1546)) |
22 | 22 | - Fix column comments being permanently dropped from views when `view_update_via_alter` issues `ALTER VIEW AS`; reapply persisted column comments after the query update ([#1357](https://github.com/databricks/dbt-databricks/issues/1357)) |
23 | 23 |
|
24 | 24 | ### Under the Hood |
25 | 25 |
|
26 | | -- Add a weekly `Kernel Integration Tests` workflow 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](https://github.com/databricks/dbt-databricks/pull/1576)). |
27 | | -- Add functional tests for the `query` relation-config component's change handling: a streaming table's defining-query change is applied in place via `CREATE OR REFRESH`, and re-running a materialized view with an unchanged query leaves the existing relation in place instead of rebuilding it (test-only, no runtime impact). |
28 | 26 | - Raise the `databricks-sql-connector` upper bound to `<4.3.1` to support `4.3.0` ([#1518](https://github.com/databricks/dbt-databricks/pull/1518)) |
29 | | -- Add a functional test for incremental column-mask removal: dropping a `column_mask` from a model with an existing incremental relation issues `ALTER COLUMN ... DROP MASK` and leaves the column unmasked (test-only, no runtime impact). ([#1514](https://github.com/databricks/dbt-databricks/pull/1514)) |
30 | 27 | - Raise the `dbt-adapters` upper bound to `<1.25.0` ([#1507](https://github.com/databricks/dbt-databricks/pull/1507)) |
31 | 28 | - Raise the `databricks-sdk` upper bound to `<0.118.0` to pick up 0.117.0, which fixes `WorkspaceClient` construction failing with `CONTEXT_UNAVAILABLE_FOR_REMOTE_CLIENT` on Spark Connect clusters ([#1517](https://github.com/databricks/dbt-databricks/pull/1517) closes [#1252](https://github.com/databricks/dbt-databricks/issues/1252)) |
32 | 29 | - Raise the `dbt-core` upper bound to `<1.11.13` to include dbt-core 1.11.12 ([#1578](https://github.com/databricks/dbt-databricks/pull/1578)) |
33 | | -- Make stateful functional tests rerun-safe so a `pytest --reruns` retry no longer inherits mutated state (rewritten `schema.yml`/model files, half-built relations) from the failed attempt: the remaining incremental tests (tags, column tags, tblproperties, liquid clustering, column masks, persist_docs, replace table), the materialized-view schedule tests, and the `seed_onto_view` test (test-only, no runtime impact). ([#1512](https://github.com/databricks/dbt-databricks/pull/1512) [#1581](https://github.com/databricks/dbt-databricks/pull/1581)) |
34 | | -- Add unit tests for the previously-uncovered live event/logging classes (`QueryError`, `ConnectionCreate`, `ConnectionCreateError`, and `DbtCoreHandler` log-level routing), bringing the live code in `events/` and `logging.py` to full coverage (test-only, no runtime impact). ([#1548](https://github.com/databricks/dbt-databricks/pull/1548)) |
| 30 | +- Instrument `add_query`, `get_relation_config`, `is_uniform`, `has_dbr_capability`, and `is_cluster` for dbt's record/replay framework (test-only, no runtime impact) ([#1508](https://github.com/databricks/dbt-databricks/pull/1508)) |
| 31 | +- Add a weekly `Kernel Integration Tests` workflow 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](https://github.com/databricks/dbt-databricks/pull/1576)). |
| 32 | +- 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_columns` type widening, catalog `table_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](https://github.com/databricks/dbt-databricks/pull/1511), [#1512](https://github.com/databricks/dbt-databricks/pull/1512), [#1514](https://github.com/databricks/dbt-databricks/pull/1514), [#1521](https://github.com/databricks/dbt-databricks/pull/1521), [#1522](https://github.com/databricks/dbt-databricks/pull/1522), [#1523](https://github.com/databricks/dbt-databricks/pull/1523), [#1524](https://github.com/databricks/dbt-databricks/pull/1524), [#1528](https://github.com/databricks/dbt-databricks/pull/1528), [#1529](https://github.com/databricks/dbt-databricks/pull/1529), [#1531](https://github.com/databricks/dbt-databricks/pull/1531), [#1533](https://github.com/databricks/dbt-databricks/pull/1533), [#1534](https://github.com/databricks/dbt-databricks/pull/1534), [#1535](https://github.com/databricks/dbt-databricks/pull/1535), [#1536](https://github.com/databricks/dbt-databricks/pull/1536), [#1537](https://github.com/databricks/dbt-databricks/pull/1537), [#1538](https://github.com/databricks/dbt-databricks/pull/1538), [#1541](https://github.com/databricks/dbt-databricks/pull/1541), [#1542](https://github.com/databricks/dbt-databricks/pull/1542), [#1543](https://github.com/databricks/dbt-databricks/pull/1543), [#1544](https://github.com/databricks/dbt-databricks/pull/1544), [#1545](https://github.com/databricks/dbt-databricks/pull/1545), [#1548](https://github.com/databricks/dbt-databricks/pull/1548), [#1550](https://github.com/databricks/dbt-databricks/pull/1550), [#1553](https://github.com/databricks/dbt-databricks/pull/1553), [#1558](https://github.com/databricks/dbt-databricks/pull/1558), [#1559](https://github.com/databricks/dbt-databricks/pull/1559), [#1564](https://github.com/databricks/dbt-databricks/pull/1564), [#1565](https://github.com/databricks/dbt-databricks/pull/1565), [#1566](https://github.com/databricks/dbt-databricks/pull/1566), [#1568](https://github.com/databricks/dbt-databricks/pull/1568), [#1569](https://github.com/databricks/dbt-databricks/pull/1569), [#1570](https://github.com/databricks/dbt-databricks/pull/1570), [#1571](https://github.com/databricks/dbt-databricks/pull/1571), [#1573](https://github.com/databricks/dbt-databricks/pull/1573), [#1579](https://github.com/databricks/dbt-databricks/pull/1579), [#1580](https://github.com/databricks/dbt-databricks/pull/1580), [#1581](https://github.com/databricks/dbt-databricks/pull/1581), [#1582](https://github.com/databricks/dbt-databricks/pull/1582)) |
35 | 33 |
|
36 | 34 | ## dbt-databricks 1.12.1 (June 10, 2026) |
37 | 35 |
|
|
0 commit comments