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] = NoneView on GitHub (pinned to 0267ce9170)
Solutions
- Replace the call with `adapter.build_catalog_relation(relation_config)` and read catalog metadata from the returned catalog relation.
- Refactor macros to derive catalog/integration info from the relation rather than a global integration object.
- 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
- Search macros/packages for get_catalog_integration when migrating to Fusion
- Use build_catalog_relation and read metadata from the returned relation
- Follow the Fusion migration guide for catalog integration changes
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
- SalesforceAdapter does not implement build_schemas_from_stat
- SalesforceAdapter does not implement build_columns_from_get_
- ReplayStatement::bind
- ReplayStatement::bind_stream
- ReplayStatement::execute_schema
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/0d91d049be8c9b9c.
Report an issue: GitHub.