Releases: dbt-labs/dbt-core
Releases · dbt-labs/dbt-core
Release list
v2.0.0-dev.35-test-pypi
2.0.0-dev.35
Released September 03, 2026
Features
- Recognize Databricks persist_constraints and schema.yml meta.constraints so Fusion can persist legacy constraints and unnamed primary-key expressions. (#15773)
Fixes
- Match dbt-databricks table-property comparison by retaining all remote properties and detecting changes to configured properties. (#16051)
Contributors
v2.0.0-rc.1
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
v2.0.0-dev.34-test-pypi
2.0.0-dev.34
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+insertwith 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-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
v2.0.0-dev.33-test-pypi
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+insertwith 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-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
v2.0.0-dev.30
2.0.0-dev.30
Released August 27, 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 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)
- Track ref()/source()/this call provenance during Jinja rendering (on_this_reference listener hook), powering the dbt.hard_coded_reference (DBT05) lint rule (#16080)
Fixes
- Fix regression in log-format-file use (#15685)
- 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
Under the Hood
- The oss CLI now builds as a binary named
dbtinstead ofdbt-sa-cli(build output is attarget/<profile>/dbt)
Security
- Skip symlink, hard link, and device entries when extracting package tarballs instead of extracting them as-is
Contributors
dbt-core v1.12.3
dbt-core 1.12.3 - August 20, 2026
Fixes
- Send the
x-ms-blob-type: BlockBlobheader and accept201 Createdwhen uploading artifacts to an Azure Blob Storage signed URL, so artifact ingestion no longer fails with400 MissingRequiredHeaderon Azure-hosted regions. Upload errors now include the storage provider's error code alongside the status code. (#N/A)
Dependencies
- Require
sqlparse>=0.5.5,<0.7.0,sqlparse0.6.0 is the fixed release for CVE-2026-54284, CVE-2026-59893, CVE-2026-59894 and CVE-2026-71491 (parser denial-of-service). (#15988)
Contributors
dbt-core v1.11.14
dbt-core 1.11.14 - August 20, 2026
Dependencies
- Require
sqlparse>=0.5.5,<0.7.0,sqlparse0.6.0 is the fixed release for CVE-2026-54284, CVE-2026-59893, CVE-2026-59894 and CVE-2026-71491 (parser denial-of-service). (#15988)
Contributors
v2.0.0-beta.2
2.0.0-beta.2
Released August 18, 2026
Features
- Add support for ClickHouse Dictionary materialization (#14580)
- Clickhouse: Add more settings and missing internal methods (#14587)
- Add support for ClickHouse's index definition (#14583)
- [dbt-fusion] (fabric) support
authentication: ActiveDirectoryAccessToken, authenticating with a pre-minted Entra bearer token from theaccess_tokenprofile field (#15926) - Add relation-scoped catalog macro (get_catalog_relations) for ClickHouse, fixing catalog fetch failures with --write-catalog (#14585)
- Seed data types are not Nullable for ClickHouse. Fix incorrect primary key declaration when configured as a list' (#14585)
Contributors
- @koletzilla (#14580, #14587, #14583, #14585, #14585)
- @mghorpade1 (#15926)
dbt-core v1.8.10
dbt-core 1.8.10 - August 14, 2026
Features
- Warn users if they are using a deprecated dbt version (#15964)
dbt-core v1.7.20
dbt-core 1.7.20 - August 14, 2026
Features
- Warn users if they are using a deprecated dbt version (#15964)