Skip to content

Releases: dbt-labs/dbt-core

dbt-core v1.12.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 13:56

dbt-core 1.12.0 - Alecia Beth Moore-Hart (P!NK) (July 16, 2026)

Breaking Changes

  • Remove the experimental dbt login command and the bundled dbt-state plugin (including --manage-state/manage_state and the DBT_ENGINE_STATE_* env vars), reverting PRs (#NA)
  • Flags introduced in 1.9 and 1.10 defaults to true (#12713)

Features

  • Make MAXIMUM_SEED_SIZE_MIB configurable (#7117, #7124)
  • Support partial parsing for function nodes (#12072)
  • Add UnparsedMetricV2 to read in new-style YAML Semantic Layer Metrics. (#12157)
  • Allow for defining funciton arguments with default values (#12044)
  • Add directory change instruction after dbt init (#9041)
  • Raise jsonschema-based deprecation warnings by default (#12240)
  • 🐛 ⛄ Disable unit tests whose model is disabled (#10540)
  • Implement config.meta_get and config.meta_require (#12012)
  • Deprecate null return values from generate_schema_name macro, behind require_valid_schema_from_generate_schema_name flag (#12347)
  • Add ability to indicate dbt Model also represents a Semantic Model. (Not fully supported yet.) (#.)
  • Added ability to parse semantic layer dimensions added to columns as part of new YAML. (Not ready for use until more of the new yaml is implemented.) (#.)
  • Add parsing for new YAML for semantic layer entities attached to dbt models. (#12395)
  • Process semantic metrics in v2 YAML if they are not merged into a model. (#12161)
  • Add parsing for v2 metrics on models and finish implementing their dependency behaviors. (#12397)
  • Add the ability to process derived semantic entities to dbt models, as required by new YAML schema. (#12401)
  • Enable parsing derived dimensions for v2 semantic layer YAML. (#12404)
  • Add unit tests to the Jinja graph object, enabling tools like dbt-project-evaluator to run checks on unit tests. (#12033)
  • Implement agg_time_dimension for new semantic YAML. (#12410)
  • Implement parsing of semantic model object-style configuration in v2 semantic YAML. (#12413)
  • Implement primary_entity field for semantic models in semantic YAML v2. (#12414)
  • add config.meta_get to python model parsing (#12458)
  • Allow jinja suffixed extensions for markdown and sql files (#11097, #3484)
  • Allow continue running child on parent error (#2142)
  • Added support for vars.yml to declare project variables (#11144, #2955)
  • execute dbt debug logic after creating a new project in dbt init (#12510)
  • Write compiled SQL for snapshots to target/compiled/ during dbt compile (#7867)
  • Add "selector" selector method (#5009)
  • env vars can now be loaded from .env file (#12106)
  • dbt seed now supports --empty to create the tables without loading data (#8981)
  • automatically create a latest-version pointer (e.g. dim_customers) for versioned models, opt-in via latest_version_pointer_enabled_by_default flag or per-model latest_version_pointer config (#7442)
  • Add catalogs.yml usage tracking (#1122)
  • Add --sql flag to dbt run-operation for executing ad-hoc SQL/Jinja statements (#12478)
  • support for javascript udfs (#12332)
  • Allow event deferral for Parse events (#12339)
  • Support overloaded UDFs via overloads block in function YAML entries (#12250)
  • Add support for private git packages in packages.yml and dependencies.yml. Resolves URLs from a configured environment variable when present, otherwise falls back to constructing an SSH URL. (#12874)
  • Add support for python 3.14 (#12098)
  • Add Reused to NodeStatus and RunStatus (#12912)
  • Add per-overload start and result log events for overloaded UDFs (LogStartOverload, LogOverloadResult) (#12250)
  • Add catalogs.yml v2 support gated behind use_catalogs_v2 flag, with adapter-owned bridge architecture (#12930)
  • Begin writing OSI SL document at end of parsing (#12786)
  • Support parsing OSI semantic layer documents from a project's OSI/ directory into the dbt manifest (#12787)
  • Bundle the dbt-state plugin (>=2.18,<3.0) as an install dependency of dbt-core. The plugin is opt-in: PluginManager skips auto-discovery unless the user passes --manage-state on the CLI, sets DBT_ENGINE_MANAGE_STATE=true, or sets manage_state to true in the flags block of dbt_project.yml (equivalently in the config block of profiles.yml). Discovery filters disabled modules before importlib.import_module is called, so the default opt-in-off state incurs no import cost. (#13014)
  • Add --use-v2-parser to delegate parsing to the fusion parser, load its manifest.json into a runtime Manifest, and bypass dbt-core's parser. Configurable via --v2-parser / DBT_ENGINE_V2_PARSER (defaults to dbt-core-experimental-parser parse) or the flags: section of dbt_project.yml. (#13029)
  • Add support for user settings with flags reading writing (#13031)
  • Add dbt login command (#13032)
  • Tolerate dbt Fusion-specific warn_error_options names instead of erroring, emitting a note that they are ignored because they are specific to the dbt Fusion engine (#12885)
  • Add catalog_database field to CatalogWriteIntegrationConfig (v1) so catalogs.yml can set a database-name override for any catalog type; works in conjunction with the dbt-adapters get_catalog_database_override method to give catalog_database highest priority in generate_database_name (#15156)
  • Add hints for cli users based on dbt usage (#15510)

Fixes

  • Address Click 8.2+ deprecation warning (#12038)
  • Allow dbt deps to run when vars lack defaults in dbt_project.yml (#8913)
  • Include macros in unit test parsing (#10157)
  • Restore DuplicateResourceNameError for intra-project node name duplication, behind behavior flag require_unique_project_resource_names (#12152)
  • Allow the usage of function with --exclude-resource-type flag (#12143)
  • Fix bug where schemas of functions weren't guaranteed to exist (#12142)
  • 🐛 ⛄ Correctly reference foreign key references when --defer and --state provided (#11885)
  • Fix generation of deprecations summary (#12146)
  • 🐛 ⛄ Add exception when using --state and referring to a removed test (#10630)
  • 🐛 ⛄ Stop emitting NoNodesForSelectionCriteria three times during build command (#11627)
  • 🐛 ⛄ Fix long Python stack traces appearing when package dependencies have incompatible version requirements (#12049)
  • 🐛 ⛄ Fixed issue where changing data type size/precision/scale (e.g., varchar(3) to varchar(10)) incorrectly triggered a breaking change error fo (#11186)
  • 🐛 :snowman...
Read more

dbt-core v1.12.0rc3

dbt-core v1.12.0rc3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 14 Jul 22:48

dbt-core 1.12.0-rc3 - July 14, 2026

Features

  • Add hints for cli users based on dbt usage (#15510)

Fixes

  • Carry ref/source/function dependencies declared inside an overloaded UDF's overload body onto the root function node, so they are not dropped from the DAG when the overload SQL file is absorbed (#15501)
  • Update reuse relations hint text (#15510)

Under the Hood

  • Reduce parse-time memory and macro-generation overhead by virtualizing macros and switching flat_graph/WritableManifest to lazy no-copy views (#15524)

Contributors

dbt-core v1.12.0rc2

dbt-core v1.12.0rc2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Jul 20:33

dbt-core 1.12.0-rc2 - July 09, 2026

Breaking Changes

  • Flags introduced in 1.9 and 1.10 defaults to true (#12713)

Features

  • Add catalog_database field to CatalogWriteIntegrationConfig (v1) so catalogs.yml can set a database-name override for any catalog type; works in conjunction with the dbt-adapters get_catalog_database_override method to give catalog_database highest priority in generate_database_name (#15156)

Fixes

  • Reconstruct unrendered config kwarg values as readable expressions instead of raw AST repr (#15336)
  • Fix partial parsing ghost-duplicate that raised a false "found two data_tests" error by cleaning up disabled generic and singular test nodes on schema re-parse (#)

Contributors

dbt-core v1.12.0rc1

dbt-core v1.12.0rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Jul 13:12

dbt-core 1.12.0-rc1 - July 07, 2026

Breaking Changes

  • Remove the experimental dbt login command and the bundled dbt-state plugin (including --manage-state/manage_state and the DBT_ENGINE_STATE_* env vars), reverting PRs (#NA)

Features

  • Tolerate dbt Fusion-specific warn_error_options names instead of erroring, emitting a note that they are ignored because they are specific to the dbt Fusion engine (#12885)

Fixes

  • Fix intermittent "references a model that does not exist" parsing error when unit testing versioned models, caused by non-deterministic filesystem parse order (#11139)

Dependencies

  • Bump the minimum dbt-core-experimental-parser to 2.0.0a3 (#15391)
  • Bump ca-certificates, libpq-dev, and openssh-client in Docker image to current bullseye versions to fix Docker release build failure caused by superseded package versions (#NA)
  • Bump the minimum dbt-core-experimental-parser to 2.0.0a4 (#13065)

Contributors

v2.0.0-alpha.4

v2.0.0-alpha.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Jul 08:20

2.0.0-alpha.4

Released July 06, 2026

Features

  • [dbt-fusion] DuckDB: read-write Horizon and Unity (Iceberg REST) catalogs via duckdb 1.5.4 / duckdb-iceberg#1017 write-compat ATTACH options (stage_create_tables, disable_multi_table_commit, etc.). Upgrades the read-only support from the base PR.
  • [dbt-fusion] DuckDB catalogs.yml v2: DuckLake, Iceberg REST, and local filesystem catalogs with catalog-aware materializations, plus read-only Horizon and Unity attachments (writes land with duckdb 1.5.4, #10950)
  • [dbt-fusion] [Redshift] Switch the database context per node via USE / RESET USE when datasharing is enabled and the node targets a non-default database
  • [dbt-fusion] dbt-agent: add guidance for surrogate key dbt_project.yml vars, incremental full-refresh after logic changes, staging enrichment LEFT JOIN, fct-to-dim LEFT JOIN, pre-computed age field warning, and cumulative standings MAX vs ROW_NUMBER
  • [dbt-fusion] dbt-agent: add guidance for propagating source column type changes (INT→VARCHAR) to all downstream models
  • [dbt-fusion] dbt-agent: add guidance for staging column inference vs source reuse, missing-column add-not-remove, enumerate-all-affected-models, time-bounded seed+JOIN pattern, mandatory full-refresh after surrogate_key rename
  • [dbt-fusion] dbt-agent: mandatory --full-refresh after surrogate_key rename prominently in surrogate_key.md
  • [dbt-fusion] Extract dbt-agent into dedicated crate with prompts, runner, integration tests, and benchmark scripts
  • [fusion] Add GET /api/v1/identity endpoint to dbt-docs-server
  • [fusion] Bump bundled dbt-docs-v2 UI to 862e5855aaa42463d3b5c34f4b53622ca32721fb
  • [fusion] Add compiled code toggle to the Code tab and consolidate exposure metadata fields into the unified Metadata section
  • [fusion] Show row count stat in the model list view

Fixes

  • [dbt-fusion] BigQuery: qualify schema name with target project in create_schema and drop_schema so datasets are created in the correct project when execution_project differs from database
  • [dbt-fusion] (dbt-auth) SparkConnect auth profiles have clear internal representaiton. To the user view, no "user" is required (but may be provided). An ambient authentication mode which entrusts connections to the networking layer et. al is added."
  • [dbt-fusion] Accept comma-separated ref()/source() calls within a single depends_on list item and tolerate a trailing } after a Jinja expression in descriptions, matching dbt-core leniency.
  • [dbt-fusion] dbt agent build: surface YAML parse errors via OTEL probe; fix panic on wrapped-negative line numbers in context_snippet; use --write-metadata instead of --write-index
  • [dbt-fusion] Fix Databricks incremental run SQL error when using custom PK constraints: correctly expose constraint attributes (type, name, render) to Jinja templates and normalize custom PK expressions for stable incremental diffs
  • [fusion] Fix panic when a query result contains a map with non-scalar (struct) values, e.g. map<string,struct<...>>. dbt-agate now has a StructConverter so struct columns render as dicts instead of failing an unsupported Struct->Utf8 cast.
  • [fusion] Fix unique_id parity with dbt-core for singular and schema tests
  • [fusion] Fix ambiguous ref panic for cross-project publication models when used as v2 parser
  • [fusion] Fix operation nodes missing alias, database, schema, tags, config, and index in manifest
  • [dbt-core] Fix macro original_file_path prefixed with dbt_packages/ instead of being package-relative (#11381)
  • [dbt-core] state:modified no longer flags seeds whose meta config is set as environment-aware Jinja in dbt_project.yml. (#15286)
  • [dbt-core] state:modified no longer flags snapshots whose target_schema, target_database, or alias configs are set as environment-aware Jinja in dbt_project.yml. (#15286)
  • [fusion] Fix explorer breadcrumbs, layout, and filter view behavior; hide analyses everywhere when the hasAnalysis feature flag is off
  • [fusion] Read has_dbt_state from the capabilities API instead of hardcoding false; hide the dbt State upsell for projects that already have dbt state enabled
  • [fusion] When warn_error_options upgrades a Jinja exceptions.warn() call to an error, the node message in run_results.json now shows a clean Compilation Error with the warning text, matching dbt-core behavior
  • [dbt-index] Redshift warehouse tools now accept 'dbname' field in profiles.yml (standard dbt-redshift field name)
  • [fusion] Use unrendered configs to flag changes for models and sources in state:modified selector
  • [dbt-core] state:modified no longer flags snapshots whose dbt_valid_to_current config is set as environment-aware Jinja in dbt_project.yml. (#15286)
  • [fusion] Fix dbt State evaluate_volatile_sql config semantics so true evaluates volatile SQL and false allows reuse.
  • [dbt-core] Include the snapshot filename in the snapshot fqn to match dbt-core, fixing false-positive state:modified results when dbt-core compares against a Fusion-generated manifest (#15286)
  • [dbt-index] Fix dbt-index regressions: CLL parquet not produced on baseline→strict static-analysis transition
  • [internal] route tests to manifest.disabled when both parent model and test are explicitly disabled
  • [fusion] Hide the completions subcommand from dbt help output
  • [dbt-core] state:modified no longer flags data tests whose tags or meta configs are set as environment-aware Jinja in dbt_project.yml. (#15286)
  • [fusion] Use redshift_database_name when checking Redshift SVV_EXTERNAL_TABLES.

Under the Hood

  • [fusion] Resolve send_anonymous_usage_stats for docs serve with precedence --no-send-anonymous-usage-stats > DBT_SEND_ANONYMOUS_USAGE_STATS env > dbt_project.yml flags block > default true, and wire it into analytics_enabled on GET /api/v1/identity
  • [fusion] Migrate dbt-docs-v2 data layer from hand-rolled fetch hooks to TanStack Query
  • [fusion] Consolidate nine near-identical FilterView components into a shared GenericFilterView adapter, removing ~1100 lines of duplication
  • [fusion] Implement array_except as a native DuckDB extension function (sf_array_except) instead of a SQL macro

Contributors

dbt-core v1.11.12

Choose a tag to compare

@github-actions github-actions released this 01 Jul 13:16

dbt-core 1.11.12 - July 01, 2026

Fixes

  • Stop emitting spurious deprecation warnings for state model configs (pre_clone, lag_tolerance, require_fresh_data_from, etc.) by adding the ModelState schema to the bundled jsonschemas (#13016)

Contributors

v2.0.0-alpha.3

v2.0.0-alpha.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Jun 08:31

2.0.0-alpha.3

Released June 29, 2026

Features

  • [dbt-fusion] Sqlfluff parity
  • [dbt-fusion] For versioned models, automatically create a view at the unsuffixed model name (e.g. dim_customers) pointing to the latest version (e.g. dim_customers_v2). Enabled by default; disable per-model with latest_version_pointer: {enabled: false} or globally with the project flag latest_version_pointer_enabled_by_default: false. Customize the pointer alias via the latest_version_pointer.alias config or by overriding the generate_latest_version_pointer_alias macro.
  • [dbt-fusion] Redshift: use SHOW GRANTS ON TABLE for grants when datasharing is enabled
  • [dbt-fusion] Make the maximum seed size hashed for state:modified comparison configurable via --maximum-seed-size-mib, the DBT_MAXIMUM_SEED_SIZE_MIB (or DBT_ENGINE_MAXIMUM_SEED_SIZE_MIB) env var, and dbt_project.yml flags (default 1 MiB; 0 disables the limit). Seed contents are now hashed incrementally with line-ending normalization, plus a Windows legacy-checksum fallback for state comparison.
  • [dbt-extension] Signing in from the extension now uses the dbt login command.
  • [dbt-fusion] Support catalog federation between Snowflake Horizon and Unity Catalog
  • [dbt-fusion] Added support for Javascript UDFs in Snowflake and BigQuery
  • [dbt-fusion] Setup catalogs.yml to provide json schemas.
  • [dbt-fusion] Add dbt man --schema catalogs to export a type-discriminated JSON schema for catalogs.yml v2
  • [dbt-fusion] Issue compatibility warnings for package versions based on manual compatibility verification when available in Package Hub
  • [dbt-fusion] Support the insert_overwrite incremental strategy for the Spark adapter
  • [dbt-fusion] Classification
  • [dbt-fusion] Honor per-node +compute config on unit_test nodes, allowing a unit_test to override the global --compute flag (e.g. +compute: sidecar under global --compute remote).
  • [dbt-fusion] Support the reservation config for BigQuery, allowing query jobs to be routed to a specific BigQuery reservation at the profile, project (+reservation), or model ({{ config(reservation=...) }}) level.
  • [dbt-fusion] Allow the source application identifier sent during OAuth login to be configured via AuthChainBuilder or the DBT_OAUTH_SOURCE_APP environment variable
  • [dbt-fusion] Expose has_dbt_state on GET /api/v1/capabilities
  • [dbt-core] support the latest duckdb version 1.5.4 (#15279)

Fixes

  • [dbt-fusion] BigQuery source freshness now correctly handles dotted project IDs (e.g. mycompany.io) by using relation component accessors instead of splitting the FQN on '.'. Also fixes a secondary bug where each per-dataset query included a redundant table_id IN (...) filter built from relations in unrelated datasets.
  • [dbt-fusion] (fix redshift) always quote materialized view path
  • [dbt-fusion] --write-index no longer produces catalog.json (was unintended side effect of #10750; pass --write-index --write-catalog to restore). --write-metadata alone no longer queries the warehouse. Catalog data is now fetched at most once per invocation and shared across all consumers.
  • [dbt-fusion] Discover source() calls inside conditional branches that evaluate to false during the parse render.
  • [dbt-fusion] Fix field-level manifest conformance gaps for metrics and semantic_models: metric label falls back to name at resolve time (matching dbt-core); semantic model entity description defaults to empty string and entity config defaults to {meta: {}} when unset. Fields where Fusion emits richer values than dbt-core (tags, meta, unrendered_config) are left as-is — these are improvements, not bugs.
  • [dbt-fusion] Databricks: under catalogs v2, use CREATE OR REPLACE TABLE for managed Iceberg tables (table_format: iceberg) regardless of file_format, instead of plain CREATE TABLE
  • [dbt-fusion] Support incremental materializations on the Spark adapter (append strategy)
  • [dbt-fusion] Surface cached data test failures in dbt State builds
  • [dbt-fusion] LSP fix code lens when static analysis off
  • [dbt-fusion] Report dbt State-reused data tests as reused in dbt test output
  • [dbt-fusion] sidecar: empty-string CAST to NULL, *_from_parts zero-tuple to NULL, unknown format string to NULL, timestamp_ltz_from_parts bridges
  • [dbt-fusion] Snapshot nodes now correctly serialize config.materialized as snapshot instead of table in the manifest
  • [dbt-fusion] ISO date format support for microbatch dates.
  • [dbt-fusion] Accept dbt-core-style type annotations on macro arguments (e.g. param: str)
  • [dbt-fusion] Singular tests whose ref() or source() calls target a node that doesn't exist in the project are now excluded from the schedule (NodeNotFoundOrDisabled warning at parse time, no execution), matching dbt-core behavior. Previously Fusion scheduled and executed those tests, hitting a dbt1501 render error.
  • [dbt-fusion] Accept dotted snapshot block names (e.g. {% snapshot snp.sql %}) by stopping at the first dot, matching dbt-core behavior
  • [dbt-fusion] Support comma-separated expression lists in Jinja do blocks (e.g. {%- do a.append(x), b.append(y) -%})
  • [dbt-fusion] fix standardize_grants_dict crash when show_grants returns 0 rows (Redshift, Snowflake, Databricks)
  • [dbt-fusion] Support Jinja2 filter postfix attribute access (e.g. rows|first.col) in minijinja parser
  • [dbt-fusion] Spark: correctly classify existing relations as views so view models drop with DROP VIEW instead of DROP TABLE
  • [dbt-fusion] Promote SA to strict for unit tests with overridden compute, allow unit test nodes to access LP if compute is sidecar.
  • [dbt-fusion] Test nodes on disabled models are now emitted into manifest.disabled instead of being silently dropped
  • [dbt-fusion] Give each microbatch batch its own statement-result registry so concurrent_batches=true models no longer fail with "The 'statement' result named '' has already been loaded into a variable"
  • [dbt-fusion] Unit tests on models that call dbt UDFs via function() no longer fail with a spurious JinjaError (dbt1501); the tested model's function dependencies are now allowed during unit test rendering
  • [dbt-fusion] finally and consciously decouple the DuckDB adapter from it's weird cousin Extended
  • [dbt-fusion] Fix BigQuery get_relation crash during replay when the INFORMATION_SCHEMA.SCHEMATA location query returns an empty (zero-column) batch; get_dataset_location now returns no location instead of erroring.
  • [dbt-fusion] Map Spark EXTERNAL/MANAGED relation types to table so DROP renders a valid drop table instead of an invalid drop external. Spark 4 reports managed Hive tables as EXTERNAL (TRANSLATED_TO_EXTERNAL), which broke --full-refresh over Thrift
  • [dbt-fusion] Prevent dbt system uninstall from removing a binary owned by Homebrew, pip, or winget; surface the package manager's uninstall command instead
  • [dbt-fusion] preserve legacy seed checksum compatibility
  • [dbt-fusion] Ensure that persisted_docs configs for seeds are deserialized to the manifest.
  • [dbt-fusion] Add support for databricks configs view_update_via_alter, incremental_apply_config_changes, and use_safer_relation_operations
  • [dbt-fusion] Fix dbt State support for custom materializations
  • [dbt-fusion] Fix manifest emission of null for adapter-specific config fields (sources: external_location, formatter, sync, schema_origin; models: compute, sync, and other adapter extras) — these are now omitted when unset, matching dbt-core behavior
  • [dbt-fusion] dbt docs serve now emits a clear error when target/index is missing instead of silently exiting with code 1
  • [dbt-fusion] Log when commands auto-install dependencies without an existing package-lock.yml.
  • [dbt-fusion] Fix wizard subagents hanging indefinitely due to deadlocked event forwarding, unbounded wait_agent retries, and DuckDB checkpoint race
  • [fusion] (dbt-adapter): all ambiguous to_rfc3339 calls are mapped to microsecond precision for Bigquery. Unblocks bigquery microbatch use cases.
  • [fusion] Support lag_tolerance seconds period
  • [dbt-core] state:modified no longer flags environment-aware warehouse-specific configs (e.g. copy_grants) set as Jinja in dbt_project.yml. (#15263)
  • [fusion] Fix cached dbt State warning tests
  • [fusion] Per-version access field on versioned models is now respected
  • [fusion] ref() version pins now preserve original type (int/float/string) in manifest refs
  • [dbt-core] state:modified no longer flags environment-aware grants configs set as Jinja in dbt_project.yml (e.g. grants driven by target.name). The unrendered grants config is compared instead of the target-rendered values. Affects seeds in particular. (#15302)
  • [fusion] Allow tests attached to disabled models to preserve manifest metadata without failing on legacy generic test argument syntax.
  • [dbt-core] Fix state:modified to no longer flag seeds whose column_types config is set as environment-aware Jinja in dbt_project.yml. (#15286)
  • [dbt-core] state:modified no longer flags seeds whose quote_columns config is set as environment-aware Jinja in dbt_project.yml. (#15286)
  • [dbt-core] Report CV10 quoted literal style violations with their own rule identity instead of CV11 casting style. (#15328)
  • [fusion] Yaml: fix quoted string values parsed as numbers

Under the Hood

  • [dbt-index] grain_declared falls back to primary_key inferred during parse when no compile data is present
  • [dbt-fusion] Added snowflake config in UDF configs
  • [dbt-fusion] Add a catalog-free untyped BigQuery binder (bigquery-untyped dialect) for column lineage, producing the same LP shape and column names as the typed binder
  • [dbt-fusion] Match Fusion manifest ...
Read more

v2.0.0-alpha.2

v2.0.0-alpha.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Jun 13:29

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

Read more

dbt-core v1.12.0b3

dbt-core v1.12.0b3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Jun 10:48

dbt-core 1.12.0-b3 - June 15, 2026

Fixes

  • Allow for setting of OSI documents directory as project config (#13088)
  • Support lowercase "osi" directory (#13087)
  • Add a direct_parents attribute to model nodes carrying the nearest public ancestors only, and emit it in dbt ls --output=json for models. Lineage consumers can now render DAG edges from direct_parents instead of depends_on.nodes, which carries the full transitive closure across plugin boundaries (still required for node selection and cycle detection). The new attribute is runtime-only and is stripped during manifest serialization, so the manifest.json contract is unchanged. (#)
  • Make the latest_version_pointer collision check quoting/case aware so an unquoted latest-version alias differing from the pointer name only by case is correctly detected on case-insensitive warehouses (#15210)

Under the Hood

  • sync JSON schemas from dbt-fusion (#N/A)

Contributors

v2.0.0-alpha.1

v2.0.0-alpha.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 01 Jun 05:04

What's Changed

Full Changelog: v1.12.0b1...v2.0.0-alpha.1