megachangelog
Announcement2.0.0-alpha.2

v2.0.0-alpha.2 Release

dbt 2.0.0-alpha.2 introduces new capabilities including seed command enhancements, Homebrew distribution support, warehouse catalog metadata in the models API, improved package manager detection and upgrades, Redshift cross-database source freshness, Fabric dbt init support, Workload Identity Federation for BigQuery, and numerous bug fixes across adapters, parsing, manifest handling, and the search API.

2.0.0-alpha.2

Released June 18, 2026

Features

  • [dbt-fusion] Added --empty support in seed command.
  • [dbt-fusion] Homebrew distribution: install the dbt Fusion CLI with brew install dbt from the official tap.
  • [dbt-fusion] GET /api/v1/models: add catalog field (row_count_stat, bytes_stat, last_modified_stat from warehouse INFORMATION_SCHEMA) and materialized field; dbt build --write-index now queries warehouse catalog stats and writes them to the parquet index
  • [dbt-fusion] Detect how dbt was installed (Homebrew, pip, winget, or the standalone installer) and surface the matching upgrade command; dbt system update now refuses to overwrite a binary managed by a package manager unless --force is passed.
  • [dbt-fusion] Redshift: use SHOW TABLES FROM SCHEMA for cross-database source freshness when datasharing is enabled
  • [dbt-fusion] Emit project-wide catalogs count on the parse-time ResourceCounts telemetry event
  • [dbt-fusion] (fabric) supports dbt init
  • [dbt-fusion] Interactive dbt login honors the DBT_OAUTH_SCOPES env var to request additional OAuth scopes.
  • [dbt-fusion] dbt docs serve reports actual login status in GET /api/v1/distribution
  • [dbt-fusion] Add Workload Identity Federation auth for BigQuery via Microsoft Entra
  • [internal] Add daily conformance-analysis collection: scheduled GHA collects the previous UTC day and uploads per-day error-lines parquet to S3; new cargo conformance fetch/push sync the bucket and collect --start/--end + log-overlap --days N enable multi-day analysis
  • [internal] Add cargo conformance report: a self-contained static HTML UI for an log-overlap run — templates ranked by impact, the concrete strings filling each drain3 <*> wildcard, and drill-down into the original log lines

