megachangelog
Announcement2.0.0-rc.1

v2.0.0-rc.1

Release candidate for dbt 2.0.0 with significant new features including a new Exasol adapter with full macro bundle, Databricks query tags with metadata, parse-safe views for safer manifest querying, ClickHouse DDL improvements, and tracking of ref/source/this call provenance. Includes multiple fixes for Databricks incremental models, query comments, manifest deserialization, YAML config acceptance, and security improvements for package tarball extraction.

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)
  • Fusion accepts Databricks Python environment_key and environment_dependencies and uses them on serverless job submit (databricks/dbt-databricks#1636). (#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)
  • [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)
  • [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)
  • Track ref()/source()/this call provenance during Jinja rendering (on_this_reference listener hook), powering the dbt.hard_coded_reference (DBT05) lint rule (#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)

Fixes

  • Fix regression in log-format-file use (#15685)
  • Allow Databricks incremental models to use delete+insert with correctly quoted unique keys (#15250)
  • Include invocation IDs in default Databricks query comments and preserve run-operation connection names (#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)
  • 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)
  • 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)
  • The download-at-install sdist now declares the runtime dependencies and requires-python of the wheel it installs, so uv pip install dbt-core/dbt-oss no longer produces an unimportable package
  • Apply Databricks model and column constraints only when contract.enforced is true (#16056)
  • Accept the config value shapes dbt Core tolerates but Fusion rejected - mapping-valued constraints, list-valued dist, and unquoted YAML 1.1 booleans (yes/no/on/off) in contract.enforced, contract.alias_types, docs.show, and the BigQuery partition_by booleans
  • Keep a singular test that refs a disabled model in the manifest nodes with enabled=false, and stop emitting a user-visible NodeNotFoundOrDisabled warning for it, matching dbt-core

Under the Hood

  • The oss CLI now builds as a binary named dbt instead of dbt-sa-cli (build output is at target/<profile>/dbt)
  • Pre-release dbt-core sdists (2.x and up) now print an install-time notice pointing at the dbt and dbt-oss distributions

Security

  • Skip symlink, hard link, and device entries when extracting package tarballs instead of extracting them as-is

Contributors

release-candidateadaptersdatabricksclickhouseexasol

Source: original entry ↗

More from dbt

Follow dbt to get its new changes in your feed and email digest.

Feature2.0.0-dev.41

dbt 2.0.0-dev.41

Added Lake Compute support for reading AWS Databricks Unity Catalog tables with PAT/OAuth M2M credentials. Fixed multiple issues including modules.re keyword argument handling, column-tag diffs in Databricks, and test config inheritance from dbt-core.

databrickslake-computeunity-catalogfixesdbt-core
Fix2.0.5

BigQuery drivers continue on ADBC.GetObjects errors

Fixed an issue where BigQuery drivers would fail on ADBC.GetObjects 404/403 errors, which was causing incorrect use of REPLACE TABLE instead of MERGE for incremental tables. The drivers now continue gracefully when encountering these errors.

bigqueryincrementaladbcdrivers
Announcement2.0.4

dbt v2.0.4

dbt version 2.0.4 released on September 16, 2026.

release
See all dbt changes →