dbt-labs/dbt-core · error

unset_constraints should be accessible

Error message

unset_constraints should be accessible

What it means

Test-only assertion in test_constraints_to_jinja_exposes_object_attributes: the Jinja value produced by Constraints::to_jinja() must expose an `unset_constraints` attribute (regression guard for attribute accessibility from Jinja templates). Fires only if to_jinja stops exposing that attribute.

Solutions

  1. Fix Constraints::to_jinja so unset_constraints is exposed as an attribute
  2. Check the Jinja object implementation for the constraints wrapper
  3. Treat failure as a regression in Jinja attribute exposure, not a runtime error
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/dbt-adapter/src/relation/databricks/config/components/constraints.rs:950 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/c5f5e38e20d125f5. Report an issue: GitHub.

Appendix: source

Thrown at crates/dbt-adapter/src/relation/databricks/config/components/constraints.rs:950

    #[test]
    fn test_constraints_to_jinja_exposes_object_attributes() {
        // Bug 1: constraint.type and constraint.name must be accessible in Jinja templates.
        let pk = TypedConstraint::PrimaryKey {
            name: Some("pk_id".to_string()),
            columns: vec!["id".to_string()],
            expression: None,
        };
        let constraints = Constraints::new(
            IndexSet::new(),
            IndexSet::new(),
            IndexSet::new(),
            IndexSet::from([pk]),
        );

        let jinja_val = constraints.to_jinja();
        let unset = jinja_val
            .get_attr("unset_constraints")
            .expect("unset_constraints should be accessible");
        let mut iter = unset
            .try_iter()
            .expect("unset_constraints should be iterable");
        let constraint_val = iter.next().expect("should have one constraint");

        let type_val = constraint_val
            .get_attr("type")
            .expect("type should be accessible");
        assert_eq!(type_val.as_str(), Some("primary_key"));

        let name_val = constraint_val
            .get_attr("name")
            .expect("name should be accessible");
        assert_eq!(name_val.as_str(), Some("pk_id"));

        let render_val = constraint_val
            .get_attr("render")
            .expect("render should be accessible");

View on GitHub (pinned to 0267ce9170)