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.

Improvement1.12.6

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.

parsermetricsselectorsloggingartifacts
Fix1.11.16

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.

dbt-corebug-fixselectorsartifactssecurity
Improvement2.0.8

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.

pythonmapreducecatalogstability
See all dbt changes →