dbt-labs/dbt-core · error

get_catalog_integration is unavailable in Fusion. Access cat

Error message

get_catalog_integration is unavailable in Fusion. Access catalogs metadata directly from a catalog relation obtained using adapter.build_catalog_relation(model: RelationConfig)

What it means

`get_catalog_integration` is intentionally unimplemented in dbt Fusion: catalog integration metadata must instead be accessed directly from a catalog relation built via `adapter.build_catalog_relation(model: RelationConfig)`. The method exists only to fail loudly and redirect developers to the new API. Unlike adapter-gated panics, this fires unconditionally for every adapter type — it is a permanent API-removal stub.

Source

Thrown at crates/dbt-adapter/src/adapter/mod.rs:3815

            }
            Parse(_) => Ok(none_value()),
        }
    }

    /// https://github.com/dbt-labs/dbt-adapters/blob/c16cc7047e8678f8bb88ae294f43da2c68e9f5cc/dbt-adapters/src/dbt/adapters/base/impl.py#L334
    ///
    /// ```python
    /// def get_catalog_integration(
    ///     self,
    ///     name: str,
    /// )  -> Optional[CatalogRelation]
    /// ```
    pub fn get_catalog_integration(
        &self,
        _state: &State,
        _args: &[Value],
    ) -> Result<Value, minijinja::Error> {
        unimplemented!(
            "get_catalog_integration is unavailable in Fusion. Access catalogs metadata directly from a catalog relation obtained using adapter.build_catalog_relation(model: RelationConfig)"
        )
    }
}

impl Adapter {
    pub fn call_method_impl(
        self: &Arc<Self>,
        state: &State,
        name: &str,
        args: &[Value],
        _listeners: &[Rc<dyn RenderingEventListener>],
    ) -> Result<Value, minijinja::Error> {
        match name {
            // macro_name: str, macro_namespace: Optional[str] = None
            "dispatch" => self.dispatch(state, args),
            "execute" => {
                // sql: str, auto_begin: bool = False, fetch: bool = False, limit: Optional[int] = None

View on GitHub (pinned to 0267ce9170)

Solutions

  1. Replace the call with `adapter.build_catalog_relation(relation_config)` and read catalog metadata from the returned catalog relation.
  2. Refactor macros to derive catalog/integration info from the relation rather than a global integration object.
  3. Consult the Fusion migration guide for catalog integration API changes.

Example fix

// before
{% set integration = adapter.get_catalog_integration() %}
// after
{% set catalog_relation = adapter.build_catalog_relation(model) %}
{% set integration = catalog_relation.catalog_integration %}
Defensive patterns

Strategy: fallback

Validate before calling

// Jinja: never call get_catalog_integration; use the replacement
{% set catalog_relation = adapter.build_catalog_relation(model) %}

Type guard

null

Try / catch

null

Prevention

When it happens

Trigger: Any invocation of `adapter.get_catalog_integration(...)` from a Jinja macro or Rust code — there is no adapter type or argument combination for which it succeeds.

Common situations: Porting macros from dbt-core that read the catalog integration object; external/vintage code relying on Snowflake catalog integrations; migrating packages to Fusion without updating catalog-related calls.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07). Data as JSON: /api/errors/0d91d049be8c9b9c. Report an issue: GitHub.