dbt-labs/dbt-core · error
enrich constraints must contain TypedConstraint objects
Error message
enrich constraints must contain TypedConstraint objects
What it means
The constraints sequence passed to relation_enrich iterated fine, but its items do not downcast to TypedConstraint objects — the list holds plain dicts/values instead of constraint wrappers, so per-item downcasting fails.
Solutions
- Build constraints through the typed API rather than raw dicts
- Convert dict-shaped constraints into TypedConstraint before calling enrich
- Validate/filter items before attempting the downcast
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at crates/dbt-adapter/src/relation/relation_object.rs:118 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/81032eee1b710445.
Report an issue: GitHub.
Appendix: source
Thrown at crates/dbt-adapter/src/relation/relation_object.rs:118
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(
minijinja::ErrorKind::InvalidOperation,
"enrich constraints must contain TypedConstraint objects",
)
})
})
.collect::<Result<Vec<_>, _>>()?;
let enriched = dbx.enrich(&constraints);
Ok(RelationObject::new(Arc::new(enriched)).into_value())
}
/// Databricks: render constraints DDL for CREATE TABLE
fn relation_render_constraints_for_create(self: &Arc<Self>) -> Result<Value, minijinja::Error> {
let dbx = self
.relation
.as_any()
.downcast_ref::<Relation>()
.ok_or_else(|| {
minijinja::Error::new(View on GitHub (pinned to 0267ce9170)