dbt-labs/dbt-core · error

enrich is only available for Databricks relations

Error message

enrich is only available for Databricks relations

What it means

relation_enrich (backing get_column_and_constraints_sql) downcasts the inner relation to the Databricks Relation implementation; on any other adapter's relation type the downcast fails and this guard fires — enrichment with constraints is a Databricks-only capability.

Solutions

  1. Call enrich only for Databricks relations (gate in the macro)
  2. Add an enrich path for other adapters if constraints support is needed there
  3. Return a structured error instead of a bare minijinja InvalidOperation
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at crates/dbt-adapter/src/relation/relation_object.rs:100 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/94a1652dac3f4b26. Report an issue: GitHub.

Appendix: source

Thrown at crates/dbt-adapter/src/relation/relation_object.rs:100

        }
    }

    pub fn has_filter(&self) -> bool {
        self.run_filter.is_some()
    }

    pub fn event_time(&self) -> Option<&str> {
        self.event_time.as_deref()
    }

    /// Databricks: enrich relation with constraints (for get_column_and_constraints_sql)
    fn relation_enrich(self: &Arc<Self>, args: &[Value]) -> Result<Value, minijinja::Error> {
        let dbx = self
            .relation
            .as_any()
            .downcast_ref::<Relation>()
            .ok_or_else(|| {
                minijinja::Error::new(
                    minijinja::ErrorKind::InvalidOperation,
                    "enrich is only available for Databricks relations",
                )
            })?;
        let constraints_val = args.first().cloned().unwrap_or_default();
        let constraints: Vec<TypedConstraint> = constraints_val
            .try_iter()
            .map_err(|e| {
                minijinja::Error::new(
                    minijinja::ErrorKind::InvalidOperation,
                    format!("enrich constraints must be iterable: {e}"),
                )
            })?
            .map(|v| {
                v.downcast_object_ref::<TypedConstraint>()
                    .cloned()
                    .ok_or_else(|| {
                        minijinja::Error::new(

View on GitHub (pinned to 0267ce9170)