Fixes

  • [dbt-fusion] (fix adapters/databricks) restore token-first dispatch for Databricks OAuth so dbt Studio's U2M flow works correctly.
  • [dbt-fusion] equals macro now uses IS NOT DISTINCT FROM clause for comparison
  • [dbt-fusion] update try_or_compiler_error to match dbt-core
  • [dbt-index] Preserve runtime invocation/run-result timestamps during direct fusion metadata ingest so dbt_rt.invocations.generated_at and dbt_rt.run_results.created_at are populated again
  • [dbt-fusion] Fix /api/v1/search returning 500 when dbt_rt.run_results parquet is absent (project never run with --use-index)
  • [dbt-fusion] Fix v2-parser path - preserve raw user-provided source identifier (including any embedded quote characters) on source_attr.identifier so dbt-core's source(...).identifier round-trips for packages like fivetran/zendesk that pre-quote reserved-word table names (e.g. Snowflake's GROUP)
  • [dbt-fusion] source freshness on_run_end hooks can now access result.node (unique_id, relation_name, etc.) — fixes compatibility with elementary and other packages that read result.node in on_run_end macros
  • [dbt-fusion] dbt State auth no longer caches the organization ID; it is always resolved from the live token scope, avoiding unnecessary browser re-authentication when a user's organization access changes between invocations
  • [dbt-fusion] Fix v2-parser path - hydrate ColumnInfo.dimension and ColumnInfo.entity from the column when YAML omits required fields, and skip serializing Option::None so dbt-core's mashumaro can deserialize fusion's writable manifest into ColumnDimension/ColumnEntity dict-form variants
  • [dbt-fusion] Fix v2-parser path - only blank path and original_file_path on public model nodes imported via publication artifacts; keep paths for public models from locally-resolved (local/git/registry) packages so dbt-core can write per-model compiled SQL instead of crashing with Errno 21 trying to write to an empty path
  • [dbt-fusion] Fix v2-parser path - emit hook operation nodes with original_file_path of ./dbt_project.yml (package-internal) and path with .sql extension so dbt-core writes compiled hook artifacts to the same per-package location it does without --use-v2-parser
  • [dbt-fusion] Fix Databricks panic when flattening STRUCT keys that were not string.
  • [dbt-core] Fix YAML selector selector: shorthand being silently ignored inside exclude/union, and fix nested exclude being dropped from the serialized manifest (#15140)
  • [dbt-fusion] Show a clear warning when dbt_cloud.yml fails to parse instead of a misleading 'no credentials configured' error
  • [dbt-fusion] Fix schema routing for test failures when +schema: null is set in dbt_project.yml with store_failures: true
  • [dbt-fusion] Read DuckDB catalog column_index as a 32-bit integer instead of a decimal, fixing a type-mismatch error when collecting DuckDB column metadata
  • [dbt-fusion] Fix re.findall Capture objects to be sliceable sequences when pattern has 3+ capture groups
  • [dbt-fusion] Disable dbt State for unsupported adapters
  • [dbt-fusion] Fix manifest deserialization failing on no configs
  • [dbt-fusion] Fix manifest deserialization for fields that are not present
  • [dbt-fusion] Include Databricks-specific config attributes (auto_liquid_cluster, databricks_tags) in the semantic extras so dbt state comparison detects changes to them
  • [dbt-fusion] Search results are now ranked by relevance: exact name matches appear first, followed by prefix matches, then field-priority matches (name, column, tag, fqn, description), with resource type and modeling layer as tiebreakers.
  • [dbt-fusion] (fix adapter/databricks) retry on retryable errors
  • [dbt-fusion] Capture and surface failures for unit test schema fetch phase
  • [dbt-fusion] Relation now renders properly when the region is set on project or database
  • [dbt-fusion] Fix model storing none values as undefined
  • [dbt-fusion] LSP false dbt1089 warning
  • [dbt-fusion] Honor model-level full_refresh: false config on microbatch models under dbt build --full-refresh
  • [dbt-fusion] Emit M015 (DepsInstallInfo) only on successful package install, not M016
  • [dbt-fusion] Allow target variables to be used in dbt_project.yml
  • [dbt-fusion] fix seed configs rejecting valid fields
  • [dbt-fusion] sidecar: DATEADD on TIMESTAMPTZ no longer fails the DuckDB binder under --compute sidecar
  • [dbt-fusion] Fix dbt State reuse for new data tests without cached results

Under the Hood

  • [dbt-fusion] Remove "models" path segment in computed fqn for manifest parity with Core
  • [dbt-fusion] Manifest parity with core fixes for groups
  • [dbt-fusion] Snapshot errors and logs now show phase-accurate paths for artifacts
  • [internal] Add cargo ci homebrew render and cargo ci homebrew publish subcommands for rendering and publishing Homebrew formulas.
  • [internal] Add reusable publish-homebrew.yml workflow that renders the formula and pushes it to a Homebrew tap. Used by the release pipeline and invokable ad-hoc via workflow_dispatch.
  • [dbt-fusion] Improve ClickHouse init: remove database and make password optional
  • [dbt-fusion] Extract package resolution behind PackageResolver trait per package kind, with concurrent resolution per BFS level
  • [dbt-fusion] Serialize external and its subfields for manifest parity with Core
  • [dbt-fusion] Refactor dbt-deps install to a trait-based PackageInstaller running concurrently via futures::join_all; per-variant impls only do install work and populate a shared InstallOutcome, while span lifecycle, telemetry, and error-path partial-progress stamping live in the trait default
  • [fusion] Route view-traversal source extraction through TypeOps so the run-cache uses sdf-frontend bind-context in proprietary builds and the SA sqlparser path otherwise
  • [dbt-fusion] Execute hooks on dbt State reuse
  • [dbt-index] perf(dbt-lineage): --write-lineage overhead reduced from +20s to +2.4s at 5 843 models: bypass build_lineage_environment via direct LineageRow→CLL edge extraction, fix redundant epoch-0 compaction
  • [internal] Add a dedicated dbt Core changelog (CHANGELOG-dbtcore.md) and sync it through copybara so dbt-core publishes its own changelog, starting at 2.0.0-alpha.1, separate from the dbt-fusion changelog
  • [dbt-fusion] Bump dbt-docs-v2 UI bundle to add dbt State banner (a0c6c196807e9e6f2b9ea4fa953e99c2d1031657)
  • [internal] Unify TypeOps source-extraction methods into a single extract_upstreams; absorb the standalone sdf_frontend dep_analysis::extract_sources_from_str into the same canonical path
  • [dbt-fusion] Emit catalog_type on the RunModel telemetry event, resolved from the model's catalog_name via the active write integration in catalogs.yml
  • [dbt-fusion] Re-enable and re-wire the dbt-repl integration test suite, disabled during the dbt-main modularization
  • [dbt-fusion] Use lag_tolerance in freshness reuse messages
  • [internal] Centralize server version lookup: DistInfoProvider gains a default server_version() method so env!("CARGO_PKG_VERSION") is defined in one place.
  • [dbt-fusion] Remove quoting field from SourceConfig; adapter-specific quoting defaults are now applied directly during source resolution instead of being propagated through the config struct
  • [internal] conformance: add resolve-repro subcommand (run_id → S3 artifact path via Datadog) and broaden fetch-repro to resolve the Teleport app + bucket per cell (global prod/prod-emea/prod-au, us-multicell, jp1), with --app/--aws-role/--bucket overrides for cells whose account isn't auto-resolved (eu/us2/us3/onprem)
  • [dbt-fusion] Bump bigquery driver for WIF auth support

Contributors

corecliapiadaptersplatform

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 →