{"record":{"id":"28a3d63bba850188","repo":"dbt-labs/dbt-core","slug":"constraint-support-not-implemented","errorCode":null,"errorMessage":"constraint support not implemented","messagePattern":"constraint support not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/adapter/adapter_impl.rs","lineNumber":2835,"sourceCode":"            (Fabric, PrimaryKey) => Enforced,\n            (Fabric, ForeignKey) => Enforced,\n            (Fabric, Custom) => NotSupported,\n\n            // Exasol (verified on Exasol 8)\n            (Exasol, NotNull) => Enforced,\n            (Exasol, PrimaryKey) => Enforced,\n            (Exasol, ForeignKey) => Enforced,\n            (Exasol, Unique) => NotSupported,\n            (Exasol, Check) => NotSupported,\n            (Exasol, Custom) => NotSupported,\n\n            // ClickHouse (dbt-clickhouse impl.py CONSTRAINT_SUPPORT)\n            (ClickHouse, Check) => Enforced,\n            (ClickHouse, NotNull | Unique | PrimaryKey | ForeignKey | Custom) => NotSupported,\n\n            // Salesforce\n            (Salesforce | Spark | Starburst | Athena | Trino | Datafusion | Dremio | Oracle, _) => {\n                unimplemented!(\"constraint support not implemented\")\n            }\n        }\n    }\n\n    /// Given existing columns and columns from our model\n    /// we determine which columns to update and persist docs for\n    pub fn do_get_persist_doc_columns(\n        &self,\n        existing_columns: Vec<Column>,\n        model_columns: IndexMap<String, DbtColumnRef>,\n    ) -> AdapterResult<IndexMap<String, DbtColumnRef>> {\n        if self.adapter_type() != Databricks {\n            return Err(AdapterError::new(\n                AdapterErrorKind::NotSupported,\n                \"get_persist_doc_columns is a Databricks adapter operation\",\n            ));\n        }\n        // Upstream semantics (dbt-databricks): persist a column doc update if and only if the","sourceCodeStart":2817,"sourceCodeEnd":2853,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/adapter/adapter_impl.rs#L2817-L2853","documentation":"get_constraint_support panics for adapters whose constraint-support matrix has no entries (Salesforce, Spark, Starburst, Athena, Trino, Datafusion, Dremio, Oracle). The function classifies whether each constraint type (Check, NotNull, Unique, PrimaryKey, ForeignKey, Custom) is Enforced/Assumed/NotSupported for a given adapter; these adapters lack a mapping in the Rust port.","triggerScenarios":"Rendering model constraints via render_raw_columns_constraints or render_column_constraint (both call this) while the active adapter is Salesforce, Spark, Starburst, Athena, Trino, Datafusion, Dremio, or Oracle.","commonSituations":"Declaring `constraints` blocks (or `contract: {enforced: true}`) on models run with any of the unported adapters.","solutions":["Remove constraints/contract enforcement from models on these adapters.","Switch to an adapter with a defined constraint matrix (Postgres, Snowflake, BigQuery, Databricks, Redshift, DuckDB, ClickHouse, etc.).","Add the missing match arm mapping each constraint type to Enforced/NotSupported for these adapters."],"exampleFix":"// before\n(Salesforce | Spark | Starburst | Athena | Trino | Datafusion | Dremio | Oracle, _) => {\n    unimplemented!(\"constraint support not implemented\")\n}\n// after\n(Salesforce | Spark | Starburst | Athena | Trino | Datafusion | Dremio | Oracle, _) => NotSupported,","handlingStrategy":"validation","validationCode":"const CONSTRAINT_ADAPTERS: &[&str] = &[\"postgres\",\"snowflake\",\"bigquery\",\"databricks\",\"redshift\",\"duckdb\",\"clickhouse\"];\nif model.constraints.is_some() && !CONSTRAINT_ADAPTERS.contains(&adapter_type.as_str()) {\n    return Err(\"constraints not supported for this adapter\".into());\n}","typeGuard":"fn supports_constraints(adapter_type: &AdapterType) -> bool {\n    !matches!(adapter_type, AdapterType::Salesforce | AdapterType::Spark | AdapterType::Starburst | AdapterType::Athena | AdapterType::Trino | AdapterType::Datafusion | AdapterType::Dremio | AdapterType::Oracle)\n}","tryCatchPattern":null,"preventionTips":["Avoid `constraints:` blocks and enforced contracts on unported adapters","Check the constraint support matrix before enabling `contract: {enforced: true}`","Add adapter capability checks to project linting"],"tags":["rust","adapter","constraints","contracts","unimplemented"],"backgroundTag":"method-not-implemented","analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}