dbt-labs/dbt-core · error

verify_database is not implemented for the

Error message

verify_database is not implemented for the {} adapter

What it means

unimplemented!() in verify_database: cross-database reference verification only has native implementations; for all Impl-backed adapters the call aborts with this message, so any Jinja macro invoking verify_database on those adapters crashes rather than getting a pass/fail verdict.

Solutions

  1. Default Impl adapters to a permissive Ok result where cross-db semantics don't apply
  2. Implement per-adapter checks where the warehouse enforces database scoping
  3. Map to a structured AdapterError before user code panics
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at crates/dbt-adapter/src/adapter/adapter_impl.rs:3747 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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

Appendix: source

Thrown at crates/dbt-adapter/src/adapter/adapter_impl.rs:3747

                    {
                        return Err(AdapterError::new(
                            AdapterErrorKind::UnexpectedDbReference,
                            format!(
                                "Cross-db references allowed only in RA3.* node or with datasharing enabled ({database} vs {configured_database})"
                            ),
                        ));
                    }
                }

                Ok(Value::from(()))
            }
            Impl(
                adapter_type @ (Snowflake | Bigquery | Databricks | Salesforce | Spark | Fabric
                | Exasol | Starburst | Athena | Trino | Datafusion | Dremio
                | Oracle),
                _,
            ) => {
                unimplemented!(
                    "verify_database is not implemented for the {} adapter",
                    adapter_type
                )
            }
        }
    }

    /// Check if a given partition and clustering column spec for a table
    /// can replace an existing relation in the database. BigQuery does not
    /// allow tables to be replaced with another table that has a different
    /// partitioning spec. This method returns True if the given config spec is
    /// identical to that of the existing table.
    ///
    /// BigQueryAdapter https://github.com/dbt-labs/dbt-adapters/blob/4a00354a497214d9043bf4122810fe2d04de17bb/dbt-bigquery/src/dbt/adapters/bigquery/impl.py#L541
    pub fn is_replaceable(
        &self,
        conn: &'_ mut dyn Connection,
        relation: &Arc<dyn BaseRelation>,

View on GitHub (pinned to 0267ce9170)