megachangelog
Feature2.0.0-dev.33

v2.0.0-dev.33 Release

dbt 2.0.0-dev.33 introduces the Exasol adapter with full materialization and snapshot support, Databricks query tags, ClickHouse DDL enhancements with incremental strategy validation, parse-safe views for safer graph access, and ref/source provenance tracking. This release includes multiple fixes for Databricks constraints, incremental models, and YAML config handling, plus a security improvement for tarball extraction.

2.0.0-dev.33

Released August 31, 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)
  • 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

adaptersdatabricksclickhouseexasolincrementalconstraints

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 →