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+insertwith 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
macroskey for unit tests that setoverrideswithoutmacros, 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-pythonof the wheel it installs, souv pip install dbt-core/dbt-ossno 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
dbtinstead ofdbt-sa-cli(build output is attarget/<profile>/dbt) - Pre-release
dbt-coresdists (2.x and up) now print an install-time notice pointing at thedbtanddbt-ossdistributions
Security
- Skip symlink, hard link, and device entries when extracting package tarballs instead of extracting them as-is
Contributors
Source: original entry ↗
More from dbt
Follow dbt to get its new changes in your feed and email digest.
dbt v1.12.6
dbt v1.12.6 includes improved v2 parser logging, fixes for wildcard FQN selectors, cumulative metrics parsing, and manifest persistence. Several bug fixes address parser output handling, nested model matching, and artifact uploads.
dbt v1.11.16
This patch release fixes wildcard FQN selectors to match nested models at any subfolder depth, includes semantic_manifest.json in artifact uploads, and validates tarball package download security.
v2.0.8
dbt 2.0.8 lowers the minimum Python version to 3.10, fixes TableNotFound errors during analyze operations on MapReduce, restores catalog.json writing for dbt build, and adds test helpers for integration testing.