# dbt Core v2.0.0-rc.1 - Product: dbt Core (https://whatsnew.fyi/product/dbt-core) - Vendor: dbt Labs - Date: 2026-09-02 - Version: v2.0.0-rc.1 - Original notes: https://github.com/dbt-labs/dbt-core/releases/tag/v2.0.0-rc.1 - Permalink: https://whatsnew.fyi/product/dbt-core/releases/v2.0.0-rc.1 - Labels: Pre-release What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Add Exasol adapter (Phase 1) with connection/auth, TLS and timeout profile options, metadata adapter, type conversion, reserved-keyword auto-quoting, materializations, snapshots, model contracts, constraints, grants, persist_docs, catalog generation, source-freshness, cross-database utilities, and interactive dbt init setup - **added** — Add Databricks query tags with automatic dbt metadata and profile- and model-level configuration - **added** — Add parse-safe views (dbt.graph_nodes, dbt.models, dbt.seeds, dbt.tests, dbt.snapshots, dbt.sources, dbt.analyses, dbt.operations, dbt.functions, dbt.columns) for standalone querying of exported index - **added** — Add ClickHouse configs for definer, sql_security, and inserts_only - **added** — Track ref()/source()/this call provenance during Jinja rendering with on_this_reference listener hook for dbt.hard_coded_reference lint rule - **changed** — ClickHouse model settings and query_settings configs now render into DDL with version-gated DDL using real server version - **changed** — ClickHouse incremental strategies now resolve and validate like the Python adapter with on_schema_change support for codec-aware ALTERs - **changed** — Fusion accepts Databricks Python environment_key and environment_dependencies and uses them on serverless job submit - **changed** — OSS CLI now builds as a binary named dbt instead of dbt-sa-cli - **fixed** — Fix regression in log-format-file use - **fixed** — Allow Databricks incremental models to use delete+insert with correctly quoted unique keys - **fixed** — Include invocation IDs in default Databricks query comments and preserve run-operation connection names - **fixed** — Disambiguate generated generic-test SQL asset paths on name collisions so tests are no longer silently dropped from the manifest - **fixed** — Stop the v2 parser emitting a null macros key for unit tests that set overrides without macros - **fixed** — Accept sequence-valued column_types, mapping-valued event_time, scalar policy_tags, and the legacy data-paths alias - **fixed** — Preserve declaration order when rendering Databricks table properties - **fixed** — Databricks: emit INSERT BY NAME REPLACE WHERE only when DBR 18.0+ supports the combination - **fixed** — The download-at-install sdist now declares runtime dependencies and requires-python of the wheel it installs - **fixed** — Apply Databricks model and column constraints only when contract.enforced is true - **fixed** — Accept config value shapes dbt Core tolerates including mapping-valued constraints, list-valued dist, and unquoted YAML 1.1 booleans - **security** — Skip symlink, hard link, and device entries when extracting package tarballs ##### 2.0.0-rc.1 Released September 02, 2026 ###### Features - Add Exasol adapter (Phase 1): connection/auth with TLS and timeout profile options, metadata adapter, agate/seed type conversion (incl. HASHTYPE) and typed SQL literals, reserved-keyword auto-quoting, and the full macro bundle — materializations (table/view/incremental append·merge·delete+insert·microbatch), snapshots (timestamp/check, hard deletes), model contracts and constraints, on_schema_change, grants, persist_docs for tables and views, catalog generation, source-freshness, cross-database utils (dateadd/datediff/last_day/hash/bool_or/listagg/safe_cast/equals/split_part), distribute_by/partition_by/primary_key configs, and interactive dbt init setup - Add Databricks query tags with automatic dbt metadata and profile- and model-level configuration. ([#15701](https://github.com/dbt-labs/dbt-core/issues/15701)) - Fusion accepts Databricks Python environment_key and environment_dependencies and uses them on serverless job submit (https://github.com/databricks/dbt-databricks/issues/1636). ([#15966](https://github.com/dbt-labs/dbt-core/issues/15966)) - Add parse-safe views (dbt.graph_nodes, dbt.models, dbt.seeds, dbt.tests, dbt.snapshots, dbt.sources, dbt.analyses, dbt.operations, dbt.functions, dbt.columns) so standalone querying of an exported index (views.sql) never silently exposes a compile-only or never-populated column at parse time. - [ClickHouse] New configs available: definer, sql_security, inserts_only. Available but not working yet: projections, codec. ([#14585](https://github.com/dbt-labs/dbt-core/issues/14585)) - [ClickHouse] Model settings and query_settings configs now render into DDL, and version-gated DDL uses the real server version via a once-per-process probe. ([#14585](https://github.com/dbt-labs/dbt-core/issues/14585)) - [ClickHouse] clickhouse_s3source() renders the s3() table function, and model contracts are enforced end-to-end (constraint rendering, per-column codec/ttl, real column types). ([#14585](https://github.com/dbt-labs/dbt-core/issues/14585)) - Track ref()/source()/this call provenance during Jinja rendering (on_this_reference listener hook), powering the dbt.hard_coded_reference (DBT05) lint rule ([#16080](https://github.com/dbt-labs/dbt-core/issues/16080)) - [ClickHouse] Incremental strategies now resolve and validate exactly like the Python adapter (delete+insert, insert_overwrite, microbatch), and on_schema_change (fail/append_new_columns/sync_all_columns) works on incremental models with codec-aware ALTERs. ([#14585](https://github.com/dbt-labs/dbt-core/issues/14585)) ###### Fixes - Fix regression in log-format-file use ([#15685](https://github.com/dbt-labs/dbt-core/issues/15685)) - Allow Databricks incremental models to use `delete+insert` with correctly quoted unique keys ([#15250](https://github.com/dbt-labs/dbt-core/issues/15250)) - Include invocation IDs in default Databricks query comments and preserve run-operation connection names ([#15689](https://github.com/dbt-labs/dbt-core/issues/15689)) - Disambiguate generated generic-test SQL asset paths on name collisions so tests on different models/columns that flatten to the same generated name are no longer silently dropped from the manifest - Stop the v2 parser emitting a null `macros` key for unit tests that set `overrides` without `macros`, which made dbt-core fail to deserialize the fusion-produced manifest ([#16009](https://github.com/dbt-labs/dbt-core/issues/16009)) - Accept sequence-valued column_types, mapping-valued event_time, scalar policy_tags, and the legacy data-paths alias to match dbt-core's YAML config acceptance - Preserve declaration order when rendering Databricks table properties ([#16036](https://github.com/dbt-labs/dbt-core/issues/16036)) - Databricks: emit INSERT BY NAME REPLACE WHERE only when DBR 18.0+ supports the combination, and warn when insert_overwrite cannot honor REPLACE ON on older clusters ([#15999](https://github.com/dbt-labs/dbt-c _[Truncated at 4000 characters — full notes: https://github.com/dbt-labs/dbt-core/releases/tag/v2.0.0-rc.1]_