# dbt Fusion changelog All notable changes to this project will be documented in this file. - This file provides a full account of all changes to the fusion lsp - Changes are listed under the (pre)release in which they first appear. Subsequent releases include changes from previous releases. - "Breaking changes" listed under a version may require action from end users or external maintainers when upgrading to that version. - Do not edit this file directly. This file is auto-generated using [changie](https://github.com/miniscruff/changie). For details on how to document a change, see [the contributing guide](CONTRIBUTING.md#adding-a-changelog-entry). ## 2.0.0-preview.219 Released August 28, 2026 ### Features - [dbt-core] Add Databricks query tags with automatic dbt metadata and profile- and model-level configuration. ([#15701](https://github.com/dbt-labs/dbt-core/issues/15701)) - [dbt-core] Fusion accepts Databricks Python environment_key and environment_dependencies and uses them on serverless job submit (https://github.com/databricks/dbt-databricks/issues/1636). ([#15966](https://github.com/dbt-labs/dbt-core/issues/15966)) - [fusion] Add BigQuery `lakehouse_catalog` support to catalogs.yml, enabling 4-part (project.catalog.namespace.table) naming for tables registered in a Lakehouse Runtime Catalog. - [fusion] Add `--generate-info-schema` to write the dbt information schema: a queryable parquet layer at `target/info_schema/v/` with one table per resource type across the `dbt`, `dbt_rt`, and `dbt_internal` namespaces, plus a generated `views.sql`. The schema version is carried by the directory name, a `dbt.project` column, and a parquet key-value key, so consumers can pin a version. It stages through the flat index at `target/index/`, reusing one when present so the metadata epochs are not ingested twice, and staging privately otherwise so `--no-write-index` never materializes an index. Independent of `--write-index`, which is unchanged. - [fusion] Add cross project support for model freshness - [dbt-core] [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](https://github.com/dbt-labs/dbt-core/issues/14585)) - [fusion] Support dbt State-based node selection for state selector in Fusion. - [fusion] Introduce build_contract_checksum for calculating node contract hash - [fusion] Rename the dbt-onboard `--fusion-upgrade` flag to `--v2-upgrade` and update onboarding copy to reference dbt v2 instead of Fusion; `--fusion-upgrade` remains as a hidden backward-compatible alias. ### Fixes - [dbt-core] Databricks incremental models can now set incremental_predicates to a single string instead of a list ([#15771](https://github.com/dbt-labs/dbt-core/issues/15771)) - [dbt-core] `dbt lint` and `dbt format` no longer walk arbitrarily-named hidden or virtualenv directories (e.g. `.venv/`, `.elementary-venv/`) or `tmp/` by default when run without `--select`/`--exclude` ([#15519](https://github.com/dbt-labs/dbt-core/issues/15519)) - [dbt-core] Preserve declaration order when rendering Databricks table properties ([#16036](https://github.com/dbt-labs/dbt-core/issues/16036)) - [fusion] Generic tests now accept a sequence-valued column_name property (e.g. unique: {column_name: [a, b]}), forwarding it as a macro kwarg. A model-level test's column_name kwarg no longer leaks into the test node's own column_name, which names the column the test is attached to and stays null for model-level tests, matching dbt Core (#13607) - [fusion] Resolve an ephemeral model's own node_id via its seeded alias, not the unique_id's last dotted component, so a versioned ephemeral model (unique_id ending in `.v`) can be matched to its parent's recorded CTE thread - [dbt-core] Support the microbatch incremental strategy on Databricks ([#15998](https://github.com/dbt-labs/dbt-core/issues/15998)) - [fusion] Databricks: respect `location_root` on models that select no catalog, so external tables are no longer created as managed tables. Also fixes `compute_external_path` to use the relation's `alias` and to omit the database segment unless `include_full_name_in_path` is set. - [dbt-index] Remove default dbt-index subprocess timeouts and add opt-in timeout_secs controls - [fusion] Selector method arguments that dbt Core loads as a YAML sequence (e.g. `value: ["models"]`) no longer make Fusion eagerly reject selectors.yml, even when the selector is unused. - [dbt-core] 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](https://github.com/dbt-labs/dbt-core/issues/15999)) - [fusion] Fix replay for versioned models with an explicit latest_version: the pointer view's own create-view/grant statements share the base model's recording thread, but dbt-core records them before the base model's own trailing grants, while Fusion creates the pointer view after the base model's materialization (including its trailing grants) completes. The pointer view's calls now carry a distinct replay identity and recover their records via content-based matching instead of the shared sequential cursor - [fusion] Fix four defects in the dbt index metadata ingest: `dbt.time_spines` was empty for every project and `dbt.models.primary_key` unset, because the model payload was trimmed before the row builders read `__model_attr__`; `dbt.models.config` was `{}` for models with documented columns, because the top-level field lookup searched the payload text and matched a column-level `config` first; `dbt.dag_nodes` kept disabled exposures, metrics and unit tests, which now carry an `enabled` column like other nodes; and the catalog column merge kept only the first column of each node. - [fusion] Fix a false-positive compile error under --jinja-render-mode symbolic lint: a package macro's own hard error guard (e.g. dbt_utils.date_spine calling exceptions.raise_compiler_error with "upper bound must be positive") could fail the whole render when called with an argument whose real value is unknowable. Such a macro call now short-circuits without running its body, matching how a plain function call already behaves in this case. - [fusion] Databricks/Spark: `create_schema`/`drop_schema` accept a plain string argument again, matching dbt Core, instead of erroring with `unknown method: string has no method named without_identifier` - [fusion] Translate BigQuery PARSE_DATE calls for local compute - [fusion] Canonicalize dialect-specific aliases of config keys - [fusion] Fix double focus-ring on the search input (missing appearance-none was letting the browser's native decoration leak through) - [fusion] File tree: any node with children (including a yaml file grouping multiple resources) now renders as a plain folder icon, matching dbt Platform prod -- resource-specific icons only apply at leaf level - [fusion] Fix three more root causes behind dbt1310 ReplayDataMissing for versioned models with an explicit latest_version: the pointer view inherited contract enforcement from the cloned base model, triggering a get_column_schema_from_query call dbt-core never records for the synthetic pointer; that same call type needed the same full-thread-scan recovery already given to execute(); and the pointer's own CREATE VIEW/grant statements differ from dbt-core's in SQL shape (parens-wrapped body, uppercase SELECT, grants batched into one statement instead of dbt-core's separate ones), now normalized/matched accordingly - [dbt-core] 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 - [dbt-core] Databricks: omit the COMMENT clause entirely for columns without a description when building tables with materialization v2, matching dbt-databricks ([#16073](https://github.com/dbt-labs/dbt-core/issues/16073)) - [fusion] Warn when a non-default connection in a profiles.yml target sets `threads:`; thread count is target-wide and comes from the target's default connection (or --threads), so the key is ignored - [dbt-core] Apply Databricks model and column constraints only when contract.enforced is true ([#16056](https://github.com/dbt-labs/dbt-core/issues/16056)) - [fusion] Fix a CP01 keyword-casing false positive on the synthetic EOF token immediately after a function-paths UDF body's closing parenthesis - [fusion] Fix ST05 still flagging a correlated JOIN/FROM-clause subquery when the correlation is via a bare (unqualified) column reference, e.g. a lateral `unnest(outer_column)` - [dbt-core] Fix small divergences between python models whitespace in v1 and v2 - [fusion] Warn when --no-write-index skips parse-time checks, and have dbt retry after a check-blocked build re-run only the failed checks. - [fusion] Rename check config node_fqn to selection_filter_on so the key names the columns --select scopes on. - [fusion] BigQuery temporary tables no longer inherit partition_expiration_days from the final table. - [fusion] Match dbt Core by falling back to the dict constructor for unknown dict method calls in Jinja - [fusion] Test detail view no longer mislabels generic/singular data tests as unit tests in the breadcrumb - [fusion] Keep unrecognized Jinja string-literal escapes verbatim instead of unescaping `\/` to `/` (#13816). dbt Core decodes string literals with Python's `unicode_escape` codec, which has no `\/` escape, so a regex pattern such as `"'[+*\/=<> :;.,!?]+'"` built inside a Jinja string now renders identically in Fusion and dbt Core - [fusion] Replay: preserve the recorded Snowflake table_format when reconstructing relations, so Iceberg models no longer request a drop_relation that dbt-core never recorded - [fusion] Fixes in state:modified for singular data tests - [dbt-core] Port Databricks Python scalar-UDF function macros so Python scalar UDFs create and execute on Databricks ([#15777](https://github.com/dbt-labs/dbt-core/issues/15777)) - [fusion] Log error-severity parse-time check failures as errors, not warnings. - [fusion] Fail parse-time checks via the error counter instead of a second CheckFailed roll-up. ### Under the Hood - [dbt-core] [databricks] emit lowercased type names - [fusion] Add an end-to-end replay regression test for versioned models with an explicit latest_version: a single-thread recording (matching how dbt-core records the pointer view's statements on the base model's own thread) now replays successfully - [fusion] Renamed `dbt system upgrade-distribution`'s help text, prompts, and internal `Distribution` enum (now `Dbt`/`Oss`/`Core`, serializing to `dbt`/`dbt-oss`/`dbt-core`) away from the retired "Fusion" branding, aligning with the dbt v2 naming rollout. - [fusion] OSS migration: swap sourdough Sizes enum usage to plain string literals in the upgrade-card components and DataPlatformChip - [fusion] Add unit regression tests for the latest_version_pointer replay fixes: a get_column_schema_from_query full-scan recovery test, a test guarding the full-scan matcher against spuriously matching a non-execute record type, and a test for recovering grants Fusion batches into one statement against dbt-core's separately recorded ones - [fusion] Replace the regex-based CREATE VIEW parens canonicalization for latest_version_pointer replay with a general, dialect-agnostic fix: extend the existing CREATE ... AS () structural SQL comparison to also recognize a bare (unparenthesized) AS body, since the two are always semantically identical. Removes a special-cased regex scoped to one SQL shape in favor of widening an existing, universal equivalence check already used by the shared compare_sql pipeline - [fusion] Drop the last sourdough Icon usage from the Sources views, matching every other resource list's icon-free Name column - [fusion] Swap sourdough's Sizes/SizeType imports for local structural types in Button and trust-signal components - [fusion] Drop sourdough's TanStack pass-through types and a dead Badge-config helper, clearing the last non-lineage sourdough imports from docs v2 ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) - [@aahel](https://github.com/aahel) - [@ameredith](https://github.com/ameredith) - [@ash2shukla](https://github.com/ash2shukla) - [@debrin-og](https://github.com/debrin-og) - [@eakmanrq](https://github.com/eakmanrq) - [@fivetran-vladimircvetanovic](https://github.com/fivetran-vladimircvetanovic) - [@j19s84](https://github.com/j19s84) - [@kczimm](https://github.com/kczimm) - [@kendru](https://github.com/kendru) - [@koletzilla](https://github.com/koletzilla) ([#14585](https://github.com/dbt-labs/dbt-core/issues/14585)) - [@mach-kernel](https://github.com/mach-kernel) - [@r-jais](https://github.com/r-jais) - [@ragesh-g](https://github.com/ragesh-g) ([#15771](https://github.com/dbt-labs/dbt-core/issues/15771), [#15998](https://github.com/dbt-labs/dbt-core/issues/15998), [#15777](https://github.com/dbt-labs/dbt-core/issues/15777)) - [@sd-db](https://github.com/sd-db) ([#15701](https://github.com/dbt-labs/dbt-core/issues/15701), [#15966](https://github.com/dbt-labs/dbt-core/issues/15966), [#16036](https://github.com/dbt-labs/dbt-core/issues/16036), [#15999](https://github.com/dbt-labs/dbt-core/issues/15999), [#16056](https://github.com/dbt-labs/dbt-core/issues/16056)) - [@tauhid621](https://github.com/tauhid621) - [@vrongmeal](https://github.com/vrongmeal) ([#16073](https://github.com/dbt-labs/dbt-core/issues/16073)) ## 2.0.0-preview.218 Released August 27, 2026 ## 2.0.0-preview.217 Released August 27, 2026 ### Features - [dbt-fusion] 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 - [dbt-core] Stub out the lint command in dbt OSS, and warn when strict static analysis is requested without the full dbt distribution installed - [fusion] Add model freshness schema and validations - [fusion] Add parse-time project quality checks: SQL files under `checks/` are resolved as nodes, run against the metadata index after parse via `info_schema()` views, and a failing check stops `dbt build` before anything is compiled or executed. `dbt check` runs them on demand. - [fusion] Add dbt freshness command - [fusion] Execute Snowflake SQL UDF dependencies in local unit tests - [dbt-index] dbt-index MCP tool calls now report progress while they work, so the default timeout measures silence instead of total runtime; an agent-supplied timeout_secs remains the opt-in total runtime bound. - [fusion] Models on the lake compute adapter default to `materialized: table` and `table_format: iceberg`. Both remain plain defaults, so any `+materialized:` or `+table_format:` the author sets -- in dbt_project.yml, schema.yml, or an inline `config()` call -- still wins. The defaults apply to nodes carrying `+adapter: lake_compute` and to every model in a target whose default adapter is `lake_compute`. - [dbt-core] Show parsed-file counts and in-progress files on the parsing progress spinner ([#15745](https://github.com/dbt-labs/dbt-core/issues/15745)) - [dbt-core] Honor the FORCE_COLOR environment variable so CLI output stays colored when piped through a wrapper process ([#15412](https://github.com/dbt-labs/dbt-core/issues/15412)) - [dbt-index] Expose dbt compare results through the validation MCP sidecar. ### Fixes - [dbt-core] Coalesce an explicit empty-string source `schema` / table `identifier` to its default (the source name / table name, respectively). ([#16029](https://github.com/dbt-labs/dbt-core/issues/16029)) - [fusion] Restore end-to-end coverage of column-level classifier propagation: assertions now run against target/index/dbt.node_columns.parquet from inside the test instead of through the checks feature - [fusion] `fs lint`/`fs format` now parse a `function` node's body from the SQL grammar's `standaloneExpression` entry point (matching the real DDL grammar, `create function ... as `) instead of treating it as a top-level statement, and identify `function` targets by source path (via the resolved node graph, or the project's `function-paths` config in Turbo mode) instead of a synthetic lint-target id that never matched a real dbt node unique_id -- together fixing CV07 false positives, spurious parse-failure errors, and incorrect DBT05 firing on `function` node bodies shaped like a query (e.g. `(SELECT ...)`, required by the generated `create function ... as ()` wrapper); RF02 no longer flags BigQuery's implicit `offset` output column from `UNNEST(...) WITH OFFSET`, with or without an explicit `AS alias`, as an unqualified reference - [fusion] Log dbt State freshness cache misses at DEBUG level instead of WARNING. - [fusion] Fixed data tests being incorrectly reused after a `--full-refresh` rebuild. dbt State now records full-refresh executions of incremental models and refreshes cached table metadata after any untracked rebuild, so a test is no longer replayed against a table that was just rewritten. - [fusion] Keep legacy top-level config on version-local column tests warning-only while preserving the configured value. - [fusion] `fs lint`'s ST05 no longer flags a correlated subquery in a FROM clause (e.g. a lateral `UNNEST` referencing an outer table's column) -- a correlated subquery can't be lifted into a CTE, so the previous unconditional FROM-clause warning was asking for an impossible fix. This extends the existing JOIN-clause correlation exemption (which sqlfluff also has) to FROM, which sqlfluff does not - [fusion] Load the ADBC driver already present in the cache when a concurrent process installs it first, instead of failing the driver load on Windows ### Under the Hood - [dbt-core] The oss CLI now builds as a binary named `dbt` instead of `dbt-sa-cli` (build output is at `target//dbt`) - [fusion] Swap the resource-type icon system (models, sources, tests, etc.), file tree, and theme toggle from sourdough Ryecon icons to lucide-react, as part of the docs v2 OSS icon migration. - [fusion] Swap icon props on the shared Button, Badge, and Input components (and their callers across copy buttons, close/dismiss buttons, lineage panel actions, and status badges) from sourdough Ryecon to lucide-react, as part of the docs v2 OSS icon migration. - [fusion] Swap the status, health, freshness, and test-result icons (LatestStatusSection, TestResultsSection, TestStatusIcon, UpstreamSourcesSection, TrustSignalDescription, LineageEmptyState, Spinner, constants) from sourdough Ryecon to lucide-react, as part of the docs v2 OSS icon migration. - [fusion] Vendor sourdough's tailwind typography/color preset into the fs repo for OSS buildability - [fusion] Databricks: register the SHALLOW CLONE inherited-PK probe as a known Fusion-only deviation, so it no longer causes a false-positive SqlMismatch during conformance replay - [fusion] Extract in-flight statement tracking into a dedicated dbt-tracked-stmt crate so any ADBC consumer can cancel running queries, and add a token-scoped cancellation sweep alongside the existing cancel-everything sweep - [fusion] OSS migration: swap remaining sourdough type-only imports (SortingState, DefaultTData) to local/tanstack equivalents - [dbt-index] Make the dbt-index MCP keepalive test independent of timer resolution ### Security - [dbt-core] Skip symlink, hard link, and device entries when extracting package tarballs instead of extracting them as-is ### Contributors - [@aahelguha](https://github.com/aahelguha) - [@ash2shukla](https://github.com/ash2shukla) - [@debrin-og](https://github.com/debrin-og) ([#16029](https://github.com/dbt-labs/dbt-core/issues/16029)) - [@eakmanrq](https://github.com/eakmanrq) - [@izeigerman](https://github.com/izeigerman) - [@j19s84](https://github.com/j19s84) - [@jsnb-devoted](https://github.com/jsnb-devoted) ([#15412](https://github.com/dbt-labs/dbt-core/issues/15412)) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) - [@mach-kernel](https://github.com/mach-kernel) - [@martin-neupauer](https://github.com/martin-neupauer) - [@mikhail-zhadanov](https://github.com/mikhail-zhadanov) - [@r-jais](https://github.com/r-jais) - [@tauhid621](https://github.com/tauhid621) ## 2.0.0-preview.216 Released August 26, 2026 ### Features - [fusion] Added support for model-wise `table_format: iceberg` config without a catalogs.yml / `catalog_name`, which creates managed Iceberg tables. - [fusion] Extend `dbt system upgrade-distribution` to support managed Python projects: rewrite a manifest's `dbt-core` dependency to `dbt` (Fusion) at the latest published version, then re-run the project's package manager to bring its lockfile/environment back in sync. Refuses a conda environment's top-level dependency list specifically, since dbt (Fusion) isn't published on conda channels; a `pip:` sub-list entry still upgrades normally. The package manager is now resolved before the manifest is rewritten, so a project whose manager can't be determined is left untouched instead of edited with no way to sync it. Detection no longer depends solely on how the running `dbt` binary itself was installed (often `None` when Fusion ships as a standalone binary) -- it now also probes the project's own directory/PATH for a real package manager, fixing false "couldn't be determined" errors for uv, hatch, rye, and plain pip/asdf/pyenv projects. When detection still can't determine (or rejects) a manager, an interactive prompt now offers to pick one, and a new `--package-manager ` flag lets non-interactive/`--yes` runs answer that up front instead of failing - [dbt-index] dbt build and dbt run now write the parquet index to target/index/ by default, without enabling partial parse; opt out with --no-write-index - [fusion] Add dbt.hard_coded_reference (DBT05) lint rule: flag qualified relation references built from a hard-coded literal or non-ref/source/this Jinja templating (e.g. var(), target.schema) instead of ref()/source()/this ### Fixes - [fusion] Re-enable Redshift's `--write-catalog` extended catalog stats (row counts, size, dist/sort keys) via the new generic `AgateTable.join`, and fix four latent bugs in the stats-parsing code this unblocks - [fusion] Keep the dbt replay stream aligned when a recording holds no record for an adapter call Fusion makes. `rename_relation`, `update_table_description`, `grant_access_to`, `load_dataframe`, `get_dataset_location`, `describe_relation`, `convert_type`, and snapshot target validation now apply their own compatibility behavior instead of consuming an unrelated record, and `get_column_schema_from_query` matches its recorded call by SQL text instead of requiring it at the cursor, mirroring how dbt-core itself replays that call (#13344). - [fusion] modules.datetime strftime("%f") now renders six zero-padded microsecond digits like Python, instead of nine nanosecond digits ### Under the Hood - [fusion] Swap the search result icons (project, environment, column count) from sourdough Ryecon to lucide-react, as part of the docs v2 OSS icon migration. - [fusion] Swap the remaining scattered Ryecon icons (dropdown caret, collapsible-section caret, pill close button, table sort arrows, lineage-view expand toolbar icon, code-snippet/truncated-cell copy icons, upgrade-card dismiss/caret icons, property-card info icon) to lucide-react, as part of the docs v2 OSS icon migration. ### Contributors - [@aahel](https://github.com/aahel) - [@ameredith](https://github.com/ameredith) - [@debrin-og](https://github.com/debrin-og) - [@lottaquestions](https://github.com/lottaquestions) ## 2.0.0-preview.215 Released August 25, 2026 ### Features - [fusion] Support require_ref_searches_node_package_before_root when resolving unqualified refs, sources, and functions - [fusion] Support DBT_ENGINE_REQUIRE_REF_SEARCHES_NODE_PACKAGE_BEFORE_ROOT as an environment-variable override for the require_ref_searches_node_package_before_root project flag - [fs] The lake compute adapter is named lake_compute externally: in profiles.yml `type:`, `+adapter:`, dbt_project.yml `adapters:` keys, catalogs.yml config blocks, the manifest's adapter_type, and Jinja macro dispatch. The former name `alt` is no longer accepted anywhere and is rejected with an error naming the replacement. ### Fixes - [fusion] A nested dbt project's own config files (dbt_project.yml, packages.yml, dependencies.yml, package-lock.yml, catalogs.yml, vars.yml, profiles.yml, selectors.yml) are no longer validated as resource-properties YAML when an outer project's resource paths walk into that project, so they no longer raise UnusedConfigKey errors. - [fusion] Create the missing intermediate directory under target/generic_tests/ when an explicit generic test name (e.g. name: customer/id_not_null) contains a path separator - [fusion] Support trailing comma in jinja multi-item assignment - [dbt-index] Start the first Wizard chat turn before background dbt project compilation completes, while exposing parse and compile readiness across dbt-index and the relevant app surfaces. - [fusion] Resolve installed packages by their dbt_project.yml names when package-lock.yml uses a different name. - [fusion] Mask compact clock bounds in Snowflake temporary-view replay SQL ### Under the Hood - [fusion] Vendor biga color tokens into the fs repo for OSS buildability ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) - [@eakmanrq](https://github.com/eakmanrq) - [@mach-kernel](https://github.com/mach-kernel) - [@martin-neupauer](https://github.com/martin-neupauer) ## 2.0.0-preview.214 Released August 25, 2026 ### Features - [fusion] dbt-lsp can report dbt fmt fixes as informational diagnostics, gated by a new lsp.formatter.enabled client setting - [dbt-extension] Added the "Sign in to dbt platform" command, and the extension now only asks you to sign in at the moment a feature needs the platform, such as catalog metadata or a support ticket. Being signed out is no longer flagged as a problem in the status bar, and the periodic reminder to register is gone. Existing keybindings for the old registration commands keep working. - [fusion] flock: support dbt login OAuth sessions for cloud/flock connections, and forward dbt_cloud.project_id - [fusion] Add the dbt.join_condition_or (DBT02) lint rule, flagging OR in a JOIN's ON clause condition - [fusion] Add the dbt.function_wrapped_filter_column (DBT03) and dbt.leading_wildcard_like (DBT04) lint rules, flagging comparisons that wrap a filter column in a function and LIKE/ILIKE patterns with a leading wildcard, both of which defeat partition/index pruning - [fusion] dbt fmt, dbt lint --fix, and the LSP's formatter-diagnostics now support jinja_render_mode = symbolic by exploring tainted {% if %} branch-variants and merging their fixes, instead of always falling back to the rendered algorithm - [dbt-core] [ClickHouse] New configs available: definer, sql_security, inserts_only. Available but not working yet: projections, codec. ([#14585](https://github.com/dbt-labs/dbt-core/issues/14585)) - [] dbt-index: add typed SDK module (`sdk::Project`) with lazy driver loading and structured errors. Re-add status, metadata, search, metrics, and add_project MCP tools removed in #12651. - [dbt-core] Add Snowflake OIDC WIF for GitHub/Azure and Azure+Entra Snowflake WIF authentication ([#15927](https://github.com/dbt-labs/dbt-core/issues/15927)) - [dbt-core] [Databricks] Support row_filter configuration option for tables, streaming tables, materialized views, and incremental models ([#15763](https://github.com/dbt-labs/dbt-core/issues/15763)) ### Fixes - [fusion] Fix adapter.get_relation() failing to find BigQuery UDFs/routines - [dbt-core] Fix regression in log-format-file use ([#15685](https://github.com/dbt-labs/dbt-core/issues/15685)) - [fusion] Support declaring Databricks compute on model config, so a model runs against the warehouse it specifies. - [fusion] dbt-lsp's formatter-diagnostics now honor the project's configured jinja_render_mode (symbolic vs rendered) instead of always using the rendered algorithm, and .sqlfluff config now loads whenever either the linter or formatter-diagnostics setting is enabled - [fusion] Cached passing dbt State data tests now report status reused in run_results.json instead of pass, so downstream cost insights can measure test reuse. - [fusion] Respect the root project's +enabled: true when a dependency package model disables itself with an inline config(enabled=false) block, matching dbt Core. Such a model is now fully rendered, so genuine Jinja or ref errors in its body are reported for the first time - [fusion] Translate BigQuery DATE, DATETIME, DATETIME_TRUNC, JSON_EXTRACT_SCALAR, GENERATE_UUID, and FORMAT_DATE for local compute - [fusion] Report missing replay data instead of an empty result when a project hook's run_query has no recorded fetched result - [fusion] Stop raising a false "Test cannot have the same key '' at the top-level and in config" error when a data test has a deprecated top-level config key (e.g. tags, meta) alongside an empty config: block - [fusion] Fall back to the local schema cache when replaying a get_columns_in_relation call with no matching recording, instead of erroring; a schema-cache hit during the original run means no SQL was ever issued for the recorder to observe - [fusion] Versioned models now inherit their model-level columns when a version declares columns without an include/exclude directive, and version-local column descriptions are Jinja-rendered so doc() resolves - [fusion] Improve Jinja compatibility for dictionary updates (keyword-argument order, `update(undefined, **kwargs)`), `undefined.get()`, and undefined-receiver method-call diagnostics. - [fusion] Add 'where false' to SQL output when '--empty' is used - [fusion] 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 - [fusion] Jinja: Allow compilation to succeed even if there are incorrect 'return' arguments in an unused macro - [fusion] Symbolic mode: List.remove() no longer raises a hard render error when the list absorbed a fabricated (introspective-stub) item earlier and the target value isn't actually present in the fake data; it now degrades gracefully like every other operation on tainted values - [dbt-core] Fix Databricks `RoundTripper transport error` for long-running queries ([#15366](https://github.com/dbt-labs/dbt-core/issues/15366)) - [fusion] Translate BigQuery TIMESTAMP_TRUNC for local compute - [fusion] Report that dbt State may not be enabled for the account when no organization can be determined from the token, instead of suggesting to configure `state-org-id` - [fusion] Symbolic mode: calling a native function (e.g. range()) with a fabricated (introspective-stub) argument no longer raises a hard render error (e.g. "cannot convert plain object to i32"); it now degrades gracefully like filters/tests/membership checks already do, while macro calls are exempted so their bodies keep executing and absorbing taint - [fusion] Expose the root project context while generating relation names so custom naming macros route project resources consistently with dbt Core. - [fusion] Persist mutations to the Jinja `graph` object across hook and macro invocations, matching dbt-core. `graph` is now one interior-mutable mapping per invocation, shared by the parse and compile/run phases, so scratch state written by one macro (e.g. Elementary's `set_cache`) is visible to a later one. - [fusion] Replay now answers adapter.check_schema_exists from recorded evidence that predates the call, instead of failing when the dbt-core recording has no matching record or answering from evidence recorded later in the run - [fusion] Translate BigQuery CURRENT_TIMESTAMP, TIMESTAMP_SUB, MD5, TO_HEX, and UNNEST WITH OFFSET for local compute - [fusion] Preserve Snowflake LISTAGG ordering and SQL fixture expressions for local compute - [dbt-core] `dbt lint` and `dbt format` now honor `.dbtignore` when run without `--select`/`--exclude`, instead of processing files that parsing already excludes ([#16065](https://github.com/dbt-labs/dbt-core/issues/16065)) - [dbt-core] `dbt state explain` now prints a concise decision summary by default and only shows the full step-by-step reasoning tree when `--verbose` is passed, matching the previous dbt-state behavior ([#13261](https://github.com/dbt-labs/dbt-core/issues/13261)) - [fusion] Translate Snowflake UUID_STRING for local compute - [fusion] Corrected log-format-file regression - [fusion] Preserve replay compatibility by hiding Fusion's internal node adapter field from Jinja model and graph contexts - [dbt-core] Fix the dbt-docs-server Docker image: it now downloads a released dbt binary from the dbt-core GitHub Releases and verifies it against the release's published SHA256SUMS, tracking the newest release carrying a Linux binary instead of pinning a stale version (override with `--build-arg DBT_VERSION=`). The documented `docker build` command now works verbatim from either the repo root or the crate directory, a `.dockerignore` keeps the build context empty, and the image is multi-stage, multi-arch, health-checked, and runs as an unprivileged user. ([#15856](https://github.com/dbt-labs/dbt-core/issues/15856)) - [dbt-index] Remove default dbt-index warehouse query timeouts and add opt-in timeout_secs controls ### Under the Hood - [dbt-extension] Removed the extension trial and the 14-day countdown that gated features behind it. - [fusion] Swap the docs v2 UI's CodeSnippet from sourdough to a Shiki-based implementation, mapped to the design system's syntax-highlighting tokens - [fusion] Swap the docs v2 UI's Link from sourdough to radix - [fusion] Swap the docs v2 UI's PaginatedFileTree from sourdough to a non-virtualized radix Collapsible-based tree - [fusion] Selection override capability in Fusion replay - [dbt-core] Bump databricks Go SDK to 1.14 - [fusion] Swap the docs v2 UI's Table from sourdough to a real TanStack Table + shadcn-pattern implementation - [fusion] Add lucide-react as a dependency of docs v2, ahead of replacing the private sourdough Ryecon icon set for OSS. - [fusion] Remove the dbt brand icon from docs v2 (topbar, data-platform chip, and the collaborate-with-teams upgrade card) as part of white-labeling the OSS build. - [fusion] Drop the resource-type icon from every table's Name column, matching prod (dbt Explorer doesn't show one there either). Also removes the last docs v2 dependency on the forced dbt-dag resourceIconMap for these tables. - [fusion] Update the installer ASCII art to show 'dbt' instead of 'dbt Fusion Engine', removing the Fusion Engine branding. ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) - [@LukaDevic](https://github.com/LukaDevic) - [@debrin-og](https://github.com/debrin-og) - [@eakmanrq](https://github.com/eakmanrq) - [@epapineau](https://github.com/epapineau) ([#15685](https://github.com/dbt-labs/dbt-core/issues/15685)) - [@graciegoheen](https://github.com/graciegoheen) - [@joshuataylor](https://github.com/joshuataylor) ([#15856](https://github.com/dbt-labs/dbt-core/issues/15856)) - [@kczimm](https://github.com/kczimm) - [@kendru](https://github.com/kendru) - [@koletzilla](https://github.com/koletzilla) ([#14585](https://github.com/dbt-labs/dbt-core/issues/14585)) - [@lottaquestions](https://github.com/lottaquestions) - [@mach-kernel](https://github.com/mach-kernel) - [@r-jais](https://github.com/r-jais) ([#15366](https://github.com/dbt-labs/dbt-core/issues/15366)) - [@serramatutu](https://github.com/serramatutu) - [@zhong](https://github.com/zhong) ## 2.0.0-preview.213 Released August 21, 2026 ### Features - [fusion] Add `dbt system upgrade-distribution`, a cross-distribution upgrade command that installs dbt (Fusion) and removes the old dbt-core package for global (pip/pipx/uv tool/system) dbt-core installs. A `standalone`/`unclaimed` dbt-core native binary is instead upgraded in place, passing `--to` with its existing install directory to the Fusion installer. Managed-project installs (a manifest declaring dbt-core) are detected but not yet supported and print guidance instead. Running the command from Fusion prints an informational message and exits without error - [fusion] dbt-python: invoke(["source", "freshness"]) returns the sources.json freshness artifact on dbtRunnerResult.result - [internal] Emit a run-feature fingerprint (position-indexed bit string) during Mantle replay runs, so replay pass/fail can be sliced by which features a run exercised - [fusion] Auto-deferral now prefers server-resolved relations for auto-deferral candidates, falling back to existing manual resolution. - [fusion] Support BigQuery unit tests selected with --compute sidecar. - [fusion] State API requests are now automatically retried on transient connection errors (e.g. 'connection reset by peer'). The number of attempts is controlled by the new RUN_CACHE_API_CLIENT_MAX_ATTEMPTS setting (default 3, max 5). - [dbt-index] 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) over the dbt-index so consumers reading them at parse time can never silently see a compile-only or never-populated column. ### Fixes - [fusion] Consolidate dbt-main's system update/uninstall and update-available hint onto dbt-dist's release-channel detection instead of a separate, narrower implementation. Pre-release upgrade flags (e.g. pip's --pre) are now only offered when the currently installed version is itself a pre-release, and self-update/uninstall keeps working for dev builds and other non-standard native-binary locations via a new unclaimed release channel. Fixed dbt system uninstall to target the exact binary actually being run (not just its directory, and not a hardcoded dbt/dbt.exe name) instead of always defaulting to ~/.local/bin, which previously could silently remove an unrelated install, or the wrong file, when uninstalling a self-managed or renamed binary from a non-standard location. Python package-manager detection for a venv/conda-env install now only credits a manager whose own executable lives inside that specific environment, rather than crediting whichever unrelated manager (e.g. uv) happens to be installed and runnable elsewhere on PATH; when none is found there, dbt now says it can't identify the manager instead of guessing - [dbt-core] Databricks: honor `connect_timeout` as a connection-establishment deadline. ([#14529](https://github.com/dbt-labs/dbt-core/issues/14529)) - [fusion] Propagate the underlying replay error from `next_record_with` instead of flattening every failure into a catch-all "No record found for node" message, so an unresolvable recording key, an exhausted cursor, and an all-records-skipped stream are distinguishable in conformance data (#11684) - [fusion] Fix CLI --vars to accept YAML flow-map syntax without spaces after colons to match dbt-core behavior - [fusion] Preserve nested field types of BigQuery repeated RECORD columns instead of degrading them to ARRAY - [fusion] Replay: a recorded `expand_target_column_types` call that Fusion does not issue at the same point no longer fails the run with "Invalid record for execute" (#12868) - [fusion] Publication artifact downloads now use the correct Cloud project-id for each upstream project in a mesh monorepo, resolving 404 errors for cross-project refs - [fusion] Versioned-model state:modified conformance - [fusion] `fs lint` RF02 no longer flags BigQuery date-part keyword arguments (e.g. `date_trunc(x, isoweek)`) as unqualified column references - [fusion] `fs lint` RF01 no longer flags BigQuery struct field access (e.g. `payload.field_a`) as an unresolved table reference when the query joins multiple relations - [fusion] `fs lint` RF03 (references.consistent) is now disabled by default on BigQuery and Redshift under the default consistent policy, matching sqlfluff's dialect defaults; this also removes duplicate diagnostics previously reported for the same reference - [fusion] `fs lint` RF05 no longer flags backtick characters as invalid in BigQuery relation paths where each segment is independently backtick-quoted (e.g. ``proj`.`ds`.`table``) - [fusion] `fs lint` ST11 no longer flags an earlier outer join as unused when a later join's `USING` clause key column is carried in by it - [fusion] `fs lint` CV07 no longer flags the outer parentheses of a `function` node's body, which are required by the generated `create function ... as ()` wrapper - [fusion] Symbolic `fs lint` rendering now respects a real, non-tainted RHS when short-circuiting `and`/`or` on a tainted (introspective) operand, so a guard like `is_incremental() and flags.WHICH != "lint"` no longer runs its introspective branch (e.g. `{% call statement() %}`) during lint - [fusion] Support the Databricks zorder model config so OPTIMIZE ... ZORDER BY is applied to table and incremental models - [fusion] Support the Databricks unique_tmp_table_suffix model config so temporary and staging relations get a unique suffix - [fusion] Fix dbt lint to honor multiple positional file paths in rendered mode - [fusion] `fs lint` RF02/RF03/CP01 now detect identifier-domain function arguments (e.g. BigQuery's `date_trunc(x, isoweek)`, `round(x, n, round_half_even)`) generically from the function catalog (`functions.sdf.yml`), instead of a hardcoded date-part keyword list - [fusion] `fs lint` RF02/RF03/CP01 now also detect catalog-declared identifier-domain function arguments on Snowflake (e.g. `dateadd(yr, ...)`, `date_part(woy, ...)`), alongside the field rename `date_part_spans` -> `identifier_argument_spans`; the existing Snowflake date-part alias fallback is kept where the catalog is still incomplete (e.g. day-of-week/week-of-year families) - [fusion] `fs lint` RF02/RF03/CP01/CP02 now drive Snowflake's identifier-domain function arguments fully from the function catalog, replacing the last hardcoded date-part fallback; also fixed `functions.sdf.yml` incorrectly declaring `weekofyear`/`woy`/`wy` as valid identifiers for `dateadd`/`last_day` (Snowflake rejects them), verified against live Snowflake - [fusion] `fs lint` RF02/RF03/CP01/CP02 now detect identifier-domain function arguments (e.g. Databricks/Redshift's `date_add(dayofyear, n, ts)`) for databricks and redshift too, not just bigquery/snowflake; duckdb and trino gained the same plumbing but have no such catalog entries today, so behavior is unchanged for them - [fusion] Upgrade the opt-in BigQuery Foundry driver to avoid hot-loop job-status polling while queries are running. - [dbt-core] [Snowflake] fix seed materialization to match core - [fusion] Nested dict Jinja expressions in structured config (like source freshness) are now correctly evaluated as typed values instead of being serialized as strings. The standalone expression classifier no longer rejects expressions containing closing braces from dict/set literals. - [dbt-core] Redshift: report DML rows affected in run_results.json and and adds the `(worker)` suffix to `thread_id`. ([#15626](https://github.com/dbt-labs/dbt-core/issues/15626)) - [dbt-extension] Paginate getProjects API calls to handle accounts with more than 100 projects - [fusion] Make otel_trace_id a function (otel_trace_id()) instead of a global variable, matching otel_span_id(), so it reads live and works correctly from query-comment for both dbt Core and Fusion - [fusion] Jinja: Defer render errors in unselected nodes until compilation - [dbt-core] Fix config resolution for snapshots under custom paths - [fusion] In CI and other non-interactive environments, dbt State auth tokens minted from re-derivable credentials (client credentials or dbt platform token exchange) are no longer written to disk (state_auth.json), so ephemeral runners don't leave credentials behind. Tokens refreshed from a disk-provisioned cache are still persisted so pre-provisioned token setups keep working across runs. - [fusion] Keep bounded generic-test filenames in target/run when generate_alias_name expands the relation alias. - [fusion] Accept string and single-map partitions configs during project parsing. Fusion now keeps these adapter-specific values and lets the active adapter handle them. - [dbt-core] update dbt State test lock to the latest query-cache commit. - [fusion] Fix `.sqlfluff` `rules`/`exclude_rules` values wrapped across multiple lines (SQLFluff/configparser continuation syntax) silently dropping every rule after the first physical line - [fusion] Preserve mapping-valued policy_tags entries instead of rejecting them during YAML loading, and avoid clearing existing BigQuery policy tags when a column's tags are all mapping-valued - [fusion] Match dbt Core's unit-test behavior for short CSV rows and rowless seed refs - [dbt-core] [databricks] only add or change column comments if set to non-empty - [dbt-core] [databricks] ensure incremental strategy adapter calls are always properly quoted ### Under the Hood - [fusion] Add a regression test covering the `{% call statement() %}` crash under Symbolic `fs lint` rendering (already fixed by #13125, landed after the 2.0.0-preview.210 build this was reported against) - [fusion] Swap the docs v2 UI's Tooltip from sourdough to a local radix-based component - [fusion] Swap the docs v2 UI's Badge, Button, Card, and LoadingBlock from sourdough to local radix/shadcn-style components - [fusion] Swap the docs v2 UI's Heading, InvisibleButton, Breadcrumb, NotificationBanner, and Code from sourdough to local radix/shadcn-style components - [fusion] Swap the docs v2 UI's Pill from sourdough to radix, fold IconButton into Button's icon-size variants, and remove unused dead code (MetricTileGroup, SkeletonContextProvider, ResourceTypeCard, OverviewContainer) - [fusion] Swap the docs v2 UI's Input, Pagination, and PaginationFooter from sourdough to radix - [fusion] Swap the docs v2 UI's FloatingTab, FloatingTabs, SegmentedButton, DropdownButton, and Popover from sourdough to radix ### Dependencies - [dbt-core] Bump the Databricks ADBC driver to `0.21.0.dev+dbt0.21.12`, adding a `connect_timeout` option. ([#14529](https://github.com/dbt-labs/dbt-core/issues/14529)) ### Contributors - [@ChenyuLInx](https://github.com/ChenyuLInx) - [@aahel](https://github.com/aahel) - [@ameredith](https://github.com/ameredith) - [@ash2shukla](https://github.com/ash2shukla) - [@b-per](https://github.com/b-per) - [@izeigerman](https://github.com/izeigerman) - [@kczimm](https://github.com/kczimm) - [@kendru](https://github.com/kendru) - [@luka.devic](https://github.com/luka.devic) - [@mach-kernel](https://github.com/mach-kernel) - [@r-jais](https://github.com/r-jais) ([#14529](https://github.com/dbt-labs/dbt-core/issues/14529), [#15626](https://github.com/dbt-labs/dbt-core/issues/15626), [#14529](https://github.com/dbt-labs/dbt-core/issues/14529)) - [@ragesh-g](https://github.com/ragesh-g) - [@toriwei](https://github.com/toriwei) ## 2.0.0-preview.212 Released August 18, 2026 ### Features - [fusion] Add internal scaffolding for detecting and editing a project's Python dependency manifest (`pyproject.toml` — including PEP 621, Poetry, PDM, and uv dependency tables — `Pipfile`, `environment.yml`, `setup.cfg`, and `requirements.txt`), in preparation for `dbt system upgrade-distribution` - [fusion] Add a colored, line-numbered diff preview for pending Python dependency manifest edits, so a caller can show the user what will change before overwriting the file - [dbt-core] [dbt-fusion] (fabric) support `authentication: ActiveDirectoryAccessToken`, authenticating with a pre-minted Entra bearer token from the `access_token` profile field ([#15926](https://github.com/dbt-labs/dbt-core/issues/15926)) - [dbt-extension] Add a minimal UvBinaryManager that detects uv and can prompt to install it - [dbt-extension] Add a dbt-autofix execution harness (run via `uvx`, which handles install/update/caching) and wire it into the v1-compat and file-scoped QuickFix code actions - [dbt-extension] The extension version row in the Extension Info sidebar now has a copy action, putting extension, server, and dbt versions on the clipboard for support tickets. Click the row or use the copy icon on it. - [fusion] `build` now reports test optimizations in a dedicated `Test Optimization` summary section, covering both statically checked tests (`--skip-redundant-tests`) and batched generic tests (`--batch-tests`), and `--batch-tests` groups batched tests on stdout under one console line per model and test type. Batching can also be enabled with the `DBT_ENGINE_BATCH_TESTS` environment variable or `flags: batch_tests: true` in `dbt_project.yml`. The flag previously named `--aggregate-tests` is now `--batch-tests`. - [fusion] Support BigQuery unit tests configured for local compute through DuckDB. - [fusion] dbt docs generate now compiles before it exports. It runs compile --write-index first, matching dbt v1, so a fresh project needs one command instead of two and the site always describes the project as it is now. Pass --no-compile to export an index a previous --write-index run wrote instead, which is then an error if there is none; that is also the form to use for column-level lineage, since the compile docs generate runs does not use --static-analysis strict. - [dbt-index] Remove orphaned dbt-index modules (locker, changeset) and unused tool registrations - [fusion] dbt docs v2: the landing page now renders a project-defined {% docs __overview__ %} block, falling back to a built-in overview when none is defined - [fusion] docs v2 adds a Config tab to model/seed/snapshot/source detail pages showing the resource's dbt config, a Light/Dark/System theme toggle in the sidebar, and topbar polish (alpha badge renamed to beta). - [fusion] `dbt debug` now checks that the catalogs declared in `catalogs.yml` can actually be attached by dbt Compute, using a short-lived Snowflake credential minted from the profile's target. A wrong account, `catalog_database`, or an unauthorized role now fails during setup rather than on a first model run. Runs only when the profile configures `x_alt_target`, and before the existing write and propagation checks. - [fusion] Add otel_trace_id and otel_span_id() Jinja globals to correlate query comments and model SQL with OpenTelemetry trace/span ids ### Fixes - [fusion] Make fromyaml tolerate duplicate YAML keys using last-key-wins semantics. - [fusion] Accept tuple-style comma expressions in Jinja if conditions while rendering YAML sources. - [fusion] Preserve YAML selector definition shape in manifest serialization for inline composite excludes. - [dbt-core] Databricks: apply column-level `databricks_tags` — the column tags component emitted a `tags` key while the materialization macros read `set_column_tags`, so column tags were silently dropped for all materializations ([#14505](https://github.com/dbt-labs/dbt-core/issues/14505)) - [fusion] Databricks: resolve DBR capability gates from http_path during parse instead of always returning false, so uppercase dateparts in dateadd/datediff no longer fail compilation on SQL warehouses - [fusion] Fix conformance test false negatives (#12866) where SQL comparison failed only because of clock- or version-derived literals differing between recording and replay: mask `dbt_version`, `run_started_at`/`dbt_run_started_at`, `etl_batch_id`, and archival stage path timestamp literals during SQL comparison - [dbt-core] Make `run_results.json` conformant with BigQuery in Core v1. This needs the experimental driver (`DBT_ADBC_BIGQUERY_USE_FOUNDRY=1`). NOTE: Core v2 does not do a request to check the number of rows affected like v1 does, so `rows_affected` is currently always zero. ([#15624](https://github.com/dbt-labs/dbt-core/issues/15624)) - [dbt-core] Skip SQL comparison for unit_test.* nodes in replay adapter. dbt Core and Fusion intentionally generate different SQL for unit tests; replay now validates outcomes using recorded responses rather than comparing SQL text, fixing dbt1405 conformance failures. ([##12965](https://github.com/dbt-labs/dbt-core/issues/#12965)) - [fusion] Make time-machine replay independent of the live dbt State service. Record and replay schema-wide freshness calls, freshness overrides, and Clone decisions. Close the recording session correctly during shutdown. - [dbt-core] Omit unset classifiers, incremental_predicates, sql_header, indexes, and primary_key model config keys from the manifest instead of serializing them as JSON null ([#15913](https://github.com/dbt-labs/dbt-core/issues/15913)) - [dbt-core] Fix snowflake's create_table_as macro for Iceberg Rest models. Centralize table_format/catalog_type resolution. - [dbt-extension] The extension no longer gets stuck asking you to sign in when your session expires but a valid dbt_cloud.yml credential is available. Expired sessions now recover on their own once credentials are usable again. - [fusion] Jinja: Accept string arguments to get_columns_in_relation during parse - [fusion] Translate BigQuery PARSE_TIMESTAMP calls for local compute - [fusion] Preserve BigQuery interval units through local-compute emission - [fusion] Support BigQuery boolean GREATEST calls in local compute - [fusion] Translate one-argument BigQuery TIMESTAMP constructors for local compute - [fusion] Translate zoned BigQuery DATETIME constructors for local compute - [fusion] Emit BigQuery arithmetic stubs as infix operators for local compute - [fusion] Translate BigQuery DATE_DIFF argument order for local compute - [fusion] Translate BigQuery array, JSON, date, regex, and window expressions for local compute - [fusion] Append a unique suffix to BigQuery snapshot temp tables to avoid collisions and match dbt Core behavior. Also teach Time Machine's replay validation to normalize `__dbt_tmp` suffixes so recordings predating this fix don't false-fail. - [fusion] Fixed error when '--inline' option's value containing double dashes - [fusion] Fix `--jinja-render-mode symbolic` crashing on tainted introspective values during tuple-unpack, slicing, and native adapter calls (e.g. "cannot unpack: sequence of wrong length" in `statement()`, `quote()` type errors, "cannot be sliced") - [fusion] Allow the DBT_ENGINE_STATE_HOME environment variable instead of rejecting it as an unknown reserved-prefix variable - [fusion] Accept a Jinja none for the database argument to adapter.check_schema_exists instead of erroring during Jinja rendering - [dbt-extension] VSCE dbt login add manual login url fallback - [fusion] Do not let `warn_error_options` upgrade Fusion-only warnings to errors while replaying a dbt-core recording, so a conformance run is no longer aborted by a warning dbt-core never emits. Silencing and upgrades of warnings dbt-core also emits are unchanged, and normal runs are unaffected. - [fusion] Fixed structural comparison for `UNION` without `ALL` and edge cases that contained spaces - [internal] Avoid installing mypy 2.3.1 in check-py, which segfaults under Python 3.15. - [dbt-index] Record dbt-index MCP descriptions and rendered SQL in Wizard query logs. - [fusion] LSP fix multiline column descriptions breaking hover table - [fusion] Fix `--batch-tests` skipping most batched test groups: concurrent first-touch of a phase span aborted all but one group before its query was rendered - [fusion] Add the target macOS platform before building ADBC Foundry drivers so Intel release jobs can initialize Pixi. - [fusion] Loader: Discover symlinked model files under their link names - [fusion] Ensure more pre_hook == pre-hook equivalences - [fusion] Time Machine replay no longer fails when a recording predates the BigQuery snapshot temp-table suffix: the non-deterministic __dbt_tmp suffix is now normalized for every adapter argument comparison, not just expand_target_column_types - [dbt-core] correct duckdb model identifiers to use quoting specified in dbt configurations. - [dbt-core] [Databricks] Support the +catalog config for databricks as an alias for +database - [fusion] Jinja: Resolve namespace attributes named items, keys, values, or get before dictionary methods - [fusion] Runtime: Honor profiles.yml threads in connection backpressure ### Under the Hood - [fusion] Add flock-test-client, a scriptable CLI and REPL for exercising flock-service's Arrow Flight RPCs during local devspace development - [fusion] Remove license requirement for strict static analysis - [fusion] dbt State: add table_namespace support ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) - [@aiguofer](https://github.com/aiguofer) ([#15913](https://github.com/dbt-labs/dbt-core/issues/15913)) - [@b-per](https://github.com/b-per) - [@eakmanrq](https://github.com/eakmanrq) - [@erindru](https://github.com/erindru) - [@izeigerman](https://github.com/izeigerman) - [@j-clemons](https://github.com/j-clemons) - [@j19s84](https://github.com/j19s84) - [@kczimm](https://github.com/kczimm) - [@kendru](https://github.com/kendru) - [@luka.devic](https://github.com/luka.devic) - [@mach-kernel](https://github.com/mach-kernel) - [@mghorpade1](https://github.com/mghorpade1) ([#15926](https://github.com/dbt-labs/dbt-core/issues/15926)) - [@rageshg](https://github.com/rageshg) - [@serramatutu](https://github.com/serramatutu) ([#15624](https://github.com/dbt-labs/dbt-core/issues/15624)) - [@vrongmeal](https://github.com/vrongmeal) ([#14505](https://github.com/dbt-labs/dbt-core/issues/14505)) ## 2.0.0-preview.210 Released August 14, 2026 ### Features - [fusion] Resolve private git package URLs via the dbt platform private-packages resolve endpoint instead of client-side matching (when credentials are available from orchestration). Falls back to matching against `DBT_ENV_PRIVATE_GIT_PROVIDER_INFO` when no such credentials are present. Both paths require the full dbt platform-enabled build; the source-available build always resolves private packages via local SSH URLs. - [fusion] Install the version-matched dbt-db-runner alongside direct Unix Fusion installations. - [dbt-extension] The VS Code extension now detects projects that look like dbt-core v1 and offers to enable v1 compatibility mode - [dbt-extension] Add find-in-value to the query results cell detail pane: use the search button to search the open cell, step through matches with Enter, and see them highlighted in place - [fusion] Add `dbt docs generate`, which writes docs v2 as a statically hostable site: parquet artifacts the browser queries with DuckDB-WASM loaded from a CDN, so no server process is needed. Run `dbt compile --write-index` or `dbt build --write-index` first (add `--static-analysis strict` for column-level lineage); `dbt docs generate` exports that index rather than building one. `dbt docs serve` now serves the generated site. Note: `dbt docs generate` was previously an unsupported no-op that always exited 0, so it can now fail. - [fusion] docs v2 now reads its own parquet in the browser: DuckDB-WASM is loaded from a CDN at runtime for detail pages, and a small hyparquet read renders the shell first so nothing waits on the engine. The site uses hash routing and relative asset URLs, so the generated directory can be served from any path on any host. - [fusion] docs v2 static sites now render model and column-level lineage from parquet in the browser. - [fusion] docs v2 static sites now render resource lists and their filter facets from parquet in the browser. - [fusion] docs v2 static sites now render full per-type detail pages from parquet in the browser, including columns, source freshness, macro arguments and semantic model members. - [fusion] docs v2 static sites now support cross-type search from parquet in the browser, completing the client-side data layer. - [fusion] docs v2 static sites now send anonymous usage analytics directly from the browser, honoring consent resolved at generate time. Previously the events surface required the docs server's relay, which a static site has no way to reach. - [dbt-core] Seed data types are not Nullable for ClickHouse. Fix incorrect primary key declaration when configured as a list' ([#14585](https://github.com/dbt-labs/dbt-core/issues/14585)) - [fusion] `dbt docs generate` now writes the site into your target directory, so `target/index.html` sits where dbt Core v1 put it and an existing pipeline that publishes `target/` keeps working unchanged. The site reads the parquet in `target/index/` as `--write-index` wrote it — nothing is copied or derived, so the index artifacts remain the only contract. ### Fixes - [dbt-core] Skip source freshness metadata queries for sources that opt out. ([#14534](https://github.com/dbt-labs/dbt-core/issues/14534)) - [fusion] Fix sidecar unit-test decompilation for non-NULL binary scalar values - [fusion] Apply Snowflake warehouse overrides on seed materialization (matching Core pre_model_hook) and harden quote_seed_column replay to report Replay Data Missing without panicking or desyncing the cursor - [fusion] Honor skip_private_deps in the batch private-package resolution path; it previously ran unconditionally before the per-entry skip check - [fusion] With --infer-schemas, inferred source lineage now follows a chain of 'select *' passthrough models back to the true upstream source instead of stopping at the nearest intermediate model - [fusion] Skip Snowflake warehouse restores during replay when dbt Core did not record the corresponding warehouse switch - [fusion] Render nested Jinja in generic-test config values before compiling test SQL - [dbt-extension] LSP/VSCE preview CTE with jinja before first CTE - [fusion] Jinja: Added api.Relation.get_default_quote_policy() - [fusion] `dbt docs generate` now resolves the target directory the way every other project command does — `--project-dir` or project discovery, then `--target-path` or `dbt_project.yml` — instead of assuming `./target` in the current directory. It therefore requires a dbt project, matching dbt Core v1. - [fusion] docs v2: fix empty list and search pages when the index has no run results, source freshness, or catalog artifacts - [fusion] Jinja: Append list items inserted beyond the current length - [dbt-index] Fix workspace parent scan registering sibling worktrees' dbt projects as additional index projects ### Under the Hood - [fusion] `dbt docs serve` is now a plain static file host: the JSON API it used to expose is gone, along with the OpenAPI surface and the server-side analytics relay. Every query the docs site runs, it runs in the browser against the exported parquet. - [fusion] Update dbt-state protobuf definitions ### Security - [fusion] Log a notice when a package tarball contains symlink, hard link, or device entries; these will stop being extracted in a future release. Also upgrade astral-tokio-tar from 0.5.6 to 0.6.4 in the tarball extraction path (RUSTSEC-2026-0066, RUSTSEC-2026-0112, RUSTSEC-2026-0113, RUSTSEC-2026-0145) ### Contributors - [@erindru](https://github.com/erindru) - [@fidget](https://github.com/fidget) ([#14534](https://github.com/dbt-labs/dbt-core/issues/14534)) - [@j-clemons](https://github.com/j-clemons) - [@joshuataylor](https://github.com/joshuataylor) - [@keithlo](https://github.com/keithlo) - [@kendru](https://github.com/kendru) - [@koletzilla](https://github.com/koletzilla) ([#14585](https://github.com/dbt-labs/dbt-core/issues/14585)) - [@mach-kernel](https://github.com/mach-kernel) - [@maxmalkin](https://github.com/maxmalkin) - [@mykalmax](https://github.com/mykalmax) - [@tauhid621](https://github.com/tauhid621) ## 2.0.0-preview.209 Released August 12, 2026 ### Features - [dbt-core] Add support for ClickHouse Dictionary materialization ([#14580](https://github.com/dbt-labs/dbt-core/issues/14580)) - [dbt-core] Clickhouse: Add more settings and missing internal methods ([#14587](https://github.com/dbt-labs/dbt-core/issues/14587)) - [dbt-core] Add support for ClickHouse's index definition ([#14583](https://github.com/dbt-labs/dbt-core/issues/14583)) - [dbt-extension] Add Parent models and Children models lineage tree views to the dbt VS Code extension left panel - [fusion] dbt Compute (Alt/quack) now supports `compute_platform: dbt` on seeds, not just models - [dbt-core] Add `--jinja-render-mode symbolic`, a taint-aware Jinja render mode for `dbt lint` that actually executes Jinja and hole-punches only genuinely warehouse-dependent output ([#15837](https://github.com/dbt-labs/dbt-core/issues/15837)) - [fusion] Report the dbt State decision id as `state_decision_id` on node telemetry so a node's executed/reused decision can be correlated with its dbt State explanation. - [fusion] Unit tests accept 'compute: local' as another spelling of 'compute: sidecar', per test and project-wide, and 'dbt --compute local' works on the CLI ### Fixes - [fusion] Fix snapshot hard_deletes='new_record' failing on tables with STRUCT or ARRAY columns - [fusion] Fix Time Machine same-version replay failures caused by lossy deserialization of BigQuery Column nested/repeated types and Databricks tblproperties pipeline_id - [fusion] Classify native-provider context overflows centrally, preserve family context windows for unknown slugs, and label native compaction analytics correctly. - [fusion] Preserve custom schema from generate_schema_name when the macro calls run_query at parse time - [dbt-core] Prevent a process panic ("byte array offset overflow") when a fetched `run_query` result contains a string or binary column larger than Arrow's 2 GB single-array limit (e.g. Elementary's `on_run_end` hooks on large BigQuery tables). String and binary columns are now materialized as Arrow's `StringView`/`BinaryView` types, which don't require one contiguous buffer per column, and a still-unexpected failure surfaces as a recoverable error instead of crashing the process ([#15706](https://github.com/dbt-labs/dbt-core/issues/15706)) - [dbt-core] Bump the Redshift ADBC driver so DML statements report rows_affected via ExecuteQuery, making the previously-missing `AdapterResponse` fields available for Redshift. - [fusion] dbt lint: account for columns excluded by BigQuery SELECT * EXCEPT when checking set-operation column counts (dbt0165 / AM07) - [fusion] dbt lint: stop treating METADATA as a BigQuery keyword identifier for RF04 - [fusion] Fix Azure DevOps private package resolution: azure_devops now match ado-tagged provider entries, and 3-part ado paths select the entry with the matching project instead of the first org match - [fusion] Report auto-fixable lint violations as errors - [dbt-core] Microbatch batch-window computation now honors `--sample`, clamping the batch start/end to its bounds instead of always building the full `begin`-to-now range ([#15798](https://github.com/dbt-labs/dbt-core/issues/15798)) - [fusion] on-run-start/on-run-end hook execution errors now consistently point to the hook's real location in dbt_project.yml, instead of losing/changing location after a --partial-parse cache round-trip - [fusion] Fix Databricks tblproperties diff to use one-directional comparison matching dbt-databricks semantics, avoiding spurious config-change detection and unnecessary ALTER/UniForm checks for models that don't declare tblproperties - [fusion] Hash the test file contents for singular data test checksums to match dbt-core, instead of always emitting an empty checksum - [dbt-core] Return a compile error instead of panicking when source() is called with a non-string source name or table name argument ([#15736](https://github.com/dbt-labs/dbt-core/issues/15736)) - [fusion] Fix symbolic lint parsing for Jinja loops mixed with literal identifiers in list/alias positions (BigQuery `except (...)` and `struct(...)` field aliases) - [dbt-core] Source nodes no longer serialize a patch_path in the manifest, matching dbt-core's behavior and preventing an IndexError in dbt-core's Python path selector when running with --use-v2-parser ([#15677](https://github.com/dbt-labs/dbt-core/issues/15677)) - [dbt-core] Add compiled_code field to model run results for on-run-end hooks (dbt-core#13723) ([##13723](https://github.com/dbt-labs/dbt-core/issues/#13723)) - [fusion] Fix dbt format corrupting SQL string literals containing a Jinja expression that renders to an empty string - [dbt-core] Fix `dbt lint --fix` thrashing forever on `COUNT(*)` (flipping between `COUNT` and `count`) when CP01 keyword-capitalisation and CP03 function-capitalisation policies disagree, since COUNT was double-classified as both a keyword and a function name ([#15836](https://github.com/dbt-labs/dbt-core/issues/15836)) - [fusion] Fix replay deserializing recorded DateTime query results as Jinja strings instead of datetime values - [fusion] Fix CLI --vars unquoted YAML date scalars being deserialized as plain strings instead of Jinja date objects - [fusion] Fix BigQuery relation discovery when the execution project differs from the target project. - [fusion] Render BigQuery JSON unit test mocks with PARSE_JSON so object and JSON-string fixtures both work - [fusion] Databricks model constraints no longer fail table creation under use_materialization_v2 - [fusion] Implement Snowflake zeroifnull translation for sidecar (DuckDB) compute - [dbt-extension] Fixed the extension repeatedly asking you to pick a project or reset credentials when your dbt_cloud.yml is regenerated with a different project. The extension now recognises your existing credential and continues without interrupting you. - [fusion] Merge injected ephemeral CTEs into existing WITH clauses without wrapping the model query. - [fusion] Seed DDL renders text instead of VARCHAR(16777216) for Snowflake string columns to match dbt Core behavior - [dbt-index] Index ingest now detects an in-place rewrite of a base epoch parquet, so changes that trigger a full parse (editing a description, tags, or meta in a .yml, or a .md docs block) are reflected in the index instead of being silently skipped. - [fusion] state:modified: pair a source with its previous-state counterpart when a dbt-core-produced manifest spells its unique_id with the raw table name (e.g. a BigQuery wildcard `events_*`) and Fusion sanitizes it, so the source is no longer treated as new and `state:modified+` stops selecting everything downstream of it - [fusion] Fix Fusion replay returning an empty result for on-run-end/on-run-start operation fetches when the matching read record sits later in the stream instead of immediately next - [dbt-core] Databricks: do not error when applying incremental config to a Hive Metastore table; skip the information_schema tag, constraint and column mask lookups instead, matching dbt-databricks ([#15176](https://github.com/dbt-labs/dbt-core/issues/15176)) - [fusion] Resolve a model's own `this` relation by identity, so a model whose name collides with another node (such as a legacy snapshot block) no longer fails to compile - [fusion] Allow Python models to use the supported table value for tmp_relation_type. - [dbt-core] dbt lint: stop treating BigQuery data type names inside CAST (e.g. STRING) as identifiers for CP02 identifier-case checks ([#15852](https://github.com/dbt-labs/dbt-core/issues/15852)) - [fusion] Fix result.timing[*].started_at/completed_at rendering as the literal string "{}" instead of an ISO-8601 timestamp when read from Jinja in an on-run-end hook - [fusion] Support DBT_LATEST_VERSION_POINTER_ENABLED_BY_DEFAULT as an environment-variable override for the latest_version_pointer_enabled_by_default project flag - [fusion] Fix `dbt lint --exclude-rules` overwriting the `exclude_rules` already set in `.sqlfluff` instead of adding to it - [fusion] Handle empty unit test results without assuming the physical type of the actual-or-expected label column. - [fusion] Restore quoted Snowflake warehouse profile values using the raw name reported by Snowflake so warehouse-switch SQL matches dbt Core - [fusion] Restore schema-store Frontier debug logs for dbt State deferral compatibility - [fusion] Create Snowflake Python incremental staging relations as temporary tables. ### Under the Hood - [internal] Fix epoch race, save idempotency, Windows compaction rename, TTL-aware compaction, and corruption logging in ParquetCache schema store - [internal] Remove legacy per-file schema store; ParquetCache is now the only implementation - [fusion] Streamline telemetry code. - [fusion] Move the dbt docs v2 UI source into the repo alongside dbt-docs-server; the SPA now lives in crates/dbt-docs-server/web - [fusion] Encapsulate the freshness-prefetch strategy behind MetadataAdapter::freshness_all_in_schemas so the run-cache orchestration is engine-agnostic; the Snowflake adapter now owns warehouse fan-out and the adaptive broad-vs-sequential schema fetch. Each adapter uses a single bulk path (per-schema dump or per-table batch) with no per-table fallback in the prefetch — relations a bulk load does not cover are resolved by the per-node path at submit time - [internal] Fix BigQuery replay for describe_relation calls ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#15677](https://github.com/dbt-labs/dbt-core/issues/15677)) - [@annbat](https://github.com/annbat) - [@claude](https://github.com/claude) - [@dataders](https://github.com/dataders) - [@izeigerman](https://github.com/izeigerman) - [@j-clemons](https://github.com/j-clemons) - [@kczimm](https://github.com/kczimm) - [@koletzilla](https://github.com/koletzilla) ([#14580](https://github.com/dbt-labs/dbt-core/issues/14580), [#14587](https://github.com/dbt-labs/dbt-core/issues/14587), [#14583](https://github.com/dbt-labs/dbt-core/issues/14583)) - [@mach-kernel](https://github.com/mach-kernel) - [@r-jais](https://github.com/r-jais) ([#15706](https://github.com/dbt-labs/dbt-core/issues/15706)) - [@ragesh-g](https://github.com/ragesh-g) - [@tomighita](https://github.com/tomighita) - [@vrongmeal](https://github.com/vrongmeal) ([#15176](https://github.com/dbt-labs/dbt-core/issues/15176)) - [@wolfram](https://github.com/wolfram) ## 2.0.0-preview.208 Released August 08, 2026 ### Features - [dbt-core] Clickhouse: Add missing configurations for ClickHouse table materialization ([#14585](https://github.com/dbt-labs/dbt-core/issues/14585)) - [dbt-core] Support 'dbt source freshness' in the source-available engine - [fusion] Emit a deprecation warning for malformed {% snapshot %}/{% docs %} block names whose trailing tokens dbt silently discards - [dbt-core] Add support for behavior flag `require_resource_names_without_plus_prefix` ([#14433](https://github.com/dbt-labs/dbt-core/issues/14433)) - [fusion] dbt State Snowflake freshness-metadata prefetch now adapts how it queries INFORMATION_SCHEMA: small databases use a single broad `table_schema IN (...)` scan while databases with many schemas keep pruned per-schema queries that avoid a costly full-database scan, cheaply probing the schema count to decide. Controlled by the new `adaptive_metadata_fetch` Snowflake target config (default enabled). - [dbt-extension] Add a cell detail pane to the query results panel: double click a cell to inspect its full value, with pretty-printed JSON and a draggable splitter ### Fixes - [dbt-fusion] Improve parsing error messages to distinguish between unknown keys and type errors - [fusion] Analysis-phase errors on analyses now cite the compiled SQL file - [fusion] Return a catchable dispatch error when a resolved Jinja template does not export the requested macro instead of overflowing the stack - [fusion] Snowflake iceberg tables now explicitly template EXTERNAL_VOLUME = 'SNOWFLAKE_MANAGED' when no external_volume is configured, instead of omitting the clause and letting Snowflake resolve a schema/account-level default external volume - [fusion] port (adapters/redshift) dbt-adapters#2087, skip dist/sort clauses when creating temporary tables on Redshift - [fusion] Parent the sidecar runner stdout loop to the invocation span so lazy startup does not retain schema hydration progress - [dbt-core] `AdapterResponse` of the main query of each node now shows up in `run_results.json`. It might not be 100% compatible with dbt Core v1 yet. - [fusion] Fix `dbt build` failing to skip snapshots downstream of a model whose test fails - [fusion] Treat parse-time adapter.get_relation results as none in Jinja control flow so unreachable branches do not leak test configuration. - [dbt-core] Type the lambda placeholder expression as Binary so casting the result of a Snowflake higher-order function (REDUCE, FILTER, TRANSFORM) no longer fails column lineage with LogicalPlanError (dbt1019) ([#15437](https://github.com/dbt-labs/dbt-core/issues/15437)) - [fusion] Fix BigQuery replay failing on update_columns when Fusion skips the redundant update_table_description call for persist_docs on non-incremental table/view relations - [fusion] Remove seeds from test-to-model blocking logic - [fusion] Name the undefined variable when a Jinja method call fails on an undefined receiver, instead of reporting only the method name - [fusion] Carry the originating identifier on undefined Jinja values so an error names the caller's variable even after the value has been passed into a macro - [fusion] Expose adapter-returned column lists (get_columns_in_relation, get_missing_columns) as mutable Jinja lists so Core macros calling .remove()/.append()/etc. on them work - [fusion] dictsort and items no longer fail on undefined values during parse, and dictsort now returns a list like dbt Core ### Under the Hood - [fusion] Allow opting in to the foundry BigQuery driver with DBT_ADBC_BIGQUERY_USE_FOUNDRY=1. Off by default; equivalent variables are reserved for snowflake and databricks. - [fusion] Separate the LSP diagnostic anchor path from the CLI error display path in the analysis phase - [fusion] test (adapters/bigquery) use foundry driver in tests - [fusion] Gate the manylinux driver-label constants on Linux and test builds so dbt-adbc lints clean on macOS and Windows. - [dbt-core] Added AGENTS.md and skills to aid OSS contributors. - [fusion] Make Jinja YAML deserialization collect diagnostics before reporting them. - [fusion] Type the private package provider field as an enum so packages.yml validates provider values and the azure_devops alias for ado is applied consistently - [fusion] Route additional LSP progress through structured tracing and shared CLI formatters. - [fusion] Coerce text 'true'/'false' in test-result should_warn/should_error columns ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) - [@debrin-og](https://github.com/debrin-og) - [@j-clemons](https://github.com/j-clemons) - [@keithlo](https://github.com/keithlo) - [@koletzilla](https://github.com/koletzilla) ([#14585](https://github.com/dbt-labs/dbt-core/issues/14585)) - [@lottaquestions](https://github.com/lottaquestions) ([#15437](https://github.com/dbt-labs/dbt-core/issues/15437)) - [@mach-kernel](https://github.com/mach-kernel) - [@maxmalkin](https://github.com/maxmalkin) - [@serramatutu](https://github.com/serramatutu) - [@tauhid621](https://github.com/tauhid621) ## 2.0.0-preview.207 Released August 05, 2026 ### Features - [fusion] Add code-generated OpenAPI spec for dbt-docs-server, starting with the health endpoint, served at /api/v1/openapi.json (and interactive docs at /api/v1/docs behind the openapi-ui feature) - [fusion] Implement `compare_unrendered_code` in the dbt State run-cache service: candidates are first matched on unrendered node hashes carried in `dbt_node_state`, falling back to the compiled-SQL hash if those differ. Configurable via `RUN_CACHE_COMPARE_UNRENDERED_CODE` service default and per-node `state: compare_unrendered_code:` override on models, snapshots, and data tests. Also aligns the node-hash encoding with the Python dbt State client so the same node hashes identically on either engine, which is what makes these hashes usable across a dbt Core/Fusion switch. - [fusion] Add `allow_clones` profiles.yml target option to disable dbt State clone candidates by overriding `clone_chain_depth_limit` to 0 ### Fixes - [fusion] Report Fusion's own version to the dbt State service consistently and submit dbt State telemetry session and SQL preparation events. - [fusion] state:modified no longer reports a phantom hook config change when a model configures pre_hook/post_hook via multiple config() calls, a list literal, or both schema.yml and inline SQL - [fusion] Preserve heterogeneous values in Snowflake OBJECT_CONSTRUCT_KEEP_NULL sidecar decompilation - [fusion] Fix sidecar unit-test decompilation when window macros reference qualified columns in join inputs with duplicate names - [fusion] Fix config.set() calls (e.g. via the set_sql_header macro) being silently dropped during parsing, which caused config.sql_header to render as null in the manifest - [fusion] LSP: Fixed panic in state.rs - [fusion] Compute: Fixed VARIANT column support error - [fusion] Wire target_catalog through to the dbt Compute (Alt) adapter, so models written to a Snowflake-backed catalog are normalized with Snowflake identifier-casing rules instead of DuckDB's - [dbt-core] fix (adapters/bigquery) race bugs from adapter.update_columns - [fusion] Keep non-authentication dbt State failures scoped to the affected node - [dbt-core] Apply snapshot dbt_project.yml config off the snapshot fqn, so block-style snapshots honor the '.' config path (matching dbt Core) and UnusedResourceConfigPath (dbt1097) no longer disagrees with what actually applied ([#15723](https://github.com/dbt-labs/dbt-core/issues/15723)) ### Under the Hood - [fusion] Move FsError values into tracing without construction-time cloning. - [fusion] Remove obsolete status reporter plumbing from tracing emit calls. - [fusion] Remove obsolete status reporter plumbing from progress message emissions. ### Contributors - [@Smith](https://github.com/Smith) - [@Will](https://github.com/Will) - [@aiguofer](https://github.com/aiguofer) - [@claude](https://github.com/claude) - [@dataders](https://github.com/dataders) - [@erindru](https://github.com/erindru) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ([#15723](https://github.com/dbt-labs/dbt-core/issues/15723)) - [@mach-kernel](https://github.com/mach-kernel) ## 2.0.0-preview.206 Released August 04, 2026 ### Features - [dbt-fusion] Implement dbt state explain in Fusion - [dbt-extension] The dbt extension now installs and updates the dbt Fusion engine automatically when it manages the binary at the default location; you no longer need to install it manually to get started. - [fusion] Add undocumented `dbt internal get-distribution-info` command for resolving dbt release-channel and distribution info, falling back to ` --version` to infer generation and distribution when a target `dbt` doesn't support the command itself. `--all` now discovers every `dbt` on `PATH` concurrently and skips the doomed `internal` probe for non-native (script) installs, cutting multi-install discovery time substantially. Each probe is now bounded by a wait/graceful-terminate/forceful-kill timeout so a hung or badly-behaved `dbt` on `PATH` can't stall or block discovery indefinitely. When a Homebrew-tap conflict identifies an already-installed dbt Cloud CLI, `get-distribution-info` now also reports its uninstall command - [dbt-extension] When you install the dbt Fusion engine yourself, the dbt extension no longer updates it silently: it asks first, and lets you keep it up to date automatically, upgrade once, or ignore. A new command lets you hand an extension-managed binary back to manual control. - [dbt-core] [BigQuery] Link to docs for Storage API errors ([#15544](https://github.com/dbt-labs/dbt-core/issues/15544), [#13600](https://github.com/dbt-labs/dbt-core/issues/13600)) - [dbt-extension] The compiled SQL preview now refreshes in place when you save the model file while the preview is open ### Fixes - [fusion] Replace `--write-metadata` with `--write-index` in user-facing warning and error messages - [fusion] Fix macro manifest parity for materialization supported languages. - [fusion] Fix state:modified false positives for semantic models and metrics: restore the SemanticEntity/semantic-model-config manifest round-trip, load previous-state metrics for comparison, and align metric content comparison with dbt-core. - [dbt-fusion] Honor a `null` config in the dbt_project.yml models hierarchy so it clears a value inherited from a higher level (starting with `hours_to_expiration`), and ensure a more-specific level's value always overrides a cleared parent, matching dbt Core precedence - [fusion] Omit BASE_LOCATION on Snowflake iceberg and dynamic iceberg tables when the resolved external_volume is unset or explicitly set to the reserved 'SNOWFLAKE_MANAGED' value, so managed-storage Iceberg tables no longer fail with a BASE_LOCATION compilation error - [dbt-extension] The Format File command is now available in the Command Palette. - [dbt-core] Jinja-render semantic layer YAML (metrics, saved queries) like other schema.yml properties, excluding only metric `filter` and `saved_queries.query_params.where`, which stay verbatim for MetricFlow ([#14468](https://github.com/dbt-labs/dbt-core/issues/14468)) - [dbt-core] [BigQuery] Allow list_relations to list relations under hidden datasets - [dbt-core] Stop generate_*_name macros from swallowing raise_compiler_error calls ([#15611](https://github.com/dbt-labs/dbt-core/issues/15611)) - [fusion] Jinja in a macro's description is now evaluated in dbt Core's restricted documentation context, so calling a project macro from a description is an error instead of being executed and inlined into the description - [fusion] Allow one or more Jinja holes to lead or trail a SELECT item list in symbolic/skeleton SQL linting, so macros like dbt_utils.star() or stacked pass-through-column macros that supply their own comma can appear before, after, or repeated around other literal select items - [dbt-core] Fix Compare Changes emitting invalid `FROM ()` SQL for models with `event_time` configured ([#15346](https://github.com/dbt-labs/dbt-core/issues/15346)) - [dbt-core] Report a mismatch between the dbt-cloud project-id in dbt_project.yml and ~/.dbt/dbt_cloud.yml up front, naming the project-id and pointing at the offending line, instead of failing later with a generic missing-configuration error ([#14454](https://github.com/dbt-labs/dbt-core/issues/14454)) - [fusion] The as_bool filter now passes its value through unchanged when rendering text (SQL, macros), matching dbt-core: "true" | as_bool renders true instead of True, and an expression such as `target.name in ['dev'] | as_bool` — which Jinja parses as a containment check against the filtered list — no longer fails with "cannot perform a containment check on this value" - [fusion] Name the undefined argument when a `config()` value is undefined - [fusion] Allow a Jinja hole to trail real join keys in a USING (...) clause in symbolic/skeleton SQL linting - [dbt-core] Fix `timedelta.total_seconds()` truncating to whole seconds, so sub-second durations no longer return `0.0`. Also makes non-zero sub-second timedeltas truthy and normalizes `days`/`seconds`/`microseconds` and `str()` for negative durations, matching Python. ([#15756](https://github.com/dbt-labs/dbt-core/issues/15756)) - [fusion] Fix RF05/CP02 false positives (and a Snowflake parse failure) when a Jinja hole stands in for all or part of an identifier in symbolic/skeleton SQL linting - [fusion] Fix symbolic/skeleton SQL lint false positives (ST06, ST03, AL05, ST11) caused by Jinja holes hiding a select item's real shape or a macro's string-argument references - [fusion] Defer semantic model relations to production when only the semantic model's YAML changed but its underlying model was not rebuilt - [fusion] Snowflake freshness prefetch (and other bulk metadata queries) now switches to a dedicated metadata warehouse once per connection instead of once per query, cutting warehouse-switch overhead for large batches - [dbt-core] Speed up package-qualified macro name resolution (`elementary.foo`, `dbt_utils.bar`). Membership in a package's macro list was a linear scan on every access, so the cost grew with the number of macros in the package; it is now a hash lookup. On a project using elementary (~1000 macros), this takes an `on-run-end` hook that iterates the graph from ~1.6x slower than dbt Core to parity. ([#14455](https://github.com/dbt-labs/dbt-core/issues/14455)) - [fusion] Fault-isolate per-macro typecheck calls so a single macro body that panics inside the type-inference VM no longer crashes the whole parse/run - [fusion] Preserve unit test CTE closures after trailing SQL line comments. - [fusion] Report a clean, located error for a zero-argument `ref()` or `source()` instead of panicking during compilation. Because the panic happened at compile time, one malformed call previously took down parsing for every other model and macro in the project. - [dbt-core] Match models under wildcard path selectors that end at a directory ([#15784](https://github.com/dbt-labs/dbt-core/issues/15784)) - [fusion] Make LSP diagnostics honor warn-error options configured in dbt_project.yml. - [fusion] Resolve Snowflake QUALIFY references against input columns before colliding SELECT aliases. ### Under the Hood - [] Record complete lifecycle telemetry for every local tool-call attempt. - [fusion] Route LSP error and warning diagnostics through the tracing pipeline. - [internal] Fix proj:flock label description exceeding GitHub's 100-character limit - [fusion] dbt-antlr4 v2.0 upgrade - [fusion] Exclude Time Machine snapshots for Internal Analytics jobs 672-279722, 672-706308, 672-944874 and 672-994780, recorded on 2.0.0-preview.203, .204 and .205, from regression testing: PR #12561 made as_bool the identity filter during text rendering (dbt Core parity), so the `env_var(...) | as_bool` on-run-end hook gate in the dbt_pov_model_cost_calculator package is now truthy and those recordings have stale write barriers - [fusion] Exclude Time Machine snapshots for Internal Analytics job 672-7234, recorded on 2.0.0-preview.203, .204 and .205, from regression testing: PR #12561 made as_bool the identity filter during text rendering (dbt Core parity), so the `env_var(...) | as_bool` on-run-end hook gate in the dbt_pov_model_cost_calculator package is now truthy and those recordings have stale write barriers ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#15544](https://github.com/dbt-labs/dbt-core/issues/15544), [#13600](https://github.com/dbt-labs/dbt-core/issues/13600), [#15611](https://github.com/dbt-labs/dbt-core/issues/15611)) - [@ashtonwalden](https://github.com/ashtonwalden) - [@debrin-og](https://github.com/debrin-og) - [@kczimm](https://github.com/kczimm) - [@kendru](https://github.com/kendru) - [@lottaquestions](https://github.com/lottaquestions) ([#15756](https://github.com/dbt-labs/dbt-core/issues/15756), [#14455](https://github.com/dbt-labs/dbt-core/issues/14455)) - [@mach-kernel](https://github.com/mach-kernel) ([#15784](https://github.com/dbt-labs/dbt-core/issues/15784)) - [@r-jais](https://github.com/r-jais) - [@treysp](https://github.com/treysp) ## 2.0.0-preview.205 Released July 31, 2026 ### Fixes - [fusion] dbt lint: do not raise UnionColumnCountMismatch (dbt0165 / AM07) for BY NAME set operations (e.g. UNION ALL BY NAME), which align branches by column name and allow differing column counts - [dbt-core] Fix dbt State on production deployments: exclude exposures from the freshness prefetch, which generated invalid metadata SQL from their empty database and schema; honor an explicit opt-out over DBT_ENGINE_MANAGE_STATE so --no-manage-state and flags.manage_state: false take effect; and resolve dbt State on dbt compile and dbt show, which previously ignored the flag ([#15374](https://github.com/dbt-labs/dbt-core/issues/15374)) - [dbt-core] Databricks: detect a changed view definition so that view_update_via_alter runs ALTER VIEW ... AS before COMMENT ON COLUMN when a new column is added ([#15583](https://github.com/dbt-labs/dbt-core/issues/15583)) - [fusion] LSP fix completions on new/empty model file - [fusion] state:modified no longer reports a phantom `meta` change when a config key was relocated into `+meta` between the previous-state manifest and the current project (e.g. by dbt-autofix, when a config key has no field on Fusion's typed config struct) - [fusion] Jinja in macro YAML properties is now evaluated once per parse instead of twice, so a description or meta value that calls something with a side effect (e.g. log()) no longer runs it twice. - [dbt-extension] Restore the Beta label on the Compare panel. - [fusion] A failed on-run-end hook no longer records successfully-materialized models as error in run_results.json. Models that materialized keep their success status, and each on-run-end hook is now recorded as its own operation.. node (matching dbt-core). As a result dbt retry finds nothing to retry after an on-run-end failure instead of rebuilding the entire project. - [fusion] Recognize `constraints` as a valid model `config()` key (previously rejected as an unrecognized key), matching dbt-core's behavior of accepting it without enforcing it — only the schema.yml `constraints:` model property is enforced. Cache-invalidation systems like dbt State/Run Cache now correctly react to constraint changes authored either way. - [fusion] Allow a CTE name in a WITH clause to be a Jinja hole for symbolic/skeleton SQL linting, without making every identifier position holeable - [fusion] Fix dbt State run-cache extraction treating a custom materialization's compiled SQL as having zero upstream dependencies when it is a bare qualified relation reference (e.g. some BigQuery custom materializations), causing the node to be skipped forever instead of being invalidated by real upstream changes - [fusion] Avoid an unnecessary speculative dbt State request when the dependency last-modified prefetch completes during view-definition traversal; readiness is re-checked at the last responsible moment so the node submits non-speculatively with resolved epochs instead. - [fusion] Treat loop.first the same as loop.last in symbolic/skeleton SQL linting's single-iteration for-loop simulation, so a connective conditionally prepended before every non-first iteration (e.g. {{ 'or' if not loop.first }}) is correctly dropped instead of being mistaken for a complete predicate - [fusion] Match read-only compile-time probes such as dbt_utils.date_spine out of order during Mantle replay, and widen the Databricks probe handling - [fusion] A docs block whose name is not a valid identifier no longer discards every other docs block in the same file ### Under the Hood - [internal] Add .cursorrules symlink for Cursor IDE support - [internal] Replace per-struct helper functions in config DefaultTo impls with a DefaultTo trait and ReplaceIfNone marker, eliminating default_hooks, default_quoting, default_docs, default_meta_and_tags, default_classifiers, default_packages, default_column_types, and default_to_grants helpers - [internal] Grant actions:read to wizard-nightly workflow so the delta-vs-previous-nightly summary can list workflow runs and download the previous JUnit artifact. - [dbt-core] `AdapterResponse` is now backed by a `ValueMap`. This paves the way to adding arbitrary keys to `AdapterResponse`. - [fusion] dbt State: port `DbtNodeState` submission from Python to Rust - [fusion] Introduce DefaultTo trait and derive macro for config inheritance - [fusion] Standardize listify-newtype serialization by generating Serialize/Deserialize impls via macro instead of per-field serde attributes - [fusion] Add a run-cache unit test pinning that a model materialized as a built-in name (e.g. table) whose materialization macro is shadowed by a user-defined macro is classified as a custom (DBT_CUSTOM) execution type. - [internal] Add proj:flock GitHub label to the canonical label taxonomy - [internal] `cargo conformance report` now ranks error codes and templates by distinct project_id (customer eligibility) instead of raw line count, and the report home page gains an "adapters affected" (>= N named adapters) filter - [fusion] dbt State: port persist_docs semantic extra ### Contributors - [@LukaDevic](https://github.com/LukaDevic) - [@VaggelisD](https://github.com/VaggelisD) - [@aiguofer](https://github.com/aiguofer) - [@ashtonwalden](https://github.com/ashtonwalden) - [@erindru](https://github.com/erindru) - [@j-clemons](https://github.com/j-clemons) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) - [@mach-kernel](https://github.com/mach-kernel) - [@serramatutu](https://github.com/serramatutu) ## 2.0.0-preview.204 Released July 29, 2026 ### Features - [dbt-extension] Support column selectors in lineage filter input and display column lineage filter in toolbar during CLL - [fusion] Test optimization to skip provably redundant tests - [fusion] Support Databricks Azure service principal (Microsoft Entra ID) authentication via `azure_client_id`/`azure_client_secret` (auth_type `azure-client-secret`), matching dbt-core/dbt-databricks - [dbt-extension] Add a proper LspClientConfig object for LSP workspace configuration, refreshed on startup and before every compile, with backward-compatible parsing of legacy settings - [fusion] Add --infer-schemas, --skip-type-checking, and --show-sources flags for catalog-free binding to bind SQL without introspection. - [fusion] Support column aliases in Snowflake UNPIVOT clause - [fusion] Add machine-readable JSON output for dbt --format json --version - [fusion] Add opt-in Redshift grants support for groups and roles - [fusion] Support dbt node selection (--select/--exclude/--selector) for lint and format in both symbolic and rendered render modes - [dbt-extension] The dbt extension now installs and updates the dbt Fusion engine automatically when it manages the binary at the default location; you no longer need to install it manually to get started. - [fusion] Add dbt fmt --check to verify formatting without writing changes - [fusion] Add error_code and error_message fields to the dbt login Vortex telemetry event - [fusion] dbt State: speculatively submit models, snapshots, and data tests while the dependency last-modified prefetch is still in flight, so nodes no longer block on the full prefetch before a cache decision - [fusion] Report the dbt invocation ID (and dbt platform run ID when present) with dbt State telemetry so runs can be correlated end to end - [fusion] Skip provably redundant accepted-values data tests - [fusion] Add untyped binding into binaries by default. - [fusion] When a Snowflake metadata warehouse is configured, dbt State now fetches table last-modified freshness metadata with one query per schema in parallel (bounded by the configured thread count), instead of running the per-schema dumps sequentially - [fusion] Support dbt State configs on snapshots and data tests ### Fixes - [dbt-fusion] Treat unresolvable Snowflake views as stale for dbt State reuse decisions. - [fusion] Fix state modified selection for hook and test alias diffs - [fusion] Preserve lowercase Snowflake SHOW and DESCRIBE result column names so dbt_constraints can access run_query columns and rows. - [fusion] Make dbt State disable itself and continue when accounts are disabled or locked, while keeping user-actionable auth errors fatal. - [fusion] Fix config precedence bug where +schema: null or +database: null in dbt_project.yml incorrectly overrode schema/database values set in schema.yml properties files - [fusion] Fix Snowflake GROUP BY resolution for placeholder columns and same-named aliases - [fusion] Fix outer-reference rewrite for deeply nested correlated subquery expressions - [fusion] Avoid flagging unaliased BigQuery FROM subqueries before UNNEST as ST05 join subqueries - [dbt-core] Expose SQLFluff rule codes on lint warnings so targeted noqa suppression works. ([#15549](https://github.com/dbt-labs/dbt-core/issues/15549)) - [dbt-core] Fix the `@` graph operator (and the equivalent `childrens_parents` YAML selector) returning an empty set when applied to a leaf node. It now correctly returns the node together with its ancestors. ([#15280](https://github.com/dbt-labs/dbt-core/issues/15280)) - [fusion] dbt retry now runs exactly the nodes recorded as retryable in run_results.json, matching dbt-core, instead of re-expanding that selection with eager indirect selection. It no longer pulls in tests the original command never ran: data tests attached to a retried model when retrying dbt run, already-passed unit tests, or tests excluded by the original --indirect-selection / --exclude (which could also turn a passing retry into a failure when the excluded test had a second, unbuilt parent). - [dbt-core] Fix range() returning incorrect values when using negative steps. ([#15585](https://github.com/dbt-labs/dbt-core/issues/15585)) - [fusion] Add support for UNNEST operator in Redshift. - [dbt-core] Correct the naming of install_prerelease field in packages.yml - [dbt-core] Align inherited +tags order with dbt-core (parent then child, no alphabetical sort) ([#15590](https://github.com/dbt-labs/dbt-core/issues/15590)) - [fusion] Skip static analysis for models with a custom materialization. - [dbt-core] reject incremental models with contract enforcement and invalid on_schema_change ([##14572](https://github.com/dbt-labs/dbt-core/issues/#14572)) - [fusion] Match dbt Core's fromjson fallback behavior by returning the default value, or None, when JSON parsing fails - [fusion] Snowflake Horizon (built-in) iceberg tables no longer fail to compile when a resolved `transient` config is present., whether inherited from a project-wide default or set explicitly on the model. - [fusion] Skip legacy task-cache source freshness prefetches during managed State runs. - [fusion] Fixed agate tuple rendering in Jinja output to avoid an extra trailing comma before the closing parenthesis. - [fusion] Allow symbolic lint placeholders from dbt ref and source calls to behave like table references in relation clauses. - [fusion] Support ConstraintNotEnforced and ConstraintNotSupported in warn_error_options, and emit these warnings when an adapter does not enforce or support a model/column constraint - [dbt-core] Fix Snowflake column_types parsing to accept COLLATE before NOT NULL in a column description ([#15228](https://github.com/dbt-labs/dbt-core/issues/15228)) - [fusion] Normalize deprecation_date to a timezone-aware timestamp in manifest.json so dbt Core consumers can parse it without a TypeError - [fusion] Preserve cast result types in grouped expressions to avoid false column type mismatch warnings. - [fusion] Preserve cached dbt State data test warning outcomes when replaying reused test results. - [dbt-core] [BigQuery] Detect cluster_by order changes only when fields change ([#9923](https://github.com/dbt-labs/dbt-core/issues/9923)) - [dbt-core] Show with ephemermal ref missing rendered ephemeral node ([#15260](https://github.com/dbt-labs/dbt-core/issues/15260)) - [fusion] Fold the microbatch event-time window into the run-cache key so re-running a microbatch model over an unchanged window is a whole-model no-op while a different window executes - [fusion] Fix source table-level config incorrectly overriding root project overlay for dependency package sources - [fusion] Support model.update() in dbt Jinja model contexts. - [dbt-core] Fix dbt.compileFile returning a stale URI when the compiled target directory was removed after the node was already evaluated - [fusion] Fix cross-package macro attribute-access calls missing from depends_on.macros - [fusion] Fix macro nodes always having empty depends_on.macros in manifest - [fusion] Support --resource-type and --exclude-resource-type filters for dbt test. - [fusion] Preserve microbatch event-time filtering when ref and source are overridden through the builtins namespace - [fusion] Preserve default schema on dbt State enriched SQL requests, including data tests without target tables. - [fusion] Bring dbt-state's semantic-extras key list up to parity with the Python query-cache client, wiring the newly-added model/snapshot/test config keys (contract, constraints, cluster_by, unique_key, grants, event_time, sql_header, lookback, partition_by, table_format, and dialect-specific attributes) into the actual cache-key extraction so config changes to these fields trigger re-execution instead of a stale NO-OP - [fusion] Submit standard incremental models that use a custom incremental_strategy macro to dbt State as DBT_CUSTOM instead of warning and forfeiting caching - [fusion] Implement DuckDB translation for regexp_like (full-match RLIKE with flag pass-through) for sidecar compute - [fusion] Implement sha2 (SHA-256) translation for sidecar compute. - [dbt-core] Render a source's loaded_at_query through Jinja during dbt State prefetch so macros (and {{ this }}) resolve before the freshness query reaches the warehouse ([#15499](https://github.com/dbt-labs/dbt-core/issues/15499)) - [fusion] Fix SQL mismatch false positives for dbt_date and dbt_utils macros (e.g. date_spine) in Time Machine replay by treating read-only execute calls (SELECT/SHOW) as unordered across segment boundaries, and removing hardcoded AdapterType::Snowflake from replay argument matching - [fusion] Fix BigQuery snapshot `ALTER TABLE ... ADD COLUMN` to include the database qualifier - [fusion] Implement md5_number_upper64 (upper 64 bits of MD5 as decimal) translation for sidecar compute. - [fusion] Translate array_unique_agg to duckdb array_agg(DISTINCT) with a not-null filter - [dbt-core] Make `dbt fmt` idempotent for a `{% if %}` block inside a WHERE clause; the block tag's indentation no longer oscillates between runs ([#15657](https://github.com/dbt-labs/dbt-core/issues/15657)) - [fusion] dbt State: Start sending `clone_chain_depth_limit` to the server to help make correct clone decisions - [fusion] Fix unit test overrides.macros.run_started_at raising unknown method strftime errors - [fusion] Fix dbt State clearing a table's cached last-modified epoch after its own submit decision (even when reused/skipped), which caused a spurious per-node freshness fallback query and StateServiceWarn (dbt1410) warning for any downstream model that ref()s it directly, on every build. - [fusion] Implement object_insert translation for sidecar (DuckDB) compute - [fusion] Evict a node's cached last-modified epoch and existence after it executes without a confirmed dbt State request because the request failed, so downstream nodes in the same invocation are not incorrectly skipped based on stale freshness - [fusion] Unit test fixtures with invalid columns now error instead of warning and passing - [dbt-core] Fix spurious UnusedResourceConfigPath warning for models disabled via dbt_project.yml on incremental/partial-parse runs, caused by disabled nodes not being seeded from the parse cache before the unused-config check ran. ([#15348](https://github.com/dbt-labs/dbt-core/issues/15348)) - [dbt-core] Calls to Snowflake stored procedures that return `TABLE` no longer panic with a driver fatal error ([#15661](https://github.com/dbt-labs/dbt-core/issues/15661)) - [fusion] Implement object_delete translation for sidecar (DuckDB) compute - [fusion] Translate REGEXP_SUBSTR_ALL and REGEXP_EXTRACT_ALL to DuckDB - [fusion] Skip static analysis for custom materializations that shadow a built-in name (e.g. table, incremental), matching the existing behavior for novel-named custom materializations. Fixes malformed SQL when such a materialization guards graph.nodes introspection behind {% if execute %}. - [dbt-core] (fix adapters/databricks) don't treat empty tokens as PATs - [fusion] Exclude the Fusion-only `static_analysis` config from `state:modified` comparisons for sources, snapshots, functions, and analyses, matching dbt-core (which has no such field) - [fusion] Restore write-barrier consumption by method name only in Time Machine semantic replay; SQL content validation happens downstream via the existing sanitizer-aware check, avoiding false-positive "no recorded event" failures for writes with legitimate dynamic content (e.g. audit-log timestamps) - [fusion] Avoid panicking on out-of-range timestamps (e.g. far-future TIMESTAMP_NTZ sentinel values) when converting Arrow timestamp arrays to Jinja values; treat them as null, consistent with other date/time converters - [fusion] Use dispatch-based custom-materialization detection in the run cache (model execution type and parse-failure dependency extraction), so models whose built-in materialization is shadowed by a user-defined macro are consistently treated as custom. - [fusion] Fix Snowflake unary arithmetic on numeric strings in sidecar compute. - [fusion] Support Snowflake TIME columns in unit test fixtures. - [fusion] Fail fast instead of hanging for 300s when dbt State needs to authenticate but no interactive terminal is available (CI, batch replay); this now surfaces as a graceful skip like other dbt State unavailability cases instead of a hard AuthFailed error - [fusion] dbt retry now treats a warn node as retryable only when the retry invocation passes --warn-error, matching dbt-core. Previously retry always re-ran warned nodes, so a severity: warn test that kept warning was re-run on every retry and --warn-error had no effect. The 'Retrying N nodes' banner also no longer describes retried nodes as failed. ### Under the Hood - [fusion] Complete the move from local LiteLLM to native provider routing with privacy-safe telemetry. - [fusion] add typed build_run_node_ctx seam and migrate dbt-freshness onto it - [internal] Prepend the wizard target/debug directory to PATH in the nightly workspace step so codex-exec-server sandbox tests can find the wizard-built bwrap binary (the CI container image has no system bwrap). - [internal] Temporarily skip the cleanup_schema_fusion_regression_testing_clone test: Depot runners lack the correct Snowflake (snowflake-private) permissions, so the test cannot authenticate for now. - [fusion] Add BigQuery regression test for UNPIVOT/PIVOT postfix operators following a templated ref/source hole in symbolic lint. - [dbt-index] Add --workspace-root flag to dbt-index serve for automatic project discovery - [internal] Correct stale duckdb example in adapter gate doc (.agents/adapters.md); DuckDB is GA and not gated behind DBT_ALLOW_EXPERIMENTAL_ADAPTERS - [dbt-core] (snowflake, redshift) respect quoting configs literally when building the metadata queries - [fusion] Exclude Riot Games snapshot 2.0.0-preview.202-act_2OZKSMo9ywDKDSc4zlxJFqdUcSB-369145-1003470-500676323 from regression release runs; it cannot replay due to missing project credentials when dbt state is run ### Contributors - [@AndreaBozzo](https://github.com/AndreaBozzo) ([#15280](https://github.com/dbt-labs/dbt-core/issues/15280)) - [@HannanNaeem](https://github.com/HannanNaeem) - [@VaggelisD](https://github.com/VaggelisD) - [@aiguofer](https://github.com/aiguofer) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#9923](https://github.com/dbt-labs/dbt-core/issues/9923)) - [@arijitroy003](https://github.com/arijitroy003) ([#15585](https://github.com/dbt-labs/dbt-core/issues/15585)) - [@b-per](https://github.com/b-per) - [@benhurstephen](https://github.com/benhurstephen) ([#15590](https://github.com/dbt-labs/dbt-core/issues/15590)) - [@chayac](https://github.com/chayac) - [@claude](https://github.com/claude) - [@colin-rogers-dbt](https://github.com/colin-rogers-dbt) - [@dataders](https://github.com/dataders) - [@erindru](https://github.com/erindru) - [@izeigerman](https://github.com/izeigerman) - [@j-clemons](https://github.com/j-clemons) ([#15260](https://github.com/dbt-labs/dbt-core/issues/15260)) - [@kczimm](https://github.com/kczimm) - [@kendru](https://github.com/kendru) - [@lottaquestions](https://github.com/lottaquestions) - [@lukadevic](https://github.com/lukadevic) - [@mach-kernel](https://github.com/mach-kernel) - [@maxmalkin](https://github.com/maxmalkin) - [@r-jais](https://github.com/r-jais) - [@ragesh-g](https://github.com/ragesh-g) - [@serramatutu](https://github.com/serramatutu) ([#15661](https://github.com/dbt-labs/dbt-core/issues/15661)) - [@zhong-xu](https://github.com/zhong-xu) ## 2.0.0-preview.203 Released July 22, 2026 ### Features - [dbt-fusion] Implement selector selector method - [fusion] Add Docker and docker compose support for self-hosting the dbt docs server (dbt docs serve) - [internal] Add Pi as an ADE-Bench agent with native usage metrics and plugin support. - [internal] Add per-adapter percentage columns to cargo conformance log-overlap's templates.parquet, HTML report, and CSV export - [fusion] Add unit tests to the Jinja graph object ### Fixes - [dbt-fusion] Fixed file-system reserved characters in FQNs from being included in paths by replacing them with double underscores. - [fusion] on-run-end hooks can now call datetime methods such as .replace(tzinfo=...) and .strftime(...) on result.timing[*].started_at and .completed_at fields. - [fusion] Versioned models: per-version docs (show/node_color) now override top-level model docs, matching dbt-core behavior - [fusion] [Redshift] Honor the `is_serverless` profile flag (plus `serverless_work_group` and `serverless_acct_id`) so Serverless workgroups reached via a non-serverless host (e.g. an SSM port-forward) are treated as Serverless and no longer require `cluster_id`, matching dbt Core. - [fusion] Generic tests with auto-truncated names now correctly set config.alias and unrendered_config.alias in the manifest, matching dbt-core behavior - [dbt-core] Database (and other execution-time) errors during test execution now always surface as a run error, independent of the test's severity config; severity only governs successfully-returned test results, matching dbt Core ([#15514](https://github.com/dbt-labs/dbt-core/issues/15514)) - [fusion] Fixed cancelled models sometimes being reported as Passed or Succeeded - [dbt-core] INT64 partitioned tables now use the proper partition bucket names. ([#15464](https://github.com/dbt-labs/dbt-core/issues/15464)) - [dbt-core] BigQuery driver used to crash whenever the resulting dataset contained INT64 pseudocolumns. ([#15464](https://github.com/dbt-labs/dbt-core/issues/15464)) - [fusion] Prefer DBT_ENGINE_* environment variables over their legacy DBT_* aliases when both are set - [dbt-fusion] Always emit the full set of per-node keys in run_results.json (including `failures` as null for skipped nodes), matching dbt Core and fixing downstream consumers such as the dbt-artifacts package - [fusion] Fixed empty flag issue where no real data is being written - [fusion] Fixing dbt clone message for ephemeral models, should be skipping instead of giving No relation found output - [fusion] Keep dbt State initialization available when schema metadata prefetch fails by caching unknown freshness for the affected schema group. - [fusion] Naive Python datetime values now render %z and %Z as empty strings in strftime(), matching Python behavior. ### Under the Hood - [fusion] Migrate Redshift dbt-auth to the standard IR/pipeline configuration architecture used by other adapters ### Contributors - [@@tanukifk](https://github.com/@tanukifk) - [@aiguofer](https://github.com/aiguofer) - [@ash2shukla](https://github.com/ash2shukla) - [@jcserv](https://github.com/jcserv) - [@kczimm](https://github.com/kczimm) - [@r-jais](https://github.com/r-jais) - [@serramatutu](https://github.com/serramatutu) ([#15464](https://github.com/dbt-labs/dbt-core/issues/15464), [#15464](https://github.com/dbt-labs/dbt-core/issues/15464)) ## 2.0.0-preview.202 Released July 21, 2026 ### Fixes - [dbt-fusion] Fix stale sourced_remote schema cache for DuckDB adapter causing unit test fixture column mismatches after model schema changes - [fusion] Fixed a TOCTOU race in dbt-loader that could panic when a dbt project was loaded concurrently from multiple threads, by initializing DISPATCH_CONFIG with get_or_init instead of a check-then-set - [fusion] Specify file/line number causing dbt source freshness dbt1501 Macro error. Added testing for error as well - [fusion] Fix BigQuery unit test CTE aliases for quoted project identifiers. - [fusion] Skip static analysis for models with a custom materialization. - [internal] Fix cargo conformance collect finding zero failing runs due to a Datadog boolean casing mismatch - [fusion] Windows install script no longer overwrites an existing PowerShell $PROFILE with an empty file when setting the dbt alias - [fusion] Emit unsupported engine environment variable and source status warnings through structured tracing - [dbt-core] Render {{ this }} as the physical relation instead of a self-referential CTE for ephemeral models, matching dbt-core ([#13961](https://github.com/dbt-labs/dbt-core/issues/13961)) ### Under the Hood - [fusion] Parse the DBT_ENGINE_USE_V2_PARSER environment variable as a recognized no-op - [fusion] Refactor CompileBaseCtx to remove the DummyConfig config slot; introduce OperationCtx and typed builders build_compile_base_ctx / build_operation_context - [fusion] add typed flatten composition seam to node ctxs - [fusion] Parse the --use-v2-parser / --no-use-v2-parser CLI flags as a recognized no-op - [internal] Update Databricks mesh conformance goldies for new TABLE_OR_VIEW_NOT_FOUND 'Search path' error line ### Contributors - [@b-per](https://github.com/b-per) - [@itsannbat](https://github.com/itsannbat) - [@mach-kernel](https://github.com/mach-kernel) ## 2.0.0-preview.201 Released July 20, 2026 ### Features - [dbt-fusion] Provide option of using default profile.yml during init - [dbt-fusion] Allow continue running children on parent error - [dbt-fusion] Support overloaded UDFs via overrides block in function YAML - [internal] Add `cargo xtask apply-ci-goldies` to fetch CI logs via `gh` and apply golden-file patches onto the current worktree. - [dbt-index] End-to-end MCP cancellation: codex-rs now sends notifications/cancelled to dbt-index when tool calls are dropped, and dbt-index kills running dbt child processes on cancellation - [dbt-index] Multi-project workspace support for dbt-index: single process serves multiple project indexes via --add-workspace flags - [fusion] Support GROUP BY ALL syntax in Redshift - [fusion] Support column aliases in Snowflake UNPIVOT clause - [fusion] Support pseudocolumns (e.g. BigQuery's _FILE_NAME) in unit tests - [fusion] Add the dbt.import_ctes (DBT01) lint rule, requiring every ref()/source() to be imported through a top-level CTE ### Fixes - [dbt-fusion] Fix two-part object names (schema.table) not resolved when schema is marked as missing in remote - [dbt-fusion] Support PIVOT with AS alias in IN-list and DEFAULT ON NULL in Snowflake - [dbt-fusion] Respect DEFAULT parameter values in Snowflake UDF overload resolution - [dbt-fusion] Always show a fallback line in the Test Failures summary for failed tests, even when no diff table or stored failures relation is available - [fusion] Allow state-org-id in the dbt-cloud block of dbt_project.yml. - [fusion] model.batch.event_time_start and model.batch.event_time_end are now datetime objects in Jinja context, enabling .strftime() and other datetime methods to work as in dbt Core - [fusion] Force dbt State cache misses for BigQuery external table sources whose metadata timestamps do not reflect backing data changes. - [fusion] Populate warning/error code and name in legacy Core-compat JSON log output - [fusion] Match dbt-core manifest macro dependencies for built-in not_null and unique tests. - [fusion] Match dbt-core by ignoring the legacy tests alias on versioned model versions. - [dbt-core] Accept Core manifest value shapes. ([#15169](https://github.com/dbt-labs/dbt-core/issues/15169), [#14570](https://github.com/dbt-labs/dbt-core/issues/14570)) - [fusion] BigQuery: emit the `expiration_timestamp` relation option (and render options in dbt-core's insertion order) when `hours_to_expiration` is present but renders to a non-numeric value such as `null`, matching dbt Core instead of dropping the option - [dbt-core] (dbt-auth): Bigquery: Better error handling and messages to guide uses using api_endpoint with emulators and other strict hosts ([#14615](https://github.com/dbt-labs/dbt-core/issues/14615)) - [internal] Remove legacy LiteLLM routing for native Databricks BYOK requests. - [fusion] Do not use unit test configs for state:modified determination - [internal] Fix TUI crash when sending messages to closed or unavailable subagent threads - [dbt-core] [BigQuery] Drop Storage API permission requirement when listing schemas ([#14631](https://github.com/dbt-labs/dbt-core/issues/14631)) - [fusion] (state:modified) Restore rendered comparison of freshness in source nodes - [fusion] (adapters/redshift) sync v1 Jinja macros using https://github.com/dbt-labs/dbt-adapters/commit/9fce78f44db248ba33832c0f65c884a5139c0169 - [fusion] LSP: Fixed .sqlfluff files causing recompilation if there inside dbt_packages - [fusion] Include file paths on missing doc macro warnings and suppress empty-path duplicates. - [fusion] dbt lint no longer reports AM04 for resolvable select-star passthroughs over dbt relations. - [internal] Make Wizard release version resolution retry-safe and propagate LLM-friendly Cargo check failures. - [dbt-core] Avoid RF06 autofix removing BigQuery quotes from date column references. ([#15351](https://github.com/dbt-labs/dbt-core/issues/15351)) - [fusion] Preserve source relation quoting during rendered lint so Snowflake sources with reserved identifiers parse correctly. - [fusion] Fix Snowflake GROUP BY resolution for placeholder columns and same-named aliases - [fusion] Fix outer-reference rewrite for deeply nested correlated subquery expressions - [fusion] Retire the last unrendered-enhanced key comparisons in state:modified (in function nodes) - [dbt-core] (adapters/redshift) relation cache tracks relations' dependencies; bring the view materialization in sync with v1 ([#15467](https://github.com/dbt-labs/dbt-core/issues/15467)) - [fusion] Added filename + line number reporting to freshness error messages when count/period is not present - [fusion] Match dbt-core unique filter behavior for modules.datetime.date values. - [dbt-extension] Compare Changes now materializes the selected model with dbt run instead of dbt build, so it no longer runs tests/snapshots/seeds — making compares faster and preventing unrelated test failures from blocking the compare - [internal] Preserve late Gemini system and developer updates in continued sessions. - [fusion] Fix dbt State schema-level freshness dump returning empty for Snowflake schemas with lowercase names in dbt_project.yml, causing an unnecessary fallback to per-relation freshness queries. - [fusion] Preserved successful Snowflake freshness metadata when another database batch is inaccessible - [dbt-core] Support Redshift statement cancellation. Now pressing Ctrl-C during a dbt run will abort the statements server-side and early exit. ([#15494](https://github.com/dbt-labs/dbt-core/issues/15494)) - [fusion] Added DBT_RESOURCE_TYPES / DBT_EXCLUDE_RESOURCE_TYPES env variables to dbt build --help - [fusion] (state:modified) Stop treating function tags/group changes as config modifications on the sparse-fallback comparison path - [dbt-core] dbt-sa-cli force defer introspective nodes on compile ([#15569](https://github.com/dbt-labs/dbt-core/issues/15569)) - [fusion] Count failed unit tests correctly in interactive progress output - [dbt-core] [BigQuery] Allow get_relation to find tables in hidden datasets ([#14635](https://github.com/dbt-labs/dbt-core/issues/14635)) - [internal] Support native BYOK provider catalogs without a local LiteLLM sidecar: configured providers are listed, selected, and persisted, requests route through native provider implementations, Bedrock model mappings normalize to their target model IDs, and disabled or unusable providers are excluded from /model. - [fusion] LSP: Fixed LSP panic when a 'dbt clean' was invoked - [internal] Preserve explicit model-provider provenance across native exec and embedded thread lifecycle requests. - [fusion] Add support for UNNEST operator in Redshift. - [fusion] Skip post-success warehouse metadata refreshes for dbt State executions without confirmation tokens when a heuristic timestamp is available. - [fusion] Treat Snowflake TEMPORARY relations as tables in list_relations to prevent a panic when SHOW OBJECTS returns a session-scoped temp table - [internal] ci(regression): exclude stale EQT preview.194 snapshot (project 175956220183752) that predates the get_columns_in_relation call added in PR #11517 - [fusion] Clear stale dbt State final metadata after successful no-confirmation executions so downstream misses use the planned prefetch path, including BigQuery schema prefetch. - [dbt-extension] Trial users can now use licensed editor features (CTE preview, column-level lineage, and column renaming) once a trial license is issued. ### Under the Hood - [internal] Add support for dbt-databricks adapter function recordings - [internal] Run codex-exec tests in wizard CI (Phase 4 of #11762). 97 tests running, 22 ignored due to wizard's openai_base_url config drift after #11787. - [fusion] Run codex-core tests in wizard CI (Phase 5 of #11762). ~2673 tests running, ~324 ignored pending later investigation. - [fusion] Isolate live Snowflake classifier tests in per-invocation temporary schemas so concurrent CI runs of the same test can no longer clobber each other's warehouse state - [fusion] Run 7 more wizard-modified crates in CI (Phase 6 fast subset of #11762): codex-models-manager, codex-model-provider, codex-app-server-protocol (full), codex-model-provider-info, codex-features, codex-config, codex-thread-manager-sample. - [fusion] Add wizard-nightly.yml workflow (Phase 7 of #11762): nightly full-workspace nextest run as safety net for pristine-upstream crates and full-suite versions of crates only partially tested in per-PR CI. Triggers: 8am UTC schedule, workflow_dispatch, push to **wizard-full-ci** branches. - [fusion] state:modified config-comparison conformance - refactoring retrospective and agent instructions - [fusion] Centralize BigQuery unit-test cast check in reusable TypeOps method ### Contributors - [@LukaDevic](https://github.com/LukaDevic) - [@aahel](https://github.com/aahel) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#14631](https://github.com/dbt-labs/dbt-core/issues/14631), [#14635](https://github.com/dbt-labs/dbt-core/issues/14635)) - [@ash2shukla](https://github.com/ash2shukla) - [@chrispasakarnis](https://github.com/chrispasakarnis) - [@connie-carey](https://github.com/connie-carey) - [@eakmanrq](https://github.com/eakmanrq) - [@itsannbat](https://github.com/itsannbat) - [@j-clemons](https://github.com/j-clemons) ([#15569](https://github.com/dbt-labs/dbt-core/issues/15569)) - [@katieclaiborne-duet](https://github.com/katieclaiborne-duet) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) - [@mach-kernel](https://github.com/mach-kernel) ([#15169](https://github.com/dbt-labs/dbt-core/issues/15169), [#14570](https://github.com/dbt-labs/dbt-core/issues/14570)) - [@maxmalkin](https://github.com/maxmalkin) - [@ragesh-g](https://github.com/ragesh-g) - [@serramatutu](https://github.com/serramatutu) ([#15494](https://github.com/dbt-labs/dbt-core/issues/15494)) - [@vaggelisd](https://github.com/vaggelisd) - [@zhong](https://github.com/zhong) - [@zhong-dbtlabs](https://github.com/zhong-dbtlabs) ## 2.0.0-preview.200 Released July 13, 2026 ### Features - [dbt-extension] Add native dbt Jinja syntax highlighting for SQL files in the VS Code extension. - [dbt-extension] Add signature highlighting for dbt Fusion `-- funcsign:` type annotations in SQL files in the VS Code extension. - [internal] Add GPT-5.6 Sol, Terra, and Luna to OpenAI BYOK model selection for both providers, default new installs to gpt-5.6-sol, and self-heal stale persisted model defaults. - [internal] Add native Gemini BYOK support for direct Gemini model slugs, bypassing local LiteLLM. ### Fixes - [fusion] Normalized back-slashes to forward-slashes for path, original_file_path and patch_path - [dbt-extension] VSCE fix query result ordering in Copy to CSV/Open in Editor - [fusion] state:modified — retire the per-key unrendered config grafts for models and sources - [dbt-core] BigQuery ML inference table functions (e.g. ML.PREDICT) that take a MODEL argument no longer raise a cryptic dbt0101 parse error; static analysis now reports a clear, actionable message directing to static_analysis = 'off' ([#13740](https://github.com/dbt-labs/dbt-core/issues/13740)) - [fusion] Ensure data tests submit zero freshness tolerance to dbt State. - [fusion] Allow dbt State submissions to include upstream dependencies whose last modified timestamp could not be resolved, instead of bypassing state for the model. - [fusion] Bump BigQuery ADBC driver to 0.21.0.dev+dbt0.21.13, wiring HTTPS_PROXY/NO_PROXY support into the OAuth token-exchange transport ### Under the Hood - [internal] Run codex-protocol, codex-login, codex-local-litellm, codex-sandboxing, codex-mcp-server, codex-core-plugins, and codex-rmcp-client tests in wizard CI. Twenty tests are ignored with tracking references (dbt-labs/fs#11762) because they assert on upstream branding, .codex paths, or the upstream binary name; rest of each crate is green. Phase 3 of #11762. ### Contributors - [@dataders](https://github.com/dataders) - [@eakmanrq](https://github.com/eakmanrq) - [@j-clemons](https://github.com/j-clemons) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ([#13740](https://github.com/dbt-labs/dbt-core/issues/13740)) - [@vaggelisd](https://github.com/vaggelisd) ## 2.0.0-preview.199 Released July 10, 2026 ### Features - [internal] Add internal-only Fireworks BYOK provider and fireworks/glm-5.2 model mapping - [internal] Emit DbtWizardProviderValidation vortex event on every credential validation attempt (onboarding and /providers settings flows), including outcome class and continued_anyway. No raw error strings or key material in the payload. - [internal] Add native OpenAI BYOK routing for Wizard so OpenAI-family models can use direct OpenAI APIs without starting the local LiteLLM sidecar. ### Fixes - [fusion] Fix `show --inline` broken when root package is disabled - [fusion] state:modified no longer flags seeds or snapshots whose config uses environment-aware Jinja (e.g. persist_docs, quote_columns, grants, meta), and now correctly detects genuine changes to a snapshot's meta while no longer over-selecting snapshot group-only changes: seeds and snapshots join the wholesale unrendered_config comparison (dbt-core#15286). - [fusion] Retry transient network failures (connect/timeout/reset, 5xx) when fetching remote and trial licenses, and surface the underlying error cause instead of an opaque "Network error" - [fusion] Fetch the license inline on dbt login again so it is cached before the command returns and is not cancelled on shutdown - [fusion] Hide the internal --write-metadata flag in favor of --write-index, fix 'dbt parse --write-index' to generate the index instead of failing with a save_artifact_meta IO error, and make the dbt-index warnings reference --write-index and respect warn_error_options - [fusion] Reduce BigQuery dbt State freshness fanout by using schema-level metadata refreshes for non-override submit-time misses. - [dbt-extension] Show implemented SQLFluff lint warnings in the VS Code Problems tab instead of filtering some rule codes out. - [fusion] Jinja parser now accepts keyword-argument names spelled like literal keywords (none, true, false), e.g. namespace(gold=0, unknown=0, none=0), matching dbt Core. Previously these raised MacroSyntaxInvalid (dbt1502): non-keyword arg after keyword arg. - [fusion] Support non-ASCII Jinja macro names in Fusion parsing. - [fusion] Translate legacy BigQuery seed `+column_types` aliases (e.g. `float`, `integer`, `text`) to their canonical types (FLOAT64/INT64/STRING) instead of failing with 'Invalid column description', matching dbt Core ### Under the Hood - [internal] wizard-integration-tests dbt_index scenarios cover wizard's auto-inject path (dbt_project_detected, wizard-managed sidecar command, startup barrier, purpose-field wrapper). - [internal] Run codex-mcp, codex-wizard-config, and wizard-dbt-adapter tests in wizard CI (Phase 1 of #11762). - [internal] Phase 2 of #11762: (1) fix test_codex_exec harness so subprocess-based exec tests intercept wizard's locked litellm gateway (drops -p codex-exec failures from 44 to 2), (2) fix codex-thread-manager-sample compile (missing validation_enabled field), (3) remove 84 committed insta .snap.new files and gitignore the pattern. - [internal] Fixed code consistency checks for cargo-deny v0.20 and ANTLR codegen. ### Contributors - [@csquire](https://github.com/csquire) - [@eakmanrq](https://github.com/eakmanrq) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) - [@vaggelisd](https://github.com/vaggelisd) ## 2.0.0-preview.198 Released July 09, 2026 ### Features - [dbt-extension] Redesigned the Catalog panel: a single panel with a persistent header (model name, breadcrumb, Add to Chat, and a link into the dbt platform), plus Preview and Columns tabs. The Preview tab groups model metadata into Status, Context, and Tags; it fills in from your local manifest and run results immediately and enriches with run, test, and column data from the dbt platform when connected. The Columns tab shows a sortable schema with per-column test results. - [dbt-fusion] Migrate Redshift catalog macros to SHOW TABLES and SVV_REDSHIFT_COLUMNS when datasharing is enabled, so catalog generation works for cross-database relation - [dbt-fusion] Adds `defer_job_id` support via `DBT_CLOUD_DEFER_JOB_ID` env var. When set alongside `defer_env_id`, appends `?job_id=` to the manifest download URL for job-specific deferral. - [fusion] Add catalog_database support to v2 catalogs.yml: when set, catalog_database takes highest priority in generate_database_name over model database config and target.database. Uses the existing build_catalog_relation pattern — no new adapter method. Supported for Snowflake (all types), BigQuery (biglake_metastore), and Databricks (unity, optional, falls back to catalog_name). - [dbt-index] Add dbt_lint MCP tool for SQL style checking with --changed and --fix support - [internal] Add native Anthropic Messages API wire support for direct-Anthropic BYOK Claude models, bypassing the LiteLLM sidecar - [dbt-extension] Add a dbt Wizard sidebar panel to the VS Code extension, shown when the feature is enabled - [fusion] Support multiple path selectors for fs lint. - [fusion] Fire telemetry event on static analysis propagation completion - [dbt-extension] VSCE add no-defer setting - [fusion] Add POST /api/v1/analytics/events relay endpoint (docs v2 → Vortex) - [fusion] docs analytics: add distribution field and hydrate server-authoritative fields (distribution, dbt_version, is_logged_in, dbt Cloud IDs) on POST /api/v1/analytics/events ### Fixes - [dbt-fusion] Fix METADATA$START_SCAN_TIME type (TIMESTAMP_LTZ) and add METADATA$ROW_ID pseudo-column for Snowflake stage queries - [dbt-fusion] Populate defer_relation on graph.nodes entries (models, snapshots, seeds) so node.defer_relation works in Jinja, matching dbt-core - [dbt-fusion] Correct defer_relation wire shape on graph.nodes to match dbt-core's DeferRelation dataclass (drop unique_id, add description/compiled_code/meta/tags/config) - [dbt-fusion] Prevent panic when calling `insert()` on a mutable list with an out-of-bounds index; return a proper template error instead. This was the primary panic causing cascading `lock poisoned` panics in minijinja's `MutableVec`. - [dbt-fusion] Parse-time `config.get(name)` now matches dbt-core's `ParseConfigObject.get` (`core/dbt/context/providers.py:554`) by returning `""` for every key except `meta`. The `meta` key keeps a permissive chainable stub (`ParseConfigValue`) so dbt-autofix's recommended `config.get('meta').custom_key` migration pattern (see `dbt-autofix/manual_fixes/custom_configuration.md`) keeps working during Fusion's static-analysis compile of materialization bodies. Separately, `adapter.get_relation` now coerces `None`/`Undefined` args to `""` at the strict `&str` unwrap so the compile-phase `CompileConfig.get('database')` → `None` path (mirroring Python's `RuntimeConfigObject.get`) flows through without crashing the prefetch-recording call. Together this unblocks the Anisi customer project (account 303 / project 3580) whose `snowflake_external_table` materialization in `dbt_external_tables` calls `adapter.get_relation(database=config.get('database'), ...)`. Broader audit of where the same `None`-tolerance coercion belongs across other adapter methods is a follow-up dbt-core ↔ dbt-fusion parity investigation. - [dbt-fusion] stop using schema cache (prefetch at parse time) for adapter.get_columns_in_relation if it's using in a selected node without using strict static analysis. - [dbt-fusion] Resolve event_time from seed and snapshot inputs for microbatch models (matches core v1) - [fusion] dbt State view reuse during full-refresh runs - [fusion] Spark: fix schema existence and listing on the Hive metastore. `check_schema_exists` now resolves via `show databases` instead of the nonexistent `information_schema.schemata` (fixing snapshots and other guard-then-create paths), and `list_schemas` reads the `show databases` result column name-agnostically (`namespace` on OSS Spark, `databaseName` on Databricks). Databricks behavior is unchanged. - [fusion] Fix dbt State builds erroring when source freshness metadata is unavailable for sources without freshness config. - [dbt-core] Implement symbolic linter - [fusion] model.original_file_path now resolves to the correct path in Jinja macro context during parse phase instead of returning '.'. - [fusion] persist_docs: warn about and skip columns documented in YAML that are not present in the database, instead of failing the model build or silently mis-applying column comments (ports dbt-labs/dbt-adapters#1690) - [fusion] Analysis nodes now have compiled, compiled_code, and compiled_path populated in the manifest after dbt compile - [fusion] state:modified no longer flags models whose persist_docs config is set as environment-aware Jinja. - [dbt-core] LSP fix deferral for show (preview CTE) and compile file ([#14542](https://github.com/dbt-labs/dbt-core/issues/14542)) - [fusion] Match Python re.sub behavior for empty regex matches in dbt Jinja modules.re. - [fusion] Column-level lineage no longer fails with "model ... has no relation name" when the lineage graph passes through an ephemeral model; ephemeral models are inlined as CTEs and have no warehouse relation, so they are now skipped from the relation-name mapping instead of erroring - [fusion] BigQuery: treat 403 access-control failures (missing bigquery.datasets.create IAM permission or VPC Service Controls policy violations) as ignorable permission errors during schema creation, matching dbt-core; runs against centrally-provisioned datasets in governed/VPC-SC environments no longer fail on the eager CREATE SCHEMA step - [fusion] BigQuery unit tests: fixture values that are SQL expressions for STRUCT or GEOGRAPHY columns (e.g. STRUCT(...), ST_GEOGPOINT(...)) are now injected verbatim instead of being single-quoted as string literals, so BigQuery can CAST them to the target type; matches dbt-core - [internal] Bump pyo3 workspace dependency from 0.27 to 0.29 to support Python 3.15 in CI runner images - [fusion] Fix a client-cancellation panic in the Snowflake ADBC driver on long-running queries. - [dbt-core] Avoid false positive lint warnings for BigQuery UNNEST aliases and correlated UNNEST subqueries. ([#15401](https://github.com/dbt-labs/dbt-core/issues/15401), [#15404](https://github.com/dbt-labs/dbt-core/issues/15404)) - [dbt-extension] Fix integer column sorting in VS Code query results to use numeric order instead of string order - [fusion] Resolve project flags case-insensitively in the Jinja flags context so a flag set in dbt_project.yml is reachable whether a macro reads it lower-case or upper-case, matching dbt Core - [internal] Fix crashes in ADE-Bench results summary and pass@N aggregation when a trial hits an UNKNOWN_HARNESS_ERROR - [dbt-index] Fix dbt-index cloud environment auto-detection reading deploy_type instead of deployment_type from the Admin API, and log an info message when falling back from a production to a non-production deployment environment - [dbt-core] Redshift POSIX regex-negation operators `!~` and `!~*` no longer raise a false-positive dbt0101 SyntaxInvalid diagnostic ([#15249](https://github.com/dbt-labs/dbt-core/issues/15249)) - [fusion] Report cached dbt State data tests attached to unchanged views as no-change reuse. - [fusion] Treat the BigQuery metadata type name `RECORD` as a struct when parsing column-metadata types, so unit tests on models with STRUCT/RECORD columns no longer fail with `dbt1000: Failed to parse column type 'RECORD'` - [fusion] Stop raising a false `dbt1159` "Test cannot have the same key '' at the top-level and in config" when a data test has a top-level config key (e.g. `where`) and a `config:` block that does not set that key - [fusion] state:modified no longer flags data tests whose schema.yml config uses environment-aware Jinja (where/severity/tags/meta), and now correctly detects genuine changes to a test's where/limit/severity: data tests join the wholesale unrendered_config comparison (dbt-core#15286). - [fusion] Remove synthetic materialization macro call coordinates from runtime error locations. - [fusion] Licensing: skip trial license fetch when a cached trial has expired - [internal] Require scope label sweep now writes a run summary listing which issues it closed - [fusion] Filter synthetic snapshot macro uids (snapshot..snapshot_) from depends_on.macros in snapshot nodes; these Fusion-internal uids never appear in manifest.macros and caused a dangling reference. - [fusion] Fix unit tests on Redshift failing with an internal error (SQLSTATE XX000) when the tested model uses QUALIFY - [fusion] Allow default generic tests to aggregate and render task-time aggregation SQL - [fusion] Fixed replay of repeated on-run-end fetch queries so macros can read positional Agate column values without falling back to an empty table. - [fusion] Default dbt lint and format to ignore dbt_internal_packages/, dbt_packages/, target/, fs_internal_packages/, and logs/ unless [dbt] ignore_paths is configured - [fusion] Prevent dbt State metadata MapReduce from stalling behind a speculative connection attempt after worker results are ready. - [dbt-core] Fix bigquery 3-ary round so that typechecking only permits first arg as NUMERIC/BIGNUMERIC ([#15297](https://github.com/dbt-labs/dbt-core/issues/15297)) - [fusion] Fix symbolic lint false positives for aliases on Jinja relation holes - [fusion] Update the unsupported SQLFluff templater warning to reference dbt and only recommend the dbt templater - [fusion] Validate dbt-specific SQLFluff settings instead of silently ignoring invalid values - [fusion] Allow an empty dbt ignore_paths list to override default lint and format ignores - [fusion] Default dbt lint and format back to rendered Jinja mode - [fusion] Support meta_get on Jinja map values that represent dbt node configs. - [fusion] Support context-backed Jinja map caches that use get and update. - [fusion] state:modified for data tests now follow dbt-core `TestConfig` key allowlist - [fusion] Report an accurate, path-normalized error when a local: package cannot be resolved: distinguish a missing package directory ("Package directory not found") from a directory that lacks a dbt_project.yml, resolve `..` segments in the reported path, and add dbt Core-style guidance - [fusion] Tolerate a partially-migrated package-lock.yml that mixes the name/no-name entry forms: the deprecated lock parser now accepts (and ignores) a `name` key instead of failing the build with UnusedConfigKey (dbt1060) errors, matching dbt Core - [fusion] Expose `model.path` relative to the resource root (e.g. `staging/orders.sql`) in both the `config()` block and the model body, matching dbt-core; previously it was empty inside `config()` and carried the `models/` prefix in the body - [dbt-core] Fix microbatch lookback off-by-one so a lookback of N produces N+1 batches (current batch plus N previous), matching dbt-core and the microbatch docs ([#15477](https://github.com/dbt-labs/dbt-core/issues/15477)) - [fusion] dbt retry now preserves --full-refresh from the original run, so incremental models retried after a failed full-refresh build use full-refresh (drop + recreate) semantics instead of incremental merge semantics - [fusion] Quote grantees when revoking grants, so revoking a grant whose name contains special characters no longer fails with a syntax error. ### Under the Hood - [dbt-fusion] Serialize config for macros for manifest parity with core - [fusion] Add live Snowflake ADBC client cancellation regression test - [fusion] Generic and column data tests now include their schema.yml config (where, severity, limit, tags, meta, ...) in unrendered_config, matching models/seeds/snapshots. Preparatory for correct state:modified comparison of data tests. - [internal] Add adapter:athena GitHub label to the canonical label taxonomy - [internal] Add area:autofix GitHub label to the canonical label taxonomy - [internal] Add wizard-integration-tests crate: end-to-end scenarios that spawn dbt-wizard-exec against a mocked LLM and a real dbt-index sidecar. Covers boot smoke, apply_patch file edit, and dbt-index MCP roundtrip. - [dbt-core] Add clickhouse-0.1.0 ADBC driver to CDN checksums ### Security - [fusion] Remove unused ad-hoc SQL query endpoints (POST /api/v1/query, GET /api/v1/tables) from dbt docs server ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) - [@aahel](https://github.com/aahel) - [@aiguofer](https://github.com/aiguofer) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@ajnovice](https://github.com/ajnovice) - [@alexander-bogdanowicz](https://github.com/alexander-bogdanowicz) - [@ashtonwalden](https://github.com/ashtonwalden) - [@claude](https://github.com/claude) - [@csquire](https://github.com/csquire) - [@dataders](https://github.com/dataders) - [@debrin-og](https://github.com/debrin-og) - [@eakmanrq](https://github.com/eakmanrq) - [@j-clemons](https://github.com/j-clemons) ([#14542](https://github.com/dbt-labs/dbt-core/issues/14542)) - [@j19s84](https://github.com/j19s84) - [@jcserv](https://github.com/jcserv) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) - [@lukadevic](https://github.com/lukadevic) - [@mach-kernel](https://github.com/mach-kernel) - [@r-jais](https://github.com/r-jais) ([#15249](https://github.com/dbt-labs/dbt-core/issues/15249)) - [@ragesh-g](https://github.com/ragesh-g) - [@trouze](https://github.com/trouze) - [@vaggelisd](https://github.com/vaggelisd) - [@zhong](https://github.com/zhong) ## 2.0.0-preview.197 Released July 01, 2026 ### Fixes - [dbt-fusion] Generic test nodes with long names no longer have empty depends_on.macros in the manifest - [fusion] Replace panic with a user-facing error when an exposure depends_on entry does not resolve to a ref(), source(), or metric() call - [fusion] Improve the Snowflake dbt State metadata error when database or schema is empty. - [internal] Add --timestamp to macOS codesign args in macos-sign action to fix hardened runtime signing failures - [fusion] Stop /api/v1/health from leaking the absolute index_dir path; replace with project_loaded + generation (snapshot timestamp) and an X-Docs-Generation header - [fusion] Reduce dbt State auth token request timeout to 15 seconds and retry transient auth service failures. - [fusion] Add graceful shutdown/drain to dbt docs server so rollout restarts don't reset in-flight readers - [fusion] Align ST11 unused join detection with SQLFluff for linking outer joins. - [fusion] Align ST05 subquery scope detection with SQLFluff for FROM subqueries followed by BigQuery joins. - [fusion] Implement `normalize()` on pytz timezone objects so unit-test fixtures using `modules.pytz.timezone(...).normalize(...)` parse instead of failing with an opaque `dbt1013` deserialization error - [dbt-fusion] Treat an empty or zero-byte selectors.yml as no selector definitions, matching dbt Core behavior instead of raising SelectorError dbt1600 - [fusion] Honor inline noqa suppressions after mapping rendered lint warnings back to source lines. - [fusion] Report every human-format lint parse error instead of only the first failed file. - [fusion] Match SQLFluff AM05 by ignoring BigQuery comma joins and UNNEST comma forms. - [fusion] Correct "off type" to "of type" in the struct-field dereference binding error message. - [fusion] Include YAML-supplied generic test config in manifest raw_code. - [fusion] Restore the Snowflake warehouse using its canonical upper-cased name (matching dbt Core's `current_warehouse()`-based restore), so per-model `snowflake_warehouse` overrides no longer cause record/replay SQL mismatches - [fusion] Snapshots no longer appear in their own depends_on.macros; fixed by skipping self-referential macro dep recording in the DAG listener - [fusion] Bump Snowflake Driver to 0.21.14 to fix Timestamp Freshness ### Under the Hood - [dbt-fusion] remove unused calculate_freshness_from_metadata_batch method - [fusion] Merge directories for agent plans - [internal] Fix Sync GitHub labels workflow failing on every push to main: shorten area:compute label description to satisfy GitHub's 100-character limit ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@b-per](https://github.com/b-per) - [@eakmanrq](https://github.com/eakmanrq) - [@jcserv](https://github.com/jcserv) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ## 2.0.0-preview.196 Released June 30, 2026 ### Fixes - [wizard] Add pre-build import assert and post-build boot smoke test for the LiteLLM PyInstaller sidecar to detect missing dependencies (e.g. tzlocal) before shipping a broken bundle - [fusion] Use redshift_database_name when checking Redshift SVV_EXTERNAL_TABLES. ### Under the Hood - [internal] Remove dead upstream per-model prompt files unused in the dbt-codex runtime ### Contributors - [@eakmanrq](https://github.com/eakmanrq) - [@ragesh-g](https://github.com/ragesh-g) ## 2.0.0-preview.195 Released June 29, 2026 ### Features - [dbt-index] Add dbt_compare MCP tool to dbt-index for Fusion-powered prod vs dev data comparison ### Fixes - [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. - [fusion] Fix ambiguous ref panic for cross-project publication models when used as v2 parser - [dbt-core] Fix macro original_file_path prefixed with dbt_packages/ instead of being package-relative ([#11381](https://github.com/dbt-labs/dbt-core/issues/11381)) - [fusion] Make cargo conformance run-repro replay the captured command selectors and local defer state. - [fusion] Use unrendered configs to flag changes for models and sources in state:modified selector - [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](https://github.com/dbt-labs/dbt-core/issues/15286)) - [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](https://github.com/dbt-labs/dbt-core/issues/15286)) - [dbt-extension] Default the dbt LSP SQL linter to disabled unless dbt.linter.enable is explicitly enabled. ### Under the Hood - [fusion] Implement array_except as a native DuckDB extension function (sf_array_except) instead of a SQL macro - [internal] Exclude two stale preview.193 F2F snapshots from regression tests (record_replay_bug and stale singular-test unique_id after PR #11358) - [fusion] Pin the transitive dbt_utils dependency in the deps_tarball CLI test fixture to an exact version so its golden output no longer breaks when a new dbt_utils release is published to the hub. ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#11381](https://github.com/dbt-labs/dbt-core/issues/11381)) - [@b-per](https://github.com/b-per) - [@j-clemons](https://github.com/j-clemons) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ([#15286](https://github.com/dbt-labs/dbt-core/issues/15286), [#15286](https://github.com/dbt-labs/dbt-core/issues/15286)) - [@lukadevic](https://github.com/lukadevic) - [@mach-kernel](https://github.com/mach-kernel) ## 2.0.0-preview.194 Released June 26, 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 - [dbt-extension] Add a 'dbt.linter.enable' setting to the VS Code extension to turn the SQL linter on or off. - [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 - [dbt-index] Add tail-truncation, TSV output formatting, noise stripping, and safety limits to dbt-index MCP tool outputs for improved agent token efficiency ### 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 representation. From the user's pointer of view, a "user" parameter is not required (but may nonetheless be provided). Also adds an ambient authentication mode which entrusts connections to the networking layer (et al.)" - [dbt-fusion] Implement to_geography (NULL-only shim) and object_keys DuckDB translations for sidecar compute - [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>. 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 operation nodes missing alias, database, schema, tags, config, and index in manifest - [dbt-core] state:modified no longer flags seeds whose meta config is set as environment-aware Jinja in dbt_project.yml. ([#15286](https://github.com/dbt-labs/dbt-core/issues/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](https://github.com/dbt-labs/dbt-core/issues/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 - [dbt-core] Prevent RF03 fixes from removing qualifiers when the unqualified reference would become a keyword or range variable. ([#15342](https://github.com/dbt-labs/dbt-core/issues/15342)) - [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) - [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](https://github.com/dbt-labs/dbt-core/issues/15286)) - [fusion] Implement DuckDB translation for array_except (NULL-safe multiset difference) for sidecar compute - [internal] Symlink manylinux python3 onto PATH in CI runner images to fix git-restore-mtime action requiring Python 3.8+ - [dbt-extension] fix(lsp): gate --lint-enabled flag behind version check and only pass when explicitly configured - [dbt-index] Fix dbt-index regressions: CLL parquet not produced on baseline→strict static-analysis transition ### Under the Hood - [dbt-index] Run dbt-index startup hydration (cloud sync, deferral sync, defer views) in a background task so the MCP server responds immediately on cached index data - [dbt-index] Recover from poisoned mutex locks in serve startup hydration paths instead of crashing the MCP server. - [dbt-index] Convert CommandLocker to reader/writer semantics and narrow the write lock scope during startup hydration so read tools can proceed concurrently with the network-fetch phases of cloud sync. - [fusion] Add Redshift Untyped dialect to Fusion reachable by --skip-type-checking flag. - [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 ### Contributors - [@Wolfram.Schulte](https://github.com/Wolfram.Schulte) - [@aiguofer](https://github.com/aiguofer) - [@b-per](https://github.com/b-per) - [@dataders](https://github.com/dataders) - [@debrin-og](https://github.com/debrin-og) - [@eakmanrq](https://github.com/eakmanrq) - [@j-clemons](https://github.com/j-clemons) - [@jcserv](https://github.com/jcserv) - [@lottaquestions](https://github.com/lottaquestions) ([#15286](https://github.com/dbt-labs/dbt-core/issues/15286), [#15286](https://github.com/dbt-labs/dbt-core/issues/15286), [#15286](https://github.com/dbt-labs/dbt-core/issues/15286)) - [@mach-kernel](https://github.com/mach-kernel) - [@maxmalkin](https://github.com/maxmalkin) - [@ragesh-g](https://github.com/ragesh-g) - [@serramatutu](https://github.com/serramatutu) - [@vaggelisd](https://github.com/vaggelisd) ## 2.0.0-preview.193 Released June 23, 2026 ### Features - [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] ci: publish winget manifests to microsoft/winget-pkgs via wingetcreate update on stable track promotion to production - [dbt-fusion] Classification - [dbt-fusion] Expose has_dbt_state on GET /api/v1/capabilities - [dbt-core] support the latest duckdb version 1.5.4 ([#15279](https://github.com/dbt-labs/dbt-core/issues/15279)) - [dbt-index] Support dbt Cloud CLI in MCP server: binary detection, flag filtering, warehouse tool gating, and --output json for dbt show ### Fixes - [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] LSP fix code lens when static analysis off - [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" - [internal] Remove dbt-wizard from dbt Wizard install success guidance - [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-extension] Fixed a misleading error message shown when a transient network failure prevents credential verification. The extension now shows an accurate message and a Retry button instead of the generic 'dbt API key' error. - [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](https://github.com/dbt-labs/dbt-core/issues/15263)) - [fusion] Fix cached dbt State warning tests - [fusion] Apply additional SQLFluff rule configuration settings in dbt lint, including RF04 ignore words. - [dbt-index] Tell the model to respect user settings in profiles.yml and dbt_project.yml (threads, target, profile, vars, etc.). The dbt-index MCP tool schemas and server instructions now explicitly say 'omit unless the user explicitly asked', so the model no longer silently picks values like threads=4 over the user's configured value. - [dbt-extension] Fixed a bug where the 'Start manually in CLI' button in the onboarding flow would silently do nothing because the dbt binary path was not set after installation completed - [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](https://github.com/dbt-labs/dbt-core/issues/15302)) - [fusion] LSP: Fixed false negative errors when incremental compiling - [fusion] Allow tests attached to disabled models to preserve manifest metadata without failing on legacy generic test argument syntax. - [fusion] Fixed a panic in dbt format when Jinja loop trimming produced zero-width templated slices after rendered output. - [fusion] Fixed dbt format adding an extra final newline after ref() when the source file already ended with one. - [dbt-core] Ignore window clause ORDER BY references for AM06/dbt0105 ambiguous column reference linting ([#15319](https://github.com/dbt-labs/dbt-core/issues/15319)) - [dbt-core] Match SQLFluff RF06 safe quoted identifier behavior for BigQuery casefolding ([#15320](https://github.com/dbt-labs/dbt-core/issues/15320)) - [dbt-extension] Fixed a login error that occurred when the account has dbt State enabled. The extension now offers to enable dbt State on the local machine after a successful login if the account supports it and it has not been configured yet. - [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](https://github.com/dbt-labs/dbt-core/issues/15286)) - [dbt-core] state:modified no longer flags seeds whose quote_columns config is set as environment-aware Jinja in dbt_project.yml. ([#15286](https://github.com/dbt-labs/dbt-core/issues/15286)) - [dbt-core] Treat BigQuery double-quoted string literals as literals in lint rules ([#15326](https://github.com/dbt-labs/dbt-core/issues/15326)) - [dbt-core] Report CV10 quoted literal style violations with their own rule identity instead of CV11 casting style. ([#15328](https://github.com/dbt-labs/dbt-core/issues/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] 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 serialization for exposures with Core for manifest parity - [dbt-fusion] Reuse the Bigquery grammar and binder for BigqueryUntyped column lineage, removing the duplicate parser, lexer, and grammar." - [dbt-fusion] Group CommonArgs flags into labeled help sections (Project, Selection, Execution, Logging, Artifacts, Event Time) and add a Sample heading to the node-selection commands so per-subcommand `--help` shows a focused summary - [internal] Allows the source application used in analytics to be specified when creating an interactive `AuthChain` or an `OAuthInteractiveResolver` directly. - [internal] Mirror fs PR CI status onto the corresponding dbt-core PR as a dbt-mirror/tests commit status, mapped per-commit via a Copybara-Public-Head-SHA trailer - [internal] Mirror the copybara PR lifecycle onto the corresponding dbt-core PR — a sticky comment, a mirror-* label, and auto-close on terminal states - [dbt-fusion] Update driver - [dbt-fusion] Improve salesforce adapter jinja - [fusion] Add registry-backed JSON deserialization support for dbt-tracing telemetry records. - [internal] dbt-ci: `pypi publish --download-base-url --target ...` builds the download-at-install sdist (downloads the release wheels, hashes the live bytes, assembles the sdist) and publishes it (filetype=sdist) to PyPI - [internal] Update DuckDB to 1.5.4 - [fusion] Change two unexpected_fs_err! in dbt_replay to specific errors - [fusion] Add Snowflake Untyped to run with --skip-type-checking flag against Fusion. - [fusion] Databricks untyped mode that runs against Fusion with --skip-type-checking. - [fusion] Bump Databricks - [fusion] Fix subtraction underflow panic in partial-parse when operations have invalid spans after JSON deserialization - [internal] Bump the extended DuckDB driver - [internal] Pin sccache to v0.12.0 in CI runner images and workflows to fix the 'Post Setup sccache' client/server version mismatch ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@ajnovice](https://github.com/ajnovice) - [@arjitj2](https://github.com/arjitj2) - [@dataders](https://github.com/dataders) ([#15279](https://github.com/dbt-labs/dbt-core/issues/15279)) - [@debrin-og](https://github.com/debrin-og) - [@itsnamangoyal](https://github.com/itsnamangoyal) - [@j-clemons](https://github.com/j-clemons) - [@jcserv](https://github.com/jcserv) - [@kczimm](https://github.com/kczimm) - [@kendru](https://github.com/kendru) - [@lottaquestiions](https://github.com/lottaquestiions) ([#15263](https://github.com/dbt-labs/dbt-core/issues/15263)) - [@lottaquestions](https://github.com/lottaquestions) ([#15302](https://github.com/dbt-labs/dbt-core/issues/15302), [#15286](https://github.com/dbt-labs/dbt-core/issues/15286), [#15286](https://github.com/dbt-labs/dbt-core/issues/15286)) - [@maxmalkin](https://github.com/maxmalkin) - [@ragesh-g](https://github.com/ragesh-g) - [@tauhid621](https://github.com/tauhid621) - [@tomighita](https://github.com/tomighita) - [@vaggelisd](https://github.com/vaggelisd) - [@wolfram](https://github.com/wolfram) ## 2.0.0-preview.192 Released June 16, 2026 ### Features - [dbt-fusion] dbt LSP now lints SQL inline: a project-wide lint runs on compile so the Problems panel lists lint warnings across the whole project (including projects without a .sqlfluff config, using default rules to match `dbt lint`), and saving a file re-lints just that file while preserving every other file's lint warnings. - [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] 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. ([#1228](https://github.com/dbt-labs/dbt-fusion/issues/1228)) - [internal] Add `wizard system uninstall` subcommand with --force flag and dry-run preview ### Fixes - [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. ([#10896](https://github.com/dbt-labs/dbt-fusion/issues/10896)) - [dbt-fusion] Report dbt State-reused data tests as reused in dbt test output ([#10910](https://github.com/dbt-labs/dbt-fusion/issues/10910)) - [dbt-fusion] Snapshot nodes now correctly serialize config.materialized as snapshot instead of table in the manifest ([#10376](https://github.com/dbt-labs/dbt-fusion/issues/10376)) - [dbt-fusion] Accept dbt-core-style type annotations on macro arguments (e.g. `param: str`) - [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. ([#10967](https://github.com/dbt-labs/dbt-fusion/issues/10967)) - [dbt-fusion] Ignore Snowflake date-part keywords in DATE_ADD/DATE_DIFF when linting identifier casing and reference consistency. ([#15240](https://github.com/dbt-labs/dbt-fusion/issues/15240)) - [dbt-fusion] Fix dbt9002 cursor misalignment when elementary metadata_hash probe precedes SHOW GRANTS in Snowflake incremental replay - [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 ([#15246](https://github.com/dbt-labs/dbt-fusion/issues/15246)) - [dbt-fusion] finally and consciously decouple the DuckDB adapter from it's weird cousin Extended ### Under the Hood - [dbt-fusion] Added snowflake config in UDF configs - [dbt-fusion] Emit a Vortex Login event on dbt login with success/failure, login type, user cookie, project ID, and platform identity fields from the JWT. - [dbt-fusion] Removed DataFusion-backed task execution - [dbt-fusion] Upgrade Rust toolchain to 1.96 - [dbt-fusion] Errors and logs now show phase accurate paths for analyses, funcs, seeds and sources - [dbt-fusion] Errors and logs now report phase accurate paths for exposures, macros, hooks, and metrics - [internal] Add CSV format option to cargo conformance report - [dbt-fusion] Add `manage_state` to invocation telemetry to track dbt State management (auto-deferral) enablement ([#10944](https://github.com/dbt-labs/dbt-fusion/issues/10944)) - [internal] Exclude pre-autofix errors from conformance - [internal] Bump iceberg extension - [internal] Bump up the duckdb driver checksums - [internal] Add anonymous IDs to dbt Wizard error telemetry. ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) - [@aahel](https://github.com/aahel) ([#1228](https://github.com/dbt-labs/dbt-fusion/issues/1228)) - [@aiguofer](https://github.com/aiguofer) ([#10896](https://github.com/dbt-labs/dbt-fusion/issues/10896), [#10376](https://github.com/dbt-labs/dbt-fusion/issues/10376)) - [@arjitj2](https://github.com/arjitj2) - [@aswanson](https://github.com/aswanson) ([#15246](https://github.com/dbt-labs/dbt-fusion/issues/15246)) - [@chayac](https://github.com/chayac) - [@dataders](https://github.com/dataders) - [@j-clemons](https://github.com/j-clemons) - [@kczimm](https://github.com/kczimm) ([#10910](https://github.com/dbt-labs/dbt-fusion/issues/10910)) - [@kendru](https://github.com/kendru) - [@mach-kernel](https://github.com/mach-kernel) ([#10967](https://github.com/dbt-labs/dbt-fusion/issues/10967)) - [@serramatutu](https://github.com/serramatutu) - [@sriramr98](https://github.com/sriramr98) ## 2.0.0-preview.191 Released June 11, 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. ([#10475](https://github.com/dbt-labs/dbt-fusion/issues/10475)) - [dbt-fusion] Issue compatibility warnings for package versions based on manual compatibility verification when available in Package Hub - [dbt-extension] Add an "Install dbt Wizard" step to the Get Started guide and start the Help section collapsed by default - [dbt-fusion] Support the insert_overwrite incremental strategy for the Spark adapter - [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`). ([#10967](https://github.com/dbt-labs/dbt-fusion/issues/10967)) ### 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. ([#1450](https://github.com/dbt-labs/dbt-fusion/issues/1450)) - [dbt-fusion] (fix redshift) always quote materialized view path ([#1095](https://github.com/dbt-labs/dbt-fusion/issues/1095)) - [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. ([#1660](https://github.com/dbt-labs/dbt-fusion/issues/1660)) - [dbt-fusion] Support incremental materializations on the Spark adapter (append strategy) - [dbt-fusion] Surface cached data test failures in dbt State builds ([#10911](https://github.com/dbt-labs/dbt-fusion/issues/10911)) - [dbt-fusion] sidecar: empty-string CAST to NULL, *_from_parts zero-tuple to NULL, unknown format string to NULL, timestamp_ltz_from_parts bridges ([#10961](https://github.com/dbt-labs/dbt-fusion/issues/10961)) - [dbt-fusion] Prevent RF03 auto-fix from qualifying BigQuery date-part keywords. ([#15229](https://github.com/dbt-labs/dbt-fusion/issues/15229)) - [dbt-fusion] ISO date format support for microbatch dates. - [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. ### Under the Hood - [dbt-fusion] Fix the remote license not being cached after `dbt login`. The post-login fetch ran as a fire-and-forget task that could be cancelled on runtime shutdown before completing; it now runs inline via an async fetch and completes before login returns. - [dbt-fusion] Fix implementation of legacy `valid_snapshot_target` - [internal] Consolidate copybara commit-message scrubbers to drop any line referencing private fs#NNNN - [dbt-fusion] License credential resolution no longer performs a network token refresh when DBT_SKIP_REMOTE_LICENSE is set, and an expired platform session is logged at debug rather than warn — preventing spurious warnings (and test output noise) when remote licensing is disabled. - [dbt-fusion] Add unit tests for Spark incremental materializations ### Contributors - [@aahel](https://github.com/aahel) ([#10475](https://github.com/dbt-labs/dbt-fusion/issues/10475)) - [@chayac](https://github.com/chayac) - [@connie-carey](https://github.com/connie-carey) - [@debrin-og](https://github.com/debrin-og) - [@kczimm](https://github.com/kczimm) ([#10911](https://github.com/dbt-labs/dbt-fusion/issues/10911)) - [@kendru](https://github.com/kendru) - [@mach-kernel](https://github.com/mach-kernel) ([#10967](https://github.com/dbt-labs/dbt-fusion/issues/10967), [#1660](https://github.com/dbt-labs/dbt-fusion/issues/1660), [#10961](https://github.com/dbt-labs/dbt-fusion/issues/10961)) - [@serramatutu](https://github.com/serramatutu) - [@tauhid621](https://github.com/tauhid621) ## 2.0.0-preview.190 Released June 10, 2026 ### Features - [dbt-fusion] Emit project-wide catalogs count on the parse-time ResourceCounts telemetry event - [dbt-fusion] Add Workload Identity Federation auth for BigQuery via Microsoft Entra ### Fixes - [dbt-fusion] LSP: fix rename of order by alias - [dbt-fusion] sidecar: DATEADD on TIMESTAMPTZ no longer fails the DuckDB binder under --compute sidecar ([#10888](https://github.com/dbt-labs/dbt-fusion/issues/10888)) - [internal] ci(homebrew): fix stale job refs in update-release-track.yml - [dbt-fusion] Fix dbt State reuse for new data tests without cached results ([#10912](https://github.com/dbt-labs/dbt-fusion/issues/10912)) - [dbt-fusion] sidecar: implement Snowflake temporal *_from_parts translations (date, time, timestamp, timestamp_ntz, timestamp_tz) ([#10930](https://github.com/dbt-labs/dbt-fusion/issues/10930)) - [dbt-fusion] sidecar: bridge Snowflake temporal *_to_*(VARCHAR, format) overloads (to_timestamp, to_timestamp_tz, try_to_time, try_to_timestamp_ltz, try_to_timestamp_tz) to STRPTIME ([#10930](https://github.com/dbt-labs/dbt-fusion/issues/10930)) ### Under the Hood - [dbt-fusion] Snapshot errors and logs now show phase-accurate paths for artifacts - [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] Remove quoting field from SourceConfig; adapter-specific quoting defaults are now applied directly during source resolution instead of being propagated through the config struct ([#10078](https://github.com/dbt-labs/dbt-fusion/issues/10078)) - [internal] Publish to Homebrew when the stable track is promoted instead of at release-build time - [internal] conformance fetch/push auto-add the sdf-test-account AWS profile when missing, and credential errors point to the 1Password "Fusion Adapters Credentials" item - [internal] conformance collect now captures each run's fetch-repro artifact path into a repro_path column, so resolve-repro resolves locally without a second Datadog query (no lookback expiry) - [dbt-fusion] Bump bigquery driver for WIF auth support - [internal] Remove the dbt-fusion copybara sync workflows, keeping only the dbt-core sync pipeline - [dbt-fusion] Add regression tests for backward-compatible telemetry parquet deserialization across 9 historical dbt-fusion versions - [internal] Label copybara-created PRs in fs with `public-pr` for easier tracking and downstream automation ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) - [@aiguofer](https://github.com/aiguofer) ([#10078](https://github.com/dbt-labs/dbt-fusion/issues/10078)) - [@dataders](https://github.com/dataders) - [@itsnamangoyal](https://github.com/itsnamangoyal) - [@j-clemons](https://github.com/j-clemons) - [@kczimm](https://github.com/kczimm) ([#10912](https://github.com/dbt-labs/dbt-fusion/issues/10912)) - [@mach-kernel](https://github.com/mach-kernel) ([#10888](https://github.com/dbt-labs/dbt-fusion/issues/10888), [#10930](https://github.com/dbt-labs/dbt-fusion/issues/10930), [#10930](https://github.com/dbt-labs/dbt-fusion/issues/10930)) - [@ragesh-g](https://github.com/ragesh-g) - [@tauhid621](https://github.com/tauhid621) ## 2.0.0-preview.189 Released June 09, 2026 ### Features - [dbt-fusion] Trial license stage in dbt-licensing chain — developer machines (detected via DBT_CLIENT_VERSION) fetch a 14-day trial license from dbt Cloud when no dbt_cloud.yml is present ([#10361](https://github.com/dbt-labs/dbt-fusion/issues/10361)) - [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] equals macro now uses IS NOT DISTINCT FROM clause for comparison ([#9803](https://github.com/dbt-labs/dbt-fusion/issues/9803)) - [dbt-fusion] (fix adapter/databricks) retry on retryable errors - [dbt-fusion] Fix `model` storing none values as undefined - [dbt-fusion] Add Databricks typechecking support for ZEROIFNULL, NULLIFZERO, NANVL, SHUFFLE, OVERLAY, POSITIVE, and MEASURE ([#15083](https://github.com/dbt-labs/dbt-fusion/issues/15083)) - [dbt-fusion] Allow target variables to be used in dbt_project.yml - [dbt-fusion] Clarify that users can enable strict static analysis by creating a free account using dbt login - [dbt-fusion] fix seed configs rejecting valid fields ### Under the Hood - [internal] Strip private fs PR references from commit messages synced to dbt-core - [internal] Only send Slack success notification for schema sync when a PR is actually created - [internal] conformance: add `resolve-repro` subcommand (run_id → artifact path via Datadog, tagged by provider) and make `fetch-repro` multi-cloud — resolve the per-cell provider and download from S3 (tsh), Azure Blob (az), or GCS (gsutil impersonation), plus onprem single-tenant, with --app/--bucket/--account/--aws-role overrides - [dbt-fusion] Handle empty Snowflake Arrow chunks ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@ashtonwalden](https://github.com/ashtonwalden) ([#10361](https://github.com/dbt-labs/dbt-fusion/issues/10361)) - [@connie-carey](https://github.com/connie-carey) - [@kczimm](https://github.com/kczimm) - [@sriramr98](https://github.com/sriramr98) ([#9803](https://github.com/dbt-labs/dbt-fusion/issues/9803)) - [@tauhid621](https://github.com/tauhid621) ## 2.0.0-preview.188 Released June 06, 2026 ## 2.0.0-preview.187 Released June 06, 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] Redshift: use SHOW TABLES FROM SCHEMA for cross-database source freshness when datasharing is enabled ([#9024](https://github.com/dbt-labs/dbt-fusion/issues/9024)) - [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 ### Fixes - [dbt-fusion] (fix adapters/databricks) restore token-first dispatch for Databricks OAuth so dbt Studio's U2M flow works correctly. ([#14588](https://github.com/dbt-labs/dbt-fusion/issues/14588)) - [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 ([#2245](https://github.com/dbt-labs/dbt-fusion/issues/2245)) - [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 schema routing for test failures when +schema: null is set in dbt_project.yml with store_failures: true - [dbt-extension] The dbt extension now recognizes when your email is not yet verified after you sign in, prompts you to verify it, and continues automatically once verification is complete. - [dbt-fusion] Fix re.findall Capture objects to be sliceable sequences when pattern has 3+ capture groups - [dbt-fusion] Implement uniform translation in DuckDB ([#10809](https://github.com/dbt-labs/dbt-fusion/issues/10809)) - [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] Implement array_construct_compact translation in DuckDB ([#10813](https://github.com/dbt-labs/dbt-fusion/issues/10813)) - [dbt-fusion] Implement object_construct_keep_null translation in DuckDB ([#10815](https://github.com/dbt-labs/dbt-fusion/issues/10815)) - [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] 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` ([#15157](https://github.com/dbt-labs/dbt-fusion/issues/15157)) - [dbt-fusion] LSP false dbt1089 warning ([#15153](https://github.com/dbt-labs/dbt-fusion/issues/15153)) - [dbt-fusion] Add Snowflake typechecking support for BITMAP_TO_ARRAY, BITMAP_ABSOLUTE_POSITION, BITMAP_OR, SNOWFLAKE.CORTEX.FINETUNE ('SHOW'), and SYSTEM$EVALUATE_DATA_QUALITY_EXPECTATIONS_PERSIST_RESULT ([#15113](https://github.com/dbt-labs/dbt-fusion/issues/15113)) - [dbt-fusion] Honor model-level `full_refresh: false` config on microbatch models under `dbt build --full-refresh` ([#15170](https://github.com/dbt-labs/dbt-fusion/issues/15170)) ### Under the Hood - [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] Extract package resolution behind PackageResolver trait per package kind, with concurrent resolution per BFS level - [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-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 manual PyPI publish workflow for republishing existing GitHub Releases - [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] LP decompiler hoists structurally equivalent subqueries with more than one usage into WITH - [dbt-fusion] Switch license loaded messages from info to debug - [dbt-fusion] (fabric) adds local dev creds setup, plus an end to end test - [dbt-fusion] Re-enable and re-wire the dbt-repl integration test suite, disabled during the dbt-main modularization - [internal] Speed up Copybara test workflows with sccache distributed compiler caching - [internal] Publish to PyPI when the stable track is promoted to production instead of at release-build time - [internal] Attribute Homebrew tap commits to fa-assistant and switch the tap-push token to FA_ASSISTANT_CI_WORKFLOW_PAT_TOKEN. - [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. ([#10794](https://github.com/dbt-labs/dbt-fusion/issues/10794)) ### Contributors - [@agarovat](https://github.com/agarovat) - [@aiguofer](https://github.com/aiguofer) - [@b-per](https://github.com/b-per) ([#2245](https://github.com/dbt-labs/dbt-fusion/issues/2245)) - [@dbtagarovat](https://github.com/dbtagarovat) - [@itsnamangoyal](https://github.com/itsnamangoyal) - [@izeigerman](https://github.com/izeigerman) - [@j-clemons](https://github.com/j-clemons) ([#15153](https://github.com/dbt-labs/dbt-fusion/issues/15153)) - [@kczimm](https://github.com/kczimm) - [@mach-kernel](https://github.com/mach-kernel) ([#10809](https://github.com/dbt-labs/dbt-fusion/issues/10809), [#10813](https://github.com/dbt-labs/dbt-fusion/issues/10813), [#10815](https://github.com/dbt-labs/dbt-fusion/issues/10815)) - [@ragesh-g](https://github.com/ragesh-g) ([#9024](https://github.com/dbt-labs/dbt-fusion/issues/9024)) - [@serramatutu](https://github.com/serramatutu) ([#15157](https://github.com/dbt-labs/dbt-fusion/issues/15157)) - [@sriramr98](https://github.com/sriramr98) - [@tauhid621](https://github.com/tauhid621) - [@walther-lalk](https://github.com/walther-lalk) ## 2.0.0-preview.186 Released June 03, 2026 ### Features - [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. ### Fixes - [dbt-fusion] Fixed lineage using un-quoted FQNs ### Contributors - [@tauhid621](https://github.com/tauhid621) ## 2.0.0-preview.185 Released June 03, 2026 ### Features - [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] (fabric) supports dbt init - [dbt-fusion] Add .sqlfluffignore support to lint. - [dbt-fusion] List lint in the top-level help output. ### Fixes - [dbt-fusion] update try_or_compiler_error to match dbt-core - [dbt-fusion] Fix manifest deserialization for fields that are not present ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ## 2.0.0-preview.184 Released June 02, 2026 ### Fixes - [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](https://github.com/dbt-labs/dbt-fusion/issues/15140)) - [dbt-fusion] Show a clear warning when dbt_cloud.yml fails to parse instead of a misleading 'no credentials configured' error - [dbt-fusion] Do not panic in schema hydration if a getting a canonical fqn has an error - [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] Disable dbt State for unsupported adapters - [dbt-fusion] Fix manifest deserialization failing on no configs ### Under the Hood - [dbt-fusion] Remove "models" path segment in computed fqn for manifest parity with Core - [dbt-fusion] Improve ClickHouse init: remove database and make password optional ([#1679](https://github.com/dbt-labs/dbt-fusion/issues/1679)) - [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 ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@kczimm](https://github.com/kczimm) - [@koletzilla](https://github.com/koletzilla) ([#1679](https://github.com/dbt-labs/dbt-fusion/issues/1679)) - [@lottaquestions](https://github.com/lottaquestions) ([#15140](https://github.com/dbt-labs/dbt-fusion/issues/15140)) - [@serramatutu](https://github.com/serramatutu) - [@tauhid621](https://github.com/tauhid621) ## 2.0.0-preview.183 Released June 01, 2026 ### Fixes - [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] 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 ### Under the Hood - [dbt-fusion] Manifest parity with core fixes for groups - [dbt-fusion] Serialize external and its subfields for manifest parity with Core - [internal] Enable push and daily schedule triggers for auto-run copybara dbt-core sync workflow - [dbt-fusion] Execute hooks on dbt State reuse - [dbt-fusion] Bump dbt-docs-v2 UI bundle to add dbt State banner (a0c6c196807e9e6f2b9ea4fa953e99c2d1031657) ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@eakmanrq](https://github.com/eakmanrq) - [@izeigerman](https://github.com/izeigerman) - [@jcserv](https://github.com/jcserv) - [@kczimm](https://github.com/kczimm) - [@tauhid621](https://github.com/tauhid621) ## 2.0.0-preview.182 Released June 01, 2026 ### Fixes - [dbt-fusion] Guard Fusion-only macro divergences in dbt_macro_assets on `dbt_version.startswith('2.')` so dbt-core's v2-parser handoff produces macros compatible with both runtimes. Covers Snowflake (`use_catalogs_v2`, table drop), BigQuery (`load_csv_rows` arg count, schema management macros, `alter_relation_comment`), Databricks (`render_type`, `has_feature` -> `has_dbr_capability`, column masks, SHALLOW CLONE PK handling), Redshift (`has_feature("datasharing")`), and Spark (`sql_convert_columns_in_relation`). Consolidates and supersedes ([#10659](https://github.com/dbt-labs/dbt-fusion/issues/10659)) ### Under the Hood - [internal] Migrate JSON schema sync workflow from main to 1.latest branch in dbt-core ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#10659](https://github.com/dbt-labs/dbt-fusion/issues/10659)) - [@tauhidanjum](https://github.com/tauhidanjum) ## 2.0.0-preview.181 Released June 01, 2026 ### Features - [dbt-fusion] (dbt-adapter) Switch to using richer sql types from dbt-adapter-sql for convert_{denegerate_data_type}_type dbt functions ### Fixes - [dbt-fusion] Populate manifest raw_code with verbatim source at parse time, restoring parity with dbt-core for same_body/state:modified/this-ref scans ([#10378](https://github.com/dbt-labs/dbt-fusion/issues/10378)) - [dbt-fusion] make Ctrl+C during `dbt login` exit instantly by wiring CancellationToken into both OAuth flows - [dbt-fusion] dbt-docs-server: return lineage for saved_query, metric, semantic_model, and exposure roots from GET /api/v1/nodes/:id/lineage. Saved queries are synthesized from dbt.saved_queries.depends_on_nodes (not in dbt.edges); the others are walked via dbt.edges but were dropped by the metadata join against dbt.nodes — the join now unions dbt.nodes with dbt.metrics, dbt.semantic_models, and dbt.exposures. - [dbt-fusion] Suppress misleading "new version available" message in dbt-sa-cli, since its version is not tracked by the Fusion CDN. - [dbt-fusion] dbt docs serve: /api/v1/distribution now returns correct name per binary ("dbt" for proprietary, "oss" for OSS); dbt-sa-cli can now run docs serve - [dbt-fusion] Fix `dbt compile --write-catalog` for DuckDB by casting null table_owner to varchar so it maps to a typed string column - [dbt-fusion] Fix cloud manifest download firing when --state or --defer-state is already provided ### Under the Hood - [dbt-fusion] Propagate CliParser command_name through the tracing pipeline so the version banner, deps/clean banners, JSON logs, and OTLP service.name match the binary's brand (dbt-sa-cli emits dbt-core) - [dbt-fusion] Enable windows tests in merge queue - [dbt-fusion] dbt-docs-server: lineage endpoint uses typed response structs; saved_query probe is now gated on the unique_id prefix, eliminating an unnecessary query for all other resource types; NULL name in saved_queries no longer produces a spurious 404. - [dbt-fusion] Exclude snapshots failing due to on-run-start/on-run-end - [dbt-fusion] Exclude snapshots failing due to on-run-start/on-run-end - [internal] Move cloud manifest download out of fs/sa: gate behind CliExtensionHooks.will_load_deferred_state so dbt-sa-cli never auto-downloads a deferral manifest - [internal] Sync CONTRIBUTING-dbtcore.md to dbt-core as CONTRIBUTING.md via copybara - [dbt-fusion] Exclude snapshots failing due to on-run-start/on-run-end - [dbt-fusion] Time Machine replay: match dbt_artifacts on-run-end hook node IDs using the hyphenated form so non-deterministic model_executions INSERTs are correctly skip - [dbt-fusion] Ignore the model object's raw_code field when replaying recorded submit_python_job events - [dbt-fusion] Fix state:modified false positives in snapshots from old fusion versions. ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#10378](https://github.com/dbt-labs/dbt-fusion/issues/10378)) - [@kendru](https://github.com/kendru) - [@lottaquestions](https://github.com/lottaquestions) - [@tauhid621](https://github.com/tauhid621) - [@tauhidanjum](https://github.com/tauhidanjum) - [@varantes](https://github.com/varantes) ## 2.0.0-preview.180 Released May 29, 2026 ### Features - [dbt-fusion] Sqlfluff parity - [dbt-extension] VS Code extension OAuth login now requests narrower, feature-specific permissions. If a permission is denied, the extension keeps working for unaffected features and prompts you to re-authorize when you trigger a feature that needs the missing permission. - [dbt-fusion] Onboarding now prompts to sign in or create a free dbt platform account via `dbt login` instead of asking you to manually place a `dbt_cloud.yml` file. - [dbt-fusion] dbt-docs-server: add executed_at to /api/v1/search hits and execution_info to /api/v1/nodes/:id detail responses - [dbt-extension] The extension now registers automatically when a dbt_cloud.yml file is present, with no manual step required. - [dbt-fusion] Support user_settings.yml flags: read ~/.dbt/user_settings.yml and apply its flags block at the lowest precedence layer (below dbt_project.yml, above defaults), matching dbt-core behavior. ### Fixes - [dbt-fusion] (fix snowflake) port allows either integer or string - [dbt-fusion] Fix column-level tags not selecting properly for test nodes. - [dbt-fusion] sidecar: make OBJECT_AGG work as a window aggregate (OVER (PARTITION BY ...)) by rewriting it to an inlined string_agg in the decompiler instead of a macro ([#10503](https://github.com/dbt-labs/dbt-fusion/issues/10503)) - [dbt-fusion] Manifest emit: serialize `latest_version_pointer` as `{"enabled": null, "alias": null}` instead of `null` so dbt-core can deserialize fusion-produced manifests - [dbt-fusion] Fix warning/error messages that referenced non-existent flags `--metadata` and `--lineage`; correct to `--write-metadata` and `--write-lineage` - [dbt-fusion] LSP: Fixed incremental compilation when a sources.yml was changed - [dbt-fusion] Fix `dbt.project` not being populated when using `--write-metadata`: write `project_name` and `adapter_type` into `generation.parquet` and read them back during index ingest - [dbt-index] Metrics no longer show empty names in /api/v1/metrics and /api/v1/search when the index is built via the Fusion compile path ([#7491](https://github.com/dbt-labs/dbt-fusion/issues/7491)) - [dbt-fusion] Omit query dependencies and upstream table timestamps from dbt State submit requests for view models - [dbt-fusion] (dbt-adapter): fix the sql_types.rs numeric imprecision for Decimal types in type conversion functions - [dbt-extension] Fixed the trial expiration notification reappearing on every restart. - [dbt-extension] Fixed the extension writing a dbt_cloud.yml file when signed in with OAuth; it now only exports one when authenticated with a long-lived API token. - [dbt-fusion] Use cached dbt State auth token before consulting the dbt platform auth chain so a malformed dbt_cloud.yml does not block state client initialization ### Under the Hood - [dbt-fusion] Paths in manifest.json are now conformant with their dbt-core counter-parts - [dbt-fusion] Make `Relation` constructor more idiomatic by using a builder. - [dbt-fusion] Manifest parity with Core: stop serializing a patch_path for test nodes - [dbt-extension] Remove unused Compare panel feature flag gating. - [internal] Add new README for dbt-core v2 and sync README-dbtcore.md to dbt-core as README.md via copybara, mirroring the pyproject-dbtcore.toml pattern - [dbt-fusion] Bump bundled dbt-docs-v2 UI to b0e4f9b388403fe04c41d00633aea2c7f43c4329 - [dbt-index] dbt-index crack_epochs: Rust payload pre-decoding for parse/nodes delta — flat typed parquet eliminates json_extract in DuckDB, 9× faster incremental ingest; threshold-based deletion diff avoids table scans on node removal - [dbt-fusion] Use "dbt-core" as the clap command name for the dbt-sa-cli binary, so `dbt --help` displays the correct product name. - [dbt-index] dbt.metrics names were NULL — fall back to node name column when payload name is absent ([#10627](https://github.com/dbt-labs/dbt-fusion/issues/10627)) - [dbt-fusion] Exclude snapshots failing due to on-run-start/on-run-end. - [dbt-fusion] dbt-docs-server: cap lineage max_depth to 3 (default 3, hard cap 3) on GET /api/v1/nodes/:id/lineage - [dbt-fusion] Support lage tolerance compatability configs - [dbt-fusion] Keep dbt State gRPC channel alive - [dbt-fusion] Make path comparison in tests slash agnostic for windows - [dbt-fusion] rename to StateServiceWarn - [dbt-fusion] Rename dbt State opt-in flag to manage-state ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) - [@aiguofer](https://github.com/aiguofer) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@izeigerman](https://github.com/izeigerman) - [@jcserv](https://github.com/jcserv) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) - [@mach-kernel](https://github.com/mach-kernel) ([#10503](https://github.com/dbt-labs/dbt-fusion/issues/10503)) - [@serramatutu](https://github.com/serramatutu) - [@tauhid621](https://github.com/tauhid621) - [@tauhidanjum](https://github.com/tauhidanjum) - [@vfranco](https://github.com/vfranco) - [@walther-lalk](https://github.com/walther-lalk) - [@waltherl](https://github.com/waltherl) ## 2.0.0-preview.179 Released May 28, 2026 ### Features - [dbt-fusion] Snowflake: add refresh_warehouse config for dynamic tables, allowing a separate warehouse for self-refresh independent of the DDL execution warehouse ([#1193](https://github.com/dbt-labs/dbt-fusion/issues/1193)) - [dbt-fusion] Add GET /api/v1/seeds and GET /api/v1/seeds/facets endpoints to dbt-docs-server ([#7432](https://github.com/dbt-labs/dbt-fusion/issues/7432)) - [dbt-fusion] Add GET /api/v1/nodes/counts endpoint to dbt-docs-server ([#10186](https://github.com/dbt-labs/dbt-fusion/issues/10186)) - [dbt-fusion] GET /api/v1/snapshots and GET /api/v1/snapshots/facets endpoints ([#7432](https://github.com/dbt-labs/dbt-fusion/issues/7432)) - [dbt-fusion] GET /api/v1/tests and GET /api/v1/tests/facets endpoints ([#7432](https://github.com/dbt-labs/dbt-fusion/issues/7432)) - [dbt-fusion] GET /api/v1/macros and GET /api/v1/macros/facets endpoints ([#7432](https://github.com/dbt-labs/dbt-fusion/issues/7432)) - [dbt-fusion] Add GET /api/v1/groups and GET /api/v1/groups/facets endpoints to dbt-docs-server ([#7432](https://github.com/dbt-labs/dbt-fusion/issues/7432)) - [dbt-fusion] Add GET /api/v1/metrics and GET /api/v1/metrics/facets endpoints to dbt-docs-server ([#7432](https://github.com/dbt-labs/dbt-fusion/issues/7432)) - [dbt-fusion] Add GET /api/v1/saved_queries and GET /api/v1/saved_queries/facets endpoints to dbt-docs-server ([#7432](https://github.com/dbt-labs/dbt-fusion/issues/7432)) - [dbt-fusion] Add GET /api/v1/semantic_models and GET /api/v1/semantic_models/facets endpoints to dbt-docs-server ([#7432](https://github.com/dbt-labs/dbt-fusion/issues/7432)) - [dbt-fusion] GET /api/v1/exposures and GET /api/v1/exposures/facets endpoints to dbt-docs-server ([#7432](https://github.com/dbt-labs/dbt-fusion/issues/7432)) - [dbt-fusion] GET /api/v1/search endpoint for cross-resource project search ([#7451](https://github.com/dbt-labs/dbt-fusion/issues/7451)) - [dbt-extension] Generate `~/.dbt/dbt_cloud.yml` at extension activation for verified users with a PAT, so external tools (e.g. Fusion CLI) can authenticate. - [dbt-fusion] dbt-index MCP `warehouse` tool now attaches a `{columns, rows, rowCount}` table to `_meta["dbt-index/queryTable"]` alongside the existing compact text, letting tabular clients render results without re-parsing the human-readable rendering. Uses `_meta` rather than `structuredContent` so the model-facing text output remains the compact YAML+TSV. - [dbt-fusion] Expose Fusion error code names in structured log telemetry. - [dbt-fusion] Run Cache authenticates via dbt Platform PAT/service token exchange when no OAuth client secret is configured - [dbt-fusion] Implement `dbt login` command with OAuth browser flow and `dbt login status` subcommand to show current authentication status - [dbt-fusion] GET /api/v1/search and GET /api/v1/models ?materialization= filter; GET /api/v1/search/facets endpoint for cross-resource facet discovery - [dbt-fusion] add Wizard command to dbt - [dbt-index] Restrict dbt-index MCP server to authorized clients (dbt Wizard). CLI usage unchanged. ### Fixes - [dbt-fusion] (adapters/bigquery) Fix nested STRUCT field misassignment when YAML order differs from source order on BigQuery contract-enforced models ([#9921](https://github.com/dbt-labs/dbt-fusion/issues/9921)) - [dbt-fusion] Default lookback to 1 on ModelConfig to match dbt-core manifest parity ([#10078](https://github.com/dbt-labs/dbt-fusion/issues/10078)) - [dbt-fusion] use profile defer_to_target for dbt State auto-defer - [dbt-fusion] Fix population of parent and child maps ([#10382](https://github.com/dbt-labs/dbt-fusion/issues/10382)) - [dbt-fusion] Move run cache client home folder from ~/.run-cache to ~/.dbt, rename auth file to state_auth.json, and rename RUN_CACHE_HOME env var to DBT_ENGINE_STATE_HOME - [dbt-fusion] Revert "fix(run-cache): emit `success` instead of `reused` on clone cache hit" - [dbt-fusion] LSP support this, database, schema, identifier jinja functions in preview CTE ([#1761](https://github.com/dbt-labs/dbt-fusion/issues/1761)) - [dbt-fusion] sidecar: add DuckDB translation for ARRAY_INSERT so models using it work under --compute sidecar ([#10506](https://github.com/dbt-labs/dbt-fusion/issues/10506)) - [dbt-fusion] (fix snowflake) bump Snowflake ADBC driver: include fixes from https://github.com/dbt-labs/arrow-adbc/pull/131; Set max_retries to 1; Stop setting LOGIN_TIMEOUT in the adapter, so it defaults to 300s set by the underlying gosnowflake library. - [dbt-fusion] BigQuery enforced contracts now render `not_null` column constraints into the CREATE TABLE DDL, so the resulting column lands as `mode: REQUIRED` (matching dbt-core + dbt-bigquery) ([#2216](https://github.com/dbt-labs/dbt-fusion/issues/2216)) - [dbt-fusion] Fix Snowflake externalbrowser auth on Windows by bumping the ADBC driver (disables netgo build tag on Windows) ([#1610](https://github.com/dbt-labs/dbt-fusion/issues/1610)) - [dbt-fusion] Databricks `load_result().table.columns` now returns JSON-ified values for structs instead of flattening them. ([#1299](https://github.com/dbt-labs/dbt-fusion/issues/1299)) - [dbt-fusion] sidecar: add DuckDB translation for MD5_NUMBER_LOWER64 so models using it work under --compute sidecar ([#10502](https://github.com/dbt-labs/dbt-fusion/issues/10502)) - [dbt-fusion] sidecar: add DuckDB translation for TO_DECIMAL (and aliases TO_NUMBER, TO_NUMERIC) so models using them work under --compute sidecar ([#10504](https://github.com/dbt-labs/dbt-fusion/issues/10504)) - [dbt-fusion] Standardize language in dbt State warnings: replace "running fail-open" with "executing normally" - [dbt-fusion] Wrap sql in subquery when limit is set to prevent parse error in dbt index show command - [dbt-fusion] sidecar: add DuckDB translation for OBJECT_AGG so models using it work under --compute sidecar ([#10503](https://github.com/dbt-labs/dbt-fusion/issues/10503)) - [dbt-fusion] Prevent duplicate queries when hydrating schemas - [dbt-fusion] LSP fix lineage missing node config values ([#1760](https://github.com/dbt-labs/dbt-fusion/issues/1760)) - [dbt-fusion] Preserve user-supplied source quoting on the manifest and serialize unset source loaded_at_field/loaded_at_query as null for dbt-core parity ([#10078](https://github.com/dbt-labs/dbt-fusion/issues/10078)) - [dbt-fusion] sidecar: add DuckDB translations for SEQ1/SEQ2/SEQ4/SEQ8 (all overloads) so models using them work under --compute sidecar ([#10505](https://github.com/dbt-labs/dbt-fusion/issues/10505)) - [dbt-fusion] sidecar: add DuckDB translation for DIV0NULL so models using it work under --compute sidecar ([#10588](https://github.com/dbt-labs/dbt-fusion/issues/10588)) - [dbt-fusion] Avoid printing the dbt-fusion version twice in top-level CLI help. - [dbt-fusion] Send default on_schema_change to dbt State to match Python plugin semantic hash ### Under the Hood - [dbt-fusion] Unify dbt-deps notice emission via a single NoticeBuffer on DepsOperationContext. Hub deprecation, version-compat, update-available, scrubbed-name, and duplicate-name warnings are recorded as PackageNotice values during resolve/install and flushed at end of run through one path: filter by final lock + apply EmitPolicy (config + test env) + sort + dedup + emit. - [dbt-fusion] Use async tokio FS for dbt-deps package discovery and lock loading (narrow slice). - [dbt-fusion] Implement licensing for strict static analysis - [dbt-fusion] consume dbt State runtime config - [dbt-fusion] Populate agg_params and window in the Fusion manifest, even if not configured - [dbt-fusion] Serialize top-level quoting in metadata for manifest parity with core - [dbt-fusion] Serialize run hooks with hyphens instead of underscores for manifest parity - [dbt-fusion] Update default API and auth URLs from runcache.com to state.dbt.com - [internal] Add dbt-core-specific pyproject.toml so the dbt-core sync ships with name=dbt-core, Apache-2.0 license, and the dbt-core repository URL - [dbt-fusion] Change the internal representation of `Relation` for BigQuery INFORMATION_SCHEMA tables - [dbt-fusion] Pass --no-project to uv run in the CI scripts test workflow so it skips installing the repo-root packaging stub pyproject.toml - [internal] Updated internal duckdb driver now includes the iceberg extension. - [dbt-fusion] Respect metadata_warehouse for dbt State metadata queries - [dbt-fusion] On the incremental parse path, dep package macro namespaces (e.g. dbt_utils) were absent from THREAD_LOCAL_DEPENDENCIES, causing adapter.dispatch() calls to fail when only root-project files had changed. - [dbt-fusion] Restore split-invocation REPL bootstrap and isolate test-framework feature stack in dbt-repl. - [dbt-fusion] Move adapter arg-type resolution into per-method Typed branches so parse-time Jinja calls no longer fail on mistyped inputs - [internal] Add cancellation signal to dbt State BrowserFlow, enabling the browser OAuth flow to be aborted from another task - [internal] Exclude nightly releases from PyPI publishing - [dbt-fusion] StmtSplitter backed by sqlparser's tokenizer - [dbt-fusion] Phase out NaiveStmtSplitter in favor of SqlparserStmtSplitter at all call sites - [internal] dbt-licensing now resolves platform credentials via AuthChain::default() from dbt-platform-auth, replacing the direct dbt_cloud.yml parse - [internal] Move public Windows code-signing certificates (.crt files; no private keys) from /certificates to /fs/sa/certificates so they sync to dbt-core but stay out of dbt-fusion. - [dbt-fusion] Remove NaiveStmtSplitter - [dbt-fusion] Add dbt State enabled log message - [dbt-fusion] Remove sdf-frontend dependency from dbt-run-cache - [internal] Move task-cache into SA, decouple unit_test rendering from sdf-frontend by introducing unit_test_typing and using TypeOps for type formatting - [dbt-index] move parse/columns and parse/test_metadata writes to parse path with delta targets; unify epoch compaction via should_compact(); add parse/generation.parquet cold-start staleness token - [dbt-fusion] Pseudocolumns like `_PARTITIONTIME` should not leak through `adapter.get_columns_in_relation()` anymore. Previously, we had fixed the BigQuery ADBC driver, but it seems like pseudocolumns were still leaking through whenever there was a relation cache hit and the cache had been populated by Fusion's static analysis. ([#1748](https://github.com/dbt-labs/dbt-fusion/issues/1748)) - [dbt-fusion] `adapter.expand_target_column_types()`, `adapter.assert_valid_snapshot_given_target_strategy()` and `adapter.get_missing_columns()` should now have better schema cache hit rates - [internal] Add protoc 29.4 to Copybara Docker image so prost-build/tonic-build can compile proto files in CI - [dbt-index] dbt-index bulk SQL ingest: replace row-by-row Arrow→Rust→DuckDB loops with single INSERT OR REPLACE … SELECT … FROM read_parquet() per epoch — 750× faster parse ingest, 50× faster compile ingest - [internal] Move saved query execution into RunTaskHooks trait - [dbt-fusion] Only enable dbt State with DBT_ENGINE_MANAGE_STATE - [internal] Move CheckCache and runnable logic from dbt-tasks to dbt-tasks-sa and dbt-tasks-core ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#10078](https://github.com/dbt-labs/dbt-fusion/issues/10078), [#10078](https://github.com/dbt-labs/dbt-fusion/issues/10078)) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@ajnovice](https://github.com/ajnovice) ([#1193](https://github.com/dbt-labs/dbt-fusion/issues/1193)) - [@akbog,](https://github.com/akbog,) - [@ameredith](https://github.com/ameredith) - [@chayac](https://github.com/chayac) - [@dbtagarovat](https://github.com/dbtagarovat) - [@eakmanrq](https://github.com/eakmanrq) - [@izeigerman](https://github.com/izeigerman) - [@j-clemons](https://github.com/j-clemons) ([#1761](https://github.com/dbt-labs/dbt-fusion/issues/1761), [#1760](https://github.com/dbt-labs/dbt-fusion/issues/1760)) - [@kczimm](https://github.com/kczimm) - [@kendru](https://github.com/kendru) - [@lottaquestions](https://github.com/lottaquestions) ([#10382](https://github.com/dbt-labs/dbt-fusion/issues/10382)) - [@mach-kernel](https://github.com/mach-kernel) ([#10506](https://github.com/dbt-labs/dbt-fusion/issues/10506), [#10502](https://github.com/dbt-labs/dbt-fusion/issues/10502), [#10504](https://github.com/dbt-labs/dbt-fusion/issues/10504), [#10503](https://github.com/dbt-labs/dbt-fusion/issues/10503), [#10505](https://github.com/dbt-labs/dbt-fusion/issues/10505), [#10588](https://github.com/dbt-labs/dbt-fusion/issues/10588)) - [@ragesh-g](https://github.com/ragesh-g) ([#9921](https://github.com/dbt-labs/dbt-fusion/issues/9921), [#1610](https://github.com/dbt-labs/dbt-fusion/issues/1610)) - [@serramatutu](https://github.com/serramatutu) ([#1299](https://github.com/dbt-labs/dbt-fusion/issues/1299), [#1748](https://github.com/dbt-labs/dbt-fusion/issues/1748)) - [@shaydendbt](https://github.com/shaydendbt) - [@tauhid621](https://github.com/tauhid621) - [@tauhidanjum](https://github.com/tauhidanjum) - [@themisvaltinos](https://github.com/themisvaltinos) - [@will-sargent-dbtlabs](https://github.com/will-sargent-dbtlabs) ([#2216](https://github.com/dbt-labs/dbt-fusion/issues/2216)) - [@wolfram](https://github.com/wolfram) ## 2.0.0-preview.178 Released May 26, 2026 ### Features - [dbt-fusion] Wire ClickHouse into dbt-adapter core: factory, columns, relations, type key, and listing-table column strategy ([#9513](https://github.com/dbt-labs/dbt-fusion/issues/9513)) - [dbt-fusion] Add ClickHouseMetadataAdapter, clickhouse_get_relation, and adapter auth tests ([#9514](https://github.com/dbt-labs/dbt-fusion/issues/9514)) - [dbt-fusion] Add interactive ClickHouse profile setup wizard to dbt init ([#9515](https://github.com/dbt-labs/dbt-fusion/issues/9515)) - [dbt-fusion] Add ClickHouse adapter record/replay test scaffolding ([#9516](https://github.com/dbt-labs/dbt-fusion/issues/9516)) - [dbt-fusion] Add ClickHouse event-time filtering (parseDateTimeBestEffort) and time-machine semantic annotations for 15 adapter methods ([#9939](https://github.com/dbt-labs/dbt-fusion/issues/9939)) - [dbt-fusion] Make Snowflake driver log level configurable via the `driver_log_level` field in profiles.yml (defaults to `fatal`) - [dbt-fusion] Embed committed dbt-docs-v2 SPA bundle in dbt-docs-server. UI source of truth is the dbt-ui repo; built bundle is committed under web/dist/ and baked into the binary at compile time. - [dbt-index] dbt-index: add --fusion flag to serve command for lazy incremental ingestion from dbt-fusion target/metadata/ parquet files - [dbt-index] dbt-index: Arrow-direct fusion ingest path reduces cold ingest from 4.5s to ~500ms by reading target/metadata/ parquet with Arrow and writing index parquet via IndexWriter, bypassing DuckDB entirely - [dbt-fusion] Wire up the /api/v1/files route in dbt-docs-server with handler-level tests - [dbt-fusion] BigQuery: honor source loaded_at_field / loaded_at_query overrides in run-cache freshness checks - [dbt-index] dbt-index: unified search MCP/CLI tool with code/metadata modes, DAG context, --downstream-of/--upstream-of/--depth subgraph filtering, format=json for MCP search, restored csv/table/ndjson search output, and corrected code search filtering to return only raw/compiled SQL matches - [dbt-fusion] Add GET /api/v1/sources/:id endpoint to dbt-docs-server - [dbt-fusion] add transient tmp relation type for incremental models ([#9915](https://github.com/dbt-labs/dbt-fusion/issues/9915)) - [dbt-fusion] Add copy_tags config option for Snowflake table and clone materializations (mirrors copy_grants) ([#10223](https://github.com/dbt-labs/dbt-fusion/issues/10223)) - [dbt-fusion] Add GET /api/v1/seeds/:id endpoint to dbt-docs-server - [dbt-fusion] Add GET /api/v1/tests/:id endpoint to dbt-docs-server (also covers unit_test.* unique_ids) - [dbt-fusion] Add GET /api/v1/snapshots/:id endpoint to dbt-docs-server - [dbt-fusion] Add GET /api/v1/macros/:id endpoint to dbt-docs-server - [dbt-fusion] Add GET /api/v1/groups/:id endpoint to dbt-docs-server - [dbt-fusion] Add GET /api/v1/exposures/:id endpoint to dbt-docs-server - [dbt-fusion] Add GET /api/v1/metrics/:id endpoint to dbt-docs-server - [dbt-fusion] Add GET /api/v1/semantic_models/:id endpoint to dbt-docs-server - [dbt-fusion] Add GET /api/v1/saved_queries/:id endpoint to dbt-docs-server - [dbt-index] Add drop_schemas action to warehouse_mutate MCP tool for worktree schema cleanup - [dbt-fusion] Add dbt-clickhouse macro package with full materialization support ([#9960](https://github.com/dbt-labs/dbt-fusion/issues/9960)) - [dbt-fusion] dbt-repl revision: it no longer requires a pre-built target/ - [dbt-fusion] Migrate `GET /api/v1/models` from offset/limit pagination to cursor pagination (`first`/`after` + `page_info`). - [dbt-fusion] [Redshift] Migrate `get_columns_in_relation` to `SHOW COLUMNS FROM TABLE` when `datasharing` is enabled, allowing cross-database column introspection ([#9022](https://github.com/dbt-labs/dbt-fusion/issues/9022)) - [dbt-fusion] Enable ClickHouse adapter tests: add golden recordings for all 17 adapter record/replay tests (create_schema, drop_schema, get_relation, get_columns_in_relation, and more); enable auth tests with graceful skip when credentials are absent; add secure=true to generated ClickHouse profile for Cloud (HTTPS) endpoints - [] Add GET /api/v1/sources and GET /api/v1/sources/facets endpoints to dbt-docs-server ([#7432](https://github.com/dbt-labs/dbt-fusion/issues/7432)) - [dbt-fusion] Run Cache: load OAuth client-id/client-secret from `~/.dbt/dbt_cloud.yml` `state:` section, auto-refreshing the file when the section is missing. - [dbt-fusion] Publish dbt Fusion CLI to PyPI so users can install via 'pip install dbt' - [dbt-fusion] dbt-platform-auth: scope-aware OAuth credential resolution with refresh token support — OAuthPassiveResolver filters by client_id, validates cached session scopes, and now exchanges expired refresh tokens for new access tokens (4xx revocation → AuthenticationExpired; network errors → RefreshFailed); OAuthInteractiveResolver merges previously-cached scopes with the new request so re-auth never drops granted scopes; OAUTH_CLIENT_ID moved from resolver layer to chain layer and is now required at resolver construction; both resolver resolve() methods are now public - [dbt-fusion] Add 'dbt run-operation --sql ' to execute an ad-hoc SQL/Jinja statement directly against the target database without authoring a macro file. The statement goes through the standard Jinja rendering pipeline (ref(), source(), var(), target, …), supports ref() to ephemeral models (CTEs are compiled and injected on the fly), and is recorded in run_results.json under the synthetic unique_id 'sql_operation..inline_query'. ### Fixes - [dbt-fusion] Fix name_map collision in source freshness when multiple packages define sources pointing to the same physical table ([#1451](https://github.com/dbt-labs/dbt-fusion/issues/1451)) - [dbt-fusion] Fix state:modified triggering on snapshots incorrectly - [dbt-index] Fix compiled_at and compiled_code_hash always being NULL in compile/nodes parquet output; caused dbt_rt.node_status to always show effective_phase='parsed' - [dbt-fusion] Default omitted snapshot_meta_column_names entries when exposing snapshot_table_column_names to snapshot macros. ([#10230](https://github.com/dbt-labs/dbt-fusion/issues/10230)) - [dbt-fusion] Fix Snowflake query cancellation. `Ctrl-C` should now cancel the SQL queries in the remote warehouse. ([#1475](https://github.com/dbt-labs/dbt-fusion/issues/1475)) - [dbt-fusion] Stop emitting spurious dbt1005 warnings when a local dbt package depends on another local dbt package via absolute paths (dbt-fusion#1337) ([#1337](https://github.com/dbt-labs/dbt-fusion/issues/1337)) - [dbt-fusion] Microbatch: source-side event-time predicate now includes the explicit `+00:00` UTC offset, matching dbt-core. Fixes incorrect temp-view window vs. DELETE window in non-UTC Snowflake sessions. ([#1608](https://github.com/dbt-labs/dbt-fusion/issues/1608)) - [dbt-fusion] Use query-schema inference for unit tests on ephemeral models so the BigQuery probe does not require the model's (non-existent) dataset to exist. ([#10271](https://github.com/dbt-labs/dbt-fusion/issues/10271)) - [dbt-fusion] manifest parity: populate config.severity, config.store_failures_as, file_key_name, and config.group on generic test nodes to match dbt-core ([#10077](https://github.com/dbt-labs/dbt-fusion/issues/10077)) - [dbt-fusion] Custom column constraint expressions (type: custom) are no longer silently dropped from CREATE TABLE DDL, matching dbt-adapters base behavior ([#1733](https://github.com/dbt-labs/dbt-fusion/issues/1733)) - [dbt-fusion] Stop spurious full-parse fallback under --partial-parse / --partial-load when profiles.yml lives outside the project root (e.g. ~/.dbt/profiles.yml) - [dbt-fusion] Fix COPY GRANTS clause ordering in Snowflake Iceberg built-in, REST, and Glue CLD CREATE TABLE macros. Fix underlying database configuration bug. ([#10223](https://github.com/dbt-labs/dbt-fusion/issues/10223)) - [dbt-fusion] Make private package resolver matching case-insensitive so provider URL casing and packages.yml casing resolve consistently. - [dbt-fusion] Populate unrendered_config in manifests for most resource types, and ensure that they are completely unrendeered and raw - [dbt-fusion] `--compute sidecar` + `--dbt-replay`: resolve unit-test `given` upstream schemas from the recording instead of erroring ([#10328](https://github.com/dbt-labs/dbt-fusion/issues/10328)) - [dbt-fusion] Stop sending `last_modified_epoch` on dbt State service confirmations for data tests, so the audit relation's timestamp never accompanies a `DBT_DATA_TEST` execution submitted with `target_table=None`. - [dbt-fusion] Honor the configured threads limit when applying connection backpressure, so runs saturate but do not overshoot connection concurrency. ([#1338](https://github.com/dbt-labs/dbt-fusion/issues/1338)) - [dbt-fusion] Emit node status `success` instead of `reused` when a clone cache hit occurs from the dbt State run cache service - [dbt-fusion] ClickHouse: fix view materialization failing with unknown keyword argument 'database' in load_cached_relation ([#1749](https://github.com/dbt-labs/dbt-fusion/issues/1749)) - [dbt-extension] Fix query results panel horizontal scrollbar hidden when table has many columns ([#1732](https://github.com/dbt-labs/dbt-fusion/issues/1732)) - [dbt-fusion] fix(clickhouse): add missing quotes around database/table name literals in get_relation SQL, remove incorrect case-normalization (system.tables is case-sensitive) ([#1702](https://github.com/dbt-labs/dbt-fusion/issues/1702)) - [dbt-fusion] Under `--dbt-replay`, unit tests infer expected schema via the temp-relation path, matching recordings captured from warehouse builds - [dbt-fusion] Exclude connection-limit wait time from node duration and show waiting nodes as idle in interactive progress. ([#1559](https://github.com/dbt-labs/dbt-fusion/issues/1559)) - [dbt-fusion] Preserve normal CLI runtime shutdown so Time Machine recordings are finalized before process exit. - [dbt-fusion] Implement `array_compact` for the DuckDB sidecar ([#10418](https://github.com/dbt-labs/dbt-fusion/issues/10418)) - [dbt-fusion] Run cache deferral no longer errors when the defer-to target cannot be resolved; it now logs at trace level and silently skips deferral instead. - [dbt-fusion] Accept both string-list and map-list forms for the `partitions` model config, restoring compatibility with the `dbt-external-tables` package convention. - [dbt-fusion] Reserved Python dict methods (`items` / `keys` / `values` / `get`) on Map values now defer to the environment's `unknown_method_callback` instead of being shadowed by user keys with the same names, matching Python's dict-method-on-class semantics. - [dbt-fusion] Don't invalidate the partial-parse cache when an env_var(NAME, default) call has NAME unset and the var is still unset on the next run ### Under the Hood - [dbt-fusion] Enable ClickHouse ADBC driver assertions in dbt-xdbc driver-load tests ([#1698](https://github.com/dbt-labs/dbt-fusion/issues/1698)) - [dbt-fusion] Deleted SnowflakeRelation in favor of Relation(AdapterType::Snowflake) - [dbt-fusion] Add `cargo ci` command for release-time version stamping, wheel builds, and PyPI publishing - [dbt-fusion] Rename kind→resource_type in parse-cache parquet schema, standardize ingested_at to Timestamp(µs, UTC) across all parquet tables, and add path:/file:/source: selector support to partial-load optimization with --dirty selector synthesis and ancestor ordering fix ([#10218](https://github.com/dbt-labs/dbt-fusion/issues/10218)) - [internal] Add dbt-core 2-way Copybara sync workflows (forward sync, can-build gate, reverse PR sync) - [dbt-fusion] move a set of fs unique macros to a different place, to help with the macros sync process - [internal] Increase CDN retry budget for 'dbt system update' (5 attempts with 500ms base + ≤25% jitter, doubling each retry: ~500ms/1s/2s/4s) so transient CloudFront 503s have room to recover. Previously: 3 attempts with 200ms backoff. - [dbt-index] fusion ingest: fix µs/ns precision mismatch in persisted state so delta skips already-ingested epochs; always populate base_mtime on cold ingest to prevent spurious full-reload on first delta call - [dbt-fusion] Document the REST API response shape for dbt-docs-server detail endpoints covering seeds, snapshots, tests, exposures, groups, macros, metrics, saved_queries, and semantic_models, ahead of implementation - [internal] Add --env option, similar to docker's option, to cargo mantle - [dbt-fusion] [dbt-fusion] rebrand Run Cache user-facing strings to dbt State - [dbt-fusion] Emit telemetry for time spent waiting for adapter connections. - [dbt-fusion] Add API contracts for ten dbt-docs-server list+facets endpoints (sources, seeds, snapshots, tests, exposures, groups, macros, metrics, saved_queries, semantic_models) and ADR-6 for the uniform envelope. - [internal] Upgrage to 1.5.3 DuckDB for the sidecar - [internal] Add GET /api/v1/search contract to dbt-docs-server API-CONTRACTS.md - [internal] Move DuckDB to 1.5.3 - [internal] Wire GITHUB_TOKEN into the nightly test step in daily.fs.yml so private_repo_tests and GitHub fast-path tests run with authentication - [internal] Make ClickHouse fields in AuthEnv optional so secrets predating ClickHouse support still deserialize correctly - [dbt-fusion] Verticalize `EmptyRelation`. Parse-time `Relation` should behave more like compile-time `Relation` objects now. - [dbt-fusion] Split tracing data provider ancestor APIs for telemetry attributes and extensions - [dbt-fusion] new dbt State configuration - [dbt-fusion] Allow DBT_ENGINE_STATE_* environment variables (STATE_AUTH_URL, STATE_TOKEN_URL, STATE_API_URL, STATE_OAUTH_CLIENT_ID, STATE_EMIT_REUSED_STATUS) - [dbt-fusion] Serialize entity, dimension, and granularity on column configs in the manifest. - [dbt-fusion] bump clickhouse to 0.1.0-a2 - [dbt-fusion] Add "definition" key to selector manifest serialization - [dbt-fusion] Change SHA256 to sha256 for manifest parity with Core - [dbt-fusion] Populate relation_name in manifest correctly when store_failures is globally set - [dbt-fusion] Add trace-level adapter connection open and close telemetry events - [internal] Modified build scripts to properly build duckdb with extensions - [internal] Split copybara originFiles glob so dbt-core sync gets LICENSE and dbt-fusion sync keeps LICENSES.md - [internal] Override workspace version to 2.0.0-alpha.1 for dbt-core copybara syncs via COPYBARA-DBTCORE-VERSION marker; dbt-fusion sync keeps the preview version - [internal] Switch adbc duckdb build to Ninja ### Dependencies - [dbt-fusion] bump duckdb version to 1.5.3 ### Contributors - [@Wolfram.Schulte](https://github.com/Wolfram.Schulte) ([#10218](https://github.com/dbt-labs/dbt-fusion/issues/10218)) - [@aiguofer](https://github.com/aiguofer) ([#10077](https://github.com/dbt-labs/dbt-fusion/issues/10077)) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@ajnovice](https://github.com/ajnovice) - [@andrew.meredith@dbtlabs.com](https://github.com/andrew.meredith@dbtlabs.com) - [@ayshukla](https://github.com/ayshukla) - [@b-per](https://github.com/b-per) ([#1451](https://github.com/dbt-labs/dbt-fusion/issues/1451)) - [@dataders](https://github.com/dataders) ([#9939](https://github.com/dbt-labs/dbt-fusion/issues/9939), [#9960](https://github.com/dbt-labs/dbt-fusion/issues/9960), [#1733](https://github.com/dbt-labs/dbt-fusion/issues/1733)) - [@dave-connors-3](https://github.com/dave-connors-3) ([#9513](https://github.com/dbt-labs/dbt-fusion/issues/9513), [#9514](https://github.com/dbt-labs/dbt-fusion/issues/9514), [#9515](https://github.com/dbt-labs/dbt-fusion/issues/9515), [#9516](https://github.com/dbt-labs/dbt-fusion/issues/9516), [#1698](https://github.com/dbt-labs/dbt-fusion/issues/1698)) - [@eakmanrq](https://github.com/eakmanrq) - [@itsnamangoyal](https://github.com/itsnamangoyal) - [@izeigerman](https://github.com/izeigerman) - [@j-clemons](https://github.com/j-clemons) ([#1732](https://github.com/dbt-labs/dbt-fusion/issues/1732)) - [@jeager](https://github.com/jeager) - [@jgiu](https://github.com/jgiu) - [@joaodaher](https://github.com/joaodaher) - [@joellabes](https://github.com/joellabes) - [@jservilla](https://github.com/jservilla) - [@kczimm](https://github.com/kczimm) - [@koletzilla](https://github.com/koletzilla) ([#1749](https://github.com/dbt-labs/dbt-fusion/issues/1749), [#1702](https://github.com/dbt-labs/dbt-fusion/issues/1702)) - [@mach-kernel](https://github.com/mach-kernel) ([#10230](https://github.com/dbt-labs/dbt-fusion/issues/10230), [#10271](https://github.com/dbt-labs/dbt-fusion/issues/10271), [#10328](https://github.com/dbt-labs/dbt-fusion/issues/10328), [#10418](https://github.com/dbt-labs/dbt-fusion/issues/10418)) - [@peter-bertuglia](https://github.com/peter-bertuglia) - [@ragesh-g](https://github.com/ragesh-g) ([#9022](https://github.com/dbt-labs/dbt-fusion/issues/9022)) - [@serramatutu](https://github.com/serramatutu) ([#1475](https://github.com/dbt-labs/dbt-fusion/issues/1475)) - [@tauhid621](https://github.com/tauhid621) ## 2.0.0-preview.177 Released May 19, 2026 ### Features - [dbt-fusion] [dbt-fusion] compute rows_affected from Snowflake DML result metadata (#1437) ([#1437](https://github.com/dbt-labs/dbt-fusion/issues/1437)) - [dbt-fusion] Add `latest_version_pointer` to ModelConfig JSON schema for latest version pointer support - [dbt-fusion] Add incremental parse behind `--partial-parse` / `DBT_PARTIAL_PARSE=1`: caches resolved project state to disk and reuses it on subsequent runs, re-parsing only changed files - [dbt-fusion] Add DuckLake catalog type for DuckDB catalogs.yml v2 support ([#9732](https://github.com/dbt-labs/dbt-fusion/issues/9732)) - [dbt-fusion] Add local filesystem catalog type for DuckDB with JIT source rendering and external model materialization ([#9733](https://github.com/dbt-labs/dbt-fusion/issues/9733)) - [dbt-fusion] SQLite partial-parse cache: warm parse 4x faster (440ms vs 1840ms), warm compile with --select 11x faster (328ms vs 3700ms) on a 5800-node project; per-row SQLite schema with node_index/node_payload split enables lazy payload loading — seed/snapshot skip model payloads entirely, and single-model selectors query only matched nodes and their direct dependencies - [dbt-fusion] Added support to declare variables in vars.yml - [dbt-fusion] Redshift: support drop_without_cascade profile option — when set to true, DROP TABLE/VIEW/MATERIALIZED VIEW statements omit CASCADE ([#9901](https://github.com/dbt-labs/dbt-fusion/issues/9901)) - [dbt-fusion] Populate compiled_path, compiled_code, and compiled for snapshots in manifest.json; fix EISDIR when multiple snapshot blocks share a source file ([#9930](https://github.com/dbt-labs/dbt-fusion/issues/9930)) - [dbt-fusion] [BigQuery] Add support for adapter_properties.connection_id for BigQuery Iceberg catalog integration - [dbt-fusion] Index-based selector filter for partial-parse: plain atoms, parent walks (+x), Or/And compounds, and Eager indirect selection now load only matched nodes instead of the full project graph - [dbt-fusion] Support Snowflake Programmatic Access Token (PAT) authentication via 'authenticator: programmatic_access_token' or 'method: programmatic_access_token'. Requires 'user' and 'token' in the profile; any 'password' value is ignored. ([#1688](https://github.com/dbt-labs/dbt-fusion/issues/1688)) - [dbt-fusion] feat(partial-parse): add --lazy-load flag with parquet cache fast-path, unique-id filter, profile_hash validation, and --stress-lazy-load correctness checker - [dbt-fusion] Warn error options now allow configuration through both error names and codes. Error strings now also contain both codes and names" - [dbt-fusion] Add in-binary dbt docs v2 server (`dbt docs serve`) that exposes parquet artifacts produced by --use-index through an HTTP API and an embedded React SPA. All data access — both untyped SQL and typed column-level lineage / impact — is gated through dyn-compatible Provider traits in dbt-index-core, with proprietary impls injected from dbt-cli. - [internal] Append-only invocation parquet: writes one row per dbt command to metadata/invocations/ - [dbt-fusion] Parse cache: v1_ schema versioning, alive table, promoted fields for DuckDB pushdown - [dbt-fusion] Append-only runtime results and freshness parquet tables for execution history - [dbt-fusion] Add parse/alive snapshot parquet table for node liveness authority - [dbt-fusion] Add compile/columns epoch-append parquet table for inferred column types - [dbt-fusion] Wire runtime results and freshness parquet writes into dbt-main command paths - [dbt-fusion] Support SQL inputs with arbitrary deep nested expressions - [internal] add dbt-platform-auth crate: credential types and resolver chain for dbt platform authentication - [dbt-extension] VS Code extension now detects dbt installs older than 2.0.0-preview.165 and surfaces an error-level prompt to update instead of attempting to start the language server. - [internal] feat(ci): auto-increment release version from CDN LATEST when not specified - [dbt-fusion] (feat redshift) supports access_key_id and secret_access_key in Redshift IAM authentication. When both are provided, they take precedence over iam_profile. ([#1717](https://github.com/dbt-labs/dbt-fusion/issues/1717)) - [dbt-fusion] Add GET /api/v1/models and /api/v1/models/facets endpoints to dbt-docs-server: paginated, filtered, sorted model list with modeling_layer, access_level, contract_enforced, owner, and executed_at fields; plus facets endpoint for filter dropdown population - [dbt-fusion] Honor per-model meta.run_cache_tolerate_nondeterminism override for the Run Cache service - [dbt-fusion] Add browser-based PKCE OAuth flow for Run Cache client with on-disk token cache and refresh-token support; client-credentials auth still takes precedence when RUN_CACHE_OAUTH_CLIENT_SECRET is set - [dbt-fusion] Add GET /api/v1/models/:id endpoint to dbt-docs-server returning typed ModelDetail with execution_info and catalog ### Fixes - [dbt-fusion] Resolve per-version `description` for versioned models in the manifest, matching dbt-core behavior ([#595](https://github.com/dbt-labs/dbt-fusion/issues/595), [#1001](https://github.com/dbt-labs/dbt-fusion/issues/1001)) - [dbt-fusion] Match dbt-core semantics for versioned model field resolution: blank per-version `description` falls back to the top-level description, and top-level `deprecation_date` no longer inherits to versioned children ([#595](https://github.com/dbt-labs/dbt-fusion/issues/595), [#1001](https://github.com/dbt-labs/dbt-fusion/issues/1001)) - [dbt-fusion] Include the `.v` suffix on `attached_node` for data_tests on versioned models, matching dbt-core. Source tests now correctly have `attached_node = null`. - [dbt-fusion] Fix panic and duplicate semantic model/metric generation for versioned models when defining semantic_model or metrics inline in YAML - [dbt-fusion] Show rendered SQL for single-model compile output ([#668](https://github.com/dbt-labs/dbt-fusion/issues/668)) - [dbt-fusion] Improve the MetricFlow Server validation error surfaced during `fs compile` to explain why MFS is contacted during parse (even when Semantic Layer resources are excluded via `--exclude-resource-types`) and point users at `--skip-semantic-manifest-validation` as a bypass when the Semantic Layer is not in use for this invocation. - [internal] Make mark-release-bad.yml's versions.json precondition check exact-match against the tag string so suffixed versions (e.g. v2.0.0-preview.176) don't false-positive a check for v2.0.0. - [dbt-fusion] Fix selector schema: parse bare-array definition as implicit union; widen childrens_parents/parents/children schema to accept Jinja strings - [dbt-fusion] Add description to selector method field in JSON schema listing valid method names and dot-notation usage - [dbt-fusion] Fix selector colon-value form (method: config, value: "materialized:table") to match nodes — parity with dbt-core - [dbt-fusion] Ensure unit tests render ephemeral upstreams needed by the model under test. ([#1654](https://github.com/dbt-labs/dbt-fusion/issues/1654)) - [dbt-fusion] fix CompositeExpr JSON schema so selectors.yml with union/intersection definitions validates correctly in IDE - [dbt-fusion] (fix bigquery) job_execution_timeout_seconds took secs as ms ([#1722](https://github.com/dbt-labs/dbt-fusion/issues/1722)) - [dbt-fusion] Have state:modified treat null to be equivalent to Baseline. - [dbt-fusion] fix(run-cache): match deferred/request FQNs via semantic_fqn, confirm Fusion dev clones, fix epoch resolution to milliseconds ([#10206](https://github.com/dbt-labs/dbt-fusion/issues/10206)) - [dbt-fusion] Decouple parser parallelism from the profile's `threads` setting; parse now saturates available CPUs and is gated only by `--no-parallel`. `threads` remains the adapter connection-pool size. - [dbt-fusion] fix(run-cache): treat BigQuery missing dataset (404) in freshness lookup as missing tables instead of bypassing the run cache ### Under the Hood - [dbt-fusion] chore(telemetry): add some new catalogs.yml info into run model attributes ([#1510](https://github.com/dbt-labs/dbt-fusion/issues/1510)) - [internal] Extend redist-adbc-driver-gh.yml to support duckdb/duckdb release assets and wire up libduckdb redistribution in release.xdbc.yml - [dbt-fusion] LSP add otel - [dbt-fusion] Read parquet/JSON seeds without DataFusion - [internal] Write column-level lineage to epoch-append parquet files under compiled_state/cll/{N}.parquet alongside the existing index write path; incremental compiles write only recomputed-target edges, compaction fires at >8 epochs - [internal] Add epoch-append parquet for compiled node state (compiled_state/nodes/{N}.parquet) — compile-time complement to node_facts, enabling dbt-index to query compiled fields without the ingest pipeline - [dbt-fusion] Add file-driven snapshot test framework for DuckDB v2 catalog ATTACH DDL. - [dbt-fusion] Persist epoch, extended_model, macro spans and arguments in NodeFactRow parquet cache; move parquet partial-parse code to fs/sa/crates/dbt-metadata; delete orphaned crates/dbt-metadata scratch directory - [dbt-fusion] Use async parquet I/O for seed pre-registration; JSON/CSV stay on blocking pool - [dbt-fusion] Harden dbt-agate mutant coverage. - [dbt-fusion] Harden dbt-xdbc behavior coverage with targeted mutant tests. - [dbt-fusion] Harden dbt-adapter-core behavior coverage with targeted mutant tests. - [dbt-index] Add dbt-index-core crate with abstract Provider trait surfaces for column lineage and column impact; dbt-index now implements them via DuckDbColumnLineageProvider and DuckDbColumnImpactProvider. - [dbt-fusion] Deleted `BigqueryRelation` in favor of `Relation(AdapterType::Bigquery)` - [dbt-fusion] (adapter): Followup to PR https://github.com/dbt-labs/fs/pull/10125. Complete cleanup of RecordBatch utils. - [dbt-fusion] Sidecar compute warns & skips unsupported hook DDL instead of hard error ([#9932](https://github.com/dbt-labs/dbt-fusion/issues/9932)) - [dbt-fusion] Eliminate Jinja Environment cloning in typecheck paths: add template_from_named_str_with_profile() to minijinja so typecheck() never clones the env. Reduces peak RSS by ~130 MB and minor page faults by ~14% on an 11k-model project. - [dbt-fusion] Ensure docs and all disabled_nodes are serialized with resource_type for parity with dbt-core - [dbt-fusion] Serialize manifest config fields with empty defaults to match dbt-core's non-Optional schema (tags, meta, persist_docs, quoting, packages, docs, contract, access, to_columns, etc.) - [internal] Drop spurious dependency on postgres - [internal] Widen then dateadd and fix the current_timestamp - [internal] Remove dead CLI build-cache infrastructure and unused ParquetNode/serde/column code (~7,200 lines) ([#10169](https://github.com/dbt-labs/dbt-fusion/issues/10169)) - [dbt-fusion] Refactor dbt-metadata-parquet: deduplicate epoch I/O into shared module, standardize naming, extract index_resolution - [internal] Rename DuckDB ADBC driver artifact to duckdb_extended at build time in all build scripts and signing steps - [dbt-fusion] Hard-exit after flushing output to skip tracing-subscriber destructor overhead, saving ~200ms on every invocation. - [internal] Add local compute storyline slide deck (Marp) for Fivetran talk - [internal] Add API-CONTRACTS.md to dbt-docs-server with ADRs, GET /api/v1/models/:id and GET /api/v1/sources/:id contracts (JSON examples, flat field reference tables, TypeScript types, risk registers), and update agent context from metadata-ui to dbt-ui ([#7414](https://github.com/dbt-labs/dbt-fusion/issues/7414)) - [dbt-fusion] cargo mantle: mount ~/.dbt to container home; add --fusion-binary and --venv flags - [dbt-fusion] Add scale-6k test fixture as compact TSV + pack/unpack scripts; 5844 dbt models in a single 4MB file instead of 6000 checked-in SQL files - [dbt-fusion] bump clickhouse driver version (the first) - [dbt-fusion] add extended duckdb driver to CDN - [dbt-fusion] Add Backend::DuckDB for the official duckdb/duckdb ADBC driver at fs/adbc/duckdb/ on the CDN ([#9958](https://github.com/dbt-labs/dbt-fusion/issues/9958)) - [dbt-fusion] REPL is now a stand-alone library, replacing dbt --interactive ### Contributors - [@ElDeFaria](https://github.com/ElDeFaria) - [@HannanNaeem](https://github.com/HannanNaeem) ([#668](https://github.com/dbt-labs/dbt-fusion/issues/668)) - [@Wolfram.Schulte](https://github.com/Wolfram.Schulte) - [@aahel](https://github.com/aahel) ([#9930](https://github.com/dbt-labs/dbt-fusion/issues/9930)) - [@aiguofer](https://github.com/aiguofer) ([#595](https://github.com/dbt-labs/dbt-fusion/issues/595), [#1001](https://github.com/dbt-labs/dbt-fusion/issues/1001), [#595](https://github.com/dbt-labs/dbt-fusion/issues/595), [#1001](https://github.com/dbt-labs/dbt-fusion/issues/1001)) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@ajnovice](https://github.com/ajnovice) ([#1688](https://github.com/dbt-labs/dbt-fusion/issues/1688)) - [@dataders](https://github.com/dataders) ([#9732](https://github.com/dbt-labs/dbt-fusion/issues/9732), [#9733](https://github.com/dbt-labs/dbt-fusion/issues/9733), [#9958](https://github.com/dbt-labs/dbt-fusion/issues/9958)) - [@dataders,](https://github.com/dataders,) - [@izeigerman](https://github.com/izeigerman) ([#10206](https://github.com/dbt-labs/dbt-fusion/issues/10206)) - [@j-clemons](https://github.com/j-clemons) - [@lottaquestions](https://github.com/lottaquestions) - [@mach-kernel](https://github.com/mach-kernel) ([#1654](https://github.com/dbt-labs/dbt-fusion/issues/1654), [#9932](https://github.com/dbt-labs/dbt-fusion/issues/9932)) - [@maxmalkin](https://github.com/maxmalkin) - [@rmankad,](https://github.com/rmankad,) ([#1437](https://github.com/dbt-labs/dbt-fusion/issues/1437)) - [@serramatutu](https://github.com/serramatutu) - [@sriramr98](https://github.com/sriramr98) ## 2.0.0-preview.176 Released May 12, 2026 ### Features - [dbt-fusion] Add `iceberg_version` config support for Snowflake Iceberg V3 tables — sets `ICEBERG_VERSION` in DDL for built-in catalog, iceberg REST catalog, and dynamic tables, with model-level config taking precedence over `catalogs.yml` defaults. ([#8898](https://github.com/dbt-labs/dbt-fusion/issues/8898)) - [dbt-fusion] Adds PackageParsingCompatibility as a supported warn_error_options group for dependency package strict parsing compatibility diagnostics. - [dbt-fusion] BigQuery: support model-level job_execution_timeout_seconds config, passed as QUERY_JOB_TIMEOUT to the ADBC driver during execution - [dbt-fusion] Add ClickHouse profile parity settings to dbt-schemas ### Fixes - [dbt-fusion] Implement jarowinkler_similarity() in DuckDB sidecar ([#9813](https://github.com/dbt-labs/dbt-fusion/issues/9813)) - [dbt-fusion] Honor project-level `+freshness: null` for sources so it propagates as `freshness: null` in the manifest ([#7188](https://github.com/dbt-labs/dbt-fusion/issues/7188)) - [dbt-fusion] Snapshot `state:modified.body` parity: strip `{% snapshot %}` blocks correctly from on-disk SQL after `normalize_sql` - [dbt-fusion] Replay no longer returns an empty AgateTable for on-run-end / on-run-start operation hooks. The execute path now normalizes the operation node id (Fusion underscores → Mantle hyphens) before lookup, so macros like apply_meta_as_tags that read load_result(...).table.columns work as recorded. - [dbt-fusion] Allow hand-written dbt-shaped CTE names to compile without treating them as ephemeral model refs. ([#1167](https://github.com/dbt-labs/dbt-fusion/issues/1167)) - [dbt-extension] VS Code: 'Open project' step in the Get Started panel now completes when a dbt project lives in a workspace subdirectory, not only at the workspace root. - [dbt-fusion] Apply BigQuery policy tags to columns during persist_docs via ALTER COLUMN SET OPTIONS; also support config.policy_tags syntax in column definitions ([#1580](https://github.com/dbt-labs/dbt-fusion/issues/1580)) - [dbt-fusion] Sidecar unit test parity for `format: sql` fixtures with mixed numeric/string literals ([#9754,9672](https://github.com/dbt-labs/dbt-fusion/issues/9754,9672)) - [dbt-fusion] Fix state:modified selection detecting default quoting configs as modified - [dbt-extension] VS Code extension: retry transient network errors during auth and recover from VerificationError automatically when the underlying issue clears (previously required a manual window reload). ([#1691](https://github.com/dbt-labs/dbt-fusion/issues/1691)) - [dbt-fusion] Bump default Snowflake LOGIN_TIMEOUT from 10s to 60s and add connect-on-retry with quadratic backoff, matching dbt-snowflake (Python) connect_retries / retry_all / retry_on_database_errors semantics - [dbt-fusion] Render embedded double quotes in DuckDB identifiers from the DataFusion unparser ([#10057](https://github.com/dbt-labs/dbt-fusion/issues/10057)) - [dbt-fusion] JSON schema for model version blocks now accepts the `columns` field as an array, fixing VS Code YAML validation error 'Incorrect type. Expected object' - [dbt-fusion] release.fs.yml: grant code-quality:read to test-fs call site so GitHub Actions graph resolution succeeds when callee uses permissions: read-all - [internal] Fix build warnings ### Under the Hood - [dbt-fusion] (dbt-adapter): more user friendly gating on attempts to use adapter not yet supported ([#1258](https://github.com/dbt-labs/dbt-fusion/issues/1258)) - [dbt-fusion] Delete SalesforceRelation in favor of Relation(AdapterType::Salesforce) - [internal] Replace per-entry parquet schema files with epoch-append parquet cache under compiled_state/schemas_analyzed/ and warehouse_state/schemas_remote/ (no SQLite dependency) - [dbt-fusion] Added new specific error codes instead of generic error codes - [dbt-fusion] Add stale-thread-local Snowflake connection repro test (xdbc, opt-in via --ignored) - [dbt-fusion] Add Snowflake STATEMENT_TIMEOUT cancellation repro test (xdbc, opt-in via --ignored) - [dbt-fusion] Bump BigQuery ADBC driver to support per-column policy tag updates - [dbt-fusion] Delete RedshiftRelation in favor of Relation(AdapterType::Redshift) - [dbt-fusion] (compatibility) align is_iceberg_format on Snowflake relation to attribute access in Jinja, matching upstream dbt-adapters @property behavior - [internal] Replace dateadd macro with the extension - [dbt-fusion] Add sidecar unit test parity coverage for unmocked dependency failures. ([#9522](https://github.com/dbt-labs/dbt-fusion/issues/9522)) ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) ([#1167](https://github.com/dbt-labs/dbt-fusion/issues/1167)) - [@aahel](https://github.com/aahel) ([#8898](https://github.com/dbt-labs/dbt-fusion/issues/8898)) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@ajnovice](https://github.com/ajnovice) - [@b-per](https://github.com/b-per) ([#1580](https://github.com/dbt-labs/dbt-fusion/issues/1580)) - [@dataders](https://github.com/dataders) ([#1691](https://github.com/dbt-labs/dbt-fusion/issues/1691)) - [@itsnamangoyal](https://github.com/itsnamangoyal) - [@jcserv](https://github.com/jcserv) ([#7188](https://github.com/dbt-labs/dbt-fusion/issues/7188)) - [@koletzilla](https://github.com/koletzilla) - [@mach-kernel](https://github.com/mach-kernel) ([#9754,9672](https://github.com/dbt-labs/dbt-fusion/issues/9754,9672), [#10057](https://github.com/dbt-labs/dbt-fusion/issues/10057), [#9522](https://github.com/dbt-labs/dbt-fusion/issues/9522)) - [@ragesh-g](https://github.com/ragesh-g) - [@serramatutu](https://github.com/serramatutu) ## 2.0.0-preview.175.1 Released May 08, 2026 ### Breaking Changes - [dbt-fusion] dbt man --schema dbt_cloud now emits the full dbt_cloud.yml schema (version, context, projects[]) rather than the flat two-field shape in the hand-maintained dbt-jsonschema schema; editors configured against the old schema will need to update ### Features - [dbt-fusion] Generate packages-latest-fusion.json and dependencies-latest-fusion.json JSON schemas from fusion source (new `dbt man --schema packages` and `dbt man --schema dependencies` commands); fixes editor lint false-positives on `provider:` and 3-part private package paths. ([#1619](https://github.com/dbt-labs/dbt-fusion/issues/1619)) - [dbt-fusion] Add dbt man --schema selector, --schema profile, and --schema dbt_cloud commands; sync selectors-latest-fusion.json, profiles-latest-fusion.json, and dbt_cloud-latest-fusion.json to dbt-jsonschema repo on release - [dbt-fusion] Implement AthenaAuth with iam, access_key, and profile authentication methods ([#9457](https://github.com/dbt-labs/dbt-fusion/issues/9457)) - [dbt-fusion] Support Spark Connect - [dbt-fusion] Support warn-error options for duplicate package warnings in deps. - [dbt-fusion] [Redshift] Migrate `list_schemas` to `SHOW SCHEMAS` when `datasharing` is enabled, allowing cross-database schema discovery ([#9021](https://github.com/dbt-labs/dbt-fusion/issues/9021)) - [dbt-fusion] Redshift datasharing: cross-database `create_schema` and `drop_schema` support gated by `adapter.has_feature("datasharing")` ([#9027](https://github.com/dbt-labs/dbt-fusion/issues/9027)) - [dbt-fusion] Use SHOW TABLES FROM SCHEMA in redshift list_relations when datasharing is enabled, supporting cross-database relation discovery and gracefully handling missing table_subtype on pre-Patch-197 clusters ([#9020](https://github.com/dbt-labs/dbt-fusion/issues/9020)) - [dbt-extension] VS Code: When dbt compare returns no comparable changes (e.g. new model with no prior state), surface a neutral empty state in the Compare panel instead of a hard error toast. - [dbt-fusion] Add DuckDB catalogs.yml v2 support for Glue and Iceberg REST catalog types ([#9727](https://github.com/dbt-labs/dbt-fusion/issues/9727)) - [dbt-fusion] Add ClickHouseDbConfig and DbConfig::ClickHouse variant to dbt-schemas profile parsing ([#9512](https://github.com/dbt-labs/dbt-fusion/issues/9512)) ### Fixes - [dbt-fusion] Allow cross-project references to handle catalogs.yml V2 - [dbt-fusion] Support warn-error options for scrubbed package-name warnings during deps. - [dbt-fusion] Evaluate the `default:` Jinja in selectors.yml lazily — only when no CLI selection is given. Matches dbt-core behavior and unblocks replays where a selector the user did not ask to use contained unrenderable Jinja. - [dbt-fusion] dbt init now respects --profile and uses the given profile name ([#9698](https://github.com/dbt-labs/dbt-fusion/issues/9698)) - [dbt-fusion] Resolve source freshness configs so a child table's `loaded_at_field` or `loaded_at_query` implicitly clears the inherited peer from the source-level config. Matches dbt-core: a source-wide `loaded_at_query` plus a per-table `loaded_at_field` override (e.g. for the merge-log table the query references) now resolves cleanly instead of erroring with dbt9002. Both keys set in the same config block still errors as before. - [dbt-fusion] Stop Jinja-rendering snapshot YAML `description:` at parse time. Documentation blocks may legitimately contain `{% raw %}{{ ref('x') }}{% endraw %}` doc snippets; rendering them tripped `dbt1501: Jinja macro or function 'ref' is unknown`. Match dbt-core: descriptions are detached from the typed schema before `into_typed_with_jinja` and reattached as raw text. Other snapshot YAML fields (config, meta, …) still render Jinja as before. - [dbt-extension] Refine the VS Code extension Catalog panel resource picker to hide tests and avoid prompting during editor navigation. - [dbt-fusion] Snowflake SEARCH() function now recognized by static analysis (dbt0209 no longer fires) ([#1068](https://github.com/dbt-labs/dbt-fusion/issues/1068)) - [dbt-fusion] Snowflake RESULT_SCAN() table function now recognized by static analysis (dbt0209 no longer fires) ([#1059](https://github.com/dbt-labs/dbt-fusion/issues/1059)) - [dbt-fusion] Snowflake DECFLOAT type is now recognized by static analysis; CAST to/from DECFLOAT no longer produces dbt0244 ([#1072](https://github.com/dbt-labs/dbt-fusion/issues/1072)) - [dbt-fusion] Fix macro divergence with dbt Core in `time_ingestion_tables.sql` for BigQuery - [dbt-fusion] `adapter.get_columns_in_relation()` does not return pseudocolumns like `_PARTITIONTIME` for BigQuery anymore ([#1522](https://github.com/dbt-labs/dbt-fusion/issues/1522)) - [dbt-fusion] Validate use_uniform and file_format combinations for Databricks Unity catalog ([#9648](https://github.com/dbt-labs/dbt-fusion/issues/9648)) - [dbt-fusion] Models with foreign_key constraints referencing other models via ref() or source() now correctly declare those models as DAG dependencies, ensuring proper execution order. ([#1002](https://github.com/dbt-labs/dbt-fusion/issues/1002)) - [dbt-fusion] Snowflake METADATA$* pseudo-columns (e.g. METADATA$ROW_LAST_COMMIT_TIME, METADATA$ACTION) no longer raise an unknown-column error in strict static analysis mode; Fusion overapproximates their types based on Snowflake documentation ([#1590](https://github.com/dbt-labs/dbt-fusion/issues/1590)) - [dbt-fusion] Snowflake : (colon) semi-structured path dereference now correctly returns VARIANT when applied to non-semi-structured columns (e.g. VARCHAR, INTEGER); previously failed with a function overload error ([#884](https://github.com/dbt-labs/dbt-fusion/issues/884)) - [dbt-fusion] Snowflake: a double-quoted positional identifier ("$1", "$2", …) is now resolved as the same positional column reference as its unquoted form, so parse_json("$1") and similar function calls no longer raise "No column $1 found" ([#1086](https://github.com/dbt-labs/dbt-fusion/issues/1086)) - [dbt-fusion] Logs and errors now show phase accurate paths for Unit tests and Generic tests ([#1399](https://github.com/dbt-labs/dbt-fusion/issues/1399)) - [dbt-fusion] Ensure dbt deps does not fail when profile related variables are referenced in dependent packages. ([#1649](https://github.com/dbt-labs/dbt-fusion/issues/1649)) - [dbt-extension] Fix EISDIR crash during LSP startup when a workspace contains a `.env` directory instead of a file. - [dbt-fusion] Sources with '/' in their table name now work with tests ([#1188](https://github.com/dbt-labs/dbt-fusion/issues/1188)) - [dbt-fusion] Model-level constraints defined under a version entry in schema.yml are now applied when materializing that version ([#1001](https://github.com/dbt-labs/dbt-fusion/issues/1001)) - [dbt-fusion] validate_macro_args warnings now include the YML file path to make it easier to locate the offending declaration - [dbt-fusion] fix test_metadata.kwargs missing custom arguments (values, to, field, etc.) in manifest for parameterised generic tests ([#1575](https://github.com/dbt-labs/dbt-fusion/issues/1575)) - [dbt-fusion] Increase MFS timeout for long running sl commands - [dbt-fusion] LSP return errors on show for analyses ([#1652](https://github.com/dbt-labs/dbt-fusion/issues/1652)) - [dbt-fusion] Source table-level config.meta and config.tags now populate node.config.meta and node.config.tags (matches dbt-core) ([#1393](https://github.com/dbt-labs/dbt-fusion/issues/1393)) - [dbt-fusion] manifest.json now populates tested_node_unique_id for unversioned unit tests (previously only versioned unit tests had this field set). ([#1399](https://github.com/dbt-labs/dbt-fusion/issues/1399)) - [dbt-fusion] Fixed a bug where project level flags were not propogated to the jinja layer ([#9858](https://github.com/dbt-labs/dbt-fusion/issues/9858)) - [dbt-fusion] Populate defer_relation on graph.nodes entries (models, snapshots, seeds) so node.defer_relation works in Jinja, matching dbt-core ([#1366](https://github.com/dbt-labs/dbt-fusion/issues/1366)) - [dbt-fusion] Sidecar adapter execute() (DDL/DML, hooks like on-run-start CREATE SCHEMA) now dispatches via a dedicated Execute task payload instead of being wrapped in SELECT * FROM (…) LIMIT N, which produced a parser error for non-SELECT statements. ([#9670](https://github.com/dbt-labs/dbt-fusion/issues/9670)) - [dbt-extension] VSCE allow compatible lsp versions to start extension - [dbt-fusion] fix: JSON schema for model version blocks now includes both 'tests' and 'data_tests' as valid keys; previously only 'data_tests' appeared in the generated schema (the 'tests' alias was not reflected by schemars), causing Studio YAML validation to incorrectly reject version-level tests. Follows the same dual-field pattern already used in ModelProperties. - [dbt-fusion] Versioned models no longer run column tests on columns explicitly excluded via `columns.exclude` in a version block ([#1666](https://github.com/dbt-labs/dbt-fusion/issues/1666)) - [dbt-fusion] Test `state:modified` parity: render leaf primitives Python-style in test names + hashable repr; compare tags as sets - [dbt-fusion] BigQuery materialized views now use the proper `TIMESTAMP ''` syntax when `hours_to_expiration` is specified - [dbt-fusion] fix DbtChecksum::default() to emit name:"none" matching dbt-core FileHash.empty() so generic tests are not false-positive state:modified on every run - [dbt-fusion] Fix source() regression under execute blocks ([#1657](https://github.com/dbt-labs/dbt-fusion/issues/1657)) - [dbt-fusion] Atomically replace the dbt binary on Unix install/update so concurrent invocations never see a missing or partially-written binary - [dbt-fusion] Fix node.path including models/ prefix on Windows due to backslash path separators - [dbt-fusion] Fix freshness merging to allow individual field overrides - [dbt-fusion] Fix state:modified triggering on extra newlines in macros ### Under the Hood - [internal] Introduce Resolved typestate for config resolution pipeline, making it explicit at the type level when a config has been fully resolved - [internal] nextest ci profile: terminate slow tests after 10 minutes so task-cache polling stalls cannot consume the full CI job timeout - [dbt-fusion] Add `FunctionOverload` schema to support overloaded UDFs in function YAML - [dbt-fusion] BigQuery's `adapter.get_columns_in_relation()` is now powered by ADBC's `Connection::get_table_schema()` and uses BigQuery's native API - [dbt-fusion] Marked BigQuery driver connection initialization as thread-safe. Connection initialization should be significantly faster. - [dbt-fusion] LSP: Custom commands dbt.getCurrentNode and dbt.listNodes have internal DTO contract types - [dbt-fusion] Upgrade dbt-antlr4 to 1.3.4 - [dbt-fusion] Rationalize treatment of special/niladic SQL functions - [dbt-fusion] Add dedicated error code HubPackageDeprecated (1096) for Package Hub package-level deprecation metadata. - [dbt-fusion] Add DuckDB to binder sync: re-annotate duckdb/binder.rs and extend sync_common_code.py so cargo xtask sync-binders propagates #[dialect_common] changes to/from DuckDB - [dbt-fusion] use url to fix git_url in yaml path - [internal] Remove the disabled CodeQL workflow to keep builds green. - [internal] Wire all fs release tracks (stable, nightly, extended, fallback) to dbt-orc fs-update dispatch, not just canary - [internal] Simplify sf_to_timestamp so it returns a simple timestamp instead of a struct. - [dbt-fusion] Adjust messaging when failing to fetch info for catalog.json - [dbt-fusion] Introduce dbt-jinja-ctx crate; migrate the load-phase Jinja env globals to a typed LoadCtx struct. Behaviour-neutral first step in the typed-jinja-context migration. - [dbt-fusion] dbt-jinja-ctx: migrate the parse-phase Jinja env globals to a typed ResolveCore struct. Behaviour-neutral; the 11 keys today's hand-built BTreeMap registered are unchanged. - [dbt-fusion] dbt-jinja-ctx: typed ResolveBaseCtx for the parse-phase per-render base context. Behaviour-neutral; build_resolve_context now constructs the typed struct internally and serializes to BTreeMap for caller compat. - [internal] Simplify add_months - [dbt-fusion] Support `UnusedResourceConfigPath` in Fusion warn_error_options, so unused dbt_project.yml resource config paths can be warned on, silenced, or promoted - [internal] Simplify to_time - [internal] Add CI workflow to redistribute the ClickHouse ADBC driver from upstream GitHub releases to the dbt CDN - [dbt-fusion] chore(catalogs.yml): create fast cache access patterns for catalogs.yml data - [internal] Add CI workflow to redistribute the Athena ADBC driver from upstream GitHub releases to the dbt CDN - [dbt-fusion] dbt-jinja-ctx: typed ResolveModelCtx for parse per-render per-model context. Behaviour-neutral; build_resolve_model_context now constructs the typed struct internally and serializes to BTreeMap for caller compat. Object slots stay MinijinjaValue (wrapped at construction site) to preserve downcast contracts on builtins/model. - [dbt-fusion] Move BigQuery's materialized view relation configs to new `config_v2` implementation. - [internal] Replace _to_date macro with the extension implmetation - [dbt-fusion] dbt-jinja-ctx: move parse-phase ParseExecute / MacroLookupContext / DbtNamespace Object impls into dbt-jinja-ctx and tighten the corresponding ResolveBaseCtx and ResolveModelCtx slots from MinijinjaValue to JinjaObject. - [dbt-fusion] dbt-jinja-ctx: typed CompileBaseCtx, CompileNodeCtx, and RunNodeCtx structs replace the historical BTreeMap-built compile/run-phase contexts. - [dbt-fusion] Delete old BigQuery relation config - [dbt-fusion] Code reorganization of adapter `Relation` in preparation for refactor. - [dbt-fusion] Delete `PostgresRelation` in favor of `Relation(AdapterType::Postgres)` - [dbt-fusion] dbt-jinja-ctx: move DummyConfig, HookConfig, LazyModelWrapper Object impls into dbt-jinja-ctx and tighten CompileBaseCtx.config and RunNodeCtx.{model,node} slots from MinijinjaValue to JinjaObject. - [internal] Simpify _timestamp_ntz_to_varchar - [dbt-fusion] Rename Backend::DuckDB to Backend::DuckDBExtended to reserve Backend::DuckDB for the official libduckdb driver ([#9958](https://github.com/dbt-labs/dbt-fusion/issues/9958)) - [internal] Surface the actual error when 'dbt system update' fails (previously swallowed at dispatch — summary said 'successfully' even on non-zero exit). Add bounded retries (3 attempts, 200ms exponential backoff) for transient CDN failures. - [dbt-fusion] Created 'dbt-compilation' crate for sa ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) ([#1399](https://github.com/dbt-labs/dbt-fusion/issues/1399), [#1188](https://github.com/dbt-labs/dbt-fusion/issues/1188), [#1399](https://github.com/dbt-labs/dbt-fusion/issues/1399)) - [@aahel](https://github.com/aahel) - [@aiguofer](https://github.com/aiguofer) ([#1002](https://github.com/dbt-labs/dbt-fusion/issues/1002), [#1001](https://github.com/dbt-labs/dbt-fusion/issues/1001)) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#1657](https://github.com/dbt-labs/dbt-fusion/issues/1657)) - [@ajnovice](https://github.com/ajnovice) - [@ayshukla](https://github.com/ayshukla) - [@ayush.shukla](https://github.com/ayush.shukla) - [@b-per](https://github.com/b-per) - [@benmosher](https://github.com/benmosher) - [@dataders](https://github.com/dataders) ([#1619](https://github.com/dbt-labs/dbt-fusion/issues/1619), [#9727](https://github.com/dbt-labs/dbt-fusion/issues/9727), [#1666](https://github.com/dbt-labs/dbt-fusion/issues/1666), [#9958](https://github.com/dbt-labs/dbt-fusion/issues/9958)) - [@dave-connors-3](https://github.com/dave-connors-3) ([#9512](https://github.com/dbt-labs/dbt-fusion/issues/9512)) - [@donicrosby](https://github.com/donicrosby) - [@itsnamangoyal](https://github.com/itsnamangoyal) - [@j-clemons](https://github.com/j-clemons) ([#1652](https://github.com/dbt-labs/dbt-fusion/issues/1652)) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ([#1649](https://github.com/dbt-labs/dbt-fusion/issues/1649)) - [@mach-kernel](https://github.com/mach-kernel) ([#9670](https://github.com/dbt-labs/dbt-fusion/issues/9670)) - [@ragesh-g](https://github.com/ragesh-g) ([#9648](https://github.com/dbt-labs/dbt-fusion/issues/9648)) - [@serramatutu](https://github.com/serramatutu) ([#1522](https://github.com/dbt-labs/dbt-fusion/issues/1522)) - [@sriramr98](https://github.com/sriramr98) ([#9698](https://github.com/dbt-labs/dbt-fusion/issues/9698), [#9858](https://github.com/dbt-labs/dbt-fusion/issues/9858)) - [@tauhid621](https://github.com/tauhid621) ([#9021](https://github.com/dbt-labs/dbt-fusion/issues/9021), [#9027](https://github.com/dbt-labs/dbt-fusion/issues/9027), [#9020](https://github.com/dbt-labs/dbt-fusion/issues/9020)) - [@waltherlalk](https://github.com/waltherlalk) - [@zhong-dbtlabs](https://github.com/zhong-dbtlabs) ([#1590](https://github.com/dbt-labs/dbt-fusion/issues/1590), [#884](https://github.com/dbt-labs/dbt-fusion/issues/884), [#1086](https://github.com/dbt-labs/dbt-fusion/issues/1086)) ## 2.0.0-preview.175 Released April 29, 2026 ### Features - [dbt-fusion] Support on_error model config parsing, with no-op warning for 'continue' option - [lsp] Add Model Docs panel to VS Code extension showing model name, description, columns, and tests from manifest.json; enriches with run status and test pass/fail from dbt Cloud when configured. Tracked in dbt-fusion#1630. ([#1630](https://github.com/dbt-labs/dbt-fusion/issues/1630)) - [dbt-fusion] Add Athena backend to dbt-xdbc: Backend::Athena variant, ADBC option key constants, and SQL dialect defaults (timestamps, DECIMAL, STRUCT, quoting) ([#9451](https://github.com/dbt-labs/dbt-fusion/issues/9451)) - [dbt-index] dbt-index: rename and consolidate CLI/MCP surface (15→10 tools, consistent flags, backward-compat aliases) - [dbt-index] dbt-index: enrich search with grain column, describe with join safety and advisories - [dbt-index] dbt-index: agent-friendly output format — padded TSV tables, structured timings hints, section headers matching CLI commands, usage hints on errors - [dbt-index] dbt-index: fix -d flag collision, MCP safety annotations, help text accuracy, error recovery hints - [dbt-fusion] Add `datasharing` profile config for Redshift adapter to allow cross-database references on datashare-bound databases and expose to macro via `adapter.has_feature("datasharing")` ([#9019](https://github.com/dbt-labs/dbt-fusion/issues/9019)) - [dbt-fusion] Display --debug info in the --help output. ([#29](https://github.com/dbt-labs/dbt-fusion/issues/29)) - [dbt-fusion] Add a StaticAnalysis warn-error group for frontend diagnostic codes. - [dbt-fusion] Support the 'UnversionedBreakingChange' legacy dbt-core event name in warn-error-options configuration. - [dbt-fusion] Implement --no-quiet ([#29](https://github.com/dbt-labs/dbt-fusion/issues/29)) - [dbt-fusion] Expose `dict.fromkeys()` in Jinja templates for parity with Python. - [dbt-fusion] Add `date.fromisocalendar(year, week, day)` and `datetime.fromisocalendar(year, week, day)` for Python parity. Mirrors CPython's exact error wording (`Invalid week: N`, `Invalid day: N (range is [1, 7])`, `Year is out of range: N`). - [dbt-fusion] Add `dbt completions ` command to generate shell tab completion scripts (bash, zsh, fish, powershell, elvish) ([#1070](https://github.com/dbt-labs/dbt-fusion/issues/1070)) ### Fixes - [dbt-fusion] Deprecated static_analysis on and unsafe values now error instead of warning. - [dbt-fusion] Fix loading dbt Core state manifests for function resources by accepting function access from either top-level access or config.access. - [dbt-index] dbt-index: fix 6 CLI/MCP surface bugs (CTE blocking, dead flags, catalog query, granularity syntax, JSON types, help text) - [dbt-index] dbt-index: improve search ranking (tiered scoring, exclude tests by default), expand ~ in --db path for MCP configs, add workflow guide to CLI --help ([#9545](https://github.com/dbt-labs/dbt-fusion/issues/9545)) - [dbt-fusion] Clean up unused warning sites in clap, licensing, and sdf-frontend. - [dbt-fusion] Error on unmocked unit test refs/sources ([#9523](https://github.com/dbt-labs/dbt-fusion/issues/9523)) - [dbt-fusion] Make fusion compile/run paths similar to dbt core's. ([#713](https://github.com/dbt-labs/dbt-fusion/issues/713)) - [dbt-fusion] Fusion no longer warns when behavior change flags that have been removed are still present in dbt_project.yml. Will be revisited once dbt Core v1.12 ships support for Fusion warning names. - [dbt-index] Strip leading SQL comments before SELECT validation in query command ([#9605](https://github.com/dbt-labs/dbt-fusion/issues/9605)) - [dbt-index] Use OS certificate store for TLS instead of static Mozilla bundle, fixing corporate proxy environments ([#9608](https://github.com/dbt-labs/dbt-fusion/issues/9608)) - [dbt-fusion] Spark `get_columns_in_relation()` macro now returns array if `Column` instead of raw Agate Table - [dbt-fusion] Support the Deprecations warn-error group for Fusion deprecation warnings that map to dbt-core D-category events. ([#8](https://github.com/dbt-labs/dbt-fusion/issues/8)) - [dbt-fusion] Implement suppression of headers when --quiet is passed to fusion ([#1173](https://github.com/dbt-labs/dbt-fusion/issues/1173)) - [dbt-fusion] profiles.yml is now searched in the order: `--profiles-dir` > Current working dir > `~/.dbt/`. Previously we used project directory instead of Cwd ([#1205](https://github.com/dbt-labs/dbt-fusion/issues/1205)) - [dbt-fusion] Mark PackageNodeDependsOnRootProjectNode as WillNotSupport in warn-error-options ([#8](https://github.com/dbt-labs/dbt-fusion/issues/8)) - [dbt-fusion] Accept delimiter-only --select/--exclude values (e.g. '-s ,') instead of hard-erroring at CLI parse; match dbt-core by resolving them to zero matches with dbt1092 + dbt1601 warnings - [dbt-fusion] State-aware run cache now busts when a model's database, schema, or alias changes - [dbt-fusion] (fix snowflake) seed insert dml using bindings doesn't escape backslash in the string literal ([#1614](https://github.com/dbt-labs/dbt-fusion/issues/1614)) - [dbt-fusion] Warn when legacy YAML and schema validation warn_error_options entries have no effect in Fusion. - [dbt-fusion] fix seed slowdown: information schema query is heavy in Snowflake, use metadata adapter which uses metadata query under the hood - [dbt-fusion] Preserve insertion order of grants/privileges in apply_grants materialization to produce deterministic REVOKE/GRANT SQL matching Python dbt ([#9599](https://github.com/dbt-labs/dbt-fusion/issues/9599)) - [dbt-fusion] Fix telemetry span ordering so node processed spans close after their related node evaluated spans. - [dbt-fusion] Support warning and error options for microbatch models without event-time inputs. - [dbt-fusion] Fix Spark static analysis breaking for 2-part names - [dbt-fusion] (fix snowflake) build --empty failed due to incorrectly rendered Jinja for python models ([#1546](https://github.com/dbt-labs/dbt-fusion/issues/1546)) - [dbt-fusion] Make the `first` and `last` filters behave like Python Jinja2 on edge cases: undefined inputs pass through as undefined (no error), dicts yield the first/last key in insertion order (`last` was missing this case), and non-iterable inputs raise Python-style TypeErrors (`first` -> `'' object is not iterable`; `last` -> `'' object is not reversible`). - [dbt-fusion] Render datetime values with a space separator between date and time (matching Python's `str(datetime)`) instead of the ISO 'T' separator. `dt.isoformat()` is unchanged and still uses 'T'. - [dbt-fusion] Generic test arguments shaped like `var(...)` / `env_var(...)` (without surrounding `{{ }}`) are now evaluated as Jinja expressions when forwarded into `config()` calls in the generated test SQL, matching dbt-Core. Previously these flowed through as literal strings and tripped strict serde deserialization on enum-typed config fields like `severity` (dbt1501 "unknown variant"). - [dbt-fusion] When an embedded test config is provided inside a test definition's 'arguments:' block (e.g. arguments: { config: { severity: '{{ var(...) }}' } }), Fusion now emits the embedded config block via the same Jinja-set-var-aware formatter as test macro arguments, instead of raw JSON serialization. Previously the generated set-var name was double-quoted into a JSON string literal and a strict downstream config deserializer (e.g. severity enum) rejected it as 'unknown variant dbt_custom_arg_config_severity' (production conformance bucket dbt1501). - [dbt-fusion] Log dbt deps package update notices at info level instead of warning. - [dbt-fusion] Support warn_error_options for unsupported constraint materialization warnings. ([#8](https://github.com/dbt-labs/dbt-fusion/issues/8)) - [dbt-fusion] Allow package dbt version compatibility warnings from deps to be promoted with warn-error-options. - [dbt-fusion] Accept empty (`{}`) freshness rules and demote partial freshness rules (only one of `count`/`period`) to a parse-time warning, matching dbt-core behavior. Partial rules still error when actually consumed by `dbt source freshness`. - [dbt-fusion] Fix seed column_types parsing to allow column names with spaces (e.g. "School holidays") by auto-quoting invalid unquoted identifiers for Snowflake normalization - [dbt-fusion] Render Jinja in +meta values for Python models so config.meta_get(...) returns resolved strings (e.g. env_var) instead of raw {{ ... }} literals - [dbt-fusion] Fix backticks in Databricks back-quoted identifiers - [dbt-fusion] Propagate non-zero git subprocess exits in the generic dbt-deps git client (fetch/checkout/ls-remote) instead of silently continuing; installs now fail with a clear error when git cannot materialize the locked revision. ### Under the Hood - [dbt-fusion] Refactor git client into modular host-aware architecture with GitHub archive fast path, batched GraphQL ref resolution, and resolution caching - [dbt-fusion] Implement v2 catalogs end to end. - [dbt-fusion] Update error messages in goldie tests for tests that captured YAML deserialization erorrs. ([#1613](https://github.com/dbt-labs/dbt-fusion/issues/1613)) - [dbt-fusion] Make `BaseRelation` strongly type, moved all `Value` conversions to `RelationObject` - [dbt-fusion] Stop publishing standalone dbt-lsp release artifacts; release and VSCE flows now validate the dbt CLI artifact that provides dbt lsp. - [internal] Add Python scripts for release migration - [dbt-fusion] Decouple --threads from task and rendering parallelism; --threads now only controls adapter connection backpressure. Sequential task execution for golden tests is requested via the existing --single-threaded flag. Migrates dbt-cli/dbt-test-utils/dbt-telemetry-export-cli test helpers from --threads=1 to --single-threaded so the connection pool is no longer throttled to hwm=2 during sequential-only tests. - [dbt-index] dbt-index: add 10 semantic layer integrity checks to doctor (orphaned models, column drift, broken metric refs, entity join safety, documentation coverage) - [dbt-fusion] Use simple OTLP exporters in dbt-common layer tests to avoid flaky deadlocks in copybara cargo test runs - [dbt-fusion] Use a unique temp directory for the dbt-common parquet tracing layer test to avoid shared-path collisions - [internal] nextest ci profile: use failure-output=immediate-final so flaky retry attempt output is visible in CI logs - [internal] Remove _to_timestamp and _normalize_datetime_part macro - [dbt-index] Move metricflow compiler tests to dbt-metricflow crate; fix FULL OUTER JOIN COALESCE for 3+ inputs, IS NOT DISTINCT FROM for NULL-safe joins, and fill_nulls_with in derived expressions - [dbt-index] Add community doc with verified CLI/MCP reference; improve MCP tool descriptions for better agent tool selection - [dbt-fusion] Bump BigQuery driver. It returns `BIGQUERY:type=FLOAT64` now instead of `FLOAT` - [dbt-extension] VSCE: Removed option to enable the beta query cache feature. Instead, add the environment variable "DBT_BETA_USE_QUERY_CACHE" set to "true" to enable it. - [internal] Add multi-dialect live execution tests (Redshift 182/182, Databricks 182/182), normalize DOW to ISO standard, port bug fixes from #9688 and #9618 ([#9689](https://github.com/dbt-labs/dbt-fusion/issues/9689)) - [dbt-index] Add ref()/source() resolution in warehouse run, enrich metrics describe output, improve MCP tool descriptions, add canonical skill files - [dbt-fusion] Refactor sdf-slt MantleExe to invoke cargo-mantle (Docker-based dbt-core) instead of a local Python venv configured via ~/.slt/mantle_config. - [dbt-fusion] Share one retrying HTTP client across deps Hub, git, and tarball clients through DepsOperationContext to avoid rebuilding per-call clients. - [dbt-fusion] time machine validation exclude dbt_artifacts package - [dbt-fusion] dbt-common: update jq version to 1.8.1 from 1.7.1 ([#1019](https://github.com/dbt-labs/dbt-fusion/issues/1019)) - [dbt-index] Port 266 MetricFlow Python integration tests as data-driven scorecard; fix multi-hop subquery joins, metric filter CTEs, partition matching, entity path resolution, cumulative/derived/conversion metric compilation, and subdaily time spine handling (217/266 passing, 49 skipped pending custom granularity/dimension-only/SCD support) - [dbt-fusion] Refactor get_target_write_path for better directory nomenclature. - [dbt-fusion] Skip cargo-mantle install if --no-external-deps used - [dbt-extension] VSCE add dbt-lsp.log to Generate System Report command - [dbt-fusion] Remove Verbatim wrapper from ProjectModelConfig.meta so that Jinja in meta fields renders at parse time, matching dbt-core behavior. env_var() and var() in schema.yml config.meta are now evaluated eagerly. ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) ([#1205](https://github.com/dbt-labs/dbt-fusion/issues/1205), [#1019](https://github.com/dbt-labs/dbt-fusion/issues/1019)) - [@aiguofer](https://github.com/aiguofer) - [@ajnovice](https://github.com/ajnovice) ([#9599](https://github.com/dbt-labs/dbt-fusion/issues/9599)) - [@b-per](https://github.com/b-per) ([#1070](https://github.com/dbt-labs/dbt-fusion/issues/1070)) - [@dataders](https://github.com/dataders) - [@dbtagarovat](https://github.com/dbtagarovat) - [@heatcheck64](https://github.com/heatcheck64) ([#1630](https://github.com/dbt-labs/dbt-fusion/issues/1630)) - [@itsnamangoyal](https://github.com/itsnamangoyal) - [@j-clemons](https://github.com/j-clemons) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ([#29](https://github.com/dbt-labs/dbt-fusion/issues/29), [#29](https://github.com/dbt-labs/dbt-fusion/issues/29), [#713](https://github.com/dbt-labs/dbt-fusion/issues/713), [#1173](https://github.com/dbt-labs/dbt-fusion/issues/1173), [#1613](https://github.com/dbt-labs/dbt-fusion/issues/1613)) - [@mach-kernel](https://github.com/mach-kernel) ([#9523](https://github.com/dbt-labs/dbt-fusion/issues/9523)) - [@serramatutu](https://github.com/serramatutu) - [@tauhid621](https://github.com/tauhid621) ([#9019](https://github.com/dbt-labs/dbt-fusion/issues/9019)) ## 2.0.0-preview.174 Released April 22, 2026 ### Features - [dbt-fusion] Add `iceberg_version` to ModelConfig JSON schema for Iceberg V3 support - [dbt-fusion] [Snowflake] Add support for scheduler config for dynamic tables - [internal] Replace Snowflake FLATTEN SQL macro with native sf_flatten C++ table function, eliminating the LiftDuckDbTableFunctionPass rewrite step - [dbt-fusion] enable test nodes for dbt show ([#670](https://github.com/dbt-labs/dbt-fusion/issues/670), [#1232](https://github.com/dbt-labs/dbt-fusion/issues/1232)) - [dbt-index] dbt-index: cloud-sync and diff - [dbt-fusion] Display LSP compile errors at root calls instead of in implementation ([#526](https://github.com/dbt-labs/dbt-fusion/issues/526)) ### Fixes - [dbt-fusion] Clarify token caching prompt for Snowflake and enable prompt in LSP - [dbt-fusion] add --package flag to Windows install powershell script ([#1224](https://github.com/dbt-labs/dbt-fusion/issues/1224)) - [dbt-fusion] Support {project} placeholder in ADO org-level URL templates, allowing one provider-info entry per ADO org instead of one per project - [dbt-fusion] Accept Snowflake VARCHAR() type expression (parentheses with no arguments) ([#674](https://github.com/dbt-labs/dbt-fusion/issues/674)) - [dbt-fusion] Disallow Snowflake window functions in JOIN and GROUP BY ([#956](https://github.com/dbt-labs/dbt-fusion/issues/956)) - [dbt-fusion] Honor RunResultWarning warn-error-options by exiting with status 2 when execution finishes with warned nodes. - [internal] Fix char and date - [dbt-fusion] Support `warn_error_options` for `NoNodeForYamlKey`, `MacroNotFoundForPatch`, `InvalidConcurrentBatchesConfig`, `NoNodesForSelectionCriteria`, and `InvalidMacroAnnotation`. - [dbt-fusion] Logs now show the correct path for models per each phase. e.g., Analyze phase error now shows target/compiled/..." ([#1399](https://github.com/dbt-labs/dbt-fusion/issues/1399)) - [dbt-fusion] Typechecking for a few more SNOWFLAKE.CORTEX functions ([#992](https://github.com/dbt-labs/dbt-fusion/issues/992)) - [dbt-extension] Fixes error when Fusion is not installed and workspace is opened - [internal] Fix changie config: restore versionFormat so version headings appear in CHANGELOG.md and release notes - [dbt-fusion] Back integers in type inference with u32 rather than u8 - [dbt-fusion] Fix parsing of `profiles.yml` for DuckDB extensions configured as maps ([#1530](https://github.com/dbt-labs/dbt-fusion/issues/1530)) - [dbt-fusion] Snowflake time intervals with quarters ([#1035](https://github.com/dbt-labs/dbt-fusion/issues/1035)) - [dbt-fusion] Fix case-sensitive file extension guard in resolve_macros that caused snapshot files with uppercase extensions (e.g. SNAPSHOT.SQL) to be silently skipped, producing dbt1048 'Ref not found' for any model that ref()s such a snapshot - [dbt-extension] Fixes upgrade notification when using a custom dbt path - [dbt-fusion] Use full (non-truncated) test name for generic test unique_id to match dbt-core/Mantle behavior - [dbt-fusion] Data test node output should not include schema name for data tests unless --store-failures true. ([#1264](https://github.com/dbt-labs/dbt-fusion/issues/1264)) - [dbt-fusion] Fix unit test rendering for Snowflake CTEs with overlapping FQN idents ([#1589](https://github.com/dbt-labs/dbt-fusion/issues/1589)) - [dbt-fusion] Fix custom query comment macros failing to find target package name ([#1189](https://github.com/dbt-labs/dbt-fusion/issues/1189)) - [dbt-fusion] Warn-error-options can now elevate or silence warnings about warn-error-options configuration. - [dbt-fusion] Align a deferred function database and schema in Schema Store - [dbt-fusion] bump duckdb driver to new version - [dbt-fusion] Fix GROUP BY positional ordinals out of range when integer literal constants appear in the SELECT list: the decompiler now wraps bare integer literals in GROUP BY with CAST(… AS BIGINT) so DuckDB treats them as expressions rather than ordinals ([#8856](https://github.com/dbt-labs/dbt-fusion/issues/8856)) - [dbt-fusion] Fix microbatch `is_incremental()` in replay mode: propagate tracing span to batch tasks, always skip CacheAdded records in recording stream, and use case-insensitive identifier matching in `lookup_relation` - [dbt-fusion] Fix vortex telemetry events not firing for cache-reused models ([#9146](https://github.com/dbt-labs/dbt-fusion/issues/9146)) - [dbt-fusion] Fix dbt1013 error when source freshness configs use Jinja ternaries with dict literals like `{{ {'count': N, 'period': 'day'} if cond else none }}` - [dbt-fusion] Honor explicit false warn_error override via env var over project flags. - [dbt-fusion] clean up argument for table functions (e.g. flatten) - [dbt-extension] VSCE fix preview cte failure on multibyte chars ([#1621](https://github.com/dbt-labs/dbt-fusion/issues/1621)) - [dbt-fusion] Fix state:modified false positives generated during relation checks for seeds. ([#1625](https://github.com/dbt-labs/dbt-fusion/issues/1625)) ### Under the Hood - [dbt-fusion] Remove the legacy `log` crate from the workspace and fully migrate remaining logging/tracing plumbing to the tracing-backed implementation. - [dbt-fusion] Comprehensive dbt deps test coverage with OTEL, manifest, and lock file golden validation - [dbt-index] Migrate dbt-index serve to official Rust MCP SDK - [dbt-index] dbt-index: move to rmcp - [dbt-index] Add dbt-index metric subcommand group — discover, compile, and execute semantic layer queries (replaces semantic-query) - [dbt-fusion] Bump spark driver version - [dbt-fusion] Remove unused `&SessionState` from `sdf-lp-decompiler` so the crate depends only on `datafusion-*` sub-crates (not the umbrella). Split seed registration into a compute-free schema-reading path (`dbt_df_providers::listing_table::read_listing_schema`, using the parquet footer / `arrow_json` schema inference) and a compute-backed batch-streaming path (`scan_seed_file_arrow`); `register_seed_async` now registers the schema unconditionally and only persists batches when the backend exposes a SessionContext. Inject `Arc` into `dbt-tasks::pre_compile::build_compiler_env` and move SessionContext construction to dbt-main / dbt-lsp; add `profile_execution_time_zone` helper and `dbt_df_providers::context::init_session_context_with_time_zone` one-call constructor. Result: dbt-tasks no longer imports `SessionComputeBackend` / `init_session_context_from_config` — a static-analysis-only caller can now build a `CompilerEnv` without any DataFusion execution dependencies. - [internal] promote quote_character() to a provided method on BaseRelation delegating to dbt_adapter_core::quote_char(), removing all per-adapter hardcoded overrides - [dbt-fusion] Revert home env isolation in DbtCloudConfigGuard (#9263) — unblock release by reverting a test-infrastructure change that broke the macOS/Windows test matrix ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) ([#1399](https://github.com/dbt-labs/dbt-fusion/issues/1399)) - [@aahel](https://github.com/aahel) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#526](https://github.com/dbt-labs/dbt-fusion/issues/526), [#1189](https://github.com/dbt-labs/dbt-fusion/issues/1189)) - [@ajnovice](https://github.com/ajnovice) - [@dataders](https://github.com/dataders) ([#1224](https://github.com/dbt-labs/dbt-fusion/issues/1224)) - [@dbtagarovat](https://github.com/dbtagarovat) - [@itsnamangoyal](https://github.com/itsnamangoyal) - [@j-clemons](https://github.com/j-clemons) ([#670](https://github.com/dbt-labs/dbt-fusion/issues/670), [#1232](https://github.com/dbt-labs/dbt-fusion/issues/1232), [#1621](https://github.com/dbt-labs/dbt-fusion/issues/1621)) - [@joaodaher](https://github.com/joaodaher) - [@joellabes](https://github.com/joellabes) - [@lottaquestions](https://github.com/lottaquestions) ([#1264](https://github.com/dbt-labs/dbt-fusion/issues/1264), [#1625](https://github.com/dbt-labs/dbt-fusion/issues/1625)) - [@mach-kernel](https://github.com/mach-kernel) ([#1589](https://github.com/dbt-labs/dbt-fusion/issues/1589)) - [@serramatutu](https://github.com/serramatutu) ### Features - [dbt-fusion] Implementing v2 catalogs.yml front end for all supported platforms and catalogs. ([#6342](https://github.com/dbt-labs/dbt-fusion/issues/6342), [#6374](https://github.com/dbt-labs/dbt-fusion/issues/6374), [#6374](https://github.com/dbt-labs/dbt-fusion/issues/6374), [#6337](https://github.com/dbt-labs/dbt-fusion/issues/6337), [#6336](https://github.com/dbt-labs/dbt-fusion/issues/6336)) - [dbt-fusion] [Snowflake] Add support for dynamic table immutable_where config - [dbt-fusion] Add support for custom dbt env vars with DBT_ENV_CUSTOM_ENV_ prefix ([#35](https://github.com/dbt-labs/dbt-fusion/issues/35)) - [dbt-fusion] Nodes that complete successfully but emit warnings are now reported as `warn` in run results and status counts, matching dbt-core behavior. Previously these nodes were counted as successes. ([#1402](https://github.com/dbt-labs/dbt-fusion/issues/1402)) - [dbt-fusion] Enable fusion to select relative paths starting with a dot. ([#1191](https://github.com/dbt-labs/dbt-fusion/issues/1191)) - [dbt-index] Introduce hydrate command and --auto-hydrate flag to allow remote schema hydration - [dbt-fusion] LSP respect .dbtignore - [dbt-index] Prettier tree view for lineage - [dbt-fusion] Add experimental support for using v2-compatible downloads from Package Hub when installing packages with dbt deps - [dbt-fusion] Warn when users run `dbt docs generate`, directing them to use `dbt compile --write-catalog` instead ### Fixes - [dbt-fusion] Allow transient dynamic tables to be created - [dbt-fusion] Support ALTER for cluster by in dynamic tables - [dbt-fusion] Raise error when two seeds share the same name, matching dbt Core behavior ([#622](https://github.com/dbt-labs/dbt-fusion/issues/622)) - [dbt-fusion] Seed now emits a clear error with --full-refresh suggestion when CSV column names change and the table already exists, instead of a confusing SQL error ([#862](https://github.com/dbt-labs/dbt-fusion/issues/862)) - [dbt-fusion] Added support for `user` in Spark's `PLAIN` auth - [dbt-fusion] Fix BigQuery seeds with persist_docs.relation=true failing when seed has no description ([#1383](https://github.com/dbt-labs/dbt-fusion/issues/1383)) - [dbt-fusion] Capture/run data tests on snapshot models ([#1234](https://github.com/dbt-labs/dbt-fusion/issues/1234)) - [dbt-fusion] Include snapshot name and file path in dbt1005 timestamp mismatch warning ([#1570](https://github.com/dbt-labs/dbt-fusion/issues/1570)) - [dbt-fusion] Validate warn_error_options against known dbt-core event names, error on bogus values, and surface targeted warnings for legacy names Fusion will not support or does not support yet. - [dbt-fusion] Fix SLT display bug where string elements inside VARIANT arrays were shown without JSON quotes (e.g. STRTOK_TO_ARRAY results now display as ["hello", "world"] instead of [hello, world]) - [dbt-fusion] Enable parsing of numbers with underscore delimiters. ([#1027](https://github.com/dbt-labs/dbt-fusion/issues/1027)) - [dbt-fusion] Fix deferred semantic manifest so saved query export destinations follow deferred state for saved query exports ([#1572](https://github.com/dbt-labs/dbt-fusion/issues/1572)) - [dbt-fusion] Add warn-error support for Jinja warnings raised by exceptions.warn(), including legacy JinjaLogWarning mapping and short-circuiting when upgraded to errors. - [dbt-fusion] Fix `dbt seed` failing on second run when the profile schema contains uppercase letters on Databricks ([#943](https://github.com/dbt-labs/dbt-fusion/issues/943)) - [dbt-fusion] fixes issue #1583 ([#1583](https://github.com/dbt-labs/dbt-fusion/issues/1583)) - [dbt-fusion] Check the current schema for functions before deferring and cache function metadata separately from relations. - [dbt-fusion] Fix --vars flag to accept multi-key YAML (newline-separated block style) by removing the colon-count pre-check in check_var. This enables dbt ls --vars "$(cat vars.yml)" to work correctly when vars.yml contains multiple key-value pairs. ([#402](https://github.com/dbt-labs/dbt-fusion/issues/402)) - [dbt-fusion] Support dbt-core warning codes in warn_error_options by adding dedicated codes and legacy-name mappings for deprecations, Jinja warnings, missing and disabled node dependencies, package redirect and git dependency warnings, freshness warnings, and state-target path warnings. This also fixes missing-vs-disabled dependency handling, emits the include/exclude deprecation for project flags, aligns DepsUnpinned with dbt-core semantics, and moves package update notices to a Fusion-specific code. ([#8](https://github.com/dbt-labs/dbt-fusion/issues/8)) - [dbt-fusion] Remove profile loading logic from dbt deps ([#679](https://github.com/dbt-labs/dbt-fusion/issues/679)) - [dbt-fusion] lower case column names in snowflake catalog query record batch ([#1584](https://github.com/dbt-labs/dbt-fusion/issues/1584)) - [dbt-fusion] Fix reading and writing nodes.model.functions in manifest.json ([#1579](https://github.com/dbt-labs/dbt-fusion/issues/1579)) - [dbt-fusion] LSP: Fixed renaming of an alias in a group by - [dbt-fusion] `run_results.json` is now produced on compilation/early failures. Previously missing `run_results.json` would break `dbt retry`. ([#1545](https://github.com/dbt-labs/dbt-fusion/issues/1545)) - [dbt-fusion] Fix false validate_macro_args warnings for generic test macros: {% test %} blocks now carry their argument list so documented args (e.g. model, column_name) are correctly recognised instead of triggering spurious dbt1506 warnings - [dbt-fusion] Fix disabling legacy spec semantic nodes in dependency packages ### Under the Hood - [dbt-fusion] remove `quoted_identifiers_ignore_case` (parity w/ core adapter) - [dbt-fusion] Add group info to otel for model notifications - [dbt-fusion] Refactor config hierarchy resolution in resolver - [dbt-fusion] Add `DynJinjaObject` to create objects at runtime without new Rust types - [dbt-fusion] Add config matrix test - [internal] Remove json parser helper from duckdb macros - [dbt-fusion] LSP: Excluded symbols from expanded macros - [dbt-fusion] Use v2-compatible downloads flag when dbt deps installs packages and updates lock file - [dbt-fusion] Swap version: 2 for behavior flag in catalogs.yml ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) ([#35](https://github.com/dbt-labs/dbt-fusion/issues/35), [#1402](https://github.com/dbt-labs/dbt-fusion/issues/1402), [#1545](https://github.com/dbt-labs/dbt-fusion/issues/1545)) - [@aiguofer](https://github.com/aiguofer) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@chayac](https://github.com/chayac) - [@dataders](https://github.com/dataders) ([#1570](https://github.com/dbt-labs/dbt-fusion/issues/1570)) - [@j-clemons](https://github.com/j-clemons) - [@lottaquestions](https://github.com/lottaquestions) ([#1191](https://github.com/dbt-labs/dbt-fusion/issues/1191), [#1027](https://github.com/dbt-labs/dbt-fusion/issues/1027), [#402](https://github.com/dbt-labs/dbt-fusion/issues/402), [#679](https://github.com/dbt-labs/dbt-fusion/issues/679)) - [@mach-kernel](https://github.com/mach-kernel) ([#1234](https://github.com/dbt-labs/dbt-fusion/issues/1234), [#8](https://github.com/dbt-labs/dbt-fusion/issues/8)) - [@mengdilin-dev](https://github.com/mengdilin-dev) ([#1583](https://github.com/dbt-labs/dbt-fusion/issues/1583)) - [@peter-bertuglia](https://github.com/peter-bertuglia) - [@serramatutu](https://github.com/serramatutu) ## 2.0.0-preview.172 Released April 14, 2026 ### Features - [dbt-fusion] add VSCE setting for default lineage depth ([#1164](https://github.com/dbt-labs/dbt-fusion/issues/1164)) - [dbt-fusion] Support sql_header in data tests - [dbt-index] dbt-index: daily beta releases published to prod CDN (public.cdn.getdbt.com) - [dbt-fusion] [Snowflake] Support snowflake_initialization_warehouse for dynamic tables ([#1236](https://github.com/dbt-labs/dbt-fusion/issues/1236)) - [dbt-index] Add query-warehouse command allowing remote warehouse calls - [dbt-fusion] LSP model descriptions on ref hover ([#1520](https://github.com/dbt-labs/dbt-fusion/issues/1520)) ### Fixes - [dbt-fusion] Support snapshot_meta_column_names for YAML snapshots and preserve legacy snapshot_table_column_names macro lookups. ([#1215](https://github.com/dbt-labs/dbt-fusion/issues/1215)) - [dbt-fusion] Include functions in the graph context variable ([#1250](https://github.com/dbt-labs/dbt-fusion/issues/1250)) - [dbt-fusion] fix panic when DuckDB profile uses attach-only config (no top-level path); implement is_ducklake adapter method to detect DuckLake attachments by is_ducklake flag or ducklake: path scheme, enabling correct SQL generation for DuckLake databases ([#1548](https://github.com/dbt-labs/dbt-fusion/issues/1548)) - [dbt-fusion] Support LogTestResult for warn-error-options ([#9199](https://github.com/dbt-labs/dbt-fusion/issues/9199)) - [dbt-fusion] Snowflake unit tests with null geometry/geography columns cast correctly ([#1083](https://github.com/dbt-labs/dbt-fusion/issues/1083)) - [dbt-fusion] LSP: Fixed renaming a column alias when it was not the definition - [dbt-fusion] LSP: Slightly reduced memory footprint - [dbt-fusion] Fix Snowflake seed multi-batch replay: use INSERT OVERWRITE INTO only for the first batch and INSERT INTO for subsequent batches, wrapped in a single BEGIN/COMMIT transaction, matching Mantle behavior and preventing dbt1405 SQL mismatch errors - [dbt-fusion] Fix dep-package models missing persist_docs in unrendered_config: walk root project config hierarchy matching Mantle's behavior, preventing has_same_config fallback false positives in state:modified - [dbt-fusion] Prevent warn-error-options from changing non-warning logs. - [dbt-fusion] Detect duplicate anchors in YAML. ([#508](https://github.com/dbt-labs/dbt-fusion/issues/508)) - [dbt-fusion] VSCE/LSP preview query fix int64 precision loss ([#1563](https://github.com/dbt-labs/dbt-fusion/issues/1563)) - [dbt-index] dbt-index: Fix manifest auto-reingest clobbering bug with JSON and index parquet files - [dbt-index] Fix semantic models, exposures, and metrics not being shown in lineage - [dbt-extension] Fix VS Code Compile File deferral settings not being honored by the LSP. ([#1158](https://github.com/dbt-labs/dbt-fusion/issues/1158)) ### Under the Hood - [dbt-fusion] Use Fusion compatibility metadata from Package Hub when determining if a package dependency is compatible with Fusion - [dbt-fusion] Publication artifact download messages now explain they are needed for resolving cross-project refs ([#1558](https://github.com/dbt-labs/dbt-fusion/issues/1558)) - [dbt-fusion] LSP: Improved cancellation handling when a file changes - [dbt-fusion] Add static_analysis_off_reason ([#238](https://github.com/dbt-labs/dbt-fusion/issues/238)) - [internal] Add dbt-index timings command with OTel-powered build profiling and interactive HTML waterfall visualization - [dbt-fusion] Normalize Snowflake privilege statement ordering in f2f - [dbt-fusion] Refactor microbatch execution: extract context builder, simplify is_incremental, consolidate materialization into materialize.rs - [dbt-fusion] Make materialization functions sync by removing redundant spawn_blocking; extract microbatch execution path from execute_remote_node - [dbt-fusion] Make execute_remote_node fully sync; replace async DataFusion parquet reads with sync Arrow reader for seeds - [dbt-fusion] Split microbatch execution into prepare_microbatch_batches + execute_microbatch_batch for top-level scheduling - [internal] AuthOutcome to track warnings from dbt-auth ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#1236](https://github.com/dbt-labs/dbt-fusion/issues/1236)) - [@ajnovice](https://github.com/ajnovice) - [@chayac](https://github.com/chayac) - [@claude](https://github.com/claude) ([#1215](https://github.com/dbt-labs/dbt-fusion/issues/1215)) - [@dataders](https://github.com/dataders) ([#1164](https://github.com/dbt-labs/dbt-fusion/issues/1164), [#1215](https://github.com/dbt-labs/dbt-fusion/issues/1215), [#1548](https://github.com/dbt-labs/dbt-fusion/issues/1548), [#1558](https://github.com/dbt-labs/dbt-fusion/issues/1558)) - [@gshank](https://github.com/gshank) ([#1250](https://github.com/dbt-labs/dbt-fusion/issues/1250), [#238](https://github.com/dbt-labs/dbt-fusion/issues/238)) - [@j-clemons](https://github.com/j-clemons) ([#1520](https://github.com/dbt-labs/dbt-fusion/issues/1520), [#1563](https://github.com/dbt-labs/dbt-fusion/issues/1563)) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ([#508](https://github.com/dbt-labs/dbt-fusion/issues/508)) - [@mach-kernel](https://github.com/mach-kernel) ([#9199](https://github.com/dbt-labs/dbt-fusion/issues/9199), [#1083](https://github.com/dbt-labs/dbt-fusion/issues/1083)) ## 2.0.0-preview.171 Released April 10, 2026 ### Features - [dbt-fusion] LSP add dbt.show custom command - [dbt-extension] VSCE use lsp dbt.show command for preview file/cte - [dbt-fusion] Implement validate_macro_args type system: warn on undocumented arg name mismatches and unsupported types when flag is enabled in dbt_project.yml ([#48](https://github.com/dbt-labs/dbt-fusion/issues/48)) ### Fixes - [dbt-fusion] Fix dbt0101 parse error for BigQuery BEGIN...EXCEPTION WHEN ERROR THEN...END blocks with empty exception handlers, and fix dbt0227 false positive when sql_header declares scripting variables referenced in the model body ([#1413](https://github.com/dbt-labs/dbt-fusion/issues/1413)) - [dbt-fusion] Removed leading and trailing endline characters in doc blocks in manifest ([#533](https://github.com/dbt-labs/dbt-fusion/issues/533)) - [dbt-fusion] Manifest fixes: grants property no longer rendered as +grants. Config and metadata is now preserved during dbt-compile ([#1155](https://github.com/dbt-labs/dbt-fusion/issues/1155), [#1129](https://github.com/dbt-labs/dbt-fusion/issues/1129)) - [dbt-fusion] Fix preview CTE codelens does not work with jinja variable defined outside of CTE. ([#881](https://github.com/dbt-labs/dbt-fusion/issues/881)) - [dbt-fusion] Correctly evaluate state:modified.body by doing a checksum check. ([#1547](https://github.com/dbt-labs/dbt-fusion/issues/1547)) - [dbt-fusion] Ensure fusion errors when loading a faulty manifest, even when state:modified is not selected ([#1319](https://github.com/dbt-labs/dbt-fusion/issues/1319)) - [internal] Thread cloud_config through adapter initialization so Redshift query comments include dbt Cloud environment fields (dbt_cloud_environment_id etc.) when running as an orchestrated cloud job - [dbt-fusion] Fix generate_schema_name receiving node.path with resource-type prefix (e.g. models/staging/model.sql) instead of the correct path without prefix (staging/model.sql), breaking path-based schema routing - [dbt-fusion] Fix Snowflake seed replay failure: add snowflake__reset_csv_table override to skip truncate_relation for non-full-refresh, and use INSERT OVERWRITE INTO in snowflake__load_csv_rows to match dbt-snowflake 1.11.0 behavior - [dbt-fusion] Improve deferral manifest 404 error message and add hint to set `defer-env-id` in `dbt_project.yml` when automatic environment selection fails - [dbt-fusion] Return default value from config.get() during parse phase - [dbt-fusion] Fix var() returning an empty map instead of none for YAML null vars defined in dbt_project.yml, which caused macro null-checks like `ref_date == None` to evaluate incorrectly and generate wrong SQL - [dbt-fusion] Clone no longer duplicates error messages when a clone operation fails ([#1557](https://github.com/dbt-labs/dbt-fusion/issues/1557)) - [dbt-fusion] --favor-state flag now correctly controls whether deferral favors state over current environment ([#1555](https://github.com/dbt-labs/dbt-fusion/issues/1555)) - [dbt-fusion] resolve YAML anchor merge keys (<<: *anchor) in profiles.yml ([#1564](https://github.com/dbt-labs/dbt-fusion/issues/1564)) - [dbt-fusion] Fixes Spark ADBC driver's "invalid frame size" error due to bad SASL configuration. - [dbt-fusion] resolve DBT_ENV_SECRET_* variables in profiles.yml - [dbt-fusion] Use Path::strip_prefix for cross-platform node.path stripping in generate_schema_name - [dbt-fusion] Fixes base jinja functions not all registered in profiles.yml context - [dbt-fusion] Resolve ephemeral model node IDs to parent model recordings during replay by scanning __dbt__cte__ patterns ### Under the Hood - [internal] Bump DuckDB ADBC driver to 0.0.8; replace datediff SQL macros with a native C++ scalar (sf_datediff) that handles all Snowflake date-part aliases and VARCHAR→DATE auto-cast - [dbt-fusion] Add Databricks support for `quick_are_queries_identical` using `bit_xor(xxhash64(...))`, and sync recent dbt-compare fixes (column quoting, pk case normalization) - [dbt-fusion] Split sidecar execution from remote execution via new RunExecutionPath::SideCar variant ([#9240](https://github.com/dbt-labs/dbt-fusion/issues/9240)) - [internal] Include DBT_CLOUD_JOB_ID and DBT_CLOUD_RUN_ID in the repro command generated by download_artifact.sh, fixing false SQL mismatch conformance failures when macros use env_var() to embed job/run metadata - [dbt-fusion] Remove duplicated DuckDB code - [dbt-fusion] Bump up the duckdb driver version ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) ([#533](https://github.com/dbt-labs/dbt-fusion/issues/533), [#1155](https://github.com/dbt-labs/dbt-fusion/issues/1155), [#1129](https://github.com/dbt-labs/dbt-fusion/issues/1129)) - [@aiguofer](https://github.com/aiguofer) ([#1413](https://github.com/dbt-labs/dbt-fusion/issues/1413)) - [@ajnovice](https://github.com/ajnovice) - [@b-per](https://github.com/b-per) ([#1564](https://github.com/dbt-labs/dbt-fusion/issues/1564)) - [@dataders](https://github.com/dataders) ([#1557](https://github.com/dbt-labs/dbt-fusion/issues/1557), [#1555](https://github.com/dbt-labs/dbt-fusion/issues/1555)) - [@itsnamangoyal](https://github.com/itsnamangoyal) - [@j-clemons](https://github.com/j-clemons) - [@joellabes](https://github.com/joellabes) - [@lottaquestions](https://github.com/lottaquestions) ([#881](https://github.com/dbt-labs/dbt-fusion/issues/881), [#1547](https://github.com/dbt-labs/dbt-fusion/issues/1547), [#1319](https://github.com/dbt-labs/dbt-fusion/issues/1319)) - [@mitchellbarker](https://github.com/mitchellbarker) - [@naman](https://github.com/naman) - [@naman-goyal](https://github.com/naman-goyal) - [@serramatutu](https://github.com/serramatutu) ## 2.0.0-preview.170 Released April 08, 2026 ### Features - [dbt-extension] Rebuild the VSCode Extension new user walkthrough ## 2.0.0-preview.169 Released April 08, 2026 ### Features - [dbt-fusion] Upgrade Run and Compare phases logs to INFO level. This change is needed for telemetry visibility but does not affect fusion's output ### Fixes - [dbt-fusion] Always write manifest.json on any run failure, not just ExitWithStatus errors, so codex ingestion and job.run.completed webhooks fire reliably when Fusion jobs fail ### Under the Hood - [dbt-fusion] Split cache check into a distinct phase in RunTask, eliminating visit_run_remote and tightening TaskResult/SqlInstruction signatures - [dbt-fusion] Incorporate Fusion compatibility metadata from Package Hub ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) - [@chayac](https://github.com/chayac) ## 2.0.0-preview.168 Released April 07, 2026 ### Features - [dbt-fusion] Add ado provider support for Azure DevOps private packages with 3-part names (org/project/repo) ### Fixes - [dbt-fusion] Fix handling of ado private packages - [dbt-fusion] Fix Snowflake Python model YAML serialization (sequences as lists, mappings preserve insertion order) and diff canonicalization for meta_dict/meta_get ### Contributors - [@itsnamangoyal](https://github.com/itsnamangoyal) - [@joaodaher](https://github.com/joaodaher) ## 2.0.0-preview.167 Released April 07, 2026 ### Fixes - [dbt-fusion] Improve the error displayed when materialization fails. ([#1116](https://github.com/dbt-labs/dbt-fusion/issues/1116)) ### Under the Hood - [dbt-fusion] Use in-process DuckDB (XDBC adapter) instead of duckdb CLI binary for --use-index e2e tests - [dbt-extension] Revert extension to launching the language server via `dbt lsp` instead of a separate `dbt-lsp` binary (reverts VSCE side of #9053). - [dbt-fusion] Add `dbt-index doctor` subcommand with 21 built-in SQL integrity checks (9 error, 7 warning, 5 info) ### Contributors - [@lottaquestions](https://github.com/lottaquestions) ([#1116](https://github.com/dbt-labs/dbt-fusion/issues/1116)) ## 2.0.0-preview.166 Released April 06, 2026 ### Features - [internal] Add `cargo mantle` CLI to run dbt commands locally via the mantle Docker image from ECR ### Fixes - [dbt-fusion] Inject doc.dbt.__overview__ into the manifest when a project defines no docs blocks, fixing a TypeError crash in the dbt Docs HTML overview controller - [dbt-fusion] suppress deferral manifest download when --no-defer is passed ([#1531](https://github.com/dbt-labs/dbt-fusion/issues/1531)) - [internal] use triplet-derived dll prefix/suffix in `format_driver_path` (fixes test failure on macOS ARM CI) ([#9149](https://github.com/dbt-labs/dbt-fusion/issues/9149)) ### Under the Hood - [dbt-fusion] Use dbt-profile in dbt-loader - [internal] Move LocalExecutionBackend trait and receive_instruction to dedicated modules - [dbt-fusion] Refactor TaskResult from enum to struct, lift instruction resolution to run_task dispatch, remove dead source/common modules ### Contributors - [@dataders](https://github.com/dataders) ([#9149](https://github.com/dbt-labs/dbt-fusion/issues/9149)) ## 2.0.0-preview.165 Released April 04, 2026 ### Features - [dbt-fusion] Add hybrid artifact uploads for `run` and `build` - [dbt-extension] Adds Language Server section to Extension Info - [dbt-extension] VSCE - Auto-build model before running compare - [dbt-extension] VSCE - Add Beta label and feedback banner to Compare panel - [dbt-fusion] (dbt-auth): add api_endpoint to bigquery profile ([#1514](https://github.com/dbt-labs/dbt-fusion/issues/1514)) - [dbt-fusion] Maintain dbt-index node columns and column lineage for --use-index compile/build/run, and preserve last-known lineage on parse. ### Fixes - [dbt-fusion] Fetch allow_id_token Snowflake response to drive debug logging ([#6936](https://github.com/dbt-labs/dbt-fusion/issues/6936)) - [dbt-fusion] Bind UDFs from multi-statement on-run-start hooks during static analysis - [dbt-fusion] Include source freshness in context results ([#720](https://github.com/dbt-labs/dbt-fusion/issues/720)) - [dbt-fusion] Fix mangled ref false positive warning for macros ([#1322](https://github.com/dbt-labs/dbt-fusion/issues/1322)) - [dbt-extension] VSCE - Show empty state message on Modified rows tab when no modified rows exist - [dbt-extension] VSCE - Surface dbt compare error messages instead of generic failure text ([#7580](https://github.com/dbt-labs/dbt-fusion/issues/7580)) - [dbt-fusion] Add environment variable to suppress semantic validation warning when dbt_cloud.yml is missing ([#1297](https://github.com/dbt-labs/dbt-fusion/issues/1297)) - [dbt-fusion] Malformed CSV in unit tests shows contextual information (which test, file) ([#506](https://github.com/dbt-labs/dbt-fusion/issues/506)) - [dbt-fusion] Profile not found from dbt_project.yml error return span ([#480](https://github.com/dbt-labs/dbt-fusion/issues/480)) - [dbt-fusion] snapshot timestamp columns: dbt_valid_from, dbt_valid_to, dbt_updated_at - [dbt-fusion] ARRAY_* overload resolution now accepts typed arrays (ARRAY(VARCHAR), etc.) in Snowflake ([#1512](https://github.com/dbt-labs/dbt-fusion/issues/1512)) - [internal] Fix duckdb field access - [dbt-fusion] Fixes issue with Fusion onboarding not supporting DBT_PROFILES_DIR ([#1455](https://github.com/dbt-labs/dbt-fusion/issues/1455)) - [dbt-fusion] Do not accept arbitrary input columns in unit test fixtures ([#1419](https://github.com/dbt-labs/dbt-fusion/issues/1419)) - [dbt-fusion] Implement better Jinja error on unclosed tags ([#130](https://github.com/dbt-labs/dbt-fusion/issues/130)) - [fs] Fix LEFT/RIGHT/FULL JOIN on QUALIFY subquery with non-equi datediff condition failing in sidecar mode with 'Cannot perform non-inner join on subquery' ([#8777](https://github.com/dbt-labs/dbt-fusion/issues/8777)) - [dbt-fusion] Column name ordering in fixtures will no longer affect unit test results ([#1239](https://github.com/dbt-labs/dbt-fusion/issues/1239)) - [dbt-fusion] Make fusion reject resource file names with spaces ([#1132](https://github.com/dbt-labs/dbt-fusion/issues/1132)) - [dbt-fusion] Preserve DuckDB attached catalogs without rendering default catalogs in relations ([#1447](https://github.com/dbt-labs/dbt-fusion/issues/1447)) - [dbt-fusion] Fix Snowflake error 'Actual statement count 2 did not match the desired statement count 1' when using sql_header with contract enforcement ([#1515](https://github.com/dbt-labs/dbt-fusion/issues/1515)) - [dbt-fusion] (dbt-auth): restore keep client alive as a snowflake option - [internal] The existing duckdb lambda syntax (->) is deprecated. Replace it with a new syntax. - [dbt-fusion] Do not try to render Jinja in non-model fixtures ([#523](https://github.com/dbt-labs/dbt-fusion/issues/523)) - [dbt-fusion] Bump the Snowflake driver built to use the netgo DNS resolver - [dbt-fusion] Implement defer support for functions in Fusion and add coverage for deferred function resolution. - [dbt-fusion] Inject doc.dbt.__overview__ into the manifest when a project defines no docs blocks, fixing a TypeError crash in the dbt Docs HTML overview controller - [dbt-fusion] (snowflake/bigquery) use `packages` config in the functions (udf) macros - [dbt-fusion] Handle TO_DATE/DATE format MM/DD/YYYY HH24:MI:SS TZH:TZM in DuckDB sidecar (strptime fallback). ([#8370](https://github.com/dbt-labs/dbt-fusion/issues/8370)) - [dbt-fusion] Include all accepted severity casings (error/Error/ERROR, warn/Warn/WARN) in JSON schema to prevent false validation errors in editors ### Under the Hood - [dbt-fusion] Simplify raw config handling: extract error closure and remove IO threading from recursive config builder - [dbt-fusion] sync dbt-adapters and dbt-snowflake macros, left FIXMEs to resolve some in separate PRs - [dbt-fusion] LSP: Improved performance of on-demand evaluation of a node if no files changed - [dbt-fusion] Behavior flag parity. More warnings for behaviors that are now enabled in Fusion. - [dbt-fusion] fusion-to-fusion: sanitize SQL comments - [dbt-fusion] Move dbt-lsp Binary into a subcommand of dbt Binary - [dbt-fusion] LSP: Getting lineage is more robust with progress notifications - [dbt-fusion] Unify Snowflake flatten DuckDB prelude with duckdb-unparse — single source for macro defaults (default-expr-by-param), macro-param-names for CREATE MACRO signatures, and generic prelude generation without function-name special cases. - [dbt-fusion] Add Jinja API unit tests for adapter relation configs - [dbt-fusion] Refactor Runnable dispatch into a shared RunTask and remove intermediate runnable traits. - [dbt-fusion] Refactor the remote Runnable shell into explicit preparation and execution stages. - [dbt-fusion] Deduplicate depends_on.nodes at population time in node_resolver, preventing duplicate entries in parent_map and child_map when a model refs the same upstream multiple times. - [dbt-fusion] Driver build updated for DuckDB 1.5.1 - [dbt-fusion] Change error to warn for unit tests with extra cols ### Contributors - [@HannanNaeem](https://github.com/HannanNaeem) ([#1297](https://github.com/dbt-labs/dbt-fusion/issues/1297)) - [@aricallen](https://github.com/aricallen) ([#7580](https://github.com/dbt-labs/dbt-fusion/issues/7580)) - [@ashtonwalden](https://github.com/ashtonwalden) - [@b-per](https://github.com/b-per) ([#1512](https://github.com/dbt-labs/dbt-fusion/issues/1512)) - [@bog](https://github.com/bog) - [@dataders](https://github.com/dataders) ([#1447](https://github.com/dbt-labs/dbt-fusion/issues/1447)) - [@davidharting](https://github.com/davidharting) - [@j-clemons](https://github.com/j-clemons) ([#480](https://github.com/dbt-labs/dbt-fusion/issues/480)) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ([#1322](https://github.com/dbt-labs/dbt-fusion/issues/1322), [#130](https://github.com/dbt-labs/dbt-fusion/issues/130), [#1132](https://github.com/dbt-labs/dbt-fusion/issues/1132)) - [@mach-kernel](https://github.com/mach-kernel) ([#506](https://github.com/dbt-labs/dbt-fusion/issues/506), [#1419](https://github.com/dbt-labs/dbt-fusion/issues/1419), [#1239](https://github.com/dbt-labs/dbt-fusion/issues/1239), [#523](https://github.com/dbt-labs/dbt-fusion/issues/523)) - [@serramatutu](https://github.com/serramatutu) - [@trouze](https://github.com/trouze) ([#6936](https://github.com/dbt-labs/dbt-fusion/issues/6936)) ## 2.0.0-preview.164 Released March 26, 2026 ### Features - [internal] Implement more relaxed json parser ### Fixes - [dbt-fusion] Fix ALTER TABLE queries hanging on BigQuery if table is large ([#1332](https://github.com/dbt-labs/dbt-fusion/issues/1332)) - [dbt-fusion] Fix adapter.quote() during parse so generic test config.where renders quoted identifiers. ([#489](https://github.com/dbt-labs/dbt-fusion/issues/489)) - [dbt-fusion] (dbt-adapter): bigquery: use go library explicit arrow->bigquery type map for column_overrides in seeds ([#1390](https://github.com/dbt-labs/dbt-fusion/issues/1390)) - [dbt-fusion] Fix override macro ident flattening when used with packages ([#760](https://github.com/dbt-labs/dbt-fusion/issues/760)) - [dbt-fusion] Only parse on-run-start hook UDFs when at least one node uses strict static analysis. - [dbt-fusion] LSP do not prompt rename for just moving file ([#120](https://github.com/dbt-labs/dbt-fusion/issues/120)) - [dbt-fusion] Fix parse failure when storing config.get values ([#1375](https://github.com/dbt-labs/dbt-fusion/issues/1375)) - [dbt-fusion] Fix LPAD/RPAD failing in DuckDB sidecar mode when first argument is not VARCHAR (e.g. BIGINT from row_number()) ([#8778](https://github.com/dbt-labs/dbt-fusion/issues/8778)) - [dbt-fusion] Fix CTE truncation / naive replacement for unit test SQL render ([#1489](https://github.com/dbt-labs/dbt-fusion/issues/1489)) ### Under the Hood - [dbt-fusion] Add 26 snapshot tests for the TypeJinja static type checker in minijinja - [dbt-fusion] LSP: Skip creating generic tests for faster startup time - [dbt-fusion] Split analyze phase into 3-step TaskOp pipeline for connection control ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#1375](https://github.com/dbt-labs/dbt-fusion/issues/1375)) - [@bog](https://github.com/bog) - [@j-clemons](https://github.com/j-clemons) ([#120](https://github.com/dbt-labs/dbt-fusion/issues/120)) - [@leochen4891](https://github.com/leochen4891) - [@mach-kernel](https://github.com/mach-kernel) ([#760](https://github.com/dbt-labs/dbt-fusion/issues/760), [#1489](https://github.com/dbt-labs/dbt-fusion/issues/1489)) - [@serramatutu](https://github.com/serramatutu) ([#1332](https://github.com/dbt-labs/dbt-fusion/issues/1332)) ## 2.0.0-preview.163 Released March 25, 2026 ### Features - [dbt-fusion] Support packages config for functions (UDFs) ([#8546](https://github.com/dbt-labs/dbt-fusion/issues/8546)) - [internal] Support duckdb sql macros with default parameters - [dbt-fusion] Improve column error messages for stale schema cache ([#615](https://github.com/dbt-labs/dbt-fusion/issues/615)) - [dbt-fusion] LSP: Quicker start-up time via lazy compilation - [dbt-fusion] LSP - compileFile enable for package models ([#575](https://github.com/dbt-labs/dbt-fusion/issues/575)) ### Fixes - [dbt-extension] Improve the LSP download failure message to include manual installation steps and how to configure a custom binary path. ([#1220](https://github.com/dbt-labs/dbt-fusion/issues/1220)) - [dbt-fusion] Fix seed importing with DBT_PROJECT_DIR. ([#1478](https://github.com/dbt-labs/dbt-fusion/issues/1478)) - [dbt-fusion] Support inline `format: sql` rows for unit test expect blocks ([#1439](https://github.com/dbt-labs/dbt-fusion/issues/1439)) - [dbt-extension] VSCE fix preview CTE error on unaliased column ([#1026](https://github.com/dbt-labs/dbt-fusion/issues/1026)) - [dbt-fusion] Avoid duplicate Jinja syntax errors: skip typecheck template-parse log when render reports the same diagnostic. ([#1270](https://github.com/dbt-labs/dbt-fusion/issues/1270)) - [dbt-fusion] Parse: populate model.config in resolve context from merged node config so hooks can call macros as functions ([#1414](https://github.com/dbt-labs/dbt-fusion/issues/1414)) - [dbt-fusion] Inline CSV fixture support / parity to dbt core ([#1020](https://github.com/dbt-labs/dbt-fusion/issues/1020)) - [dbt-fusion] Fix retry from expanding excluded downstream nodes beyond the original run scope - [dbt-fusion] Fix inverted connection backpressure routing in run_default_render ### Under the Hood - [dbt-fusion] replay deviation for elementary package and better replay sanitizers - [internal] Unify sequential/parallel dispatch into reusable dispatch_maybe_parallel utility, reducing ~400 lines of duplicated spawn boilerplate - [internal] Refactor render task into functional pipeline with TaskOp dispatch; decompose unit test render into 3-step async pipeline ([#1338](https://github.com/dbt-labs/dbt-fusion/issues/1338)) - [internal] Fix unused import and dead code warnings in update.rs on Windows - [dbt-fusion] Antlr: upgrade to dbt-antlr4 1.0 - [internal] Refactor Analyzeable from trait dispatch to downcast dispatch ([#8873](https://github.com/dbt-labs/dbt-fusion/issues/8873)) - [internal] Split hydrate_missing_tables_from_remote into composable sync/async functions ### Contributors - [@QMalcolm](https://github.com/QMalcolm) ([#8546](https://github.com/dbt-labs/dbt-fusion/issues/8546)) - [@aiguofer](https://github.com/aiguofer) - [@ayshukla](https://github.com/ayshukla) - [@bog](https://github.com/bog) ([#8873](https://github.com/dbt-labs/dbt-fusion/issues/8873)) - [@chenyu](https://github.com/chenyu) - [@j-clemons](https://github.com/j-clemons) ([#575](https://github.com/dbt-labs/dbt-fusion/issues/575), [#1026](https://github.com/dbt-labs/dbt-fusion/issues/1026)) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ([#615](https://github.com/dbt-labs/dbt-fusion/issues/615), [#1478](https://github.com/dbt-labs/dbt-fusion/issues/1478)) - [@mach-kernel](https://github.com/mach-kernel) ([#1439](https://github.com/dbt-labs/dbt-fusion/issues/1439), [#1020](https://github.com/dbt-labs/dbt-fusion/issues/1020)) ## 2.0.0-preview.162 Released March 23, 2026 ### Features - [dbt-extension] Create new "System Report" command to generate a system report for sharing with Support ([#270](https://github.com/dbt-labs/dbt-fusion/issues/270)) ### Fixes - [dbt-extension] Fixes issue where custom dbt path isn't respected when upgrading ([#848](https://github.com/dbt-labs/dbt-fusion/issues/848)) ## 2.0.0-preview.161 Released March 23, 2026 ### Under the Hood - [dbt-fusion] Move seed schema registration and data persistence ahead of the task runner, removing seeds from the render and analyze phases ### Contributors - [@bogdanowicz](https://github.com/bogdanowicz) ## 2.0.0-preview.160 Released March 22, 2026 ### Breaking Changes - [internal] Add default/optional parameters to the flatten() macro ### Features - [dbt-fusion] duckdb: support using user system driver which unblocks loading of arbitrary extensions ([#1467](https://github.com/dbt-labs/dbt-fusion/issues/1467)) ### Fixes - [dbt-fusion] Fix config precedence for dependency packages: respect `enabled: false` in package schema.yml and enforce correct priority order (root dbt_project.yml > in-file config > schema.yml > package dbt_project.yml) ([#1067](https://github.com/dbt-labs/dbt-fusion/issues/1067)) - [dbt-fusion] Fix DuckDB sidecar VARIANT -> JSON extraction ([#8371](https://github.com/dbt-labs/dbt-fusion/issues/8371)) - [dbt-fusion] Fix unit tests with dependencies on ephemeral models ([#861](https://github.com/dbt-labs/dbt-fusion/issues/861)) - [dbt-fusion] Use SQL fixtures verbatim, inline fixture CTEs ([#861](https://github.com/dbt-labs/dbt-fusion/issues/861)) - [dbt-fusion] Unit test show explicit diffs when row counts differ ([#1193](https://github.com/dbt-labs/dbt-fusion/issues/1193)) - [dbt-fusion] Implement correct state:modified behavior for changed macros. ([#1474](https://github.com/dbt-labs/dbt-fusion/issues/1474)) - [dbt-fusion] allow signed macOS dbt binaries to load MotherDuck DuckDB extensions - [dbt-fusion] Classify get_temp_relation_path as Pure in SemanticCategory to prevent panic in time-machine recording ([#1476](https://github.com/dbt-labs/dbt-fusion/issues/1476)) - [dbt-fusion] Fix boolor_agg and booland_agg in DuckDB sidecar (Snowflake); add duckdb-create-macro-as, decompiler fix for window aggregates to emit {name}_{mid}, and SLT tests ([#8612](https://github.com/dbt-labs/dbt-fusion/issues/8612)) - [dbt-fusion] Implement as_real and as_double in DuckDB ([#8774](https://github.com/dbt-labs/dbt-fusion/issues/8774)) - [dbt-fusion] parquet fast path now writes TIMESTAMP columns with correct Arrow Timestamp type instead of VARCHAR, fixing DuckDB binder errors when using --use-index ([#8801](https://github.com/dbt-labs/dbt-fusion/issues/8801)) - [dbt-fusion] Expand Snowflake UNPIVOT binder stubs to UNION ALL when decompiling to DuckDB SQL (removes unpivot_placeholder). ([#8610](https://github.com/dbt-labs/dbt-fusion/issues/8610)) ### Under the Hood - [dbt-fusion] Remove a stray get_ignore_case signature - [dbt-fusion] More efficient file path processing in SLT records - [dbt-fusion] LSP use render cache for compiled model paths - [dbt-fusion] Add LoadStrategy::SystemThenCdnCache to dbt-xdbc: try system path first, fall back to CDN if not found ([#8785](https://github.com/dbt-labs/dbt-fusion/issues/8785)) ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#1067](https://github.com/dbt-labs/dbt-fusion/issues/1067)) - [@claude](https://github.com/claude) ([#1467](https://github.com/dbt-labs/dbt-fusion/issues/1467), [#1476](https://github.com/dbt-labs/dbt-fusion/issues/1476)) - [@dataders](https://github.com/dataders) ([#1467](https://github.com/dbt-labs/dbt-fusion/issues/1467), [#1476](https://github.com/dbt-labs/dbt-fusion/issues/1476), [#8801](https://github.com/dbt-labs/dbt-fusion/issues/8801)) - [@j-clemons](https://github.com/j-clemons) - [@lottaquestions](https://github.com/lottaquestions) ([#1474](https://github.com/dbt-labs/dbt-fusion/issues/1474)) - [@mach-kernel](https://github.com/mach-kernel) ([#8371](https://github.com/dbt-labs/dbt-fusion/issues/8371), [#861](https://github.com/dbt-labs/dbt-fusion/issues/861), [#861](https://github.com/dbt-labs/dbt-fusion/issues/861), [#1193](https://github.com/dbt-labs/dbt-fusion/issues/1193)) ## 2.0.0-preview.159 Released March 20, 2026 ### Fixes - [dbt-fusion] Implement get_ignore_case function in DuckDB sidecar ([#8601](https://github.com/dbt-labs/dbt-fusion/issues/8601)) - [dbt-fusion] Implement array_generate_range function in DuckDB sidecar ([#8604](https://github.com/dbt-labs/dbt-fusion/issues/8604)) - [dbt-fusion] LSP: Skip running post-hooks for LSP to improve performance - [dbt-fusion] Downgrade missing freshness info for extended models from error to warning, treating upstream as updated so dependents rebuild - [dbt-fusion] Add support for str.maketrans ([#1192](https://github.com/dbt-labs/dbt-fusion/issues/1192)) - [dbt-fusion] Implement support for dict.popitem() ([#833](https://github.com/dbt-labs/dbt-fusion/issues/833)) - [dbt-fusion] Fix pytz.timezone enforcing case sensitivity ([#143](https://github.com/dbt-labs/dbt-fusion/issues/143)) - [internal] Implement least and greatest in DuckDB ### Under the Hood - [dbt-fusion] LSP compileFile command and register with VSCE - [dbt-fusion] Optimize GitHub package downloads with async archive fast path - [dbt-fusion] Add dbt-index standalone binary: ingests dbt artifacts into DuckDB, exports parquet files + views.sql for querying - [dbt-fusion] Integrate dbt-index into Fusion: --use-index and --index-dir flags produce parquet index alongside JSON artifacts - [internal] Add native Rust update path for `dbt system update` behind DBT_NATIVE_UPDATE flag to reduce I/O pressure in dispatch pods - [dbt-fusion] dbt-index: snapshot semantics, merge-on-write, column provenance, native List arrays ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#1192](https://github.com/dbt-labs/dbt-fusion/issues/1192), [#833](https://github.com/dbt-labs/dbt-fusion/issues/833), [#143](https://github.com/dbt-labs/dbt-fusion/issues/143)) - [@ayshukla](https://github.com/ayshukla) - [@dbtagarovat](https://github.com/dbtagarovat) - [@j-clemons](https://github.com/j-clemons) ## 2.0.0-preview.158 Released March 19, 2026 ### Features - [dbt-fusion] Implement missing Python re and datetime module features: time.replace(), datetime.timezone, and re.Match attributes (string, re, pos, endpos, lastindex, lastgroup) ([#583](https://github.com/dbt-labs/dbt-fusion/issues/583)) ### Fixes - [dbt-fusion] Fix macro resolution overriding undefined values - [dbt-fusion] Implement two-parameter last_day function in DuckDB sidecar ([#8554](https://github.com/dbt-labs/dbt-fusion/issues/8554)) - [dbt-fusion] support jinja re flags ([#811](https://github.com/dbt-labs/dbt-fusion/issues/811)) - [dbt-fusion] Fixed issue with the depends_on.macros attribute of data tests being wrong in the manifest - [dbt-fusion] LSP: Fixed goto-definition ambiguity issue for models with the same name ([#939](https://github.com/dbt-labs/dbt-fusion/issues/939)) - [dbt-fusion] Improve message field in run_results.json ([#1271](https://github.com/dbt-labs/dbt-fusion/issues/1271)) - [dbt-fusion] Fix DuckDB 'correlated columns in window functions not supported' error by pushing window expressions into inner subqueries (e.g. fct_hiring_pipeline) ([#8609](https://github.com/dbt-labs/dbt-fusion/issues/8609)) - [dbt-fusion] Fix Unit test for incremental model with static analysis off - [dbt-extension] Fixes issues where LSP startup failure results in full extension failure - [dbt-fusion] Fix cross-device package installation failures by using same-filesystem temp dirs and rename fallback to recursive copy ([#206](https://github.com/dbt-labs/dbt-fusion/issues/206)) - [internal] Implement least_ignore_nulls and greatest_ignore_nulls in duckdb - [dbt-fusion] [BigQuery] Allow keyfile_json to take in a string ([#771](https://github.com/dbt-labs/dbt-fusion/issues/771)) - [dbt-fusion] Add RelationType::MetricView for Databricks Metric Views to prevent panic when list_relations encounters a METRIC_VIEW table type ([#8711](https://github.com/dbt-labs/dbt-fusion/issues/8711)) ### Under the Hood - [dbt-fusion] Refactor HubClient to be Clone and thread-safe via Arc interior, OnceCell for lazy index hydration, and scc::HashMap for concurrent package caching - [dbt-fusion] Ergonomic improvements to SLT golden files - [dbt-fusion] (snowflake) eliminate the redundant schema queries when a implicit recursive cte is enountered ([#1277](https://github.com/dbt-labs/dbt-fusion/issues/1277)) ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#8711](https://github.com/dbt-labs/dbt-fusion/issues/8711)) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#771](https://github.com/dbt-labs/dbt-fusion/issues/771)) - [@dbtagarovat](https://github.com/dbtagarovat) ([#206](https://github.com/dbt-labs/dbt-fusion/issues/206)) ## 2.0.0-preview.157 Released March 18, 2026 ### Fixes - [dbt-fusion] Fix dbt clone failing when persist_docs adds column comments to late binding views - [dbt-fusion] Unit test fixture improvements: Support semi-structured types to parity with dbt-core (VARIANT, OBJECT, ARRAY) ([#876](https://github.com/dbt-labs/dbt-fusion/issues/876)) - [internal] Implement try_to_number/try_to_decimal in DuckDB sidecar mode ([#8286](https://github.com/dbt-labs/dbt-fusion/issues/8286)) - [internal] Cast the scale parameter to integer when calling round() - [dbt-fusion] Improve error message when connecting to Snowflake with an invalid account identifier - [dbt-fusion] Ensure columns generated from static analysis are not written into the manifest ([#1445](https://github.com/dbt-labs/dbt-fusion/issues/1445)) - [dbt-fusion] Support Databricks VOID column type during graph introspection in materializations ### Under the Hood - [dbt-fusion] Optimize tarball client with async streaming extraction, removing intermediate file I/O - [dbt-fusion] Ensure that the schema cleanup macro also deletes schemas generated by dbt-core adapters. - [dbt-fusion] Improve unit test schema fetch errors. - [dbt-fusion] Add `AdapterType` to relation config structs - [dbt-fusion] ignore test_snowflake_regression_tests_compute_batch1_tbl test ### Contributors - [@bog](https://github.com/bog) - [@dbtagarovat](https://github.com/dbtagarovat) - [@lottaquestions](https://github.com/lottaquestions) ([#1445](https://github.com/dbt-labs/dbt-fusion/issues/1445)) - [@mach-kernel](https://github.com/mach-kernel) ([#876](https://github.com/dbt-labs/dbt-fusion/issues/876)) - [@serramatutu](https://github.com/serramatutu) - [@tauhid621](https://github.com/tauhid621) ## 2.0.0-preview.156 Released March 17, 2026 ### Breaking Changes - [dbt-fusion] Make static analysis baseline the default, unless explicitly overridden. ([#1442](https://github.com/dbt-labs/dbt-fusion/issues/1442)) ### Features - [dbt-fusion] Onboarding now guides users through baseline and strict static analysis modes, setting the result in dbt_project.yml. - [dbt-fusion] Added initial (beta) support for Spark ([#38](https://github.com/dbt-labs/dbt-fusion/issues/38)) ### Fixes - [dbt-fusion] Support `config` key in macro YAML properties (docs, meta) ([#1303](https://github.com/dbt-labs/dbt-fusion/issues/1303)) - [dbt-fusion] Implement try_parse_json function in DuckDB sidecar mode ([#8287](https://github.com/dbt-labs/dbt-fusion/issues/8287)) - [dbt-fusion] fix version parsing ([#233](https://github.com/dbt-labs/dbt-fusion/issues/233)) - [dbt-fusion] fix error message when user is previewing a macro ([#525](https://github.com/dbt-labs/dbt-fusion/issues/525)) - [dbt-fusion] Fix vars defined as sequences breaking source YAML parsing ([#982](https://github.com/dbt-labs/dbt-fusion/issues/982)) - [dbt-fusion] Fix `dbt compare` command ([#8500](https://github.com/dbt-labs/dbt-fusion/issues/8500)) - [internal] Replace single quotes with double quotes so we can parse single quoted json field names ### Under the Hood - [dbt-fusion] improve Time Machine test framework - [internal] Add dbt-index design spec: queryable DuckDB index over dbt artifacts with DDL, ER diagram, and workspace evaluator queries ### Contributors - [@davidharting](https://github.com/davidharting) ([#8500](https://github.com/dbt-labs/dbt-fusion/issues/8500)) - [@serramatutu](https://github.com/serramatutu) ([#38](https://github.com/dbt-labs/dbt-fusion/issues/38)) ## 2.0.0-preview.155 Released March 16, 2026 ### Fixes - [dbt-fusion] Make baseline static-analysis warnings actionable for introspection-backed syntax errors ([#1409](https://github.com/dbt-labs/dbt-fusion/issues/1409)) - [dbt-fusion] support jinja cycler ([#706](https://github.com/dbt-labs/dbt-fusion/issues/706)) ## 2.0.0-preview.154 Released March 13, 2026 ### Features - [dbt-fusion] Defer based on analyzed schema availability ### Fixes - [internal] Implement DBT_UPDATED_AT column in snapshots - [dbt-extension] Fixed color contrast issues in lineage graph across dark, light, and high-contrast themes. - [dbt-fusion] Show failed row count in test failure messages ([#1415](https://github.com/dbt-labs/dbt-fusion/issues/1415)) - [dbt-fusion] Allow doc block names starting with a digit (e.g., `3_months_prior_date`) ([#998](https://github.com/dbt-labs/dbt-fusion/issues/998)) - [dbt-fusion] LSP: Fixed an edge case that caused a panic when a document was updated - [dbt-fusion] Fix `**` operator with negative exponents in Jinja (e.g. `10 ** -9`) to return float results, matching Python/Jinja2 behavior - [internal] Convert snowflake "DOUBLE PRECISION" type to the arrows type - [dbt-fusion] (dbt-auth): stop stubbing snowflake oauth and allow optional jwt user/password ### Under the Hood - [dbt-fusion] Output static_analysis_off_reason to nodes in manifest.json ([#238](https://github.com/dbt-labs/dbt-fusion/issues/238)) - [dbt-fusion] Introduce adapter.has_feature: a generic replacement for platform-specific methods like is_motherduck, has_dbr_capability - [dbt-fusion] add a test for https://github.com/dbt-labs/dbt-fusion/issues/216 ([#216](https://github.com/dbt-labs/dbt-fusion/issues/216)) ### Contributors - [@mach-kernel](https://github.com/mach-kernel) ([#1415](https://github.com/dbt-labs/dbt-fusion/issues/1415)) - [@manikantapachineelam](https://github.com/manikantapachineelam) ## 2.0.0-preview.153 Released March 12, 2026 ## 2.0.0-preview.152 Released March 12, 2026 ### Features - [dbt-fusion] [Databricks] Add support for column masks ### Fixes - [dbt-fusion] Typechecking for BigQuery JSON_FLATTEN ([#1254](https://github.com/dbt-labs/dbt-fusion/issues/1254)) - [dbt-fusion] Fix vars with control blocks not rendering - [dbt-fusion] Fix datetime objects always comparing to true ([#ajhlee-dbt](https://github.com/dbt-labs/dbt-fusion/issues/ajhlee-dbt)) - [dbt-fusion] DuckDB: support SAMPLE trailing-method syntax, to_json with any type, json_object positional pairs, JSON -> operator, cast(struct as json) - [dbt-fusion] Skip on-run-start UDF registration when global static analysis is off. ([#1397](https://github.com/dbt-labs/dbt-fusion/issues/1397)) - [dbt-fusion] Fix DuckDB type coercion for boolean-to-integer and scalar-to-varchar casts, and fix subquery column resolution when subquery contains table functions ([#8404](https://github.com/dbt-labs/dbt-fusion/issues/8404), [#8405](https://github.com/dbt-labs/dbt-fusion/issues/8405), [#8406](https://github.com/dbt-labs/dbt-fusion/issues/8406)) - [dbt-fusion] Exclude unit tests from compile ([#1407](https://github.com/dbt-labs/dbt-fusion/issues/1407)) ### Under the Hood - [dbt-fusion] Refactor DuckDB incremental materialization to use process_schema_changes dispatch instead of inline schema-change logic ([#8501](https://github.com/dbt-labs/dbt-fusion/issues/8501)) - [dbt-fusion] Downgrade optional Snowflake auth field rejections to guidance warnings, align init-creds scaffolds with the current dbt-auth behavior, and document that generated profiles must stay aligned with the matching dbt-auth adapter package. ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@b-per](https://github.com/b-per) ([#8404](https://github.com/dbt-labs/dbt-fusion/issues/8404), [#8405](https://github.com/dbt-labs/dbt-fusion/issues/8405), [#8406](https://github.com/dbt-labs/dbt-fusion/issues/8406), [#8501](https://github.com/dbt-labs/dbt-fusion/issues/8501)) ## 2.0.0-preview.151 Released March 11, 2026 ### Breaking Changes - [dbt-fusion] smarter profiles.yml for snowflake user and password fields. ### Features - [dbt-fusion] Implement get_catalog_relations for DuckDB to support --write-catalog ### Fixes - [dbt-fusion] Typechecking Snowflake DIRECTED JOIN ([#832](https://github.com/dbt-labs/dbt-fusion/issues/832)) - [dbt-fusion] Manifest config hooks: serialize keys as kebab-case, normalize values to List[HookConfig], default absent hooks to [] - [dbt-fusion] Fix is_hive_metastore() to match Python dbt-databricks semantics by excluding temporary relations. Temporary tables now correctly use DESCRIBE EXTENDED ... AS JSON even in Hive Metastore. - [dbt-fusion] Implement dbt-style file log rotation for tracing writers and add regression coverage for backup handling. ([#29](https://github.com/dbt-labs/dbt-fusion/issues/29)) ### Under the Hood - [dbt-fusion] RemoveQualifier for Filter ### Contributors - [@b-per](https://github.com/b-per) ## 2.0.0-preview.150 Released March 10, 2026 ### Features - [dbt-fusion] Add `man --pre-schema` command: show the pre-Jinja-transformation JSON schema. ([#7582](https://github.com/dbt-labs/dbt-fusion/issues/7582)) ### Fixes - [dbt-fusion] Fix defer when SA is off and baseline - [dbt-fusion] Fix stale engine bug and warehouse masking in multi-command record/replay tests, and use per-run subdirectories for multi-command test recordings ([#8299](https://github.com/dbt-labs/dbt-fusion/issues/8299)) - [dbt-fusion] Emit sample query when --store-failures is passed matching dbt-core functionality - [dbt-fusion] Reused tests are included in stats and run_results.json - [internal] Make dbt_scd_id column case aware - [dbt-fusion] snowflake pivot binding for single pivot ### Under the Hood - [dbt-fusion] An AI skill to add a keyword to a dialect ### Contributors - [@b-per](https://github.com/b-per) ([#8299](https://github.com/dbt-labs/dbt-fusion/issues/8299)) - [@mach-kernel](https://github.com/mach-kernel) - [@peter-bertuglia](https://github.com/peter-bertuglia) ## 2.0.0-preview.149 Released March 09, 2026 ## 2.0.0-preview.148 Released March 07, 2026 ### Fixes - [dbt-fusion] Fix Snowflake ARRAY_PREPEND overload resolution for typed arrays. ([#1394](https://github.com/dbt-labs/dbt-fusion/issues/1394)) - [dbt-fusion] Clear reused nodes from the interactive phase progress bar as soon as evaluation ends. ### Contributors - [@dataders](https://github.com/dataders) ([#1394](https://github.com/dbt-labs/dbt-fusion/issues/1394)) ## 2.0.0-preview.147 Released March 07, 2026 ### Breaking Changes - [dbt-fusion] Error on unknown DBT_ENGINE_* environment variables. This prefix is now reserved for the dbt engine, and matches the deprecation in dbt Core >1.10 ### Features - [dbt-fusion] support compilation of read_blob() & read_text() via custom_return_type() for fixed schema ### Fixes - [dbt-fusion] fix panic on unit tests on versioned models ([#1392](https://github.com/dbt-labs/dbt-fusion/issues/1392)) - [dbt-fusion] Fix Snowflake LISTAGG -> DuckDB sidecar rewriting to string_agg ([#8289](https://github.com/dbt-labs/dbt-fusion/issues/8289)) - [dbt-fusion] DuckDB auth now applies MotherDuck token via init SQL and queryless ATTACH for md:/motherduck paths, avoiding unsupported motherduck_token DB options. ([#8361](https://github.com/dbt-labs/dbt-fusion/issues/8361)) - [dbt-fusion] DuckDB relation rendering now includes attached catalogs and omits the default main catalog, fixing reference resolution against attached MotherDuck catalogs. ([#8361](https://github.com/dbt-labs/dbt-fusion/issues/8361)) - [dbt-fusion] Handle hyphenated default catalog/schema names without panicking during frontend binding setup. ([#1398](https://github.com/dbt-labs/dbt-fusion/issues/1398)) - [dbt-fusion] [BigQuery] Support domain-scoped project ids - [dbt-fusion] use_replace_on_for_insert_overwrite as default - [internal] Select proper case sensitive strings based on a dialect - [dbt-fusion] Add `use_managed_iceberg` behavior flag - [dbt-fusion] Fix DuckDB TIMESTAMP vs TIMESTAMPTZ comparison coercion - [dbt-fusion] Parse deprecation_date on versioned models to emit deprecation warnings matching dbt Core behavior - [dbt-fusion] Support snowflake_default_transient_dynamic_table behavior change flag - [dbt-fusion] Fix a bug when tests are reused in baseline mode ### Under the Hood - [dbt-fusion] LSP use stdio as default. TCP with flag - [dbt-fusion] fix duckdb mode DDL execution for unimplemented functions - [dbt-fusion] dbt debug provides more information on auth failure ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@b-per](https://github.com/b-per) - [@claude](https://github.com/claude) ([#1392](https://github.com/dbt-labs/dbt-fusion/issues/1392)) - [@dataders](https://github.com/dataders) ([#1392](https://github.com/dbt-labs/dbt-fusion/issues/1392), [#8361](https://github.com/dbt-labs/dbt-fusion/issues/8361), [#8361](https://github.com/dbt-labs/dbt-fusion/issues/8361)) - [@j-clemons](https://github.com/j-clemons) - [@mach-kernel](https://github.com/mach-kernel) ([#8289](https://github.com/dbt-labs/dbt-fusion/issues/8289)) ## 2.0.0-preview.146 Released March 05, 2026 ### Features - [dbt-fusion] Added `license` subcommand. Use `dbt license info` to see the currently loaded license. - [dbt-fusion] Add sql_header config support for data tests ([#8275](https://github.com/dbt-labs/dbt-fusion/issues/8275)) - [dbt-fusion] [Databricks] sync macros to v1.11.5 ### Fixes - [dbt-fusion] Fix BigQuery OPTIONS clause labels ordering by using IndexMap instead of BTreeMap - [dbt-fusion] Update platform API identifier types to int64 - [internal] Implement decompilation in snapshots ([#8154](https://github.com/dbt-labs/dbt-fusion/issues/8154)) - [dbt-fusion] Preserve Snowflake VARCHAR collation when expanding column types ([#7237](https://github.com/dbt-labs/dbt-fusion/issues/7237)) - [dbt-fusion] Apply baseline static-analysis behavior consistently in run-like task graphs, so baseline syntax warnings are emitted before remote execution errors. - [dbt-fusion] Fix subscript/bracket access on namespace objects to resolve macros (e.g. `pkg['macro_name']()`) ([#787](https://github.com/dbt-labs/dbt-fusion/issues/787)) - [dbt-fusion] Pass saved query cache config to MetricFlow server export request via writeCache parameter - [dbt-fusion] Use DESCRIBE EXTENDED ... AS JSON in get_columns_in_relation with fallback to prevent truncated types ### Under the Hood - [dbt-fusion] Add automated warehouse verification to snowflake_config_warehouse test using QUERY_HISTORY - [dbt-fusion] Add leases to manage shared files between LSP and CLI - [dbt-fusion] query cache miss invalidates downstream node caches - [dbt-fusion] use execute fetch argument to inform query cache behavior - [dbt-fusion] DuckDB: multi-statement incremental materialization (batch CREATE TEMP + DML in one execute call) - [dbt-fusion] Small change from String -> &str for more efficient mem usage ### Contributors - [@Conforman](https://github.com/Conforman) - [@aahel](https://github.com/aahel) ([#8275](https://github.com/dbt-labs/dbt-fusion/issues/8275)) - [@aiguofer](https://github.com/aiguofer) - [@ashtonwalden](https://github.com/ashtonwalden) - [@b-per](https://github.com/b-per) - [@colin-rogers-dbt](https://github.com/colin-rogers-dbt) ([#7237](https://github.com/dbt-labs/dbt-fusion/issues/7237)) - [@j-clemons](https://github.com/j-clemons) - [@kczimm](https://github.com/kczimm) - [@kendru](https://github.com/kendru) ## 2.0.0-preview.145 Released March 04, 2026 ### Features - [dbt-fusion] support connecting to motherduck with duckdb adapter ([#1341](https://github.com/dbt-labs/dbt-fusion/issues/1341)) ### Fixes - [dbt-fusion] Ensure Value::UNDEFINED and None are considered different rather than same in an equality check. ([#6820](https://github.com/dbt-labs/dbt-fusion/issues/6820)) - [dbt-fusion] [BigQuery] Support DECLARE variables in set_sql_header blocks ([#1360](https://github.com/dbt-labs/dbt-fusion/issues/1360)) - [dbt-fusion] support reading external data in duckdb adapter ([#1380](https://github.com/dbt-labs/dbt-fusion/issues/1380)) - [dbt-fusion] Unit tests on versioned models now correctly resolve the model dependency (dbt1048) ([#1381](https://github.com/dbt-labs/dbt-fusion/issues/1381)) - [dbt-fusion] Fix function resource generationg with generate_alias_name ([#1384](https://github.com/dbt-labs/dbt-fusion/issues/1384)) - [dbt-fusion] Fix boolor_agg aggregate function in DuckDB sidecar mode (Snowflake) ([#8283](https://github.com/dbt-labs/dbt-fusion/issues/8283)) - [dbt-fusion] Always downgrade baseline static-analysis syntax parse errors to warnings, regardless of introspection type. - [dbt-fusion] Accept 'azure_devops' as a provider for private packages, matching documented values ([#1061](https://github.com/dbt-labs/dbt-fusion/issues/1061)) ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#1360](https://github.com/dbt-labs/dbt-fusion/issues/1360)) - [@claude](https://github.com/claude) ([#1341](https://github.com/dbt-labs/dbt-fusion/issues/1341), [#1380](https://github.com/dbt-labs/dbt-fusion/issues/1380), [#1381](https://github.com/dbt-labs/dbt-fusion/issues/1381)) - [@dataders](https://github.com/dataders) ([#1341](https://github.com/dbt-labs/dbt-fusion/issues/1341), [#1380](https://github.com/dbt-labs/dbt-fusion/issues/1380), [#1381](https://github.com/dbt-labs/dbt-fusion/issues/1381)) - [@lottaquestions](https://github.com/lottaquestions) ([#6820](https://github.com/dbt-labs/dbt-fusion/issues/6820)) - [@mach-kernel](https://github.com/mach-kernel) ([#8283](https://github.com/dbt-labs/dbt-fusion/issues/8283)) ## 2.0.0-preview.144 Released March 03, 2026 ### Features - [dbt-fusion] Generate partial catalog.json on executions (run/build/seed/snapshot) automatically - [dbt-fusion] Add warning for unsupported/deprecated behavior flags. Update use_user_folder_for_python to correctly default to true for governance best practice. - [dbt-fusion] Improve DuckDB column alias generation to match DuckDB output (671 additional SLT tests passing) - [dbt-extension] VSCE make build menu commands keymappable ([#1333](https://github.com/dbt-labs/dbt-fusion/issues/1333)) ### Fixes - [dbt-fusion] Bind write context function for on-run-start and on-run-end ([#8084](https://github.com/dbt-labs/dbt-fusion/issues/8084)) - [dbt-fusion] Fix behavior of undefined value in Jinja tests - [dbt-fusion] Support casting INTERVAL to/from STRING in BigQuery ([#1361](https://github.com/dbt-labs/dbt-fusion/issues/1361)) - [dbt-extension] Fix issue with dbt_cloud.yml API key validation - [dbt-fusion] Fix Jinja truncate and wordwrap filters to accept positional arguments matching Jinja2 semantics ([#1318](https://github.com/dbt-labs/dbt-fusion/issues/1318)) - [dbt-fusion] fusion shouldn't fail to read commented out packages-lock.yml ### Under the Hood - [dbt-extension] VSCE info message for column lineage with baseline mode - [dbt-fusion] Add test framework for defer - [dbt-fusion] Add MockJinjaObject and macro test harness - [dbt-fusion] Order columns in catalog.json by ordinal instead of name - [dbt-fusion] record/replay compare metadata args with case insensitivity ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#1361](https://github.com/dbt-labs/dbt-fusion/issues/1361), [#1318](https://github.com/dbt-labs/dbt-fusion/issues/1318)) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@b-per](https://github.com/b-per) - [@j-clemons](https://github.com/j-clemons) ([#1333](https://github.com/dbt-labs/dbt-fusion/issues/1333)) - [@kczimm](https://github.com/kczimm) - [@mach-kernel](https://github.com/mach-kernel) ([#8084](https://github.com/dbt-labs/dbt-fusion/issues/8084)) ## 2.0.0-preview.143 Released February 27, 2026 ### Fixes - [internal] Implement charindex in DuckDB ([#8159](https://github.com/dbt-labs/dbt-fusion/issues/8159)) ## 2.0.0-preview.142 Released February 27, 2026 ### Under the Hood - [dbt-fusion] Drop 'execute: ...' attribute from Snowflake and DataFusion profile targets - [dbt-fusion] bump duckdb driver to allow platform-specific user-installed extensions ([#1341](https://github.com/dbt-labs/dbt-fusion/issues/1341)) ### Contributors - [@claude](https://github.com/claude) ([#1341](https://github.com/dbt-labs/dbt-fusion/issues/1341)) - [@dataders](https://github.com/dataders) ([#1341](https://github.com/dbt-labs/dbt-fusion/issues/1341)) ## 2.0.0-preview.141 Released February 26, 2026 ### Features - [dbt-fusion] Support DuckDB secrets, attachments, extensions, and settings configuration in profiles.yml ([#7834](https://github.com/dbt-labs/dbt-fusion/issues/7834)) ### Fixes - [internal] Fix issue cleanup workflow timeout — batch PR cross-reference lookups instead of per-issue GitHub Search API calls - [dbt-fusion] Lowercase BigQuery partition_by field names during parsing to match dbt-core behavior ### Under the Hood - [internal] Add claude skill for writing and running tests - [dbt-fusion] query cache refactoring: remove dead variants, deduplicate functions, add tests ### Contributors - [@Conforman](https://github.com/Conforman) - [@aiguofer](https://github.com/aiguofer) - [@bog](https://github.com/bog) - [@dataders](https://github.com/dataders) ([#7834](https://github.com/dbt-labs/dbt-fusion/issues/7834)) - [@kczimm](https://github.com/kczimm) ## 2.0.0-preview.139 Released February 26, 2026 ## 2.0.0-preview.137 Released February 26, 2026 ### Features - [dbt-fusion] DuckDB SQL understanding - type system, formatter, function registry, and SLT executor ### Fixes - [dbt-fusion] Integrate DuckDB parser and binder into the shared grammar framework used by all other dialects - [dbt-fusion] add stacker to decompiler - [internal] Implement initcap in DuckDB ([#8163](https://github.com/dbt-labs/dbt-fusion/issues/8163)) - [dbt-fusion] Implement random for iterable jinja values ### Under the Hood - [dbt-fusion] (dbt-auth): Standardize the databricks auth module. - [dbt-fusion] Update Databricks macros to v11.4 - [dbt-fusion] memoize Regex in query cache - [dbt-fusion] Remove unnecessary clones in resolver - [dbt-fusion] Remove duplicate test runs in compute_duck.rs ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@b-per](https://github.com/b-per) - [@dataders](https://github.com/dataders) - [@kczimm](https://github.com/kczimm) ## 2.0.0-preview.135 Released February 25, 2026 ### Fixes - [internal] Implement div0 in DuckDB ([#8164](https://github.com/dbt-labs/dbt-fusion/issues/8164)) ## 2.0.0-preview.134 Released February 24, 2026 ### Features - [dbt-extension] Add "Copy Cell Value" to the query results context menu, allowing users to copy the full value of truncated cells. - [dbt-fusion] Microbatch ### Fixes - [dbt-fusion] Fix clustered_by config field type to accept both string and array - [dbt-fusion] Fix BigQuery description field Unicode encoding to match dbt-core - [dbt-fusion] Skip validation for empty Python model files (e.g., __init__.py) - [dbt-fusion] Fix BQ catalog by schema macro - [dbt-fusion] [BigQuery] Fix column type overrides not applying in seeds ([#1334](https://github.com/dbt-labs/dbt-fusion/issues/1334)) - [internal] Remove unnecessary panic - [internal] Fix dbt show for sidecar/service ### Under the Hood - [dbt-fusion] Add --database and --schema CLI flags to dbt-db-runner for one-shot database initialization - [dbt-fusion] Update default query comment to also include invocation_id ([#8131](https://github.com/dbt-labs/dbt-fusion/issues/8131)) - [dbt-fusion] Do not get extra catalog info for redshift until agate join is supported - [dbt-fusion] Only clone required SL nodes for defer - [dbt-fusion] Fix time machine replay - [dbt-fusion] Add automated issue cleanup workflow with deterministic checks, semantic analysis, grace period enforcement, and 118-test Vitest suite with CI - [internal] Use changie batch --dry-run in changelog validation GHA instead of custom Python script ### Contributors - [@Conforman](https://github.com/Conforman) - [@aiguofer](https://github.com/aiguofer) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#1334](https://github.com/dbt-labs/dbt-fusion/issues/1334)) - [@b-per](https://github.com/b-per) - [@bog](https://github.com/bog) - [@colin-rogers-dbt](https://github.com/colin-rogers-dbt) ([#8131](https://github.com/dbt-labs/dbt-fusion/issues/8131)) - [@wolfram](https://github.com/wolfram) ## 2.0.0-preview.127 Released February 20, 2026 ### Fixes - [dbt-fusion] Schema hydration phase progress bar will be hidden if nothing is pulled. ### Under the Hood - [dbt-fusion] Update default query comment to include dbt Platform metadata if present ([#8102](https://github.com/dbt-labs/dbt-fusion/issues/8102)) ### Contributors - [@colin-rogers-dbt](https://github.com/colin-rogers-dbt) ([#8102](https://github.com/dbt-labs/dbt-fusion/issues/8102)) ## 2.0.0-preview.126 Released February 19, 2026 ### Fixes - [dbt-fusion] Fix connection configuration values being fixed to defaults in snowflake and spark. - [dbt-fusion] dbt-csv produces microsecond timestamps ### Under the Hood - [dbt-fusion] Add SQL Server backend ## 2.0.0-preview.125 Released February 19, 2026 ### Fixes - [dbt-fusion] Downgrade baseline SQL syntax parse failures to warnings for nodes with detected introspection while preserving hard errors for non-introspective nodes. ([#1316](https://github.com/dbt-labs/dbt-fusion/issues/1316)) ## 2.0.0-preview.124 Released February 19, 2026 ### Fixes - [dbt-fusion] (adapters/bigquery) fix persist_docs on a BigQuery relation during incremental runs; supports bigquery_noop_alter_relation_comment behavior flag to opt out this - [dbt-fusion] Enable package:this selector. ([#1176](https://github.com/dbt-labs/dbt-fusion/issues/1176)) - [dbt-fusion] Fixes issue selectors.yml can't handle non-string values. ([#7747](https://github.com/dbt-labs/dbt-fusion/issues/7747)) - [dbt-fusion] Preserve baseline static analysis behavior for frontier dependency hydration so nodes are not incorrectly demoted to off via NoDownstream, which ensures syntax errors are still reported for affected downstream models. - [dbt-fusion] Include hook counts in invocation metrics node_type_counts and cover hooks in telemetry snapshot. ([#NA](https://github.com/dbt-labs/dbt-fusion/issues/NA)) - [dbt-fusion] Fix state:modified false negative when a source has a schema or db change. ([#1307](https://github.com/dbt-labs/dbt-fusion/issues/1307)) - [dbt-fusion] Propagate HookProcessed unique_id context to hook log messages in telemetry snapshots. ([#NA](https://github.com/dbt-labs/dbt-fusion/issues/NA)) - [dbt-fusion] Implement distinct for AgateTable ### Under the Hood - [dbt-fusion] (dbt-auth) Migrate bigquery to new standardized auth pipeline. - [dbt-fusion] sanitize date literals for record/replay - [dbt-fusion] add add_query to sql methods - [dbt-fusion] Remove user-facing unsafe introspection warnings, update deprecated `on`/`unsafe` static analysis deprecation messages to recommend `strict`, and default `s - [dbt-fusion] sanitize double quoted dates in time machine replay - [dbt-fusion] Write decompiled SQL output for sidecar/service compute to out_dir/decompiled matching dbt's compiled structure ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ([#1176](https://github.com/dbt-labs/dbt-fusion/issues/1176), [#7747](https://github.com/dbt-labs/dbt-fusion/issues/7747), [#1307](https://github.com/dbt-labs/dbt-fusion/issues/1307)) - [@wolfram](https://github.com/wolfram) ## 2.0.0-preview.123 Released February 18, 2026 ### Features - [dbt-fusion] adding config.meta_get() support for python models in fusion ### Fixes - [dbt-fusion] Resolve `{{ doc() }}` Jinja references in metric descriptions for both nested and top-level metrics. - [dbt-fusion] Snowflake typechecking of calls to methods in machine learning models ([#1287](https://github.com/dbt-labs/dbt-fusion/issues/1287)) - [dbt-fusion] compute sidecar cleans up process if spawn fails - [dbt-fusion] dbt-csv warns if column names in yaml not found in seed header ([#1185](https://github.com/dbt-labs/dbt-fusion/issues/1185)) - [dbt-fusion] static_analysis baseline now skips analyze phase for run-like task graphs, matching off behavior while keeping compile and lineage unchanged ### Under the Hood - [dbt-fusion] Add missing DuckDB macro for 2-argument try_to_date overload, fixing sidecar execution errors - [internal] Implement unit tests comparisons between warehouse and duckdb runs - [dbt-fusion] Stop writting dbt_internal_packages by default. Introducing --internal-package flag to control write/read to help debug - [dbt-fusion] make get_config_from_model Pure for record and replay ### Contributors - [@kczimm](https://github.com/kczimm) - [@wolfram,claude](https://github.com/wolfram,claude) ## 2.0.0-preview.122 Released February 17, 2026 ### Under the Hood - [dbt-fusion] Fix DuckDB macro persistence by eliminating legacy dbtdb catalog and removing identifier quoting from dbt-db-runner ### Contributors - [@wolfram,claude](https://github.com/wolfram,claude) ## 2.0.0-preview.121 Released February 16, 2026 ## 2.0.0-preview.120 Released February 14, 2026 ### Features - [dbt-fusion] Adds `static_analysis: strict` as an alias for `on`, makes it the default, and marks `on` as deprecated (with a warning). - [dbt-fusion] Marks `static_analysis: unsafe` deprecated (with a warning). - [dbt-fusion] Introduces `static_analysis: baseline` with Phase 1 semantics: syntax-only checks that fail the run plus CTE extraction; otherwise it behaves like `off`. ### Fixes - [dbt-fusion] case insensitive match on file system - [dbt-fusion] do not lowercase in sidecar adapter ### Under the Hood - [dbt-fusion] Remove unnecessary DESCRIBE calls for selected nodes in sidecar mode, eliminating spurious warnings - [dbt-fusion] Statically link the FTS (Full-Text Search) extension into the DuckDB driver - [dbt-fusion] Smoke test for fts DuckDB extension in #8039 ### Contributors - [@wolfram,claude](https://github.com/wolfram,claude) ## 2.0.0-preview.119 Released February 13, 2026 ### Features - [dbt-fusion] experimental support for duckdb adapter ([#110](https://github.com/dbt-labs/dbt-fusion/issues/110)) ### Fixes - [dbt-fusion] ensure semantic layer objects are available in graph context jinja variable ([#1252](https://github.com/dbt-labs/dbt-fusion/issues/1252)) - [dbt-fusion] fix identifier override ### Under the Hood - [dbt-fusion] Handle empty flag from cli ([#1293](https://github.com/dbt-labs/dbt-fusion/issues/1293)) ### Contributors - [@dataders](https://github.com/dataders) ([#110](https://github.com/dbt-labs/dbt-fusion/issues/110)) - [@dataders,claude](https://github.com/dataders,claude) ([#1252](https://github.com/dbt-labs/dbt-fusion/issues/1252)) - [@kczimm](https://github.com/kczimm) ([#1293](https://github.com/dbt-labs/dbt-fusion/issues/1293)) ## 2.0.0-preview.118 Released February 13, 2026 ### Features - [dbt-fusion] roll-out dbt-csv as default csv parser - [dbt-fusion] consolidate fs pull options - [dbt-fusion] Consolidate compute engine selection in --compute flag ### Contributors - [@mengdilin-dev](https://github.com/mengdilin-dev) ## 2.0.0-preview.117 Released February 13, 2026 ### Fixes - [dbt-fusion] LSP: fix filename case changes breaking VSCE ([#1260](https://github.com/dbt-labs/dbt-fusion/issues/1260)) ### Under the Hood - [dbt-fusion] move is_uniform to pure semantics for replay - [dbt-fusion] Populate errors in catalog.json if any are encountered ### Contributors - [@j-clemons](https://github.com/j-clemons) ([#1260](https://github.com/dbt-labs/dbt-fusion/issues/1260)) - [@kczimm](https://github.com/kczimm) ## 2.0.0-preview.116 Released February 12, 2026 ### Features - [dbt-fusion] warn on mangle ref - [dbt-fusion] move dbt-df-providers to fs/sa - [dbt-fusion] dbt-csv integrated with sidecar | service compute - [dbt-fusion] Added support for the deprecation_date config used in model contracts. This issues a warning in the following three scenarios: - When deprecation_date set on a model being referenced in a cross-project ref, like in dbt mesh, a warning is always issued to note the model's deprecation date may be approaching - When a model is selecting from (via ref) another model with a deprecation_date in the past, a warning is thrown. This also works in a cross-project context -When a model's own deprecation_date is in the past, a warning is thrown ([#25](https://github.com/dbt-labs/dbt-fusion/issues/25)) - [dbt-fusion] Support disabled Semantic nodes from a dependent package with legacy SL spec. ### Fixes - [dbt-fusion] Fix incorrect scoping of nested exclude blocks in YAML selectors ([#836](https://github.com/dbt-labs/dbt-fusion/issues/836)) - [dbt-fusion] fix materialization for Salesforce:table - [dbt-fusion] Treat exposures like tests when referencing disabled models - warn instead of error - [dbt-fusion] dbt-csv newline insertion logic - [dbt-fusion] Make persistent descriptions robust with respect to whitespace changes. ([#1281](https://github.com/dbt-labs/dbt-fusion/issues/1281)) - [dbt-fusion] Fixes incorrect snapshot relative path when custom target path is used - [dbt-fusion] Fixes incorrect duplicate `NodeExecuting` events emitted in json compat logs - [dbt-fusion] Do not hard-error on missing source freshness metadata during SAO builds - [dbt-fusion] fix ref override - [dbt-fusion] Typecheck Snoflake variable references $xyz as VARIANT ([#1283](https://github.com/dbt-labs/dbt-fusion/issues/1283)) - [dbt-fusion] Fix upstream of on-run-start/end do not defer properly - [dbt-fusion] fix none_closure not properly linked in dag - [dbt-fusion] Ensure tags are an empty list when not defined ([#1198](https://github.com/dbt-labs/dbt-fusion/issues/1198)) - [dbt-fusion] Use commong formatting pattern for GenericOp event - [dbt-fusion] hydrate test.column_name - [dbt-fusion] Do not bother trying to fetch tests for catalog.json - [dbt-fusion] Emit a traced dbt1601 "Nothing to do" warning for run-like commands when scheduling resolves to zero nodes, including empty projects without explicit selectors - [dbt-fusion] fs pull shows progress bar ### Under the Hood - [internal] Add tracing spans for on-run-start and on-run-end operations in task runner ([#7493](https://github.com/dbt-labs/dbt-fusion/issues/7493)) - [dbt-fusion] Add PullTask to move Snowflake data pulling into dbt-db-runner sidecar - [dbt-fusion] LSP: Started implementing new compilation flow by lazily evaluating nodes - [dbt-fusion] Use non-mangled test names in tui output ([#7884](https://github.com/dbt-labs/dbt-fusion/issues/7884)) - [dbt-fusion] CDN checksums for DuckDB driver with nanoarrow - [dbt-fusion] replace unwraps in query cache index file parsing ([#1073](https://github.com/dbt-labs/dbt-fusion/issues/1073)) - [dbt-fusion] Start enforcing alphabetic order in functions.sdf.yml in all dialects - [dbt-fusion] Add architecture writeup for dbt-agate. The meek shall inherit the code. - [dbt-fusion] (dbt-auth): Migrate Salesforce and Postgres to new cannonical auth architecture. - [dbt-fusion] Defend against locks in catalog.json generation - [dbt-fusion] FQN for some nodes was missing in state:modified telemetry. - [dbt-fusion] Use otel event for text based unit test rendering progress reporting - [dbt-fusion] Remove legacy `show_progress` usage from show task - [dbt-fusion] Migrate clone & compare progress reporting to tracing - [dbt-fusion] Migrate the compiled code event to tracing. Add new OTEL event and use it for json compat CompiledNode event - [dbt-fusion] Upgrade dbt-yaml package to version 0.9.1 ### Contributors - [@Conforman](https://github.com/Conforman) - [@aiguofer](https://github.com/aiguofer) ([#1198](https://github.com/dbt-labs/dbt-fusion/issues/1198)) - [@ayshukla](https://github.com/ayshukla) - [@jcserv](https://github.com/jcserv) - [@kczimm](https://github.com/kczimm) ([#7493](https://github.com/dbt-labs/dbt-fusion/issues/7493), [#7884](https://github.com/dbt-labs/dbt-fusion/issues/7884), [#1073](https://github.com/dbt-labs/dbt-fusion/issues/1073)) - [@lottaquestions](https://github.com/lottaquestions) ([#1281](https://github.com/dbt-labs/dbt-fusion/issues/1281)) - [@yu-iskw](https://github.com/yu-iskw) ([#836](https://github.com/dbt-labs/dbt-fusion/issues/836)) ## 2.0.0-preview.110 Released February 06, 2026 ### Features - [dbt-fusion] Support calling AI functions when qualified, like SNOWFLAKE.CORTEX.AI_CLASSIFY - [dbt-fusion] Show all columns in unit test diffs - [dbt-fusion] Bigquery: add support for enable_list_inference and intermediate_format ([#7879](https://github.com/dbt-labs/dbt-fusion/issues/7879)) ### Fixes - [dbt-fusion] Fix persistent descriptions column check fail due to column ordering issues - [dbt-fusion] Fix infinite loop in dataflow analysis for Jinja typechecking - [dbt-fusion] Fix column differences due to empty columns in persistent descriptions even when all other columns are equal - [dbt-fusion] Fix Databricks macro dispatch to skip empty relation comments - [dbt-fusion] Revert relation comment on BigQuery - [dbt-fusion] Merge newline in error messages - [dbt-fusion] Fix macro_spans for vars - [dbt-fusion] Update INFORMATION_SCHEMA tables whose schemas changed in Snowflake - [dbt-fusion] Return proper AdapterType from BaseRelation and support setting is_delta - [dbt-fusion] Salesforce adapter fix ### Under the Hood - [dbt-fusion] Implement Set for Jinja compat - [dbt-fusion] Improve MetricFlow Server Client robustness - [dbt-fusion] Statically link the nanoarrow extension into the DuckDB driver - [dbt-fusion] Remove async_trait to improve compile performance - [dbt-fusion] LSP: Removed ColumnReferenceIndex - [dbt-fusion] Simplify ref override - [dbt-fusion] Simplify ref location ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@lottaquestions](https://github.com/lottaquestions) - [@zoltanersek](https://github.com/zoltanersek) ([#7879](https://github.com/dbt-labs/dbt-fusion/issues/7879)) ## 2.0.0-preview.108 Released February 04, 2026 ### Features - [dbt-fusion] Implement retry - [dbt-fusion] Udf function macro updates from core - [dbt-extension] Add graceful handling of authentication token expiration - [dbt-fusion] Warn users if manifest deserialization fails. - [dbt-fusion] LSP: Added semantic classification for jinja functions and variables ### Fixes - [dbt-fusion] Add snowflake_warehouse to tests ([#1088](https://github.com/dbt-labs/dbt-fusion/issues/1088)) - [dbt-fusion] seed macro now respects DBT_PROJECT_DIR environment variable ([#1259](https://github.com/dbt-labs/dbt-fusion/issues/1259)) - [dbt-fusion] Filter out metadata rows from DESCRIBE TABLE in Databricks get_columns_in_relation ([#1230](https://github.com/dbt-labs/dbt-fusion/issues/1230)) - [dbt-fusion] Improve errors for missing var ([#1120](https://github.com/dbt-labs/dbt-fusion/issues/1120)) - [dbt-fusion] a bunch of defer related bugs - [dbt-fusion] More BigQuery AI functions - [dbt-fusion] dbt-csv treats empty lines as new empty records - [dbt-fusion] Add pop method to OrderedDict ([#1235](https://github.com/dbt-labs/dbt-fusion/issues/1235)) - [dbt-fusion] fix jinja None literal - [dbt-fusion] impl snowflake array_agg(subquery) - [dbt-fusion] Fix issue with incremental models blocking static analysis when they are uninitialized and their schema can't be fetched - [dbt-fusion] dbt-csv: logs csv parser version on cli start - [dbt-fusion] correctly merge python package config - [dbt-fusion] Fix datetime.now() to return naive datetime - [dbt-fusion] Fix persistent descriptions column check fail for semantically equal empty fields - [dbt-fusion] Replace Jinja typecheck analysis by a simple dependency analysis to minimize run-time and RAM consumption - [dbt-fusion] Fix 'Failed to read file' warning for package snapshots ### Under the Hood - [dbt-fusion] Use empty checksum for data tests to match Python/Mantle behavior and ensure consistent checksums across test runs ([#7548](https://github.com/dbt-labs/dbt-fusion/issues/7548)) - [dbt-fusion] Split fusion telemetry proto definitions and generated code from rust-proto - [internal] Unify sidecar adapter overrides for get_relation and list_relations - [dbt-fusion] (dbt-auth) rollout new architecture to dbt-snowflake's auth module. - [dbt-fusion] Report telemetry for new nodes. - [dbt-fusion] Refactor db-related infrastructure: consolidate DuckDB metadata queries into SidecarClient, rename dbt-runner-messages to dbt-db-messages, add dbt-db-client crate, and clean up naming conventions - [dbt-fusion] Add DuckDB-specific types (HugeInt, UTinyInt, USmallInt, UInteger, UBigInt, UHugeInt, Uuid) - [internal] Add yamllint configuration and pre-commit hook for YAML syntax validation ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#1120](https://github.com/dbt-labs/dbt-fusion/issues/1120), [#1235](https://github.com/dbt-labs/dbt-fusion/issues/1235)) - [@b-per](https://github.com/b-per) ([#1088](https://github.com/dbt-labs/dbt-fusion/issues/1088), [#1230](https://github.com/dbt-labs/dbt-fusion/issues/1230), [#1259](https://github.com/dbt-labs/dbt-fusion/issues/1259)) - [@dataders](https://github.com/dataders) - [@lottaquestions](https://github.com/lottaquestions) ## 2.0.0-preview.105 Released January 30, 2026 ### Features - [dbt-fusion] Support the --introspect and --no-introspect flags. ([#1194](https://github.com/dbt-labs/dbt-fusion/issues/1194)) - [dbt-fusion] Support cluster_by for dynamic tables in Snowflake ### Fixes - [dbt-fusion] Ensure frontier nodes are included in project lineage for LSP - [dbt-fusion] Typechecking for Databricks functions TO_CSV, FROM_CSV, SCHEMA_OF_CSV ([#1133](https://github.com/dbt-labs/dbt-fusion/issues/1133)) - [dbt-fusion] Accept ST_GEOMFROMTEXT(string, int) overload in Databricks ([#1145](https://github.com/dbt-labs/dbt-fusion/issues/1145)) - [dbt-fusion] Typechecking for Databricks TRY_TO_GEOMETRY and ST_POINT ([#1146](https://github.com/dbt-labs/dbt-fusion/issues/1146)) - [dbt-fusion] Hydrate description of macros in manifest - [dbt-fusion] Improve private package error messages ([#597](https://github.com/dbt-labs/dbt-fusion/issues/597)) - [dbt-fusion] hydrate arguments from yaml + output as arguments instead of args - [dbt-fusion] Enable fusion to read grants entries in previous state manifests generated by dbt-mantle ([#1237](https://github.com/dbt-labs/dbt-fusion/issues/1237)) - [dbt-fusion] Basic Snowflake VECTOR type and typechecking AI_EMBED ([#1077](https://github.com/dbt-labs/dbt-fusion/issues/1077)) - [internal] Fix upload paths in the service mode - [dbt-fusion] dbt-csv handles special headers in csv ([#1227](https://github.com/dbt-labs/dbt-fusion/issues/1227)) - [dbt-fusion] dbt-csv infer types by reading the entire file - [dbt-fusion] Add a few more Redshift missing functions ([#1244,1245](https://github.com/dbt-labs/dbt-fusion/issues/1244,1245)) - [dbt-fusion] [Databricks] Use auth_type to determine what auth_type use instead of inferring. PAT is the default. ([#1015](https://github.com/dbt-labs/dbt-fusion/issues/1015)) - [dbt-fusion] Make Snowflake VECTOR(e, d) polymorphic in the dimension d ([#1022](https://github.com/dbt-labs/dbt-fusion/issues/1022)) - [dbt-fusion] Fix parsing of RLIKE in Snowflake dialect ([#1034](https://github.com/dbt-labs/dbt-fusion/issues/1034)) ### Under the Hood - [dbt-fusion] review the dbt-bigquery macros divergences - [dbt-fusion] Fusion to Fusion regression testing in CI - [dbt-fusion] Emit AssetParsed spans for properties YAML parsing - [dbt-fusion] Simplify SessionIdentity to service-only struct and restructure db_root paths for tenant isolation ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#1244,1245](https://github.com/dbt-labs/dbt-fusion/issues/1244,1245)) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@jcserv](https://github.com/jcserv) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ([#1194](https://github.com/dbt-labs/dbt-fusion/issues/1194), [#1237](https://github.com/dbt-labs/dbt-fusion/issues/1237)) - [@wolfram](https://github.com/wolfram) ## 2.0.0-preview.104 Released January 28, 2026 ### Features - [dbt-fusion] Add support for unit test execution with static analysis turned partially or fully off - [dbt-fusion] LSP: Added basic semantic classification for columns - [dbt-fusion] add project level sync config ### Fixes - [dbt-fusion] Fix `invocation_args_dict` not behaving like a dict in Jinja - [internal] updating compare to gracefully handle subquery failures - [dbt-fusion] LSP: Fixed cases where renaming columns would fail if nothing referenced the column - [dbt-fusion] Fix selector method config.meta.* not selecting properly ([#1204](https://github.com/dbt-labs/dbt-fusion/issues/1204)) - [internal] Pass identity information to the service - [dbt-fusion] correctly defer snapshots and incremental models - [dbt-fusion] add missing python configs ### Under the Hood - [dbt-fusion] Remove deprecated \`dbt hydrate\` and \`dbt sample\` commands (functionality now integrated into \`dbt pull\`) ### Dependencies - [dbt-fusion] Update Rust ADBC crates from 0.20 to 0.22 ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#1204](https://github.com/dbt-labs/dbt-fusion/issues/1204)) ## 2.0.0-preview.103 Released January 27, 2026 ### Fixes - [dbt-fusion] Remove SL warning from LSP when no dbt_cloud.yaml is present ### Contributors - [@aiguofer](https://github.com/aiguofer) ## 2.0.0-preview.102 Released January 27, 2026 ### Features - [dbt-fusion] Added schema-refresh-interval option to dbt_project yaml - [dbt-fusion] Add structured location fields to log message events. - [dbt-fusion] Introduce new debug level span & AssetParsed event - [dbt-fusion] custom csv parser for fusion ### Fixes - [dbt-fusion] Fork arrow-csv for seed reading - [dbt-fusion] Do not write __unrendered__ to package-lock.yml ([#1065](https://github.com/dbt-labs/dbt-fusion/issues/1065)) - [dbt-fusion] Allow strptime to use default YMD values if not provided - [dbt-fusion] Issue warnings when generate_x_name macros fail ([#7080](https://github.com/dbt-labs/dbt-fusion/issues/7080)) - [dbt-fusion] BINARY overload for BigQuery SUBSTR ([#1112](https://github.com/dbt-labs/dbt-fusion/issues/1112)) - [dbt-fusion] Fix kwargs dict methods support by using MutableMap - [dbt-fusion] Fix non-deterministic ordering in Python model refs and schema creation by sorting tojson output and using IndexMap - [dbt-fusion] Fix unit test versions field parsing to accept map with include/exclude keys - [dbt-fusion] Typechecking for BigQuery EXTRACT(... from TIME) ([#1126](https://github.com/dbt-labs/dbt-fusion/issues/1126)) - [dbt-extension] Restore log display when dbt compare fails - [dbt-fusion] Fix analysis for oid column in Redshift pg_ tables ([#1084](https://github.com/dbt-labs/dbt-fusion/issues/1084)) - [dbt-fusion] Typechecking of BigQuery AI.GENERATE function ([#1136](https://github.com/dbt-labs/dbt-fusion/issues/1136)) - [dbt-fusion] Support string i64 conversion for freshness count - [dbt-fusion] Duplicate model error only occurs for enabled models - [dbt-fusion] Fix false positives for test nodes. ([#1222](https://github.com/dbt-labs/dbt-fusion/issues/1222)) - [internal] Fix the sample command to work in the service mode - [dbt-fusion] Improve truthiness for database quoting configs ([#1222](https://github.com/dbt-labs/dbt-fusion/issues/1222)) - [dbt-fusion] Allow static_analysis config for seeds - [dbt-fusion] fix generating alias - [dbt-fusion] query tag supports dict and sequence - [dbt-fusion] Fixed warning range for doc macro use - [dbt-fusion] fix python config dict and canonicalize config dict in sql comparison - [dbt-fusion] Add various missing Redshift functions ([#1085](https://github.com/dbt-labs/dbt-fusion/issues/1085)) - [dbt-fusion] Fix approx_top_sum function definition for BigQuery ([#1143](https://github.com/dbt-labs/dbt-fusion/issues/1143)) - [dbt-fusion] Fix dbt1501: Failed to render SQL unknown method: none has no method named append ([#7703](https://github.com/dbt-labs/dbt-fusion/issues/7703)) - [internal] Sort out the directory spaghetti madness - [dbt-fusion] adding missing context object to profiles context - [dbt-fusion] Fix non-deterministic ordering in Python model refs and schema creation by sorting tojson output and using IndexMap - [dbt-extension] Fixes issue with dbt_cloud.yml generator - [internal] compare changes partial success state - [dbt-fusion] Fix state:modified false positives for model freshness. ([#1231](https://github.com/dbt-labs/dbt-fusion/issues/1231)) ### Under the Hood - [dbt-fusion] Improve sidecar adapter infrastructure for hybrid execution - [dbt-fusion] Add --filter flag to dbt sample pull for time-based filtering - [dbt-fusion] review dbt-adapters and dbt-snowflake macros divergences - [dbt-fusion] Move markdown error downgrade into tracing middleware. - [dbt-fusion] fix namespace issues for data tests with different conditions - [dbt-fusion] Fix create schema not ignoring permission error - [dbt-fusion] Add `dbt pull` command with unified `--sample` flag: supports row limits (`--sample 1000`) and time windows (`--sample "7 days"`). - [dbt-fusion] Add missing components to state:modified telemetry - [dbt-fusion] Improve batching mechanics for catalog generation ### Contributors - [@Conforman](https://github.com/Conforman) - [@aiguofer](https://github.com/aiguofer) ([#1084](https://github.com/dbt-labs/dbt-fusion/issues/1084), [#1085](https://github.com/dbt-labs/dbt-fusion/issues/1085), [#1143](https://github.com/dbt-labs/dbt-fusion/issues/1143), [#7703](https://github.com/dbt-labs/dbt-fusion/issues/7703)) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@davidharting](https://github.com/davidharting) - [@lottaquestions](https://github.com/lottaquestions) ([#1222](https://github.com/dbt-labs/dbt-fusion/issues/1222), [#1222](https://github.com/dbt-labs/dbt-fusion/issues/1222), [#1231](https://github.com/dbt-labs/dbt-fusion/issues/1231)) - [@wolfram](https://github.com/wolfram) ## 2.0.0-preview.101 Released January 22, 2026 ### Features - [dbt-fusion] Workflow job python models submission method for Databricks ([#1099](https://github.com/dbt-labs/dbt-fusion/issues/1099)) - [dbt-fusion] adapter.dispatch goto def ### Fixes - [dbt-extension] Fix occasional issue where the dbt_project.yml is not found - [dbt-fusion] merge incremental table schema - [dbt-fusion] support indirect selection, better greedy test exclution, fix fqn matching for tests - [internal] Fix service mode being ignored by AI again ### Under the Hood - [dbt-fusion] Improve sidecar adapter infrastructure for hybrid execution - [dbt-fusion] Drop state:modified telemetry from debug to trace. ### Contributors - [@lottaquestions](https://github.com/lottaquestions) ## 2.0.0-preview.100 Released January 21, 2026 ## 2.0.0-preview.99 Released January 21, 2026 ### Features - [dbt-fusion] Typechecking for most Snowflake AI_xxx functions ([#1058](https://github.com/dbt-labs/dbt-fusion/issues/1058), [#1101](https://github.com/dbt-labs/dbt-fusion/issues/1101)) - [dbt-fusion] Migrate source freshness to tracing & emit json compat event LogFreshnessResult (Q018) - [dbt-fusion] Implement debug logging for state:modified differences. ([#1214](https://github.com/dbt-labs/dbt-fusion/issues/1214)) - [dbt-fusion] dbt-csv parser ### Fixes - [dbt-fusion] Enable pop() on kwargs in minijinja ([#1087](https://github.com/dbt-labs/dbt-fusion/issues/1087)) - [dbt-fusion] fixes to sample/hydrate for Vortex - [dbt-fusion] Support for --store-failures - [dbt-fusion] - [internal] Make sure that profiles.yml and --compute do not clash - [dbt-fusion] Make sure trace events are emitted to files when only --log-level-file trace is specified ### Under the Hood - [dbt-fusion] Detect internal errors from invalid task graph and fail quickly ### Contributors - [@lottaquestions](https://github.com/lottaquestions) ([#1214](https://github.com/dbt-labs/dbt-fusion/issues/1214), [#1087](https://github.com/dbt-labs/dbt-fusion/issues/1087)) ## 2.0.0-preview.98 Released January 19, 2026 ### Features - [dbt-fusion] Update the manifest.json to have a `dbt_schema_version` of `v12` instead of `v20` as we are conformant with the `v12` schema - [dbt-fusion] Serverless cluster Python models submission method for Databricks ([#1098](https://github.com/dbt-labs/dbt-fusion/issues/1098)) ### Fixes - [dbt-fusion] Fix path selector behavior for path include dot and add tests - [dbt-fusion] Typechecking for Snowflake AI_CLASSIFY - [internal] Revert AI generated mistakes from the service codebase - [dbt-fusion] fixes variant support for compute - [dbt-fusion] sync create_view.sql ## 2.0.0-preview.97 Released January 16, 2026 ### Features - [dbt-fusion] dbt hydrate. Hydrates sources into sidecar/service incl. variantsduckdb - [dbt-fusion] Add `.env` to `.gitignore` populated by `dbt init` command ([#946](https://github.com/dbt-labs/dbt-fusion/issues/946)) ### Fixes - [dbt-fusion] LSP: Split target output separate from CLI - [dbt-fusion] LSP: Fixed a possible compile feedback loop - [dbt-fusion] support dbt.macro_name attribute access in Jinja runtime - [dbt-fusion] Fix modified state check for Semantic nodes and add deferral support for Saved Query Exports - [dbt-fusion] no warning with specified profile yml but missing profile in project ([#7458](https://github.com/dbt-labs/dbt-fusion/issues/7458)) - [dbt-fusion] More robust signature for Snowflake TIMESTAMP_FROM_PARTS ([#7524](https://github.com/dbt-labs/dbt-fusion/issues/7524)) - [dbt-fusion] Fix error when `vars` contains numbers as keys ([#7050](https://github.com/dbt-labs/dbt-fusion/issues/7050)) - [dbt-fusion] Disambiguation of qualified columns under USING in Snowflake ([#7525](https://github.com/dbt-labs/dbt-fusion/issues/7525)) - [dbt-fusion] avoid running hooks when there is nothing to do ### Under the Hood - [dbt-fusion] Improve debuggability of third party ADBC drivers in `dbt-xdbc` - [dbt-fusion] Inline ephemeral model CTEs to match Mantle ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@kczimm](https://github.com/kczimm) ([#7458](https://github.com/dbt-labs/dbt-fusion/issues/7458)) - [@serramatutu](https://github.com/serramatutu) ## 2.0.0-preview.96 Released January 15, 2026 ### Features - [dbt-fusion] Auto-load .env files from the current working directory if the file exists ([#946](https://github.com/dbt-labs/dbt-fusion/issues/946)) ### Fixes - [dbt-fusion] add missing columns to Snowflake ACCOUNT_USAGE.TABLES and ACCOUNT_USAGE.STORAGE_USAGE schemas ([#1060](https://github.com/dbt-labs/dbt-fusion/issues/1060)) ### Contributors - [@b-per](https://github.com/b-per) ([#1060](https://github.com/dbt-labs/dbt-fusion/issues/1060)) ## 2.0.0-preview.95 Released January 15, 2026 ### Breaking Changes - [dbt-fusion] python models don't inherit materialization configured in dbt_project.yml ([#7481](https://github.com/dbt-labs/dbt-fusion/issues/7481)) ### Features - [dbt-fusion] Python models all_purpose_cluster submission method ([#7017](https://github.com/dbt-labs/dbt-fusion/issues/7017)) - [dbt-fusion] Complete Snowflake Sidecar Mode Implementation with DuckDB Backend - [dbt-fusion] Invalidate model cache when test fail - [dbt-fusion] Invalidate deleted model from Build Cache ### Fixes - [dbt-fusion] Fix Snowflake PIVOT parser to accept qualified column names in FOR clause - [dbt-fusion] Enable class methods on datetime instances ([#7406](https://github.com/dbt-labs/dbt-fusion/issues/7406)) - [dbt-fusion] Support for BQ's INFORMATION_SCHEMA.SEARCH_INDEX_COLUMN_OPTIONS ([#1144](https://github.com/dbt-labs/dbt-fusion/issues/1144)) - [dbt-fusion] Fix python model config resolution - [dbt-fusion] dbt clean does not load packages ([#7311](https://github.com/dbt-labs/dbt-fusion/issues/7311), [#3751](https://github.com/dbt-labs/dbt-fusion/issues/3751)) - [dbt-fusion] Fix Unit Test uniqueID overwrite model in Schema store - [dbt-fusion] resolve FQN quoting mismatch on get_columns_in_relation ([#1186](https://github.com/dbt-labs/dbt-fusion/issues/1186)) - [dbt-fusion] ignore show parameters like in both fusion and mantle - [dbt-fusion] fix duckdb qualify clause - [dbt-fusion] fix agate table column type - [dbt-fusion] Render Null values specified in YAML as 'None' in generated SQL to match Mantle - [dbt-fusion] Fix for empty unit test fixture ([#894](https://github.com/dbt-labs/dbt-fusion/issues/894)) - [dbt-fusion] correctly extract jinja from generic test argrs when args are list or object like - [dbt-fusion] Better typechecking of BigQuery CREATE FUNCTION ([#7429](https://github.com/dbt-labs/dbt-fusion/issues/7429)) - [dbt-fusion] Fix up seed csv parsing for trailing whitespaces for int columns - [internal] Revert quoting change in the sidecar mode - [dbt-fusion] Indicate correct yml file when warning about duplicate columns. ([#1200](https://github.com/dbt-labs/dbt-fusion/issues/1200)) ### Under the Hood - [dbt-fusion] Fix ordering and update serde implementation for grants - [internal] Moved relation cache from BridgeAdapter to AdapterEngine for BaseAdapter verticalization - [dbt-extension] Improved the error message when a user is using an invalid dbt_cloud.yml credential file. - [dbt-fusion] [Databricks] Query spark version tag for clusters - [dbt-fusion] Add new udf fields - [dbt-fusion] Change pre-checksum normalization of input files to compact multiple whitespaces to 1 space ### Dependencies - [dbt-fusion] Bump databricks driver to databricks-0.21.0+dbt0.21.7 ### Contributors - [@Conforman](https://github.com/Conforman) - [@aiguofer](https://github.com/aiguofer) ([#1144](https://github.com/dbt-labs/dbt-fusion/issues/1144)) - [@b-per](https://github.com/b-per) ([#894](https://github.com/dbt-labs/dbt-fusion/issues/894)) - [@dataders](https://github.com/dataders) ([#1186](https://github.com/dbt-labs/dbt-fusion/issues/1186)) - [@dbtagarovaat](https://github.com/dbtagarovaat) - [@kczimm](https://github.com/kczimm) ([#7406](https://github.com/dbt-labs/dbt-fusion/issues/7406), [#7311](https://github.com/dbt-labs/dbt-fusion/issues/7311), [#3751](https://github.com/dbt-labs/dbt-fusion/issues/3751)) - [@lottaquestions](https://github.com/lottaquestions) ([#1200](https://github.com/dbt-labs/dbt-fusion/issues/1200)) ## 2.0.0-preview.94 Released January 12, 2026 ### Features - [internal] Cleanup sampling schemas ### Fixes - [dbt-fusion] Default to github for private packages without provider - [dbt-fusion] Implement start, end, and span for re module ([#1172](https://github.com/dbt-labs/dbt-fusion/issues/1172)) - [dbt-fusion] Add string methods in minijinja - [dbt-fusion] Deduplicate column definitions during the initial stages of processing columns to match dbt core behavior - [dbt-fusion] Fix show for models ending with SQL comments ([#939](https://github.com/dbt-labs/dbt-fusion/issues/939)) - [dbt-fusion] Fix yaml snapshot didn't preserve path info - [dbt-fusion] Fix test name matching - [dbt-fusion] Fix for sl query order-by with - prefix - [dbt-fusion] UI improvement to top level CLI output - [dbt-fusion] backout unique_id fix - [dbt-fusion] Insert NULL values for empty CSV rows for conformance with core behavior ### Under the Hood - [dbt-fusion] Move fancy progress bar into a dedicated crate and use directly in tracing - [dbt-fusion] simplify tests ### Contributors - [@Conforman](https://github.com/Conforman) - [@aiguofer](https://github.com/aiguofer) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#1172](https://github.com/dbt-labs/dbt-fusion/issues/1172)) - [@b-per](https://github.com/b-per) ([#939](https://github.com/dbt-labs/dbt-fusion/issues/939)) - [@kczimm](https://github.com/kczimm) - [@lottaquestions](https://github.com/lottaquestions) ## 2.0.0-preview.93 Released January 09, 2026 ### Features - [dbt-fusion] Support deferral for Semantic Layer CLI subcommands - [dbt-fusion] Discover downstream exposures ([#2693](https://github.com/dbt-labs/dbt-fusion/issues/2693)) - [dbt-fusion] Added strictness config. Propagate config, pass through fusion phases ([##7255](https://github.com/dbt-labs/dbt-fusion/issues/#7255)) - [dbt-fusion] Add new `GenericOpExecuted` and `GenericOpItemProcessed` otel events for generic progress reporting on spans - [dbt-fusion] Materialization for dbt models for sidecar/service ([##7255](https://github.com/dbt-labs/dbt-fusion/issues/#7255)) - [dbt-fusion] Implement snapshot materialization with timestamp and check strategies for SCD Type 2 tracking ([##7255](https://github.com/dbt-labs/dbt-fusion/issues/#7255)) - [dbt-fusion] Add copy method for maps in jinja ([#1175](https://github.com/dbt-labs/dbt-fusion/issues/1175)) ### Fixes - [dbt-fusion] Improved typechecking of BigQuery implicit array unnesting ([#536](https://github.com/dbt-labs/dbt-fusion/issues/536)) - [dbt-fusion] Fix SF ilike binding - [dbt-fusion] Fix primary_key and indexes schema type mismatches with dbt-core - [dbt-fusion] Fix hierarchical config resolution for snapshots and data tests ([#1135](https://github.com/dbt-labs/dbt-fusion/issues/1135)) - [dbt-fusion] Add support for string partition method in templates ([#7316](https://github.com/dbt-labs/dbt-fusion/issues/7316)) - [dbt-fusion] fix graph.node path, unique_id, severity - [internal] More schema work in sampling - [dbt-fusion] add range function to databricks - [dbt-fusion] Add unary plus operator support to minijinja parser - [dbt-fusion] Deduplicate packages with same namespace instead of erroring (fixes dbt1005 for hub redirects) - [dbt-fusion] Add Private and Tarball variants to DeprecatedDbtPackageLock enum for parsing old format package-lock.yml files - [dbt-fusion] Fix test name used in manifest for generic tests to match dbt-core - [dbt-fusion] Ensure the Column::dtype string never contains not null - [dbt-extension] Fixes an issue where the autogenerated dbt_cloud.yml file had the wrong token values - [dbt-fusion] Fix source freshness compilation errors when loaded_at_query has special characters ([#1156](https://github.com/dbt-labs/dbt-fusion/issues/1156)) - [dbt-fusion] LSP: Slightly improved memory usage by interning identifiers - [dbt-fusion] fix selector for FQN and meta config in jinja context ([#7388](https://github.com/dbt-labs/dbt-fusion/issues/7388)) - [dbt-fusion] Source quoting fields do not render to Boolean ([#1171](https://github.com/dbt-labs/dbt-fusion/issues/1171)) - [dbt-fusion] return in non-top block will issue an warning instead of error - [dbt-fusion] Several seed-related fixes for reading CSV files - [dbt-fusion] Fixes state:modified false positives due to failed truthiness checks for semantically similar null values and whitespace and case changes in column descs. - [dbt-fusion] Reimplement checksum calculations that are stable with respect to whitespace and case changes and that can handle mantle previous manifests. - [dbt-fusion] Bring Jinja Return instruction more in-line with mantle semantics ### Under the Hood - [dbt-fusion] Allow replay adapter to read recordings from dbt operations - [dbt-fusion] Changed how incremental configuration changes are handled by the Databricks adapter - [internal] unify service and sidecar; tested both ([#7255](https://github.com/dbt-labs/dbt-fusion/issues/7255)) - [dbt-fusion] Add incremental and snapshot materialization support for --compute sidecar and --compute service modes - [dbt-fusion] Simplify runner protocol by consolidating message types and renaming for consistency - [dbt-fusion] Stateful DuckDB Infrastructure for Multi-Tenant Isolation - [dbt-fusion] Refactored DuckDB runner to use deferred initialization: database creation now happens at SessionStart instead of process startup, improving performance by ~150ms per session. CLI flag --database-path renamed to --database-root (now takes directory instead of full path). Removed DbLocation enum in favor of SessionIdentity.isolation_path() method for cleaner path computation. - [dbt-fusion] Remap error codes from overly generic to specific - [dbt-fusion] Use sync instead of overwrite when installing internal packages ### Contributors - [@Conforman](https://github.com/Conforman) - [@aiguofer](https://github.com/aiguofer) ([#1175](https://github.com/dbt-labs/dbt-fusion/issues/1175), [#1135](https://github.com/dbt-labs/dbt-fusion/issues/1135)) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#1156](https://github.com/dbt-labs/dbt-fusion/issues/1156)) - [@akbog](https://github.com/akbog) - [@kczimm](https://github.com/kczimm) ([#7316](https://github.com/dbt-labs/dbt-fusion/issues/7316)) - [@lottaquestions](https://github.com/lottaquestions) - [@serramatutu](https://github.com/serramatutu) ## 2.0.0-preview.92 Released December 23, 2025 ### Fixes - [dbt-fusion] Fix panicing when a relation cannot be downcast to an object. This happens frequently in jinja and should return an error if it fails. - [dbt-fusion] Fix default description to '' for models, unit_tests, seeds, data_tests, exposures - [dbt-fusion] Fix non-deterministic unit test ordering causing false failures ([#1017](https://github.com/dbt-labs/dbt-fusion/issues/1017)) - [dbt-fusion] Accept string values for constraint columns field in YAML schema files - [dbt-fusion] Fixing conformance issue with cron schedules - [dbt-fusion] Strip whitespace from Python model files to match dbt-core behavior - [dbt-fusion] Fix snapshot schemas not hydrating in pre_compile - causes missing columns on snapshots which have strayed ([#1141](https://github.com/dbt-labs/dbt-fusion/issues/1141)) - [dbt-fusion] Ensure old core format package-lock.yml is invalidated if packages.yml is incompatible with package-lock.yml - [dbt-fusion] Stop rendering not null constraint as part of type string in column builder ([#1100](https://github.com/dbt-labs/dbt-fusion/issues/1100)) ### Under the Hood - [dbt-fusion] Resolve panics from unimplemented replay adapter methods. ([#7110](https://github.com/dbt-labs/dbt-fusion/issues/7110)) - [dbt-fusion] Do not set OTEL global tracer provider to avoid deadlocks in tests ### Contributors - [@Conforman](https://github.com/Conforman) - [@Lukas](https://github.com/Lukas) - [@Schulte](https://github.com/Schulte) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#1017](https://github.com/dbt-labs/dbt-fusion/issues/1017)) - [@akbog](https://github.com/akbog) ([#1141](https://github.com/dbt-labs/dbt-fusion/issues/1141)) - [@mengdilin-dev](https://github.com/mengdilin-dev) ([#1100](https://github.com/dbt-labs/dbt-fusion/issues/1100)) - [@versusfacit](https://github.com/versusfacit) ([#7110](https://github.com/dbt-labs/dbt-fusion/issues/7110)) ## 2.0.0-preview.91 Released December 22, 2025 ### Fixes - [dbt-fusion] Split at unicode code points in tokenize ([#7213](https://github.com/dbt-labs/dbt-fusion/issues/7213)) - [dbt-fusion] Add re.escape() function to Jinja re module for escaping regex special characters - [dbt-fusion] Fix `adapter.Relation.create` returning undefined values during parse - [internal] Avoid panic when trying to access first value at column 0 of an empty RecordBatch ([#7208](https://github.com/dbt-labs/dbt-fusion/issues/7208)) - [dbt-fusion] non_additive_dimension.window_groupings defaults to empty list instead of null - [dbt-fusion] fix sort - [dbt-fusion] many rendering fixes - [dbt-fusion] Add static-analysis flag to seed & snapshot ### Under the Hood - [internal] refactored last dispatch methods for base adapter ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) - [dbt-fusion] slt jinja test - [dbt-fusion] Minor refactor analyzeable stat insertion ### Contributors - [@Conforman](https://github.com/Conforman) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@akbog](https://github.com/akbog) - [@dbtagarovat](https://github.com/dbtagarovat) ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) - [@kczimm](https://github.com/kczimm) ([#7213](https://github.com/dbt-labs/dbt-fusion/issues/7213)) ## 2.0.0-preview.90 Released December 19, 2025 ### Features - [dbt-fusion] Add new `ShowResult` event to otel logs for verbose diagnostic outputs of runtime artifacts like schedule, task graph and others ### Fixes - [dbt-fusion] Include various node errors in run_results.json ([#1130](https://github.com/dbt-labs/dbt-fusion/issues/1130)) - [dbt-fusion] fix adapters/salesforce panics ## 2.0.0-preview.89 Released December 18, 2025 ### Features - [dbt-fusion] Smart test aggregation - [dbt-fusion] Support not not syntax in minijinja, similar to jinja2. ([#6898](https://github.com/dbt-labs/dbt-fusion/issues/6898)) ### Fixes - [dbt-fusion] Fix semantic layer export dependency resolution - [dbt-fusion] Update config.get() and config.require() behavior - [dbt-fusion] BigQuery's `partiton_by.range` now supports negative values - [internal] Add a missing quoting in the sample command - [dbt-fusion] no panic when slice macro is out of bounds - [dbt-fusion] Bump Databricks driver to 0.21.6 to clean up driver log level - [dbt-fusion] fix tojson ### Under the Hood - [dbt-fusion] Migrate more legacy `show_progress!` macro calls to new tracing API's - [dbt-fusion] LSP: Added concept of initial compiler state ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@lottaquestions](https://github.com/lottaquestions) ([#6898](https://github.com/dbt-labs/dbt-fusion/issues/6898)) - [@serramatutu](https://github.com/serramatutu) ## 2.0.0-preview.88 Released December 17, 2025 ### Features - [dbt-extension] Automatically attempt to download dbt_cloud.yml on Extension registration - [internal] Populate a schema cache in local execution ### Fixes - [dbt-fusion] Fix various warning messages for source freshness/source_status selector ([#7116](https://github.com/dbt-labs/dbt-fusion/issues/7116)) - [dbt-fusion] Complete fix for source macro failing to be found when used in loaded_at_query. ([#245](https://github.com/dbt-labs/dbt-fusion/issues/245)) - [dbt-fusion] LSP: Fixed tooling from not working after a file was changed from outside the editor - [dbt-fusion] Disambiguate column names during static analysis - [dbt-fusion] go through all empty rows and avoid panic - [dbt-fusion] removing tags from columnProperties ### Contributors - [@lottaquestions](https://github.com/lottaquestions) ([#245](https://github.com/dbt-labs/dbt-fusion/issues/245)) ## 2.0.0-preview.87 Released December 16, 2025 ### Features - [dbt-fusion] support odbc literal - [dbt-fusion] A parser for column descriptions, now for non-Snowflake dialects ### Fixes - [dbt-fusion] LSP: Reduced memory usage by interning file paths - [dbt-fusion] Fix resolution of {{ this }} in loaded_at_field. ([#1055](https://github.com/dbt-labs/dbt-fusion/issues/1055)) - [dbt-fusion] fixing compare when there are no nodes to compare - [dbt-fusion] Fix MOD handle sdfany type ### Contributors - [@lottaquestions](https://github.com/lottaquestions) ([#1055](https://github.com/dbt-labs/dbt-fusion/issues/1055)) ## 2.0.0-preview.86 Released December 15, 2025 ### Features - [dbt-fusion] Emit json compat events for `deps` command - [dbt-fusion] Instrument `deps` command with otel spans, improve file log & TUI experience - [dbt-fusion] Capture rows_affected in telemetry (otel) ### Fixes - [dbt-fusion] Use ExposureType enum in Exposure type field ([#7118](https://github.com/dbt-labs/dbt-fusion/issues/7118)) - [dbt-fusion] Fix thread_id in jinja context ([#1000](https://github.com/dbt-labs/dbt-fusion/issues/1000)) - [dbt-fusion] fix adapters/redshift schema metadata: returns pseudo columns for external tables - [dbt-fusion] assignment convert ValueMap to MutableMap - [dbt-fusion] Fix deferral schemas not registering under 'defer' directory due to incorrect canonical fqn ### Contributors - [@aiguofer](https://github.com/aiguofer) ([#1000](https://github.com/dbt-labs/dbt-fusion/issues/1000)) - [@akbog](https://github.com/akbog) ## 2.0.0-preview.85 Released December 12, 2025 ### Features - [dbt-fusion] New Databricks Driver, who dis? Support for all purpose clusters - [dbt-fusion] query ID for DBX - [internal] Add a test for parquet seeds ### Fixes - [dbt-fusion] fix adapter/bigquery copy_partitions config usage when using the default ingestion time partitioning ([#1037](https://github.com/dbt-labs/dbt-fusion/issues/1037)) - [dbt-fusion] LSP: Optimized scheduler by determining if the dependencies of a node have been evaluated - [dbt-fusion] fix jinja parse error locations - [dbt-fusion] Detect function created in on-run-start and add to function registry - [dbt-fusion] bind js function in snowflake, create function with QualifiedName - [dbt-fusion] Fix FLOAT(8) binding in snowflake - [dbt-fusion] BigQuery external table pseudo column causing "No column found" error ([#877](https://github.com/dbt-labs/dbt-fusion/issues/877)) - [dbt-fusion] support unit test expect empty rows - [dbt-fusion] support checksum.get - [dbt-fusion] fix adapter/bigquery use submission_method from model config then fall back to profiles target - [dbt-fusion] Quoting was not applied to snowflake materializations via the `render_raw_columns_constraints` call in the materialization override. This fixes. - [dbt-fusion] Ensure seed processing doesn't leave temp files around ### Under the Hood - [internal] move parameter extraction to dispatch for list_relations_without_caching, copy_table, update_columns, update_table_description, alter_table_add_columns, get_bq_table, grant_access_to, get_dataset_location ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) - [dbt-fusion] add file path to custom config deprecation warning - [dbt-fusion] Ensure merge queue / release do not dead lock - merge queue tests will wait to complete until the release finishes - [dbt-fusion] integrate snowflake macro to db-runner - [dbt-fusion] Add `rows_affected` to node evaluated and processed event models in otel (not populated yet) - [dbt-fusion] add dbt-db-runner-asset ### Contributors - [@akbog](https://github.com/akbog) - [@dbtagarovat](https://github.com/dbtagarovat) ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) ## 2.0.0-preview.84 Released December 10, 2025 ### Fixes - [dbt-fusion] Make `print` macro consistent to dbt Core ([#869](https://github.com/dbt-labs/dbt-fusion/issues/869)) - [dbt-fusion] More robust parsing of column descriptions in properties.yml - [dbt-fusion] Fix Staging Table resolution ([#7064](https://github.com/dbt-labs/dbt-fusion/issues/7064)) ### Under the Hood - [dbt-fusion] A parser for column descriptions - [dbt-fusion] add duckdb_setup_macro.sql ### Contributors - [@yu-iskw](https://github.com/yu-iskw) ([#869](https://github.com/dbt-labs/dbt-fusion/issues/869)) ## 2.0.0-preview.83 Released December 10, 2025 ### Features - [dbt-fusion] Support selector for Semantic Layer CLI subcommands ### Fixes - [dbt-fusion] LSP: Improved memory usage by shrinking code location types - [dbt-fusion] fix adapter/redshift persist_docs on columns when there're more than 2 columns ([#1031](https://github.com/dbt-labs/dbt-fusion/issues/1031)) - [dbt-fusion] Revert Databricks Thrift driver bump due to upstream issue with IPC ### Under the Hood - [dbt-fusion] support jaffle_shop duckdb exe ### Contributors - [@aiguofer](https://github.com/aiguofer) ## 2.0.0-preview.82 Released December 09, 2025 ### Features - [dbt-fusion] updating config.get() to warn and adding meta_get and meta_require ([#745](https://github.com/dbt-labs/dbt-fusion/issues/745)) - [dbt-fusion] is_cluster Databricks adapter method ([#6852](https://github.com/dbt-labs/dbt-fusion/issues/6852)) ## 2.0.0-preview.81 Released December 09, 2025 ### Breaking Changes - [dbt-fusion] downgrade doc macro errors to warnings ([#6921](https://github.com/dbt-labs/dbt-fusion/issues/6921), [#6919](https://github.com/dbt-labs/dbt-fusion/issues/6919), [#6920](https://github.com/dbt-labs/dbt-fusion/issues/6920), [#6916](https://github.com/dbt-labs/dbt-fusion/issues/6916)) ### Features - [dbt-fusion] support unit test input as rows ### Fixes - [dbt-fusion] add map.to_dict() - [dbt-fusion] Yaml: fix tab characters sometimes corrupted into spaces - [dbt-fusion] Add dedup logic when data is fetched to match dbt Core behavior - [dbt-fusion] lazily load compiled_code and compiled_sql ([#6937](https://github.com/dbt-labs/dbt-fusion/issues/6937)) - [dbt-fusion] (fix adapters/snowflake) client_session_keep_alive in profiles.yml ### Under the Hood - [dbt-fusion] add one second on hydrate execution - [dbt-fusion] Source-aware seeds for local runs; fix duplicate attach; schema listing - [dbt-fusion] imdb clickbench use sidecar - [dbt-fusion] Remove the FF DBT_ENABLE_BETA_PYTHON_MODELS: Python models is on by default ## 2.0.0-preview.80 Released December 08, 2025 ### Features - [dbt-fusion] Python models for Databricks ([#6678](https://github.com/dbt-labs/dbt-fusion/issues/6678)) - [dbt-fusion] Implement bigframes submission method - [dbt-fusion] Switch to new Thrift based Databricks driver. All purpose clusters unlocked! ### Fixes - [dbt-fusion] LSP: Slightly improved performance on incremental compile by skipping parents if only one node changed - [dbt-fusion] FIx seeds not materializing as Iceberg tables - [dbt-extension] Fixes issue causeing extension registration to fail when email address is not verified and trial has expired - [dbt-fusion] Introduce data store - [dbt-fusion] Fix sources overly selected in SAO ### Under the Hood - [dbt-fusion] Switch slt DuckDB from crate to driver - [dbt-fusion] Remove duckdb crate dependency ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@akbog](https://github.com/akbog) ## 2.0.0-preview.79 Released December 05, 2025 ### Features - [dbt-fusion] add retries to nextest ci profile ### Fixes - [dbt-fusion] as_bool not error on string and emit warning during typecheck - [dbt-fusion] Implement "fresher" option for source_status selector ([#1056](https://github.com/dbt-labs/dbt-fusion/issues/1056)) - [dbt-fusion] fix thread id render in jinja ctx ([#1000](https://github.com/dbt-labs/dbt-fusion/issues/1000)) - [dbt-fusion] Typechecking for SNOWFLAKE.CORTEX.SENTIMENT function ([#790](https://github.com/dbt-labs/dbt-fusion/issues/790)) - [dbt-fusion] Revert discovery of downstream exposures ([#2693](https://github.com/dbt-labs/dbt-fusion/issues/2693)) - [dbt-fusion] - [dbt-fusion] Serialize raw_code to an empty string - [dbt-fusion] Support Snowflake VECTOR(T,n) ### Contributors - [@mengdilin-dev](https://github.com/mengdilin-dev) ## 2.0.0-preview.78 Released December 04, 2025 ### Features - [dbt-fusion] Add support for partition_by config in Snowflake Iceberg tables - [dbt-fusion] Add config methods to access meta fields ([#745](https://github.com/dbt-labs/dbt-fusion/issues/745)) - [dbt-fusion] Added run summary metrics to invocation span event - [dbt-fusion] Add debug command output to otel ### Fixes - [dbt-fusion] update format_duration_fixed_width to support >999s ([#778](https://github.com/dbt-labs/dbt-fusion/issues/778)) - [dbt-fusion] Pass generic tests config correctly to macros; stop using config values in test names - [dbt-fusion] Fix snapshot config failures for disabled models - [dbt-fusion] LSP: Slightly improved incremental compile performance by not updating the manifest - [dbt-fusion] Make sure to show all debug command messages - [dbt-fusion] Fix CompiledNode json compat log, improve inline compile rendering & remove compiled SQL output in show - [dbt-fusion] add quotes to bq info schema project id if needed ([#966](https://github.com/dbt-labs/dbt-fusion/issues/966)) - [dbt-fusion] allow astimezone() to be called on naive datetime ([#657](https://github.com/dbt-labs/dbt-fusion/issues/657)) - [dbt-fusion] allow agate.rename to work with generic iterable ([#1075](https://github.com/dbt-labs/dbt-fusion/issues/1075)) - [dbt-fusion] Fix conformance test ([#6651](https://github.com/dbt-labs/dbt-fusion/issues/6651)) ### Under the Hood - [dbt-fusion] improve duckdb exec - [dbt-fusion] internal - [dbt-fusion] Update dbt-xdbc README - [dbt-fusion] Modify DuckDB driver build to statically link bundled extensions ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@vdfaller](https://github.com/vdfaller) ([#778](https://github.com/dbt-labs/dbt-fusion/issues/778)) ## 2.0.0-preview.77 Released December 02, 2025 ### Features - [dbt-fusion] Introduce new query cache structure - [dbt-extension] Implemented authentication for existing dbt Platform users to register the VSCode Extension - [dbt-fusion] Significantly improve dbt Core (compat) JSON log conformance ([#7](https://github.com/dbt-labs/dbt-fusion/issues/7)) - [dbt-fusion] support fixture for test expected - [dbt-fusion] Discovery downstream exposures ([#2693](https://github.com/dbt-labs/dbt-fusion/issues/2693)) - [dbt-fusion] Enable persisted_descriptions in state:modified. ([#1054](https://github.com/dbt-labs/dbt-fusion/issues/1054)) - [dbt-fusion] Support providing parent OTEL span id via `--parent-span-id` flag ### Fixes - [dbt-fusion] Fixes stat:modified by improving selection. ([#768](https://github.com/dbt-labs/dbt-fusion/issues/768)) - [dbt-fusion] Fix reporting of multiple events & align logs on the console and file log - [dbt-fusion] Fixes is_incremental() usage in ref_override for tests macros, where self referencing test names were not resolving relation_name ([#1049](https://github.com/dbt-labs/dbt-fusion/issues/1049)) - [dbt-fusion] Enhances the error message for the situation where two packages resolve to the same namespace (e.g. dbt_date) ([#1050](https://github.com/dbt-labs/dbt-fusion/issues/1050)) - [dbt-fusion] Render jinja in dbt_project.yml for package ([#901](https://github.com/dbt-labs/dbt-fusion/issues/901)) - [internal] compare bugs - [dbt-fusion] Fix parsing of BigQuery raw string literals ([#896](https://github.com/dbt-labs/dbt-fusion/issues/896)) - [dbt-fusion] Do not panic if test error was found during static analysis - [dbt-fusion] adding python_version config to models ([#1066](https://github.com/dbt-labs/dbt-fusion/issues/1066)) ### Under the Hood - [dbt-fusion] Add Map arrow to minijinja type converter for tables. ### Contributors - [@akbog](https://github.com/akbog) ([#1049](https://github.com/dbt-labs/dbt-fusion/issues/1049), [#1050](https://github.com/dbt-labs/dbt-fusion/issues/1050)) - [@jasonlin45](https://github.com/jasonlin45) - [@lottaquestions](https://github.com/lottaquestions) ([#1054](https://github.com/dbt-labs/dbt-fusion/issues/1054), [#768](https://github.com/dbt-labs/dbt-fusion/issues/768)) - [@versusfacit](https://github.com/versusfacit) ## 2.0.0-preview.76 Released November 24, 2025 ### Features - [dbt-fusion] [FEAT] Support Python models on BigQuery/GCP: serverless, cluster ([#990](https://github.com/dbt-labs/dbt-fusion/issues/990)) ### Under the Hood - [dbt-fusion] internal ## 2.0.0-preview.75 Released November 22, 2025 ### Fixes - [dbt-fusion] Correctly serialize nodes and configs for jinja (keeping None) ([#662](https://github.com/dbt-labs/dbt-fusion/issues/662)) - [dbt-fusion] add exposures to jinja graph ([#859](https://github.com/dbt-labs/dbt-fusion/issues/859)) - [dbt-fusion] Typechecking for Databricks STRING_AGG ([#1030](https://github.com/dbt-labs/dbt-fusion/issues/1030)) - [dbt-fusion] Typechecking for Databricks PERCENTILE_APPROX ([#1029](https://github.com/dbt-labs/dbt-fusion/issues/1029)) ### Under the Hood - [dbt-fusion] Use run config model for build_catalog_relation instead of manually creating one ### Dependencies - [dbt-fusion] Update Snowflake ADBC driver to ADBC 21 and gosnowflake 1.17 ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@jasonlin45](https://github.com/jasonlin45) ## 2.0.0-preview.74 Released November 21, 2025 ### Features - [dbt-fusion] Column tags for Databricks ([#957](https://github.com/dbt-labs/dbt-fusion/issues/957)) ### Fixes - [dbt-fusion] LSP: Use stale state when appropriate - [dbt-fusion] Better error message for recursive Yaml configs - [dbt-fusion] Undefined Jinja variable dbt_metadata_envs breaks dbt_artifacts ### Under the Hood - [internal] refactor(adapter): extract parameter parsing to dispatch for get_column_schema_from_query, get_columns_in_select_sql, get_common_options, get_view_options, get_partitions_metadata, get_relations_without_caching, parse_index, and redact_credentials ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) ### Dependencies - [dbt-fusion] Bump BigQuery to ADBC 21 ### Contributors - [@dbtagarovat](https://github.com/dbtagarovat) ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) - [@jasonlin45](https://github.com/jasonlin45) ## 2.0.0-preview.73 Released November 20, 2025 ## 2.0.0-preview.72 Released November 19, 2025 ### Features - [dbt-fusion] Generate warning if a non-existent model is selected ([#215](https://github.com/dbt-labs/dbt-fusion/issues/215)) ### Fixes - [dbt-fusion] Fix Fusion erroneously using description set in model config() - [dbt-fusion] Support 'group' on analyses config ### Contributors - [@jasonlin45](https://github.com/jasonlin45) - [@lottaquestions](https://github.com/lottaquestions) ([#215](https://github.com/dbt-labs/dbt-fusion/issues/215)) ## 2.0.0-preview.71 Released November 19, 2025 ### Features - [dbt-fusion] Add Semantic Layer CLI subcommands - [internal] Added otel telemetry export cli, with python bindings (both as lib and cli) ### Fixes - [dbt-fusion] Fix error reporting for jinja in nested YAML configs. ([#960](https://github.com/dbt-labs/dbt-fusion/issues/960)) - [dbt-fusion] Fix information_schema requiring exactly one argument ([#658](https://github.com/dbt-labs/dbt-fusion/issues/658)) - [dbt-fusion] Fix snapshot config parsing error - [dbt-fusion] fix use_annonymouse_sproc defaulting to false for python model materialization" - [dbt-fusion] describe_dynamic_table now respects user quoting - [dbt-fusion] Fix source quoting incorrectly defaulting to project default ### Under the Hood - [dbt-fusion] improve duckdb exe - [dbt-fusion] internal testing f/w - [dbt-fusion] internal test infra - [dbt-fusion] internal ### Dependencies - [dbt-fusion] Update Salesforce driver to ADBC 21 - [dbt-fusion] Bump Postgres to ADBC 21 - [dbt-fusion] Bump Salesforce to ADBC 21 ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#658](https://github.com/dbt-labs/dbt-fusion/issues/658)) - [@jasonlin45](https://github.com/jasonlin45) - [@lottaquestions](https://github.com/lottaquestions) ([#960](https://github.com/dbt-labs/dbt-fusion/issues/960)) ## 2.0.0-preview.70 Released November 17, 2025 ### Features - [dbt-fusion] Redshift Identity Center ### Fixes - [dbt-fusion] Allow empty sections in configs (and ignore them) ### Under the Hood - [dbt-fusion] Test generation framework fixes - [dbt-fusion] Internal test infra - [dbt-fusion] Supporte aliased pos/kw-args in minijinja functions - [dbt-fusion] Internal testing framework ## 2.0.0-preview.69 Released November 15, 2025 ### Fixes - [dbt-fusion] LSP: Enable incremental compilation for seeds and analyses ([#1012](https://github.com/dbt-labs/dbt-fusion/issues/1012)) - [dbt-fusion] Fix fusion panic when freshness result missing ### Under the Hood - [internal] Refactored adapter method dispatch to use strongly-typed parameters: `dispatch`, `get_hard_deletes_behavior`, `get_incremental_strategy_macro`, `check_schema_exists`, `get_relations_by_pattern`, `add_time_ingestion_partition_column`, `parse_partition_by`, `is_replaceable`. Parameter extraction moved from adapter implementations to dispatch layer. ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) - [dbt-fusion] Switch performance tests from basic `time` to hyperfine for more robust statistical analysis with mean, stddev, min/max metrics - [dbt-fusion] improve duckdb exe ### Contributors - [@dbtagarovat](https://github.com/dbtagarovat) ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) ## 2.0.0-preview.68 Released November 14, 2025 ### Features - [dbt-fusion] [Databricks] Materialize managed Iceberg tables by default ([#961](https://github.com/dbt-labs/dbt-fusion/issues/961)) - [dbt-fusion] Metric accepts optional time_granularity field ### Fixes - [dbt-fusion] Fix telemetry roundtrip via parquet and stop filtering span starts from parquet format ### Under the Hood - [internal] Refactored list/create/drop schema in BaseAdapter for better type safety. ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) - [dbt-fusion] [BigQuery] Support getting query_id in AdapterResponse ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#961](https://github.com/dbt-labs/dbt-fusion/issues/961)) - [@dbtagarovat](https://github.com/dbtagarovat) ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) ## 2.0.0-preview.67 Released November 13, 2025 ### Features - [dbt-fusion] Improve `show` legacy structured log compatibility and add output to otel logs ### Fixes - [dbt-fusion] Add group_by support in dbt-agate ([#320](https://github.com/dbt-labs/dbt-fusion/issues/320)) - [dbt-fusion] Avoid looking up dependencies if no package definitions ([#6532](https://github.com/dbt-labs/dbt-fusion/issues/6532)) - [dbt-fusion] Typechecking BigQuery system variables ([#993](https://github.com/dbt-labs/dbt-fusion/issues/993)) ### Under the Hood - [internal] Refactor funcs.rs: valid_snapshot_target, assert_valid_snapshot_target_given_strategy, get_missing_columns, render_raw_model_constraints, standardize_grants_dict, convert_type, verify_database, commit ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) ### Contributors - [@dbtagarovat](https://github.com/dbtagarovat) ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) ## 2.0.0-preview.66 Released November 12, 2025 ### Features - [dbt-fusion] Support --no-version-check with require_dbt_version ([#971](https://github.com/dbt-labs/dbt-fusion/issues/971)) ### Fixes - [dbt-fusion] Use the correct home directory on Windows. - [dbt-fusion] Add imports config for python models ([#1006](https://github.com/dbt-labs/dbt-fusion/issues/1006)) - [dbt-fusion] fix timestamp fuzzy compare - [dbt-fusion] Align checksum calculations for snapshots to dbt-mantle and account for model types only defined in yaml when recalculating checksums from manifest.json. - [dbt-fusion] do not print compiled inline query if show format is Json - [dbt-fusion] fuzzy comparison ignore comment - [dbt-fusion] Improve `list` command help, legacy structured log compatibility and add output to otel logs ### Under the Hood - [dbt-fusion] improve duckdb exe - [dbt-fusion] Rename dbt-fusion-adapter to dbt-adapter - [dbt-fusion] improve duckdb exe - [dbt-fusion] Use enum for fs commands ### Contributors - [@johnedmonds](https://github.com/johnedmonds) - [@lottaquestions](https://github.com/lottaquestions) ## 2.0.0-preview.65 Released November 11, 2025 ### Features - [dbt-fusion] [adapters] [bigquery] Implemented information schema. ([#539](https://github.com/dbt-labs/dbt-fusion/issues/539)) ### Fixes - [dbt-fusion] Implement support for the second optional argument to dict.pop() in jinja ([#659](https://github.com/dbt-labs/dbt-fusion/issues/659)) - [dbt-fusion] (adapters) support fetch on adapter.execute - [dbt-fusion] Fix the DbtIncrementalStrategy enum to take into account custom strategies. ([#762](https://github.com/dbt-labs/dbt-fusion/issues/762)) - [dbt-fusion] Support INSERT OVERWRITE INTO in Snowflake - [dbt-fusion] Strip color ansi codes from logs for file, json, jsonl & otlp log consumers - [dbt-fusion] Fix duckdb driver install panic - [dbt-fusion] Properly populate column descriptions in manifest when updating schema from warehouse - [dbt-fusion] Snowflake recursive CTE decompilation to DuckDB - [dbt-fusion] Support default clause in Pivot -- Snowflake - [dbt-fusion] Set checksum in function nodes - [dbt-fusion] Support string as input to TABLE for snowflake ([#6529](https://github.com/dbt-labs/dbt-fusion/issues/6529)) ### Under the Hood - [dbt-fusion] Refactored get_columns_in_relation for BaseAdapter to no longer use jinja value - [dbt-fusion] Unified CLI and LSP compilation - [dbt-fusion] Support python replay - [dbt-fusion] Remove `beta_cache` log ### Contributors - [@csquire](https://github.com/csquire) - [@dbtagarovat](https://github.com/dbtagarovat) ([#539](https://github.com/dbt-labs/dbt-fusion/issues/539)) - [@fornwall](https://github.com/fornwall) ([#659](https://github.com/dbt-labs/dbt-fusion/issues/659)) ## 2.0.0-preview.64 Released November 07, 2025 ### Features - [dbt-fusion] Support `resource_tags` in BigQuery models ([#5845](https://github.com/dbt-labs/dbt-fusion/issues/5845)) - [dbt-fusion] Implement check for deps dbt version requirement ### Fixes - [dbt-fusion] Ensure test failures are reported correctly as "fail" in run_results.json instead of being reported as "error". ([#654](https://github.com/dbt-labs/dbt-fusion/issues/654)) - [dbt-fusion] Implement selected_resources variable support in Jinja context ([#646](https://github.com/dbt-labs/dbt-fusion/issues/646)) ### Under the Hood - [dbt-fusion] improve duckdb exe ### Contributors - [@lottaquestions](https://github.com/lottaquestions) ([#654](https://github.com/dbt-labs/dbt-fusion/issues/654)) - [@serramatutu](https://github.com/serramatutu) ([#5845](https://github.com/dbt-labs/dbt-fusion/issues/5845)) ## 2.0.0-preview.63 Released November 06, 2025 ### Fixes - [dbt-fusion] Typechecking for Redshift SELECT * EXCLUDE ([#996](https://github.com/dbt-labs/dbt-fusion/issues/996)) ### Under the Hood - [dbt-fusion] Correction in sbt-sql-utils/Cargo.toml ## 2.0.0-preview.62 Released November 05, 2025 ### Features - [internal] Introduce a dbt service ### Fixes - [dbt-fusion] Ensure compile errors are reported in run_results.json ([#686](https://github.com/dbt-labs/dbt-fusion/issues/686)) - [dbt-fusion] Lazy evaluation for +meta parameters (Jinja is not eagerly expanded) ### Under the Hood - [dbt-fusion] Re-adjust async fetch logic for catalog.json - [dbt-fusion] Get back slt file updates when executing with fusion ### Contributors - [@lottaquestions](https://github.com/lottaquestions) ([#686](https://github.com/dbt-labs/dbt-fusion/issues/686)) ## 2.0.0-preview.61 Released November 05, 2025 ### Fixes - [dbt-extension] Surface errors from stdout and stderr in preview output - [dbt-fusion] fixing default materialization type for python models ([#6582](https://github.com/dbt-labs/dbt-fusion/issues/6582)) - [dbt-fusion] LSP: Fixed subsequent incremental compile slowdowns ### Under the Hood - [internal] Refactored drop/truncate/rename relation inside BaseAdapter for better type safety. ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) - [dbt-fusion] Move SQL statement splitter to SA crate (dbt-sql-utils) - [dbt-fusion] internal test infra ### Contributors - [@dbtagarovat](https://github.com/dbtagarovat) ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) ## 2.0.0-preview.60 Released November 04, 2025 ### Fixes - [dbt-fusion] Disallow trailing comma in window function calls ([#938](https://github.com/dbt-labs/dbt-fusion/issues/938)) - [dbt-fusion] Disallow [1,2,3] array constructor in Databricks ([#938](https://github.com/dbt-labs/dbt-fusion/issues/938)) - [dbt-fusion] Warn(not Error) on missing ref/source in tests ([#6528](https://github.com/dbt-labs/dbt-fusion/issues/6528)) ## 2.0.0-preview.59 Released November 04, 2025 ### Features - [dbt-fusion] `log` and `print` functions will now produce dbt-core compatible json events if `--log-format json` is used ### Fixes - [dbt-fusion] `log` jinja function will now properly emit a debug log when `info=True` argument is not set - [dbt-fusion] Use `--file-log-level` for otel instead of console log level - [dbt-extension] Fixed missing cancel button on compilation progress notification ([#981](https://github.com/dbt-labs/dbt-fusion/issues/981)) - [dbt-fusion] [BigQuery] Fix schema override warnings for arrays ([#979](https://github.com/dbt-labs/dbt-fusion/issues/979)) ### Under the Hood - [dbt-fusion] Add test to check the remote execution errors populate run results json file. ([#6306](https://github.com/dbt-labs/dbt-fusion/issues/6306)) - [dbt-fusion] Fix name of ls_source_test - [dbt-fusion] Batch and asynchronously process queries used to populate catalog.json ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#979](https://github.com/dbt-labs/dbt-fusion/issues/979)) - [@lottaquestions](https://github.com/lottaquestions) ([#6306](https://github.com/dbt-labs/dbt-fusion/issues/6306)) ## 2.0.0-preview.58 Released November 03, 2025 ### Features - [dbt-fusion] Inital Python Model Support (Don't announce till remaining adapter work is complete" - [dbt-fusion] Support GEOMETRY/GEOGRAPHY type parsing for Databricks ### Fixes - [dbt-extension] Change color values in Fusion theme to create accessible checkboxes - [dbt-fusion] Allow env vars and vars to be used in catalogs.yml ### Under the Hood - [dbt-fusion] Ensure failed runnable task recorded in run results. ([#6306](https://github.com/dbt-labs/dbt-fusion/issues/6306)) - [dbt-fusion] disable function implementation when duckdb ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@breezyfasano](https://github.com/breezyfasano) - [@lottaquestions](https://github.com/lottaquestions) ([#6306](https://github.com/dbt-labs/dbt-fusion/issues/6306)) ## 2.0.0-preview.57 Released October 31, 2025 ## 2.0.0-preview.56 Released October 31, 2025 ### Features - [dbt-fusion] Add timestamps and log level to a subset of logs in dbt.log file ### Fixes - [dbt-fusion] LSP: Improve incremental compile performance when using deferral - [dbt-fusion] Makes sure queries are emitted in dbt.log when file log level at debug - [dbt-fusion] Trim BOM from the beginning of YML files to avoid multiple document parse error - [dbt-fusion] Make @ selector efficient ([#50](https://github.com/dbt-labs/dbt-fusion/issues/50)) ### Under the Hood - [dbt-fusion] Introduce task to support multiple nodes - [dbt-fusion] Frontend: Databricks GEOGRAPHY/GEOMETRY ## 2.0.0-preview.55 Released October 30, 2025 ### Fixes - [dbt-fusion] Fixes fromjson not working on strings (only expected json) ([#948](https://github.com/dbt-labs/dbt-fusion/issues/948)) - [dbt-fusion] allow analysis default path to look at analyses and analysis - [dbt-fusion] Fix views grammar error for COPY GRANTS. ([#6405](https://github.com/dbt-labs/dbt-fusion/issues/6405)) ### Under the Hood - [dbt-fusion] [Iceberg] Move base_location_root and subpath to adapter properties - [dbt-fusion] test case for dbt compare ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@akbog](https://github.com/akbog) ([#948](https://github.com/dbt-labs/dbt-fusion/issues/948)) - [@lottaquestions](https://github.com/lottaquestions) ([#6405](https://github.com/dbt-labs/dbt-fusion/issues/6405)) - [@venkaa28'](https://github.com/venkaa28') ## 2.0.0-preview.54 Released October 30, 2025 ### Features - [dbt-fusion] Add udf volatility field, move function type to config ### Fixes - [dbt-fusion] fix ephemeral model comparison - [dbt-fusion] disable typecheck error output - [dbt-fusion] Support spaces in interval literals in Snowflake binder ### Under the Hood - [dbt-fusion] duck db integration ## 2.0.0-preview.53 Released October 30, 2025 ### Breaking Changes - [dbt-fusion] Metrics can no longer define metrics (use input_metrics) ### Features - [dbt-fusion] Metrics can be hidden ### Fixes - [dbt-fusion] Fix semantic-models config in dbt_project.yml - [dbt-fusion] Column level entity/dimension sets expr as column name - [dbt-fusion] Various fixes for exports ### Contributors - [@aiguofer](https://github.com/aiguofer) ## 2.0.0-preview.52 Released October 29, 2025 ### Features - [dbt-fusion] Recognize certain casts as 'copy' in lineage tracking - [dbt-fusion] Add support for Semantic Layer exports in Studio and Orch - [dbt-fusion] Add support for persisting tables in Glue via Snowflake Iceberg REST w Catalog Linked DB ### Fixes - [dbt-fusion] Enable reading of pre/post hooks from mantle manifests ([#768](https://github.com/dbt-labs/dbt-fusion/issues/768)) - [dbt-fusion] Fix semantic naming issue when determining whether to reach out to remote. Snapshots with different names remotely may have been impacted. ### Under the Hood - [internal] Upgrade Datafusion to 50.0.0 - [internal] Fix incremental strategy handling in replay mode - [dbt-fusion] Expand support for variant type handling in Redshift and Databricks ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@colin-rogers-dbt](https://github.com/colin-rogers-dbt) - [@jasonlin45](https://github.com/jasonlin45) - [@lottaquestions](https://github.com/lottaquestions) ([#768](https://github.com/dbt-labs/dbt-fusion/issues/768)) ## 2.0.0-preview.51 Released October 29, 2025 ### Features - [dbt-fusion] Implement source_status selector ([#47](https://github.com/dbt-labs/dbt-fusion/issues/47)) - [dbt-fusion] [Bigquery] catalogs.yml support for tables and incremental models in Biglake Metastore - [dbt-fusion] Link to Bigquery job on failure ([#931](https://github.com/dbt-labs/dbt-fusion/issues/931)) - [dbt-fusion] [Bigquery] Add support for setting quota_project ([#950](https://github.com/dbt-labs/dbt-fusion/issues/950)) - [dbt-fusion] Display warnings and errors summary at end of run ([#429](https://github.com/dbt-labs/dbt-fusion/issues/429)) ### Fixes - [dbt-fusion] Improve handling of BigQuery subqueries with AS STRUCT and AS VALUE clauses - [dbt-fusion] Limit threads based on config for Bigquery ([#900](https://github.com/dbt-labs/dbt-fusion/issues/900)) - [dbt-fusion] BQ: Calculated variable _dbt_max_partition raises error ([#937](https://github.com/dbt-labs/dbt-fusion/issues/937)) - [dbt-fusion] fix is sameas ([#855](https://github.com/dbt-labs/dbt-fusion/issues/855)) - [dbt-fusion] +dataset not supported in BQ for store_failures settings of data_tests ([#921](https://github.com/dbt-labs/dbt-fusion/issues/921)) - [dbt-fusion] pass target schema/database through generate name macros for snapshots ([#303](https://github.com/dbt-labs/dbt-fusion/issues/303)) ### Under the Hood - [dbt-fusion] Add data type int64 to unit test comparison - [dbt-fusion] format functions.sdf.yml ### Dependencies - [dbt-fusion] update iana-time-zone to `0.1.62` ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#931](https://github.com/dbt-labs/dbt-fusion/issues/931), [#950](https://github.com/dbt-labs/dbt-fusion/issues/950)) - [@colin-rogers-dbt](https://github.com/colin-rogers-dbt) - [@jasonlin45](https://github.com/jasonlin45) ([#900](https://github.com/dbt-labs/dbt-fusion/issues/900)) ## 2.0.0-preview.50 Released October 27, 2025 ### Features - [dbt-fusion] add span for static analysis off ### Under the Hood - [dbt-fusion] Fix bigquery private key newline handling - [internal] Cache drivers binaries - [dbt-fusion] internal test generation framework fixes - [dbt-fusion] Add data type int64 to unit test comparison ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ## 2.0.0-preview.49 Released October 22, 2025 ### Under the Hood - [dbt-fusion] Make number fields in catalog stats actual JSON number values - [dbt-fusion] Adjust logic for generating catalog.json to better match mantle ## 2.0.0-preview.48 Released October 22, 2025 ### Features - [dbt-fusion] Make SQL grammars source available ### Fixes - [dbt-fusion] Improve checksum calculation by making it stable with respect to whitespaces and case. Checksum caclulation for snapshots is also fixed to match mantle. ([#768](https://github.com/dbt-labs/dbt-fusion/issues/768)) - [dbt-fusion] Fix spelling of "delimiter" ([#909](https://github.com/dbt-labs/dbt-fusion/issues/909)) ### Under the Hood - [dbt-fusion] [Databricks]Verticalize schema field creation of relations coming from ADBC drivers ### Contributors - [@dbeatty10](https://github.com/dbeatty10) ([#909](https://github.com/dbt-labs/dbt-fusion/issues/909)) - [@lottaquestions](https://github.com/lottaquestions) ([#768](https://github.com/dbt-labs/dbt-fusion/issues/768)) ## 2.0.0-preview.47 Released October 21, 2025 ### Fixes - [dbt-fusion] Fix merging of frehsness and event_time configs for sources. ([#767](https://github.com/dbt-labs/dbt-fusion/issues/767)) - [dbt-fusion] Add Snowflake default request timeout - [dbt-fusion] fix schema download failes when source table is Glue catalog table of string type ([#863](https://github.com/dbt-labs/dbt-fusion/issues/863)) - [dbt-fusion] Fix start location in `Option>` fields - [dbt-fusion] Fix use of udf function config - [dbt-fusion] Add location info for malformed `column_types` errors ([#882](https://github.com/dbt-labs/dbt-fusion/issues/882)) - [dbt-fusion] Remove typo (`analysises` -> `analyses`) 🐍🐍🐍 - [dbt-fusion] Redshift: fusion tries to create schemas for sources in target database ([#880](https://github.com/dbt-labs/dbt-fusion/issues/880)) - [dbt-fusion] Make the model.columns Jinja map respect the true order of columns ([#773](https://github.com/dbt-labs/dbt-fusion/issues/773), [#878](https://github.com/dbt-labs/dbt-fusion/issues/878)) - [dbt-fusion] build should only run models, seeds, snapshots, and tests - [dbt-fusion] LSP: Gracefully handle deregistering a table by FQN on invalidation - [dbt-fusion] (fix adapters/redshift) fix a synx error for the default incremental - [dbt-fusion] (fix adapeters/bigquery) always preserve casing for BigQuery identifier ([#899](https://github.com/dbt-labs/dbt-fusion/issues/899)) - [dbt-fusion] dbt.log file will no longer be truncated on every fusion invocation - [dbt-fusion] A more suitable Arrow IntervalUnit for month INTERVAL types in Trino and RedShift ### Under the Hood - [dbt-fusion] One legacy Semantic Layer spec warning message per package - [internal] internal test infra - [internal] Refactored cache added/dropped/renamed in BaseAdapter for better type safety ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) - [dbt-fusion] [Redshift]Verticalize schema field creation of relations coming from ADBC drivers - [dbt-fusion] Slightly improved freshness error msg - [internal] Cache versioned binaries for a year ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#773](https://github.com/dbt-labs/dbt-fusion/issues/773), [#878](https://github.com/dbt-labs/dbt-fusion/issues/878)) - [@csquire](https://github.com/csquire) - [@dbtagarovat](https://github.com/dbtagarovat) ([#6116](https://github.com/dbt-labs/dbt-fusion/issues/6116)) - [@jasonlin45](https://github.com/jasonlin45) - [@lottaquestions](https://github.com/lottaquestions) ([#767](https://github.com/dbt-labs/dbt-fusion/issues/767)) - [@serramatutu](https://github.com/serramatutu) ## 2.0.0-preview.45 Released October 09, 2025 ### Fixes - [dbt-fusion] Fixes issue with agentic autofix downloading ## 2.0.0-preview.44 Released October 09, 2025 ### Fixes - [dbt-fusion] stop show frontier nodes - [dbt-fusion] LSP: Fixed code lens from hanging LSP server ### Dependencies - [dbt-extension] Update dbt-dag and sourdough dependencies to correctly decorate user-defined functions in lineage ### Contributors - [@davidharting](https://github.com/davidharting) ## 2.0.0-preview.43 Released October 08, 2025 ### Features - [dbt-fusion] Adds agentic autofix step to onboarding ### Fixes - [dbt-extension] Improve cross-project references in lineage viz - [dbt-fusion] Better location info for `config` validation errors - [dbt-fusion] Parse Snowflake structured array type such as ARRAY(VARCHAR) ([#849](https://github.com/dbt-labs/dbt-fusion/issues/849)) ### Under the Hood - [dbt-fusion] Catalog spec error spans ### Contributors - [@jasonlin45](https://github.com/jasonlin45) ## 2.0.0-preview.42 Released October 08, 2025 ### Features - [dbt-fusion] Introduce Query Cache under flag - [dbt-extension] UseBetaQueryCache Flag in VSCE ### Fixes - [dbt-fusion] Add support for Downstream Off Static Analysis Reason - [dbt-fusion] Still write run_results.json when there's error ([#6132](https://github.com/dbt-labs/dbt-fusion/issues/6132)) - [dbt-fusion] [Bigquery] Fix job labels not including invocation id ([#868](https://github.com/dbt-labs/dbt-fusion/issues/868)) - [dbt-fusion] Typechecking for BigQuery EDIT_DISTANCE function ([#870](https://github.com/dbt-labs/dbt-fusion/issues/870)) - [dbt-fusion] Correctly defer run operations for compile and test - [dbt-fusion] Typechecking for Snowflake ARRAY_SIZE on structured arrays ([#873](https://github.com/dbt-labs/dbt-fusion/issues/873)) ### Under the Hood - [dbt-fusion] fix unit test table rendering - [dbt-fusion] Proper plumbing for AdapterError - [dbt-extension] removing refresh source schemas and renaming clear target dir to clear cache ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#868](https://github.com/dbt-labs/dbt-fusion/issues/868)) - [@akbog](https://github.com/akbog) - [@jasonlin45](https://github.com/jasonlin45) ## 2.0.0-preview.41 Released October 08, 2025 ### Fixes - [dbt-fusion] Build_after.update_on should be able to operate independently ([#5756](https://github.com/dbt-labs/dbt-fusion/issues/5756)) - [dbt-fusion] mute typecheck errors - [dbt-fusion] Join catalog entries on lowercased relation name - [dbt-fusion] shrink macro def span ### Under the Hood - [dbt-fusion] LSP: Return null hover results if document is dirty - [dbt-fusion] Promote CLL menu to top of navigation - [dbt-fusion] Add databricks udf macro ### Contributors - [@dbtlabs007](https://github.com/dbtlabs007) ([#5756](https://github.com/dbt-labs/dbt-fusion/issues/5756)) - [@jasonlin45](https://github.com/jasonlin45) ## 2.0.0-preview.40 Released October 07, 2025 ### Features - [dbt-fusion] Add `fields` and `flatten()` to `Column` (BigQuery) ([#461](https://github.com/dbt-labs/dbt-fusion/issues/461)) - [dbt-fusion] Add databricks Unity Catalog Iceberg materializations: seed, table, and incremental. ### Fixes - [dbt-fusion] Hydrate data tests' raw and compiled code fields in manifest - [dbt-fusion] Remove collation from parsed type string - [dbt-fusion] Hydrate input_metrics and offset_to_grain for metrics in manifest and semantic_manifest - [dbt-fusion] Manifest: fix `original_file_path` field for generic data tests - [dbt-fusion] fix jinja variable goto def - [dbt-fusion] Fix nested datatypes in columns ([#851](https://github.com/dbt-labs/dbt-fusion/issues/851), [#852](https://github.com/dbt-labs/dbt-fusion/issues/852)) ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#851](https://github.com/dbt-labs/dbt-fusion/issues/851), [#852](https://github.com/dbt-labs/dbt-fusion/issues/852)) - [@jasonlin45](https://github.com/jasonlin45) - [@serramatutu](https://github.com/serramatutu) ([#461](https://github.com/dbt-labs/dbt-fusion/issues/461)) - [@versusfacit](https://github.com/versusfacit) ## 2.0.0-preview.39 Released October 07, 2025 ### Features - [internal] dbt-compare ([#'](https://github.com/dbt-labs/dbt-fusion/issues/')) - [dbt-fusion] Added analysis support - [dbt-fusion] add macro depends_on in manifest - [dbt-fusion] Add moms-flower-shop as a sample project to initialize with ([#858](https://github.com/dbt-labs/dbt-fusion/issues/858)) ### Fixes - [dbt-fusion] Add new execution summary report and remove old one that only showed unit test counts ([#416](https://github.com/dbt-labs/dbt-fusion/issues/416)) - [dbt-fusion] LSP: Fixed refresh source schemas not doing a re-compilation - [dbt-fusion] Fix tblproperties handling ([#857](https://github.com/dbt-labs/dbt-fusion/issues/857)) - [dbt-fusion] allow udf's to pass args from outside ### Under the Hood - [dbt-fusion] Added support for primary_key field in manifest.json - [dbt-fusion] Treat threads as a limiter of parallelism only on Redshift - [dbt-fusion] The existence of a package's "dbt_project.yml" determines if the package is missing or not - [dbt-fusion] Use 'describe table' instead of 'DESC TABLE' - [internal] Fix context generated schema sanitization - [dbt-fusion] Static Log Regex to imporve render perf ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#858](https://github.com/dbt-labs/dbt-fusion/issues/858)) - [@jasonlin45](https://github.com/jasonlin45) ([#857](https://github.com/dbt-labs/dbt-fusion/issues/857)) - [@vadim82](https://github.com/vadim82) ## 2.0.0-preview.38 Released October 06, 2025 ### Features - [dbt-fusion] Implement UDF function resources ## 2.0.0-preview.37 Released October 06, 2025 ### Features - [dbt-fusion] (dbt-snowflake) full catalogs.yml support for tables, incremental models, and dynamic table in Horizon catalog and REST catalog. - [dbt-fusion] Add project_id to manifest.metadata ### Fixes - [dbt-fusion] [Bigquery] Render query comment only once per query - [dbt-fusion] Only add refs for models, snapshots and seeds - [dbt-fusion] Fix deferral pointing to local relation - [dbt-fusion] better error message for hydrating table miss - [internal] Fix hash mismatch when overriding schema in record/replay ### Under the Hood - [dbt-fusion] Improve logging and error handling for unix installs ([#748](https://github.com/dbt-labs/dbt-fusion/issues/748)) - [dbt-fusion] Refactor adapter.quote to parse args in dispatch - [internal] extracted parameter passing in funcs for expand target column types - [internal] extracted parameter passing in funcs for describe_relation - [dbt-fusion] added in meta and tags to appropriate nodes - [dbt-fusion] improve is_relation_snapshot performance by not doing it - [dbt-fusion] Fix failing test (CTAS) w/ max varchar size - [internal] Fix threadlocal node_id inconsistency ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@akbog](https://github.com/akbog) - [@chrismorrisette-dbt](https://github.com/chrismorrisette-dbt) - [@dbtagarovat](https://github.com/dbtagarovat) - [@jasonlin45](https://github.com/jasonlin45) - [@jcserv](https://github.com/jcserv) - [@versusfacit](https://github.com/versusfacit) ## 2.0.0-preview.36 Released October 03, 2025 ### Features - [dbt-fusion] Only defer during compile | test when a model is unsafe ### Fixes - [dbt-fusion] Basic typechecking for Snowflake ARRAYS_OVERLAP on structured arrays ([#842](https://github.com/dbt-labs/dbt-fusion/issues/842)) - [dbt-fusion] BigQuery query comment labels are now properly applied to the query jobs instead of the target tables ([#845](https://github.com/dbt-labs/dbt-fusion/issues/845)) - [dbt-fusion] Fix some timezone crashes on Windows ### Under the Hood - [dbt-fusion] Validate metric optional time windows ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@akbog](https://github.com/akbog) - [@serramatutu](https://github.com/serramatutu) ([#845](https://github.com/dbt-labs/dbt-fusion/issues/845)) ## 2.0.0-preview.35 Released October 02, 2025 ### Breaking Changes - [dbt-fusion] Legacy SL spec will warn only once and will not write semantic resources into manifest and will not write semantic_manifest.json ### Features - [dbt-fusion] add snowflake external browser allow_id_token tip to debug ([#5964](https://github.com/dbt-labs/dbt-fusion/issues/5964)) - [dbt-extension] show snowflake external browser allow_id_token tip ([#5964](https://github.com/dbt-labs/dbt-fusion/issues/5964)) ### Fixes - [dbt-fusion] Source freshness in manifest is always serialized and hydrated when unconfigured (distinction between empty freshness and freshness is null) - [dbt-fusion] Strict parsing for column semantic layer properties - [dbt-fusion] CLI: Use absolute file path when reading files in typechecking ### Under the Hood - [dbt-fusion] Adding more nodes to parquet files ### Contributors - [@emerson-paiva](https://github.com/emerson-paiva) ([#5964](https://github.com/dbt-labs/dbt-fusion/issues/5964), [#5964](https://github.com/dbt-labs/dbt-fusion/issues/5964)) ## 2.0.0-preview.34 Released October 02, 2025 ### Fixes - [dbt-fusion] Fix dispatch search_order not followed ([#743](https://github.com/dbt-labs/dbt-fusion/issues/743)) - [dbt-fusion] Improve error message when snowflake private key file path does not exist - [dbt-fusion] Fix MFS auth in Studio and Orch pods - [dbt-fusion] Time spine hydration in semantic manifest doesn't require model to be semantic model - [dbt-fusion] Recognize APPROXIMATE_COUNT_DISTINCT function synonym in Snowflake ([#843](https://github.com/dbt-labs/dbt-fusion/issues/843)) - [dbt-fusion] suppress type check error - [dbt-fusion] Fix greedy serialization of manifest.json source artifacts (OOM issues) ### Under the Hood - [dbt-fusion] Validate semantic model time spine - [dbt-fusion] Add group attribute to the manifest serialization - [internal] Updated use of get_columns_for_relation in tests ### Security - [dbt-fusion] Sanitize package urls during install ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@akbog](https://github.com/akbog) - [@chrismorrisette-dbt](https://github.com/chrismorrisette-dbt) - [@dbtagarovat](https://github.com/dbtagarovat) - [@jasonlin45](https://github.com/jasonlin45) ## 2.0.0-preview.33 Released October 01, 2025 ### Features - [dbt-fusion] [Bigquery] Support ARRAY and STRUCT types in unit tests ([#810](https://github.com/dbt-labs/dbt-fusion/issues/810)) ### Fixes - [dbt-fusion] LSP: Fixed regression of changing source config yml files not propagating ### Contributors - [@\](https://github.com/\) - [@jasonlin45](https://github.com/jasonlin45) ([#810](https://github.com/dbt-labs/dbt-fusion/issues/810)) ## 2.0.0-preview.32 Released September 30, 2025 ### Features - [dbt-fusion] support unit test input SQL format - [dbt-fusion] Hydrate dimension validity params in semantic manifest to support natural entities - [dbt-fusion] split statements and get spans ### Fixes - [dbt-fusion] LSP: Fixed an issue where tooling would stop working for some files after a save - [dbt-extension] Fix for dbt-lsp installation when temp dir is mounted on a different device ([#838](https://github.com/dbt-labs/dbt-fusion/issues/838)) ### Under the Hood - [dbt-fusion] Warn users when Semantic Layer legacy spec is used - [dbt-fusion] Hydrate metrics.$.cumulative_type_params.grain_to_date instead of metrics.$.grain_to_date - [dbt-fusion] Validate metric names ### Contributors - [@wizardxz@gmail.com](https://github.com/wizardxz@gmail.com) ## 2.0.0-preview.31 Released September 30, 2025 ### Features - [dbt-fusion] [FEAT] Support impersonate_service_account of BigQuery adapte ([#409](https://github.com/dbt-labs/dbt-fusion/issues/409)) ### Fixes - [dbt-fusion] fix macrospans ([#825](https://github.com/dbt-labs/dbt-fusion/issues/825)) - [dbt-fusion] Yaml: fix sometimes incorrect location info on the first key of mapping objects ([#809](https://github.com/dbt-labs/dbt-fusion/issues/809)) - [dbt-fusion] Respect store_failures config option ([#606](https://github.com/dbt-labs/dbt-fusion/issues/606)) ### Under the Hood - [dbt-fusion] Improve error message for PKCS#1 private key - [dbt-fusion] Hydrate raw_code with proper values in manifest ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#606](https://github.com/dbt-labs/dbt-fusion/issues/606)) - [@timvyas](https://github.com/timvyas) ([#409](https://github.com/dbt-labs/dbt-fusion/issues/409)) - [@yu-iskw](https://github.com/yu-iskw) ([#409](https://github.com/dbt-labs/dbt-fusion/issues/409)) ## 2.0.0-preview.30 Released September 29, 2025 ### Features - [dbt-fusion] Enable semantic manifest validation based on dbt_cloud.yaml - [dbt-fusion] Indicate named arguments and parameters in error messages for function resolution - [dbt-fusion] Basic support for Snowflake structured array type - [dbt-extension] Introduce VSCE Static Analysic Code Lenses for Errors (Pt. 1) ([#732](https://github.com/dbt-labs/dbt-fusion/issues/732)) ### Fixes - [dbt-fusion] Stop exiting shell on windows after initial install ([#671](https://github.com/dbt-labs/dbt-fusion/issues/671)) - [dbt-fusion] LSP: Fixed erroneous missing schema errors - [dbt-fusion] Fix 'this' behavior to match defer in tests ([#763](https://github.com/dbt-labs/dbt-fusion/issues/763)) - [dbt-fusion] Reject BigQuery query attempting ARRAY of ARRAY construction - [dbt-fusion] Add Snowflake ARRAY_REVERSE function - [dbt-fusion] LSP: Evict compiler state ASAP when we detect invalid state - [dbt-fusion] Fix format of .user.yml file - [dbt-fusion] LSP: Properly resetting static analysis ### Under the Hood - [internal] Added new lsp endpoint to set workspace state - [dbt-fusion] Use create_schema macro when registering schemas ([#795](https://github.com/dbt-labs/dbt-fusion/issues/795)) - [dbt-fusion] Fix default value for contract.alias_types ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#795](https://github.com/dbt-labs/dbt-fusion/issues/795)) - [@akbog](https://github.com/akbog) ([#732](https://github.com/dbt-labs/dbt-fusion/issues/732), [#763](https://github.com/dbt-labs/dbt-fusion/issues/763)) ## 2.0.0-preview.29 Released September 26, 2025 ### Features - [dbt-fusion] get span from multiple statements ### Fixes - [dbt-fusion] Fix broken datetime macro ([#789](https://github.com/dbt-labs/dbt-fusion/issues/789)) - [dbt-fusion] LSP: Fixed source yml files not propagating changes - [dbt-fusion] fix snapshot field casing ### Under the Hood - [internal] Removed initializationParams support in the lsp for dbt workspace state ## 2.0.0-preview.28 Released September 25, 2025 ### Features - [dbt-fusion] run_started_at override - [dbt-fusion] Add parsing for catalogs.yml ([#5118](https://github.com/dbt-labs/dbt-fusion/issues/5118)) - [dbt-fusion] Add more information to the query log, including databaes query_id when available (currently only Snowflake adapter) ### Fixes - [dbt-fusion] Fix databricks and dbt tags for incremental materializations ([#4859](https://github.com/dbt-labs/dbt-fusion/issues/4859)) - [dbt-fusion] Make show command follow dbt-core behavior - [dbt-fusion] Error message that BiqQuery EXTERNAL_QUERY is not supported ([#801](https://github.com/dbt-labs/dbt-fusion/issues/801)) - [dbt-fusion] fix resolve docs - [dbt-fusion] Fix BigQuery SQL compilation error when SELECT AS VALUE is used with non-STRUCT value - [dbt-fusion] [BUG] fix grants for databricks ([#794](https://github.com/dbt-labs/dbt-fusion/issues/794)) - [dbt-fusion] Support SQL compilation of BigQuery UNION/INTERSECT/EXCEPT BY NAME - [dbt-fusion] Fixes complex type handling on cache miss - [dbt-fusion] [Redshift] Use SVV_ALL_COLUMNS instead of SVV_COLUMNS to support external tables - [dbt-fusion] [Bigquery] Fixes for Repeated and Record types ([#802](https://github.com/dbt-labs/dbt-fusion/issues/802)) ### Under the Hood - [dbt-fusion] Use Rust 1.89 - [dbt-extension] Start the LSP with state and defer CLI flags if configured - [dbt-fusion] ignore use warehouse - [dbt-extension] Always prompt users to reload VSCode after updating extension ### Contributors - [@davidharting](https://github.com/davidharting) - [@jasonlin45](https://github.com/jasonlin45) ([#802](https://github.com/dbt-labs/dbt-fusion/issues/802)) - [@versusfacit](https://github.com/versusfacit) ([#5118](https://github.com/dbt-labs/dbt-fusion/issues/5118)) ## 2.0.0-preview.27 Released September 24, 2025 ### Breaking Changes - [dbt-fusion] Granularity no longer allowed at model column dimension level ### Features - [dbt-fusion] Hydrate project_configuration in semantic manifest ### Fixes - [dbt-fusion] fixes values_to_arrow - [dbt-fusion] Reject qualified identifiers when selecting from subquery without alias - [dbt-fusion] Reject INSERT statements with wrong number of columns - [dbt-fusion] Reject CREATE TABLE with duplicate column names - [dbt-fusion] Fix SQL compilation error for Databricks query with LATERAL relation - [dbt-fusion] Fix compiled SQL type of BigQuery coercion of two structs - [dbt-fusion] Fix SQL compilation of BigQuery * REPLACE with case differences - [dbt-fusion] [BigQuery] Prevent empty statements from executing ([#797](https://github.com/dbt-labs/dbt-fusion/issues/797)) - [dbt-fusion] Fix freshness timestamp conversions ([#805](https://github.com/dbt-labs/dbt-fusion/issues/805)) - [dbt-fusion] [Snowflake] Use DESC TABLE for metadata pulldown instead to support nested type handling ([#777](https://github.com/dbt-labs/dbt-fusion/issues/777)) - [dbt-fusion] Fix schema for semantic_manifest.project_configuration.dsi_package_version ### Under the Hood - [dbt-fusion] Create a method that will be used for improved equality checking for pre/post hooks. - [dbt-fusion] Do not set model access in the config in the manifest ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#797](https://github.com/dbt-labs/dbt-fusion/issues/797)) - [@jasonlin45](https://github.com/jasonlin45) ([#805](https://github.com/dbt-labs/dbt-fusion/issues/805), [#777](https://github.com/dbt-labs/dbt-fusion/issues/777)) - [@lottaquestions](https://github.com/lottaquestions) ## 2.0.0-preview.26 Released September 23, 2025 ### Fixes - [dbt-fusion] Add missing `dataset` and `project` aliases in seeds, data tests, models and sources ([#343](https://github.com/dbt-labs/dbt-fusion/issues/343)) - [dbt-fusion] 775 [BUG] Fusion doesn't apply query_tag set in profile ([#775](https://github.com/dbt-labs/dbt-fusion/issues/775)) ### Contributors - [@serramatutu](https://github.com/serramatutu) ([#343](https://github.com/dbt-labs/dbt-fusion/issues/343)) ## 2.0.0-preview.25 Released September 23, 2025 ### Features - [dbt-fusion] Hydrate selectors in manifest ### Fixes - [dbt-fusion] Limited typechecking of Databricks READ_FILES() ([#593](https://github.com/dbt-labs/dbt-fusion/issues/593)) - [dbt-fusion] Reject invalid t.* reference after Snowflake PIVOT - [dbt-fusion] Fix compute failure when right BETWEEN arm requires coercion - [dbt-fusion] Fix incorrect compute result when NOT BETWEEN arms require different coercions - [dbt-fusion] Correctly coerce Snowflake string to number in comparison - [dbt-fusion] Added support for `cluster_by`, `kms_key_name` and `hours_to_expiration` for BigQuery materialized views - [dbt-fusion] Handle Snowflake untyped decimal(38,38) string literals - [dbt-fusion] Correctly coerce Snowflake string to number in IN-list comparisons - [dbt-extension] Fix for extension hanging after version upgrade ([#420](https://github.com/dbt-labs/dbt-fusion/issues/420)) - [dbt-fusion] Enable fusion to read pre/post hook fields from dbt-mantle/dbt-core manifests. - [dbt-fusion] Fix incremental model failing due to temp relation ([#769](https://github.com/dbt-labs/dbt-fusion/issues/769)) - [dbt-fusion] Salesforce - Cancellation and fixing a race condition around creating a data transform ### Under the Hood - [dbt-fusion] Remove FS traversal from binder ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#769](https://github.com/dbt-labs/dbt-fusion/issues/769)) - [@jcserv](https://github.com/jcserv) - [@lottaquestions](https://github.com/lottaquestions) - [@serramatutu](https://github.com/serramatutu) ## 2.0.0-preview.24 Released September 22, 2025 ### Features - [dbt-fusion] Add sampling plans (push/pull), local execute mode, and improved table persistence/test output ### Fixes - [dbt-fusion] Hydrate more fields of semantic resources in manifest and semantic_manifest - [dbt-fusion] fix inject_and_persist_ephemeral_models - [dbt-fusion] Reject invalid t.* reference after Snowflake PIVOT - [dbt-fusion] Parse Snowflake structured ARRAY type - [dbt-fusion] [Snowflake] Fix roundtripping from sources for varchar and binary sizes - [dbt-fusion] Ensure compilation context variables are defined - [dbt-fusion] Make public models match mantle manifest (empty paths, top level access attribute) - [dbt-fusion] Remove duplicate model yaml parsing errors ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@jasonlin45](https://github.com/jasonlin45) - [@wolfram-s](https://github.com/wolfram-s) ## 2.0.0-preview.23 Released September 19, 2025 ### Features - [dbt-fusion] [FEAT] Support Declaring Databricks Compute on Model Config ([#564](https://github.com/dbt-labs/dbt-fusion/issues/564)) - [dbt-fusion] (feat) populates adapter_response in run_results.json ### Fixes - [dbt-fusion] Allow selection of 0 columns ## 2.0.0-preview.22 Released September 19, 2025 ### Features - [dbt-fusion] Add support for BigQuery materialized views ([#550](https://github.com/dbt-labs/dbt-fusion/issues/550)) - [dbt-fusion] Add Semantic Manifest validation when running in platform ### Fixes - [dbt-fusion] Bump Redshift driver to include datashare support via GetTableSchema - [dbt-fusion] replace DashMap with scc:HashMap to stop deadlock ### Under the Hood - [dbt-fusion] internal test framework ### Contributors - [@aiguofer](https://github.com/aiguofer) - [@serramatutu](https://github.com/serramatutu) ([#550](https://github.com/dbt-labs/dbt-fusion/issues/550)) ## 2.0.0-preview.21 Released September 18, 2025 ### Fixes - [dbt-extension] improved logic for identifying a dbt project - [dbt-fusion] update qualified name usecase - [dbt-fusion] Fix direction of Snowflake number/string coercion in comparisons ### Contributors - [@emerson-paiva](https://github.com/emerson-paiva) ## 2.0.0-preview.20 Released September 18, 2025 ### Features - [dbt-extension] add walkthrough progress to dbt getStarted sidebar ([#5495](https://github.com/dbt-labs/dbt-fusion/issues/5495)) - [dbt-fusion] (snowflake): add legacy configuration native catalog iceberg tables - [dbt-fusion] Hydrate metrics in semantic manifest and manifest ### Fixes - [dbt-fusion] Various fixes for datatype handling and column data types ([#729](https://github.com/dbt-labs/dbt-fusion/issues/729), [#572](https://github.com/dbt-labs/dbt-fusion/issues/572)) - [dbt-fusion] Fixes snapshot timestamps in source freshness ([#728](https://github.com/dbt-labs/dbt-fusion/issues/728)) - [dbt-fusion] Fix undefined node in resolve context and fix env_var only defaulting strings ### Under the Hood - [dbt-fusion] Refactor defer and ensure `--inline` for compile actually respects static-analysis - [internal] Added support of --state, --favor-state, --defer, --selector, --static-analysis, --resource_types flags for LSP - [dbt-fusion] add cargo.toml check ### Contributors - [@akbog](https://github.com/akbog) - [@emerson-paiva](https://github.com/emerson-paiva) ([#5495](https://github.com/dbt-labs/dbt-fusion/issues/5495)) - [@jasonlin45](https://github.com/jasonlin45) ([#729](https://github.com/dbt-labs/dbt-fusion/issues/729), [#572](https://github.com/dbt-labs/dbt-fusion/issues/572), [#728](https://github.com/dbt-labs/dbt-fusion/issues/728)) - [@versusfacit](https://github.com/versusfacit) ## 2.0.0-preview.19 Released September 17, 2025 ### Fixes - [dbt-fusion] Make UNPIVOT plan clearly non-executable - [dbt-fusion] [BUG] Fusion doesn't pass profile-configured database/schema into the connection parameters ([#140](https://github.com/dbt-labs/dbt-fusion/issues/140)) - [dbt-fusion] Fix persist_docs macro failure with empty comment ([#738](https://github.com/dbt-labs/dbt-fusion/issues/738)) - [dbt-fusion] Cache: Fixed docs macro files as input files - [dbt-fusion] Add tenant_hostname to dbt-cloud dictionary in dbt_project.yml ([#765](https://github.com/dbt-labs/dbt-fusion/issues/765)) - [dbt-fusion] Fix Databricks numeric literals and identifiers starting with a digit - [dbt-fusion] Fix build_after causing SAO to deadlock ### Under the Hood - [dbt-fusion] improve download_artifact.sh ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#738](https://github.com/dbt-labs/dbt-fusion/issues/738)) ## 2.0.0-preview.18 Released September 17, 2025 ### Features - [dbt-fusion] Implement deps command upgrade and lock options ([#51](https://github.com/dbt-labs/dbt-fusion/issues/51)) - [dbt-fusion] Support query-comment ([#20](https://github.com/dbt-labs/dbt-fusion/issues/20)) - [dbt-fusion] Support for agate.Table.select() ### Fixes - [dbt-fusion] LSP: Fixed incremental compile for doc md files - [dbt-fusion] Typechecking Databricks TABLE_CHANGES() ([#593](https://github.com/dbt-labs/dbt-fusion/issues/593)) ### Under the Hood - [dbt-fusion] Modify how columns are represented internally to improve adapters maintainability. ### Security - [dbt-extension] Added bundled code signing signatures to allow for verification of extension ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#20](https://github.com/dbt-labs/dbt-fusion/issues/20)) - [@donicrosby](https://github.com/donicrosby) - [@serramatutu](https://github.com/serramatutu) ## 2.0.0-preview.17 Released September 16, 2025 ### Features - [dbt-extension] Highlights when the LSP is compiling and live error detection is paused ([##734](https://github.com/dbt-labs/dbt-fusion/issues/#734)) - [dbt-fusion] Renaming of rows in Agate tables ### Fixes - [dbt-fusion] Fix Databricks UNPIVOT aliasing - [dbt-fusion] Return correct result when computing Snowflake substring with negative numbers - [dbt-fusion] Reject comma after Databricks select items clause ([#750](https://github.com/dbt-labs/dbt-fusion/issues/750)) - [dbt-fusion] Fix Snapshot FQN generation and support legacy configs. Configs now work between YML and SQL. ### Under the Hood - [dbt-fusion] add download_artifact.sh - [dbt-fusion] add logic and --app in download_artifact.sh ### Contributors - [@jasonlin45](https://github.com/jasonlin45) ## 2.0.0-preview.16 Released September 15, 2025 ### Features - [dbt-extension] add dbt extension walkthrough ([#5495](https://github.com/dbt-labs/dbt-fusion/issues/5495)) ### Fixes - [dbt-fusion] Use custom test name correctly ([#631](https://github.com/dbt-labs/dbt-fusion/issues/631)) - [dbt-fusion] Support `dbt system uninstall` on Windows. ([#673](https://github.com/dbt-labs/dbt-fusion/issues/673)) - [dbt-fusion] fix unit test replay - [dbt-fusion] (dbt-auth): snowflake: we now detect 3des headerless keys for what they are and warn users to upgrade off legacy ciphers ([#717](https://github.com/dbt-labs/dbt-fusion/issues/717)) - [dbt-fusion] Reject comma after Redshift select items clause ([#751](https://github.com/dbt-labs/dbt-fusion/issues/751)) - [dbt-fusion] Only warn when can't download schmea instead of error ### Under the Hood - [internal] Support rudimentary DDL in typechecking SLT for Databricks ### Contributors - [@emerson-paiva](https://github.com/emerson-paiva) ([#5495](https://github.com/dbt-labs/dbt-fusion/issues/5495)) - [@versusfacit](https://github.com/versusfacit) ([#717](https://github.com/dbt-labs/dbt-fusion/issues/717)) ## 2.0.0-preview.15 Released September 15, 2025 ### Features - [dbt-extension] Add "View extension logs" command to VS Code extension - [dbt-fusion] Improved relation cache performance ([#5697](https://github.com/dbt-labs/dbt-fusion/issues/5697)) ### Fixes - [dbt-fusion] fix [BUG] Error when using persist_docs on BigQuery for models with arrays as columns ([#637](https://github.com/dbt-labs/dbt-fusion/issues/637)) - [dbt-fusion] Reject relation alias after Databricks PIVOT - [dbt-fusion] fix bigquery in dialect shortcut - [dbt-fusion] fuzzy compare timestamp ### Under the Hood - [dbt-fusion] test infra work - [internal] Introduce deviation registry for replay record matching - [dbt-fusion] test infra work ### Contributors - [@jasonlin45](https://github.com/jasonlin45) ([#5697](https://github.com/dbt-labs/dbt-fusion/issues/5697)) - [@milevin](https://github.com/milevin) ## 2.0.0-preview.14 Released September 13, 2025 ### Features - [dbt-fusion] Improve state:modified conformance of fusion to dbt-core. Completes [#746](https://github.com/dbt-labs/dbt-fusion/issues/746). - [dbt-fusion] Improve state:modified conformance of fusion to dbt-core. Completes [#746](https://github.com/dbt-labs/dbt-fusion/issues/746). - [dbt-fusion] Hydrate semantic_models in manifest - [dbt-fusion] Produce legible error when Snowflake date_trunc misused - [dbt-fusion] Print previously installed Fusion version alongside the new version during system updates for easier troubleshooting. ([#538](https://github.com/dbt-labs/dbt-fusion/issues/538)) - [dbt-fusion] Support DBT_FULL_REFRESH ### Fixes - [dbt-fusion] Render refs used in constraints in yaml configs ([##653](https://github.com/dbt-labs/dbt-fusion/issues/#653)) - [dbt-fusion] LSP: Fixed project-relevant files from not initiaiting a compile when they were not changed in an editor such as VSCode - [dbt-fusion] Reject Snowflake explicit CAST to GEOGRAPHY, GEOMETRY - [dbt-fusion] prefetch and merge snapshot schema - [dbt-fusion] Implement row_names() for AgateTable and rows().keys() ([#687](https://github.com/dbt-labs/dbt-fusion/issues/687)) - [dbt-fusion] fix merge_snapshot_schema - [dbt-fusion] Fix error not properly reported for test failures ### Under the Hood - [dbt-fusion] Fix config changes always being detected - [internal] Read ListRelationsWithoutCachingRecord in replay - [internal] Better replay error messages - [dbt-fusion] update test_regression_tests_internal_analytics_build_with_recording - [dbt-fusion] add debug log for download publication failure - [dbt-fusion] Fetch full catalog.json (temporary measure) and emit more logging ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) - [@jasonlin45](https://github.com/jasonlin45) - [@lottaquestions](https://github.com/lottaquestions) ## 2.0.0-preview.13 Released September 11, 2025 ### Fixes - [dbt-fusion] Fix for adding two tuples in jinja ([#636](https://github.com/dbt-labs/dbt-fusion/issues/636)) - [dbt-fusion] Reject field dereference in Snowflake compiler ## 2.0.0-preview.12 Released September 10, 2025 ### Features - [dbt-extension] Add support for snapshots go to definition and rename (@dakota) - [dbt-fusion] Semantic models in semantic manifest (@eddowh) - [dbt-extension] Added a sidebar view to show important extension information and actions (@dakota) - [dbt-fusion] Populate disabled nodes in manifest.json (@jzhu13) ### Fixes - [dbt-fusion] Fix compute for Snowflake object literal not to return always NULL - [dbt-fusion] Properly include resource type when serializing groups (@jzhu13) - [dbt-fusion] Disabled source schema cache as there were some correctness issues - [dbt-fusion] Fix extended model do not show up in list ([#5603](https://github.com/dbt-labs/dbt-fusion/issues/5603)) (@ChenyuLInx) - [dbt-fusion] Fix catalog.json not being written out in prod (@jzhu13) - [dbt-fusion] Fix compile of BigQuery nested struct literal with explicit type - [dbt-fusion] Fix compile of BigQuery array of struct with explicit type ### Under the Hood - [dbt-fusion] Add more context to error messages to help diagnose user errors easier (@versusfacit) - [dbt-fusion] internal test framework (@milevin) - [dbt-fusion] Avoid updating checksums for SLT records after halt ### Contributors - [@milevin](https://github.com/milevin) - [@versusfacit](https://github.com/versusfacit) ## 2.0.0-preview.11 Released September 09, 2025 ### Features - [dbt-fusion] Compile Snowflake `get` with structured OBJECT ### Fixes - [dbt-fusion] Fix handling of grant configs in dbt_project ([#672](https://github.com/dbt-labs/dbt-fusion/issues/672)) (@gshank) - [dbt-fusion] Fix incorrect compute result for Snowflake `get(array, varchar)` - [dbt-fusion] Reject query with comma trailing the WITH clause - [internal] Filter ephemeral models from deferral consideration (@akbog) ### Under the Hood - [internal] test infra work (@milevin) ### Contributors - [@akbog](https://github.com/akbog) - [@milevin](https://github.com/milevin) ## 2.0.0-preview.10 Released September 09, 2025 ### Features - [dbt-fusion] Allow users to retry the parsing step during onboarding (@dakota) - [dbt-fusion] Output Yaml location on test status line (@sadboy) - [dbt-fusion] Add command to install drivers (@csquire) - [dbt-fusion] Redshift IAM ([#4578](https://github.com/dbt-labs/dbt-fusion/issues/4578)) (@jasonlin45) - [dbt-fusion] Compile Snowflake subscript with structured OBJECT ([#684](https://github.com/dbt-labs/dbt-fusion/issues/684)) ### Fixes - [dbt-fusion] Fixed sql splitting to filter comment only statements ([#468](https://github.com/dbt-labs/dbt-fusion/issues/468)) (@dbtagarovat) - [dbt-fusion] LSP: Fixed schema files not taking into account newly added dependents" - [dbt-fusion] Fix downloaded defer manifest in zip format ([#689](https://github.com/dbt-labs/dbt-fusion/issues/689)) (@ChenyuLInx) - [dbt-fusion] Compile Databricks `map_values` function ([#699](https://github.com/dbt-labs/dbt-fusion/issues/699)) (@findepi) - [dbt-fusion] Compile Databricks rank with arguments ([#700](https://github.com/dbt-labs/dbt-fusion/issues/700)) (@findepi) - [dbt-fusion] Compile Databricks bit shift by bigint value ([#702](https://github.com/dbt-labs/dbt-fusion/issues/702)) (@findepi) - [dbt-fusion] Compile Databricks struct subscript with string literal ([#701](https://github.com/dbt-labs/dbt-fusion/issues/701)) (@findepi) - [dbt-fusion] fix 625 [BUG] {{ Column.dtype }} returns NUMBER(, ) instead of NUMBER ([#625](https://github.com/dbt-labs/dbt-fusion/issues/625)) (@zoltanersek) - [dbt-fusion] Cache: Storing external schemas to disk to be used as a cache - [dbt-fusion] Show a error message when fusion requires a project dir but can't find it ([#696](https://github.com/dbt-labs/dbt-fusion/issues/696)) (@mishamsk) - [dbt-fusion] Fix empty schema in Redshift being cached ([#707](https://github.com/dbt-labs/dbt-fusion/issues/707)) (@jasonlin45) - [dbt-fusion] Fix Snowflake parse rule for backtick identifiers - [dbt-fusion] Fix Snowflake structured object type construct field case sensitivity - [dbt-extension] Allow users to clean their auth state or select a project when dbt_cloud.yml was changed ([#709](https://github.com/dbt-labs/dbt-fusion/issues/709)) (@emerson-paiva) - [dbt-fusion] Reintroduce a legacy --models command (alias) ([#710](https://github.com/dbt-labs/dbt-fusion/issues/710)) (@MartinNeupauer) - [dbt-fusion] LSP: Fixed profiles.yml, dependencies.yml, packages.yml and package-lock.yml from not recompiling the project - [dbt-fusion] fix test selection criteria (@wizardxz) - [internal] Redshift password alias ([#5576](https://github.com/dbt-labs/dbt-fusion/issues/5576)) (@jasonlin45) ### Under the Hood - [dbt-fusion] Issue create schema only for selected nodes ([#626](https://github.com/dbt-labs/dbt-fusion/issues/626)) (@ajhlee-dbt) - [dbt-fusion] Fix streaming table macros (@ajhlee-dbt) - [dbt-fusion] fix replay engine (@wizardxz) - [internal] get_relation calls as a subset for record/replay (@jasonlin45) - [dbt-fusion] Jinja: switch to order-preserving maps (@sadboy) - [dbt-fusion] Ensure that the latest version of autofix is run if possible (@dakota) ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#626](https://github.com/dbt-labs/dbt-fusion/issues/626)) - [@csquire](https://github.com/csquire) - [@dbtagarovat](https://github.com/dbtagarovat) ([#468](https://github.com/dbt-labs/dbt-fusion/issues/468)) - [@emerson-paiva](https://github.com/emerson-paiva) ([#709](https://github.com/dbt-labs/dbt-fusion/issues/709)) - [@jasonlin45](https://github.com/jasonlin45) ([#4578](https://github.com/dbt-labs/dbt-fusion/issues/4578), [#707](https://github.com/dbt-labs/dbt-fusion/issues/707), [#5576](https://github.com/dbt-labs/dbt-fusion/issues/5576)) ## 2.0.0-preview.9 Released September 05, 2025 ### Features - [dbt-extension] Add a setting to toggle deferral on and off in the dbt vscode extension ([#398](https://github.com/dbt-labs/dbt-fusion/issues/398)) (@drewbanin) - [dbt-fusion] Add groups and group_map to manifest (@jzhu13) - [dbt-fusion] Custom Materializations ([##2736](https://github.com/dbt-labs/dbt-fusion/issues/#2736)) (@venkaa28) - [dbt-fusion] Ensure sources and snapshots are included in catalog.json generation (@jzhu13) ### Fixes - [dbt-fusion] Render booleans as True/False instead of true/false ([#581](https://github.com/dbt-labs/dbt-fusion/issues/581)) (@fornwall) - [dbt-fusion] Make modules.re methods accept an already compiled pattern - [dbt-fusion] Autofix jaffle_shop project generated by dbt init for compliance with strict spec (@jtcohen6) - [dbt-fusion] revert to threadlocal (@wizardxz) - [dbt-fusion] Fix versioned columns ([#595](https://github.com/dbt-labs/dbt-fusion/issues/595)) (@MartinNeupauer) - [dbt-fusion] Fix DROP TABLE always running for Databricks when materializing table ([#634](https://github.com/dbt-labs/dbt-fusion/issues/634)) (@ajhlee-dbt) - [dbt-fusion] Fix SQL quoting errors for listing relations ([#542](https://github.com/dbt-labs/dbt-fusion/issues/542)) (@ajhlee-dbt) - [dbt-fusion] Release new snowflake driver. Lots of auth fixes plus some flakey test fixes. (@versusfacit) ### Under the Hood - [internal] Update to DataFusion 48.0.1 and Arrow 55.1.0 (@findpei) - [dbt-fusion] (dbt-adapter) bigquery: Use ipc as bytes directly. Remove base64 encode bloat. (@versusfacit) - [internal] Fuzzy matching for get_relation in replay adapter (@jasonlin45) ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#634](https://github.com/dbt-labs/dbt-fusion/issues/634), [#542](https://github.com/dbt-labs/dbt-fusion/issues/542)) - [@findpei](https://github.com/findpei) - [@fornwall](https://github.com/fornwall) ([#581](https://github.com/dbt-labs/dbt-fusion/issues/581)) - [@jasonlin45](https://github.com/jasonlin45) - [@versusfacit](https://github.com/versusfacit) ## 2.0.0-preview.8 Released September 04, 2025 ### Features - [dbt-fusion] Implement catalog.json generation for Bigquery (@jzhu13) - [dbt-fusion] Implement catalog.json generation for Redshift (@jzhu13) - [dbt-fusion] Implement catalog.json generation for Postgres adapter (@jzhu13) - [dbt-fusion] Implement catalog.json generation for databricks (@jzhu13) - [dbt-fusion] Add materialized view materialization for databricks ([#548](https://github.com/dbt-labs/dbt-fusion/issues/548)) (@danielacraciun) - [dbt-fusion] Support `target_database` and `target_schema` in snapshot configs ([#580](https://github.com/dbt-labs/dbt-fusion/issues/580)) (@serramatutu) - [dbt-fusion] Add ability to pass invocation id via cli argument `--invocation-id` or env var `DBT_INVOCATION_ID` (@mishamsk) - [dbt-fusion] Saved queries in manifest and semantic manifest (@eddowh) ### Fixes - [dbt-fusion] `parent_map` and `child_map` are now correctly populated (#499) ([#499](https://github.com/dbt-labs/dbt-fusion/issues/499)) (@stevenayers) - [dbt-fusion] Implement rendering modules.re.Match objects (@fornwall) - [dbt-fusion] Make the timedelta.total_seconds() method work - [dbt-fusion] Get exposures selector working ([#4744](https://github.com/dbt-labs/dbt-fusion/issues/4744)) (@gshank) - [dbt-fusion] Improved typechecking of some JSON-accepting functions in BigQuery - [dbt-fusion] Fix for `dbt test` with deferred state ([#607](https://github.com/dbt-labs/dbt-fusion/issues/607)) (@akbog) - [dbt-fusion] LSP+Cache: Schema file dependents are properly considered - [dbt-fusion] Fix Agate flattening of doubly-nested Arrow types (@felipecrv) - [internal] Fix processing versioned selectors ([#590](https://github.com/dbt-labs/dbt-fusion/issues/590)) (@MartinNeupauer) - [dbt-fusion] LSP: Fixed 'ref' error when using an existing 'ref' that wasn't used before in a file - [dbt-fusion] add unittest error message ([#523](https://github.com/dbt-labs/dbt-fusion/issues/523)) (@wizardxz) - [dbt-fusion] fix DbtReplayAdapter.convert_type (@wizardxz) - [dbt-fusion] fix salesforce adapter convert_type_inner (@wizardxz) - [dbt-fusion] LSP: Fixed column completions from not showing up after incremental compile - [dbt-fusion] Correctly reject qualified column references after set operation such as UNION (@findepi) - [dbt-fusion] fix 632 [BUG] dbt show queries not appearing within logs/query_log.sql ([#632](https://github.com/dbt-labs/dbt-fusion/issues/632)) (@zoltanersek) - [dbt-fusion] Fixed dbt init failing to parse large project ids ([#638](https://github.com/dbt-labs/dbt-fusion/issues/638)) (@olehpidhi) - [dbt-extension] Clarify message when dbt Fusion installation can not be found. ([#5393](https://github.com/dbt-labs/dbt-fusion/issues/5393)) (@emerson-paiva) - [dbt-fusion] Fix user facing config serialization (@ChenyuLInx) - [dbt-fusion] Fix doc macro original_file_path_pnode_conversion (@ChenyuLInx) - [dbt-fusion] Don't require project/database in BigQuery config ([#566](https://github.com/dbt-labs/dbt-fusion/issues/566)) (@felipecrv) ### Under the Hood - [dbt-fusion] Move need_quotes to AdapterType - [dbt-fusion] Better driver discovery. Better makefile integration. Better driver ergonomics. - [dbt-fusion] Use catalog macros to generate catalog.json - [dbt-fusion] add extract-sources subcommand (@wizardxz) - [dbt-fusion] Stubs for populating metrics in manifest and semantic_manifest (@eddowh) - [dbt-fusion] implement inline source replay (@wizardxz) - [dbt-fusion] [Redshift] Relation cache pre-hydration (@ajhlee-dbt) - [dbt-fusion] Stubs for semantic models in manifest and semantic manifest (@eddowh) - [dbt-fusion] Minor refactor/cleanup of adapter code (@jzhu13) - [dbt-fusion] Only include nodes with catalog info in the catalog.json (@jzhu13) - [dbt-fusion] Fix SLT's SnowflakeExe dropping all data (@findepi) - [dbt-fusion] Bump BigQuery driver and swap Redshift driver ([#4578](https://github.com/dbt-labs/dbt-fusion/issues/4578)) (@ajhlee-dbt) - [dbt-fusion] Define new semantic resources spec in dbt_schemas::properties (@eddowh) ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#4578](https://github.com/dbt-labs/dbt-fusion/issues/4578)) - [@akbog](https://github.com/akbog) ([#607](https://github.com/dbt-labs/dbt-fusion/issues/607)) - [@emerson-paiva](https://github.com/emerson-paiva) ([#5393](https://github.com/dbt-labs/dbt-fusion/issues/5393)) - [@fornwall](https://github.com/fornwall) - [@serramatutu](https://github.com/serramatutu) ([#580](https://github.com/dbt-labs/dbt-fusion/issues/580)) - [@stevenayers](https://github.com/stevenayers) ([#499](https://github.com/dbt-labs/dbt-fusion/issues/499)) ## 2.0.0-preview.7 Released August 28, 2025 ### Features - [dbt-fusion] Add support to multi-git-provider in native Private Package. - [dbt-fusion] Use defer_env_id when fetching deferral artifacts ([#619](https://github.com/dbt-labs/dbt-fusion/issues/619)) (@ericbaumann) - [dbt-extension] Automatically focus the Get Started sidebar after install (@davidharting) - [dbt-fusion] Write semantic manifest legacy json artifact (@eddowh) ### Fixes - [internal] Enable test caching for unit tests: part 2 - [dbt-fusion] LSP: Invalidate LSP results on non-recoverable errors - [dbt-fusion] LSP: Fixed lineage results after incremental compile - [dbt-fusion] Fix missing 'account-host' ([#612](https://github.com/dbt-labs/dbt-fusion/issues/612)) (@MartinNeupauer) - [dbt-fusion] Fix extra CREATE SCHEMA queries ([#500](https://github.com/dbt-labs/dbt-fusion/issues/500)) (@ajhlee-dbt) - [dbt-fusion] Ensure model-level metas take precedence over project-level metas. ([#578](https://github.com/dbt-labs/dbt-fusion/issues/578)) (@lottaquestions) - [dbt-fusion] Ensure model-level metas take precedence over project-level metas. ([#578](https://github.com/dbt-labs/dbt-fusion/issues/578)) (@lottaquestions) ### Under the Hood - [dbt-fusion] Use catalog macros to generate catalog.json (@jzhu13) - [dbt-fusion] Implement needs_quotes using only adapter and XDBC code (@jzhu13) - [dbt-fusion] Rely on schema when editing profiles.yaml (@olehpidhi) - [dbt-fusion] compare sql in adapter AddQueryRecord ([#5347](https://github.com/dbt-labs/dbt-fusion/issues/5347)) (@wizardxz) - [dbt-fusion] host/protocol/port support for Snowflake (@jasonlin45) - [dbt-fusion] Fix test output for "Unused keys in profiles.yml" (@gshank) ### Contributors - [@ajhlee-dbt](https://github.com/ajhlee-dbt) ([#500](https://github.com/dbt-labs/dbt-fusion/issues/500)) - [@davidharting](https://github.com/davidharting) - [@eddowh](https://github.com/eddowh) - [@ericbaumann](https://github.com/ericbaumann) ([#619](https://github.com/dbt-labs/dbt-fusion/issues/619)) - [@jzhu13](https://github.com/jzhu13) - [@lottaquestions](https://github.com/lottaquestions) ([#578](https://github.com/dbt-labs/dbt-fusion/issues/578), [#578](https://github.com/dbt-labs/dbt-fusion/issues/578)) ## dbt-fusion 2.0.0-preview.6 Released August 25, 2025 ### Features - [Snowflake] Snowflake-Managed Dynamic Tables Support - compare sql in DbtReplay engine ### Fixes - Fix multi primary key snapshots - Fixes unit test status ### Under the Hood - Test infra work ## dbt extension 2.0.0-preview.6 Released August 25, 2025 ### Under the Hood - Relation cache persistence in LSP ## Internal 2.0.0-preview.6 Released August 25, 2025 ### Features - Enable state-aware orchestration (SAO) for unit tests - compare sql in DbtReplay engine ### Fixes - Ignore errors from parquet serde ### Under the Hood - Add dynamic tables materialization option - Internal test infra improvements - internal test infra work ## dbt-fusion 2.0.0-preview.5 Released August 22, 2025 ### Features - Issue package deprecation warnings in deps ### Fixes - Allow `context.get("key", default)` without panicking - fix error locations - Fixed profile lookup not respecting urls in dbt_cloud.yaml ## dbt extension 2.0.0-preview.5 Released August 22, 2025 ## Internal 2.0.0-preview.5 Released August 22, 2025 ### Fixes - Typechecking of Databricks LISTAGG ## dbt-fusion 2.0.0-preview.4 Released August 21, 2025 ### Features - [adapters][databricks] Implemented required relation configs and changesets for streaming tables" - dbt ignore & warn on python models ### Fixes - fix schemas, database_schemas, and add node to run_result in jinja context in on-run-end - Ensure log and target folder paths are correctly resolved as relative to --project-dir unless absolute paths are provided with --log-path or --target-path - Remove noisy 'ADBC error: Internal:' and 'ADBC error: Unknown:' from messages - Do not show skipped node status for compile unless debug flag is set - add error location in depends on ### Under the Hood - [adapters][databricks] Using the __attrs__ fields for relation config implementations, avoiding deprecated_config, added schedule to schema and persist_docs - Only hydrate caches for selected nodes ## dbt extension 2.0.0-preview.4 Released August 21, 2025 ### Features - enable Get Started to all users - add ref and source snippets ## Internal 2.0.0-preview.4 Released August 21, 2025 ### Fixes - fix schemas, database_schemas, and add node to run_result in jinja context in on-run-end - Ensure log and target folder paths are correctly resolved as relative to --project-dir unless absolute paths are provided with --log-path or --target-path - Do not show skipped node status for compile unless debug flag is set - fix parquet deserialization for dbt test losing path - add error location in depends on - Fixes num threads default 1 issue on preview release ### Under the Hood - Added field to warehouse specific deserialization ## dbt-fusion 2.0.0-preview.3 Released August 19, 2025 ### Features - Turn strict parsing on by default for running project - Add deps detection for schema compatibility ### Fixes - Add better support for windows installs - Fix is_cte variable ## dbt-fusion 2.0.0-preview.1 Released August 18, 2025 ### Features - Deps command issues installing message for each package - support goto_def for source() - Added hints based on existing profiles when running dbt init - Compatibility warnings from dependencies will now be grouped as a single message per package; use --show-all-deprecations to display every individual warnin - Add ability to fetch catalog info from warehouse for Snowflake - Support namespace in type-checking; Add typecheck LSP - Upgrade lsp to use channels instead of locking - [ada - [adapters][databricks][incremental] Implemented constraints for relation config changeset - Add legal project name check to `dbt init` command. - Added connection and credentilas lookup in dbt cloud when running dbt init - New logging ### Fixes - Fix null type conversion to match Python Agate and Core behavior. Null will now be converted to a number type, allowing seeding with an empty column. - (dbt-auth): fix keypair across the board with more sophisticated parsing, error handling, detection, and recovery routines. - Add a stub config for MSSQL - Fix fqn generation and retrieval of project configs - Allow rejection of duplicate test names with an error message similar to dbt core. - Fix skipping hydrate on full compile - Support Google Sheets and Google Cloud Storage external sources - Windows: fix cli hang on exit - Make modules.re.match() return a truthy value on a match - Special handling of the 'execute' context variable - Exclude system info_schema from AS JSON ### Under the Hood - Use serde yml in schema files - Demand caching of externalbrowser tokens. Do not rely on gosnowflake's promotion logic. - Fancy logging for relation cache - correctly use untagged enum macro - Migrating from using serde_json to dbt_serde_yaml - bump gosnowflake to include new v1.14.3 mfa and sso fixes caching. - (fix adapters/bigquery) fix compile referencing time partitioning sources - Add Databricks to RelationType conversion - refactor return - Fix return in type-check - Adjusted deserialization logic for warehouse specific configs - Use relation cache in defer ## dbt-fusion 2.0.0-beta.63 Released August 11, 2025 ### Features - Adds a relation cache to reduce repeat get_relation calls - Support cancelling commands with Ctrl+C - [adapters] [databricks] [incremental] #4856 column comments changesets and tests - Move to streaming diagnostics from the LSP ### Fixes - Fix original file path location for operations - Fix duplicate sub path in original path - fix run operation stacktrace - Fix static-analysis propagation across sources and tests ### Under the Hood - project and dataset aliases for bigquery - Internal testing infrastructure work ### Dependencies - Driver bump for Postgres and Bigquery. Fixes empty record issue in Bigquery and static linking issues for Redshift/Postgres. ## dbt-fusion 2.0.0-beta.61 Released August 08, 2025 ### Features - Begin writing catalog.json ### Fixes - fix error location for dispatch call - Respect `location` configuration in BigQuery - Make env_var produce better error message and validate parameters more strictly - fix caller with return - (fix adapters/snowflake) bring back `database` to connection creations - Correctly report unknown method errors on undefined values - (fix adapters/snowflake) seed binary data - Introduce VarProvider and to_dict() method ### Under the Hood - profile.yml processing is now source-available - Relax generic test json schema/structs - Enable connect_timeout in snowflake profiles. ## dbt extension 2.0.0-beta.61 Released August 08, 2025 ### Features - Show a more helpful error message when authentication fails because the dbt_cloud.yml file is removed - Showing column names when the query returns empty results - dbt Output now shows dbt command history - Goto definition for columns takes you to origin omitting "*" references ### Fixes - Disallow previewing sql files that live outside of an open dbt project ## Internal 2.0.0-beta.61 Released August 08, 2025 ### Breaking Changes - Incremental tasks: Always start computation at frontier of the selected nodes ### Features - Initial stub for catalog.json generation - Execute Snowflake rank window function - Goto definition takes user to column origin skipping "*" references - Execute Snowflake md5_binary function ### Fixes - Fixes lineage for aliased models - Respect `location` configuration in BigQuery - Fix compiling of try_to_timestamp_ntz, try_to_timestamp_tz on Utf8View - Fix run-operation unqualified macro lookup - Fix Snowflake SQL compiler Utf8View handling - [Databricks] Support for maps in dereference binding context (dot notation) - Support ORDER BY ordinal within BigQuery QUALIFY - [adapter][databricks] fix [BUG] quoting for sources isn't taken in account for Databricks - Compile ai_complete, to_file, prompt functions ### Under the Hood - Housekeeping ## dbt-fusion 2.0.0-beta.58 Released August 05, 2025 ### Fixes - Detect safe introspection when accessing adapter methods through the 'dbt' namespace ### Under the Hood - add builtins.sdf.yml - re-enable minijina tests - (adapter/bigquery) support downloading schemas for information schema views ## dbt extension 2.0.0-beta.58 Released August 05, 2025 ### Features - improve tooltip text when hovering over a column alias ## Internal 2.0.0-beta.58 Released August 05, 2025 ### Features - show_alias_multiple_sources ### Fixes - Fix stub functions equality/hash - reverts skipping view ### Under the Hood - Remove obsolete code from BuiltinFunctionScope - add builtins.sdf.yml - re-enable minijinja tests - lazy flat graph - (adapter/bigquery) support downloading schemas for information schema views ## dbt-fusion 2.0.0-beta.56 Released August 01, 2025 ### Features - [Redshift] Materialized View Support - New Anchors field in properties file to support yaml anchors w/o unused key warnings - [Redshift] Redshift available in dbt init - support --sample and --empty flags - Add support for model level data tests ### Fixes - fix jinja stacktrace - Fixes Snowflake `profiles.yml` requiring `warehouse` key. It is now optional. - Install jq if it's not installed already in the install script for unix ### Under the Hood - Update golden files for tests with generic tests whose naming convention changed with conformance to dbt-core - Better error messages for redshift IAM auth (not supported yet) ## dbt extension 2.0.0-beta.56 Released August 01, 2025 ### Features - Add ability to clear cache, and refresh source schema cache ### Fixes - fix jinja stacktrace ## Internal 2.0.0-beta.56 Released August 01, 2025 ### Features - [Redshift] Materialized View Support - Implement dbt clone - support --sample and --empty flags - Add support for model level data tests ### Fixes - Conform test node unique id to dbt-core. - Fixed jinja macros filtering when typing a package name - LSP: Fixed some diagnostics from not being reported - fix jinja stacktrace - fixes freshness warning on models - Fix model hash ### Under the Hood - Test Generation: Support for NULLs - Dedupe a chain call when building manifest ## dbt-fusion 2.0.0-beta.55 Released July 30, 2025 ## dbt extension 2.0.0-beta.55 Released July 30, 2025 ## Internal 2.0.0-beta.55 Released July 30, 2025 ## dbt-fusion 2.0.0-beta.54 Released July 30, 2025 ### Fixes - Avoid printing debug messages when executing sql (this time for real) ## dbt extension 2.0.0-beta.54 Released July 30, 2025 ## Internal 2.0.0-beta.54 Released July 30, 2025 ### Fixes - Avoid printing debug messages when executing sql (this time for real) ## dbt-fusion 2.0.0-beta.52 Released July 29, 2025 ### Breaking Changes - Update Custom and Alternate Generic Tests to use Arguments for any jinja args ### Features - Implement yaml exposures ### Fixes - Fix the output formats of tojson and toyaml - Avoid printing debug messages when executing sql ## dbt extension 2.0.0-beta.52 Released July 29, 2025 ### Features - Provide clearer error message when we cannot download the LSP due to networking issues ## Internal 2.0.0-beta.52 Released July 29, 2025 ### Features - Implement yaml exposures ### Fixes - Add support for compiling/sql understanding of load_xml in DBX - Avoid printing debug messages when executing sql ### Under the Hood - Test Generation: Fix for schema mismatch ## dbt-fusion 2.0.0-beta.51 Released July 28, 2025 ### Features - Add support for snowflake ignore case - Messages describing type mismatch for functions implemented using ArgsIter ### Fixes - Remove unused 'patterned_dangling_sources' logic + command line flag - Support Selector, Name, and Path output for list - (fix adapter) skip adding a parse relation - Fix updates_on configuration for model freshness - Update cargo toml to include md5 crate and update generic test unit tests. - Fix crash when calling count/index for tuples from Agate tables (e.g. column names) - Allow hours, minutes and seconds format codes in strftime() on a date - Make re.sub() support python style backslash backreferences ### Under the Hood - Clean up some messages ## dbt extension 2.0.0-beta.51 Released July 28, 2025 ### Fixes - VSCE: Fixed Lineage panel loading message from not appearing sometimes ## Internal 2.0.0-beta.51 Released July 28, 2025 ### Features - Add support for snowflake ignore case - Improve model freshness logging details - Write new columns.parquet metadata file - Skip building model views when there is no code change ### Fixes - Remove unused 'patterned_dangling_sources' logic + command line flag - LSP: Fixed duplicate errors - Eliminate remote calls when running local unit tests - LSP: Improved peak memory usage by computing column lineage on-demand - Fix updates_on configuration for model freshness - Conform generic naming strategy to dbt core - LSP: Empty diagnostics on speculative compile for file if no diagnostics found - Support try_parse_json function in dbx ### Under the Hood - Adding concolic extention to test-generation - Case-when expr handling in projections and filters for test generation - Adding support for simple-case-when expression for test-generation - Fixing coverage for simple-case expressions where the CASE clause can evaluate to non-booleans - Extending support for MEAN, AVG, MAX, MIN and MEDIAN aggregation operations for test generation - Avoid starting vortex client if no-anonymized-logging option is specified - Test Generation: Add support for Time32 and Time64 ## dbt-fusion 2.0.0-beta.49 Released July 25, 2025 ### Under the Hood - fix jinja type check ## dbt extension 2.0.0-beta.49 Released July 25, 2025 ### Features - Compile File now saves the document so that the compiled preview reflects the current state of the editor - improve Query Results error messages ## Internal 2.0.0-beta.49 Released July 25, 2025 ### Features - (adapter/snowflake) support base64 encoded private key format ### Fixes - Ensure an invocation event is logged at least once for every command - max_loaded_at will assume utc if ntz is provided ### Under the Hood - Adding concolic extention to test-generation - Case-when expr handling in projections and filters for test generation - fix jinja type check - adapter (redshift): add get column schema from query method - Write atomically in SLT update ## dbt-fusion 2.0.0-beta.48 Released July 23, 2025 ### Fixes - Don't display internal qualifiers in error messages - Make StaticBaseRelation more robust if 'primary_key' is missing - Serialize complete freshness definition if partially defined - add support for LIKE SOME/ANY/ALL in databricks dialect ### Under the Hood - Cleanup some function args and types ## dbt extension 2.0.0-beta.48 Released July 23, 2025 ### Fixes - Fix for issue downloading language server binary on some windows machines - Fixed issue where files in the dbt vs code extension weren't being watched correctly on windows ## Internal 2.0.0-beta.48 Released July 23, 2025 ### Breaking Changes - Improve type checks in calculate_freshness_common ### Features - Add resolve time cache logic - [Redshift] List schemas - Execute Snowflake ifnull() function - Enable source freshness for Redshift ### Fixes - Don't display internal qualifiers in error messages - databricks_window_specification - Fix compilation of Databricks SQL that uses `avg` or `mean` over timestamp values - add support for LIKE SOME/ANY/ALL in databricks dialect - fix bigquery information schema - Fix freshness timestamp scaling and better error messages - Fix freshness when timestamps do not have a timezone ### Under the Hood - Set 'static_analysis=unsafe' automatically when unsafe detected - cargo xtask fmt to format after codegen ## dbt-fusion 2.0.0-beta.46 Released July 22, 2025 ### Fixes - (fix adapter/bigquery) support time_ingestion_partitioning partition_by config ### Under the Hood - refactor jinja type check ## dbt extension 2.0.0-beta.46 Released July 22, 2025 ## Internal 2.0.0-beta.46 Released July 22, 2025 ### Features - Support variable time zone in Snowflake convert_timezone funciton - [Snowflake] Add support for s3_stage_vpce_dns_name ### Fixes - Fix compilation of Databricks DECODE with many parameters - Correct and improve Databricks implicit alias generation - Correct result of concat when called with NULL - Remove Snowflake md5_number function - (fix adapter/bigquery) support time_ingestion_partitioning partition_by config ### Under the Hood - fix codegen ## dbt-fusion 2.0.0-beta.45 Released July 22, 2025 ### Features - Add support for 'as_text' on dynObject - Performance improvements with cloning jinja and manifest serialization fix - [Redshift] Metadata queries - Implement ref restrictions based on access modifiers model - Support the default execution timezone setting ### Fixes - Change Snowflake auth concurrency control to avoid spamming users with too many tabs for externalbrowserauth - fix model reference - Enable render method for Big Query PartitionConfig - [Redshift] Fix installation and URI handling for login - [Adapters] Match core type translation - support python negative step slice - Fix message to mention that limit -1 needs to be used to remove limits for show - Fix a bug in typecheck when breaking loop ### Under the Hood - (adapter/databricks) Improve source schemas download logics - (adapter) refactor get_column_values to not panic - (fix adapter/bigquery) BQ allows multi-stmt sql - fix jinja type checking ## dbt extension 2.0.0-beta.45 Released July 22, 2025 ### Fixes - fix model reference ### Under the Hood - fix jinja type checking ## Internal 2.0.0-beta.45 Released July 22, 2025 ### Features - Performance improvements with cloning jinja and manifest serialization fix - Support VARIANT varchar to TIMESTAMP_TZ cast - Support VARIANT timestamp to TIMESTAMP_TZ cast - Execute convert_timezone with TIMESTAMP_NTZ and TIMESTAMP_LTZ - Added targets for droptable and dropview in sdf frontend ### Fixes - Block likely incorrect casts involving distinct types - Support Z zone in VARCHAR to TIMESTAMP_NTZ cast - Fix semantics of VARIANT varchar to TIMESTAMP_LTZ cast - fix model reference - Enable render method for Big Query PartitionConfig - support bigquery 4-part information schema table - [Redshift] Non-canonical type conversions for timestamp and time - Fix parsing of Snowflake number followed by next token without a whitespace delimiter - Fix semantics of VARCHAR to BINARY cast - Fix compile failure for Snowflake NUMBER type constructor - Fix message to mention that limit -1 needs to be used to remove limits for show - Fix a bug in typecheck when breaking loop ### Under the Hood - (adapter/databricks) Improve source schemas download logics - Changes to the internal test framework - (adapter) refactor get_column_values to not panic - Enable more timestamp to varchar tests - Test cast from VARCHAR to DATE - Remove unnecessary custom binders for Snowflake to_date, to_time - (fix adapter/bigquery) BQ allows multi-stmt sql - Local mode unit test fixes - fix jinja type checking ## dbt-fusion 2.0.0-beta.44 Released July 18, 2025 ### Features - Freshness on view w/o loaded_at_field warns about missing loaded_at_field. - Update to cargo edition 2024 ### Fixes - Add ceil and floor methods for the round Jinja filter - [Bigquery] Change Change bigquery job_*_seconds types from string to int - Fix thread_id in run_result - Fix jinja inconsistency for list.append and filter behavior for undefined - apply project level configs to sources correctly ### Under the Hood - chore: Make test utilities source available" - (adapter/snowflake) download UDFs, register then compile - Fix offset_window type in jsonschemas ## dbt extension 2.0.0-beta.44 Released July 18, 2025 ## Internal 2.0.0-beta.44 Released July 18, 2025 ### Features - Execute TIMESTAMP_TZ to TIMESTAMP_TZ cast - Execute to_varchar(TIMESTAMP_TZ) function - Update to cargo edition 2024 - Refactor task graph initialize & ensure tasks time out ### Fixes - Fix semantics of VARIANT to TIMESTAMP_NTZ cast ### Under the Hood - (adapter/snowflake) download UDFs, register then compile - rename, update function assets, update tests - Add binding context for drop statements ## dbt-fusion 2.0.0-beta.43 Released July 16, 2025 ### Features - Support overriding the dbt package hub url using DBT_PACKAGE_HUB_URL ## dbt extension 2.0.0-beta.43 Released July 16, 2025 ## Internal 2.0.0-beta.43 Released July 16, 2025 ### Fixes - Fixed unit tests not being filtered out correctly in sorted nodes - uses Redis hash tags for multi-key operations ## dbt-fusion 2.0.0-beta.42 Released July 16, 2025 ### Fixes - Fix handling of some command line flags ## dbt extension 2.0.0-beta.42 Released July 16, 2025 ### Fixes - Improve error messages when unable to verify dbt Cloud PAT ## Internal 2.0.0-beta.42 Released July 16, 2025 ### Features - Execute Snowflake min/max of TIMESTAMP_NTZ, TIMESTAMP_LTZ - Support more casts from/to timestamp types ### Fixes - Fix certain casts from/to timestamp types - Fix handling of some command line flags - Fix Snowflake compile for windowed ordered array_agg ### Under the Hood - Included errors list into compile completion notification - file read bug in build cache ## dbt-fusion 2.0.0-beta.41 Released July 16, 2025 ### Features - Add build_after.updates_on support (dbt-labs/fs#4412) - dbt-labs/fs#3818 ### Fixes - Rename indent filter parameters (dbt-labs/fs#4389) - dbt-labs/dbt-fusion#379 - Allow profile environment variables to accept keyword arguments (dbt-labs/fs#4230) - dbt-labs/dbt-fusion#277 - The order of parsing positional arguments is important. Follow the same order as python (dbt-labs/fs#4463) - support case insensitive bool for minijinja args (dbt-labs/fs#4462) ### Under the Hood - (update adapter) allow access Config keys (dbt-labs/fs#4407) - Cleanup some function args and types (dbt-labs/fs#4455) ## dbt extension 2.0.0-beta.41 Released July 16, 2025 ## Internal 2.0.0-beta.41 Released July 16, 2025 ### Features - Add build_after.updates_on support (dbt-labs/fs#4412) - dbt-labs/fs#3818 - Add resolve time cache logic (dbt-labs/fs#4455) ### Fixes - Fix task graph filtering out non-selected / frontier nodes (dbt-labs/fs#4467) ### Under the Hood - (update adapter/bigquery) use tagged Enum, and remove the redundant BigQueryAuthMethod; fix `dataproc_batch` deser error (dbt-labs/fs#4407) - Add test for bugfix: Allow profile environment variables to accept keyword arguments (dbt-labs/fs#4230) - dbt-labs/dbt-fusion#277 ## dbt-fusion 2.0.0-beta.40 Released July 15, 2025 ### Fixes - Unit tests search for fixtures recurively (dbt-labs/fs#4435) - dbt-labs/dbt-fusion#362 - Fix source always considered fresh (dbt-labs/fs#4447) ## dbt extension 2.0.0-beta.40 Released July 15, 2025 ### Fixes - Handle errors starting a local auth server during web registration (dbt-labs/fs#4440) - dbt-labs/dbt-fusion#202 ## Internal 2.0.0-beta.40 Released July 15, 2025 ### Features - Execute TIMESTAMP_TZ ↔ VARIANT casts (dbt-labs/fs#4424) - Execute Snowflake try_to_date (dbt-labs/fs#4424) ### Fixes - Fix to_timestamp_ntz when called with Utf8View (dbt-labs/fs#4424) - Fix execution of Snowflake to_date on certain string patterns (dbt-labs/fs#4424) - Reject invalid try_to_timestamp_ntz calls (dbt-labs/fs#4424) - Fix incorrect Snowflake TIMESTAMP_LTZ to TIMESTAMP_NTZ cast (dbt-labs/fs#4424) - Fix incorrect to_timestamp_ntz for TIMESTAMP_LTZ argument (dbt-labs/fs#4424) ## dbt-fusion 2.0.0-beta.38 Released July 15, 2025 ### Features - Include custom test name in generic test unique_id if specified - Validate test severity config and include warn/error enum options in jsonschema (dbt-labs/fs#4174) - dbt-labs/fs#3763 - Minor update macro checkpointing (dbt-labs/fs#4287) - Issue message when deps installed version is not latest version (dbt-labs/fs#4310) - dbt-labs/dbt-fusion#326 - (adapter/bigquery) support adapter.grant_access_to (dbt-labs/fs#4291) - dbt-labs/fs#1513 - Support PerformTest (dbt-labs/fs#4403) ### Fixes - Fix root project database schema overwrite package config (dbt-labs/fs#4385) - dbt-labs/dbt-fusion#187 dbt-labs/dbt-fusion#313 - (fix adapter/databricks) tolerate perm denied error for schema creations (dbt-labs/fs#4404) - dbt-labs/dbt-fusion#258 - Correcting Semantic Layer JSONSchema objects (dbt-labs/fs#4408) - Fix two name fields in tarball package lock entry (dbt-labs/fs#4429) - Fixes operation node incompatibility in manifest.json (dbt-labs/fs#4433) ### Under the Hood - Improve accuracy of metrics jsonschemas (dbt-labs/fs#4380) - refactor jinja check (dbt-labs/fs#4387) - minor fixes of jinja check (dbt-labs/fs#4406) - fix jinja-check (dbt-labs/fs#4423) - Internal build cache (dbt-labs/fs#4442) ## dbt extension 2.0.0-beta.38 Released July 15, 2025 ### Features - Make it possible to preview a model when there is an unrelated compiler error elsewhere in the project (dbt-labs/fs#4347) - dbt-labs/dbt-fusion#73 ### Fixes - Handle JSON data in preview output, instead of displaying "[object Object]" (dbt-labs/fs#4354) - dbt-labs/fs#4321 ## Internal 2.0.0-beta.38 Released July 15, 2025 ### Features - Execute TIMESTAMP_LTZ ↔ VARIANT casts (dbt-labs/fs#4271) - Refactor instructions and compiled sql management - eagerly perform lineage (dbt-labs/fs#4287) - (adapter/bigquery) support adapter.grant_access_to (dbt-labs/fs#4291) - dbt-labs/fs#1513 - [Redshift] Username password auth via postgres (dbt-labs/fs#4381) - Support PerformTest (dbt-labs/fs#4403) - Internal Build Cache (dbt-labs/fs#4442) ### Fixes - Improve fidelity of Snowflake varchar → timestamp cast (dbt-labs/fs#4271) - Restore execution of time → variant cast (dbt-labs/fs#4271) - Fix incorrect query result or spurious failures when two query includes two different casts from same variant column (dbt-labs/fs#4271) - Fix case of returned value when casting variant binary value to varchar (dbt-labs/fs#4271) - Fix format when casting whole second variant timestamp_ntz to varchar (dbt-labs/fs#4271) - Fix unit test: this relation and overrides (dbt-labs/fs#4349) - dbt-labs/dbt-fusion#67 - Fixed unresponsivness when document parsing takes too long (dbt-labs/fs#4358) - Fixed unresponsivness when parsing large sql files (dbt-labs/fs#4363) - Issue message when deps installed version is not latest version (dbt-labs/fs#4310) - dbt-labs/dbt-fusion#326 - add sessions_by_project (dbt-labs/fs#4399) - dbt-labs/dbt-fusion#322 - Execution of Snowflake LAG, LEAD window functions (dbt-labs/fs#4405) - Various bug fixes in dbt unit_tests (dbt-labs/fs#4411) ### Under the Hood - Make use of Severity enum during test execution (dbt-labs/fs#4174) - dbt-labs/fs#3763 - LSP: Added SourceText (dbt-labs/fs#4379) - minor fixes of jinja check (dbt-labs/fs#4406) - Tidying code (dbt-labs/fs#4418) - fix jinja-check (dbt-labs/fs#4423) ## dbt-fusion 2.0.0-beta.37 Released July 10, 2025 ### Features - "Support typecheck for call statement" ### Under the Hood - Remove unneeded space from error message (dbt-labs/fs#4351) - dbt-labs/fs#3623 dbt-labs/fs#3637 ## dbt extension 2.0.0-beta.37 Released July 10, 2025 ## Internal 2.0.0-beta.37 Released July 10, 2025 ### Features - "Support typecheck for call statement" ### Fixes - (fix adapter/bigquery) oauth deser ### Under the Hood - Update GHA to store PR and issue numbers for changelog (dbt-labs/fs#4270) - Plan printing utility for debugging ## dbt-fusion 2.0.0-beta.36 Released July 10, 2025 ### Features - update profile jinja rendering to only apply to target output - Add support for type checking in Jinja templates - [Databricks] Update incremental macros to 1.10 - Implement tarball deps packages - "Support typecheck for builtin return function" ### Fixes - Handle git packages that differ only in subdirectory - Fixed truthiness for snapshot timestamp warning - fix bq target - [Bigquery] Fix certain column data_types rendering incorrectly - [Databricks] Fix serialization for nonstandard struct field names - Correctly extract ok/error from invocation result - Populate flags.WHICH with the correct value - Fix dispatch logic for using macros in context object - Fix parsing of BigQuery partition_by config - Command line arguments take precedence over the default selector ### Under the Hood - New dbt-serde_yaml mechanisms; more accurate yaml error locations - Support the dev, canary, and latest release tracks - move span into Instruction::CallFunction - add the span to instructions ## dbt extension 2.0.0-beta.36 Released July 10, 2025 ### Fixes - Fixed invalid workspace name when runnning tasks in a monorepo setup - LSP: Use stderr to display error messages when getting query results ## Internal 2.0.0-beta.36 Released July 10, 2025 ### Features - Add support for type checking in Jinja templates - More features of Snowflake UNION BY NAME - Allow --select with --inline in the `dbt show` command - "Support typecheck for builtin return function" ### Fixes - [Bigquery] Fix sharded tables - (fix adapter/bigquery) support other relation types - Fix dbt1058 being reported for aliases - Correct Snowflake grammar to reject double aliasing (e.g. SELECT * from tbl first second) - Fix parsing of BigQuery partition_by config - Typechecking Databricks functions ai_extract, ai_query - [Databricks] Fix serialization and add test fixtures - Add missing json functions to BQ dialect - Mitigation advice for dynamic PIVOT - Fixes only the first 8192 seed rows being consumed - Parsing of STREAM table references ### Under the Hood - Improvements to test infra/coverage - add the span to instructions - Performance improvement for lineage calculation ## dbt-fusion 2.0.0-beta.34 Released July 07, 2025 ### Features - Implement deps --add-package - implement exclude-resource-type flag - [Databricks] Relation Configs Pt 1 - [Adapter][Snowflake/Bigquery/Databricks] Return empty columns list if relation is missing in adapter.get_columns_in_relation - Reshape schemas to consolidate node specific configurations as attributes ### Fixes - Restrict `log-path` to `logs` and `target-path` to `target` - none is not iterable - Remove the out of sync lock file - Fix --output-keys flag to respect non default inputs #304 - Add support for recursive JsonSchema types with `__additional_properties` - [Adapter][BigQuery] Support execution_project in profiles.yml - gracefully handle deferral request errors and continue with no deferral - [Databricks] Serialize DESCRIBE... JSON results - Support grant merging with plus prefix in yaml or sql file - Rewrite date_spine without introspective queries to enable a static analysis - Drop `overrides` from source properties - When the user uses this.incorporate, the corresponding database and schema directives should be respected. - Add hint to run `dbt init` when profiles.yml isn't found, and warn that Cloud CLI isn't enabled yet when relevant ### Under the Hood - use QUERY_DESTINATION_TABLE - Robust and user-friendly arguments parser for minijinja - Changes to assist debugging types mismatches from adapter.get_columns_in_relation - Skip reading from local compilation results for snapshot ## dbt extension 2.0.0-beta.34 Released July 07, 2025 ## Internal 2.0.0-beta.34 Released July 07, 2025 ### Features - support pivot query - Implement deps --add-package - Execute Snowflake to_binary(varchar) function - Execute AND/OR with NULL - Execute Snowflake to_time, try_to_time functions - [Databricks] Relation Configs Pt 1 - Reshape schemas to consolidate node specific configurations as attributes ### Fixes - (fix adapter/bigquery) adapter.update_columns support updating a view - fix test type checking - Restore execution of timestamp_ntz ↔ variant casts - Fix for column autocomplete from seeds - support union by name - Fix --output-keys flag to respect non default inputs #304 - fix bigquery time function signatures - Fix format in Snowflake TIMESTAMP_NTZ to VARCHAR cast - Fix compute type of decimal division - Execute Snowflake date ± interval - Fix compute of Snowflake date_trunc with TIME - Fix compute of Snowflake date_part - Fix compute of Snowflake dayofweek, dayofweekiso functions - Fix compute of Snowflake date_trunc with TIMESTAMP_NTZ - Fix compile of Snowflake date_trunc with NULL date part - Fix too strict Snowflake VARCHAR → TIME - Use correct pattern in Snowflake VARCHAR → TIMESTAMP_NTZ cast - [Adapter][BigQuery] Support execution_project in profiles.yml - [Databricks] Extract metadata from serialized Databricks table metadata. Fixes 'struct', 'array', 'map' source schema download - [Adapter][Snowflake/Bigquery/Databricks] Return empty columns list if relation is missing in `adapter.get_columns_in_relation` - [Adapter][Snowflake/Bigquery/Databricks] Return empty columns list if relation is missing in adapter.get_columns_in_relation - Enable accepting of the DBT_TARGET environment variable - fix snowflake relation alias ### Under the Hood - [Adapters] Use SDF frontend for type conversions - Changes to assit debut types mismatches from adapter.get_columns_in_relation - Update lsp state to filter tests using exclude resource types instead of excluding using selectors - Internal test framework improvements - test case for grants merging - Test cases to check that when the user uses this.incorporate, the corresponding database and schema directives should be respected. ## dbt-fusion 2.0.0-beta.33 Released July 01, 2025 ### Fixes - Fixing --t , refining --thread 0 to stand for max-cpu, and use --threads parameter now also for io-bound computation - enable_macro_span_for_if_stmt - Fixes a bug that prevented rendering of jinja in the profile value in the dbt_project.yml file. - Fix default__generate_{}_name dispatch - Fix generic test with quoted column - Create temporary directories in the project path so the rename does not fail - support renaming on MutableMap - Add adapter specific node config to all executable nodes - should downcast a relation to a RelationObject ### Under the Hood - Introduce strict-mode behind _DBT_FUSION_STRICT_MODE env var ## dbt extension 2.0.0-beta.33 Released July 01, 2025 ### Fixes - enable_macro_span_for_if_stmt ## Internal 2.0.0-beta.33 Released July 01, 2025 ### Features - Execute convert_timezone with varchar or timestamp_tz input ### Fixes - Fixing --t , refining --thread 0 to stand for max-cpu, and use --threads parameter now also for io-bound computation - Fixing --t , refining --thread 0 to stand for max-cpu, and use --threads parameter now also for io-bound computation - Fix issue computing column lineage when table names are quoted - enable_macro_span_for_if_stmt - Fix Snowflake TIMESTAMP_NTZ to TIMESTAMP_LTZ cast - Fix and refactor Databricks column name inference - Support .nextval construct in Snowflake compilation - Fix Snowflake compile for like_any, like_all, ilike_any functions ### Under the Hood - Added a test that confirms that jinja in the value part of the profile of a dbt_project.yml can be rendered correctly - Test framework improvements ## dbt-fusion 2.0.0-beta.32 Released June 26, 2025 ### Breaking Changes - Support loaded_at_field and loaded_at_query in sources and tables config, not as properties ### Features - Implement jinja exception "raise_contract_error" - (adapter) enable use of type inferred columns in CSVs ### Fixes - shorten file name length limit to account for .macro_span.json - Limit -1 means no limit - fix string bool manifest deserialization - YAML Schema: fix type of `ModelConfig::tag` field - Support index on list ### Under the Hood - Define convenience macro for creating internal error - fix errors swallowing ## dbt extension 2.0.0-beta.32 Released June 26, 2025 ## Internal 2.0.0-beta.32 Released June 26, 2025 ### Features - Execute Snowflake cast VARCHAR to TIMESTAMP_TZ ### Fixes - Fix window compute with implicit frame - Fix planning of Snowflake's QUALIFY ### Under the Hood - Internal test framework improvements - fix errors swallowing - (adapter): bigquery now uses schemas from fs front end to pass type info through ffi to driver ## dbt-fusion 2.0.0-beta.31 Released June 26, 2025 ### Fixes - normalize special chars in source name - Allow positional arguments in dictsort - Fix model with CTE using ephemeral model - Reverted timezone compatibility change due to 'chrono-tz' crate having an issue referencing 'uncased' crate - Ignore .jinja files in macro and test paths for conformance with dbt-core - Fix Selector Exclusion ### Under the Hood - Serialize configs via resource_types ## dbt extension 2.0.0-beta.31 Released June 26, 2025 ## Internal 2.0.0-beta.31 Released June 26, 2025 ### Fixes - Fix downloading a dbx source schema if that relation is created using cluster by - Fix Selector Exclusion ## dbt-fusion 2.0.0-beta.30 Released June 25, 2025 ### Fixes - Make semantic model entity configs optional - Fix BQ seed with custom schema ## dbt extension 2.0.0-beta.30 Released June 25, 2025 ### Fixes - trigger on_expr on every occurance of successful column resolution ## Internal 2.0.0-beta.30 Released June 25, 2025 ### Fixes - trigger on_expr on every occurance of successful column resolution - Fix BQ seed with custom schema ## dbt-fusion 2.0.0-beta.29 Released June 25, 2025 ### Features - Implement jinja exceptions - (adapter bigquery) enable seed ingestion - Add 'static_analysis' property to all analyzeable nodes, ensure sources adapt static_analysis to failures ### Fixes - Make modules.pytz.timezone compatible with dbt-core by tlm365. - Fix `DbtContract` defaults for serialization - Fix error while loading defer manifest - fix panic in incorporate - Add store_result and load_result macros to run-operation jinja context - Fix quoting config not respected in various places - Automatic catalog/schema creation - api.Relation.create Jinja function ## dbt extension 2.0.0-beta.29 Released June 25, 2025 ### Under the Hood - Update VSCE release script to release to Open VSX ## Internal 2.0.0-beta.29 Released June 25, 2025 ### Features - Add 'static_analysis' property to all analyzeable nodes, ensure sources adapt static_analysis to failures ### Fixes - Fix `DbtContract` defaults for serialization - Fix Snowflake decimal to timestamp cast correctness - Fix failure when computing Snowflake distinct array_agg - Fix incorrect result for Snowflake empty array_agg - respect severity warn for data test - Add store_result and load_result macros to run-operation jinja context - Fix quoting config not respected in various places - Automatic catalog/schema creation - api.Relation.create Jinja function ### Under the Hood - (adapter bigquery) enable dbt seed - Fix TIME & TIMESTAMP decoding in Snowflake SLT tests ## dbt-fusion 2.0.0-beta.28 Released June 24, 2025 ### Fixes - Respect quote config in column test generation - Support string or array of strings for databricks liquid_clustered_by config + add missing merge configs - fix map_to_workspace_path - Fix span reporting for source yaml issues - Fix respecting static_analysis project, properties, and config ## dbt extension 2.0.0-beta.28 Released June 24, 2025 ### Features - Start LSP instance for every manually opened dbt workspace even when not opened as a root dir ## Internal 2.0.0-beta.28 Released June 24, 2025 ### Fixes - fix map_to_workspace_path - Support distinct types (FixedSizeList-based) in GROUP BY ## dbt-fusion 2.0.0-beta.27 Released June 23, 2025 ### Fixes - correctly resolve selector inheritence - Fix exlusion logic so exclusion happens after selection and indirect selection ## Internal 2.0.0-beta.27 Released June 23, 2025 ### Breaking Changes - Change Snowflake timestamp compute precision to microseconds to support values in year 0001 and 9999 ### Fixes - Use human-readable type names in function compute stubs - Fix exlusion logic so exclusion happens after selection and indirect selection - dbt compile respects --no-write-json - Respect element ordering in Snowflake array_agg - Use identifier for sources when creating relation ### Under the Hood - Fix xtask gen-binders - Change CLL computation to happen upfront - LSP: Drop previous state as soon as possible ## dbt-fusion 2.0.0-beta.26 Released June 23, 2025 ### Features - Support datetime in seed - Collect refs and sources in pre/post hooks and provide better error message for unrecognized refs at compile time - Support auto deferral ### Fixes - fix snowflake_warehouse config not respected - No longer create empty schema on DataFrame collect error ## Internal 2.0.0-beta.26 Released June 23, 2025 ### Features - Collect refs and sources in pre/post hooks and provide better error message for unrecognized refs at compile time ### Fixes - fix snowflake_warehouse config not respected - Use inferred physical plan instead of logical plan for dialect adapted table provider ### Under the Hood - Test infra improvements - Fixes needed for regression testing ## dbt-fusion 2.0.0-beta.25 Released June 20, 2025 ### Features - Support datetime in seed ### Fixes - Add missing `warn_unenforced` to `Constraint` and split out `ModelConstraint` - `profiles.yml` in all log output instead of `profile.yml` - Refactor nodes to leverage respective configs over 'DbtConfig' superset - fix the incorrect source filename some render error - Jinja: refine dangling block end check - Fix missing 'materialized' property in snapshot config - Fix Exosure Properties Expected Schema ### Under the Hood - Error handling: eliminate MinijinjaError implicit conversion ## Internal 2.0.0-beta.25 Released June 20, 2025 ### Features - [Bigquery] Fix quoting for literals in metadata and unit tests. Also, add support for bigquery flavored unit tests via structs. ### Fixes - `profiles.yml` in all log output instead of `profile.yml` - (fix bigquery/adapter) failure to run twice on the same model of table materialization - Fix possible panic on cancellation - Refactor nodes to leverage respective configs over 'DbtConfig' superset - Detect a certain class of syntactic errors in macro files - Fix missing 'materialized' property in snapshot config ### Under the Hood - Error handling: eliminate MinijinjaError implicit conversion ## dbt-fusion 2.0.0-beta.24 Released June 18, 2025 ### Fixes - Fix parse_fqn with trailing semicolon for Snowflake - [BigQuery] Fix type translation for STRING type - Improve the mat macro lookup logic ### Under the Hood - Add support for parsing catalogs.yml files - (dbt-agate) add all 4 arrow timestamp types as Arrow2Jinja converters. - Include properties of built-in generic tests in jsonschemas - Fix telemetry timestamps - Introduce mechanism for error recovery on Yaml deserialization ## dbt extension 2.0.0-beta.24 Released June 18, 2025 ### Under the Hood - Now we test the extension under Linux ## Internal 2.0.0-beta.24 Released June 18, 2025 ### Features - Improve Snowflake query execution support ### Fixes - Fix type parsing not to ignore tail of input - Allow implementing functions by composition - Fix SLT decoding of NULL timestamp_tz in data coming from Snowflake - Error out on incompatible Snowflake timestamp UNION coercion - Improve the mat macro lookup logic - LSP: Cancelling current compilation on save or recompile. ### Under the Hood - Fixed logfile creation ## dbt-fusion 2.0.0-beta.23 Released June 17, 2025 ### Features - Support dbt_project.yml config support for exposures - Support parsing redshift-specific configs - Add redact_credentials method for databricks. ### Fixes - Validate --vars key-value pairs that do not have a space between key and value - Collect only prescribed set of directories for docs ### Under the Hood - Fix missing locations in Yaml related errors - listener generates macro_spans - Remove unused crate dependencies - Use FsError in more places ## Internal 2.0.0-beta.23 Released June 17, 2025 ### Features - Write out publication and resolved project artifact - Add support for custom delimiters - (adapter) add redact_credentials implementation to dbx ### Fixes - Snowflake typing improvements - Fix type inference for Snowflake calls with untyped string literals first - Databricks typing improvements - [Databricks] client_id is no longer required for U2M Oauth ### Under the Hood - Use install scripts published to the CDN instead of the install script built in the binary for the system update command. - Fix missing locations in Yaml related errors - listener generates macro_spans - Move dbt-frontend-schemas out of SA ## dbt-fusion 2.0.0-beta.22 Released June 12, 2025 ### Fixes - Use absolute paths for error reporting when reading yml files - Remove unnecessary flatten directive - this.MaterializedView is missing - Fixes missing resource_type in materialize stage - Ensure snapshots have 'materialized' set to snapshot ### Under the Hood - [Adapters] Added literal formatting layer for dialect aware translations - fixes ## Internal 2.0.0-beta.22 Released June 12, 2025 ### Fixes - Snowflake typing improvements - Fix relational tests causing cycle in build graph - Add missing argument types for Databricks quarter() - add quote to DbtColumn - Fixes missing resource_type in materialize stage ### Under the Hood - Internal testing framework improvements - Internal testing framework improvements - clean up unnecessary canonicalize ## dbt-fusion 2.0.0-beta.20 Released June 11, 2025 ### Features - Implement --send-anonymous-usage-stats - Introduce context['...'] for macro lookups ### Fixes - Ensure on-run-start / end have context[...] object ### Under the Hood - Add driver level REPL ## Internal 2.0.0-beta.20 Released June 11, 2025 ### Features - Implement --send-anonymous-usage-stats - Support Mesh models for SAO - Introduce context['...'] for macro lookups ### Fixes - Ensure on-run-start / end have context[...] object - Fix SAO showing aborted task when stop_val = start_val ### Under the Hood - Add adbc driver repl ## dbt-fusion 2.0.0-beta.18 Released June 10, 2025 ### Features - (databricks-adapter) get_relation_config and get_config_from_model methods start - [Databricks] Add get_persist_doc_columns ### Fixes - Updated column cast to have a better error message - Add missing 'skip_serializing_none' to reduce the manifest size - Fixes ambiguity in DATE rendering by adding single quotes - Fix duplicate snapshot ingestion when projects begin with 'dbt_' ### Under the Hood - Logging: remove the global logger lock - patch config.model ## Internal 2.0.0-beta.18 Released June 10, 2025 ### Features - [Databricks] Add freshness - (databricks-adapter) get_relation_config and get_config_from_model methods start - [Databricks] Add get_persist_doc_columns - Introduce source freshness --check-all flag ### Fixes - Add missing Snowflake ARRAYS_ZIP function - Port the keypair param conflict message for snow. - Update defer to work on all ref-able nodes - Add missing fields to Snowflake ACCOUNT_USAGE.USERS table - fix adapters/databricks support the missing column methods `format_add_column_list` and `format_add_column_list_as_string` fix column `quoted` method fix `adapter.get_columns_in_relation` - fetches remote state for incremental models fix `adapter.get_columns_in_relation` to use the correct macro - Fix building task graph performance and remove duplicate snapshots if project name starts with 'dbt_' ### Under the Hood - Logging: remove the global logger lock ## dbt-fusion 2.0.0-beta.16 Released June 06, 2025 ### Fixes - (fix snowflake-adapter) pass query_tag from dbt_project.yml - Use build_model_context for ref and source extraction environment - Use OS services to check TLS certificates - fix config.model - resolve project configs relative to resource path - Fix for go to definitions for jinja functions containing a 'return' - Fix skipping custom generate_{}_name macro when projects suffixed with '_dbt' & missing resource_type in graph / manifest.json & case sensitive extensions - Refactor node context initialization to have independent stateful fn init ### Under the Hood - Bump snowflake driver to patch gosnowflake, arrow-adbc, and fs. Reverts PR 3709 which has been patched in the driver now. - Remove unused shared mutable global state ## dbt extension 2.0.0-beta.16 Released June 06, 2025 ### Features - Added file logger for extenstion logs ### Fixes - Fixes webview panels being always registered - Fix for go to definitions for jinja functions containing a 'return' ### Under the Hood - Fixed mac test runs ## Internal 2.0.0-beta.16 Released June 06, 2025 ### Features - [Databricks] Add get_column_schema_from_query ### Fixes - fix snowflake stage panic in dep analysis - Fix type of Snowflake ceil(null) / floor(null) - Fix CREATE TABLE OR REPLACE and IF NOT EXISTS compilation in Snowflake - Add support for commented sql in inline and fix custom ref missing variable contexts - Use OS services to check TLS certificates - Snowflake compiler improvements - Fix for go to definitions for jinja functions containing a 'return' - (1) make extension matching case insensitive for seeds (2) skipping generate_{}_name in projects suffixed w/ '_dbt' (3) missing graph source resource types - Add missing store_result / load_result context to 'on-run-start' and 'on-run-end' ### Under the Hood - Improve Snowflake compiler speed - Ensure consistent paths in error messages ## dbt-fusion 2.0.0-beta.15 Released June 04, 2025 ### Features - Support `catalog` config for databricks model configs - Split render & analyze phases into separate progress options ## Internal 2.0.0-beta.15 Released June 04, 2025 ### Features - Add progress bar logging for analyzing phase & split compiling logs into render & analyze ### Fixes - BigQuery typing improvements - (fix dbt-adapter/snowflake/auth) include header and footer if they're missing from the private key string literal - BigQuery typing improvements - BigQuery typing improvements - Fix missing checksum in snapshot manifest entry ### Under the Hood - Rename and document SelectItemAlias struct ## dbt-fusion 2.0.0-beta.14 Released June 03, 2025 ### Features - implement union for seq in minijinja - New event based progress bar functionality for cli - Add dict function support on tuples in minijinja ### Fixes - Fix the databricks function try_to_number() return type - Allow catalog in sources properties (alias for database) ### Under the Hood - Bump databricks driver to 0.18.0+dbt0.0.4 - Bump databricks driver to 0.18.0+dbt0.0.5 ## dbt extension 2.0.0-beta.14 Released June 03, 2025 ### Fixes - Fix for Codelenses showing up in the wrong places ## Internal 2.0.0-beta.14 Released June 03, 2025 ### Features - implement union for seq in minijinja - New event based progress bar functionality for cli ### Fixes - Fix duplicate edges in 'render' -> 'compile' -> 'run' task graph - Fix the databricks function try_to_number() return type - BigQuery typing improvements - Fix for unit test paths clobbering model paths in LSP - Run on-run-* hooks in source freshness command - Fix issue with task cache hanging on invalid stop time - Replace '_' with '-' in snowflake account ids to replicate dbt Core snowflake adapter behavior - Fix sources schemas fetch for dbx - hydrate tables for test ## 2.0.0-beta.13 Released May 30, 2025 ### Fixes - Improved dbt Fusion show stability for VS Code extension previews by removing schema / type checking - Removed unnecessary language server compilation failure message "Failed to Resolve" - Added error on parsing `flags` and `config` properties in `profiles.yml`, as they no longer do anything and are skipped during Fusion parse - Improved stability of LSP incremental recompilation - Fixed duplicate model name parsing bug ([#63](https://github.com/dbt-labs/dbt-fusion/issues/63)) - Added support for `DBT_PROFILES_DIR` and other env vars in dbt LSP and `profiles.yml` - Added support for `add_query` adapter method in Databricks - Added support for Date32/64 and Time32/64 types in dbt Fusion Agate (`stfrtime` method for example). Partially addressed [#79](https://github.com/dbt-labs/dbt-fusion/issues/79) - Fixed issue with unit test refs / dependencies not being respected - Fixed issue where `static_analysis` config is not respected in YML