{"record":{"id":"51a3797555d1b7aa","repo":"dbt-labs/dbt-core","slug":"describe-relation-is-not-supported-for-relation-ty","errorCode":null,"errorMessage":"describe_relation is not supported for relation type {other:?} on Snowflake","messagePattern":"describe_relation is not supported for relation type (.+?) on Snowflake","errorType":"exception","errorClass":"minijinja::Error::InvalidOperation","httpStatus":null,"severity":"error","filePath":"crates/dbt-adapter/src/adapter/adapter_impl.rs","lineNumber":4894,"sourceCode":"    /// Return shapes deliberately differ: BigQuery returns a typed `RelationConfig`, Snowflake\n    /// returns a raw `SHOW`-query readback.\n    pub fn describe_relation(\n        &self,\n        state: &State,\n        conn: &'_ mut dyn Connection,\n        relation: &Arc<dyn BaseRelation>,\n        include_transient: bool,\n        token: CancellationToken,\n    ) -> Result<Value, minijinja::Error> {\n        if self.adapter_type() == Snowflake {\n            match relation.relation_type() {\n                Some(RelationType::DynamicTable) => {\n                    self.describe_dynamic_table(state, conn, relation, include_transient, token)\n                }\n                Some(RelationType::InteractiveTable) => {\n                    self.describe_interactive_table(state, conn, relation, token)\n                }\n                other => Err(minijinja::Error::new(\n                    minijinja::ErrorKind::InvalidOperation,\n                    format!(\n                        \"describe_relation is not supported for relation type {other:?} on Snowflake\"\n                    ),\n                )),\n            }\n        } else {\n            Ok(self\n                .describe_relation_bigquery(conn, relation, Some(state))?\n                .map(Value::from_object)\n                .unwrap_or_else(none_value))\n        }\n    }\n\n    /// BigQueryAdapter https://github.com/dbt-labs/dbt-adapters/blob/4a00354a497214d9043bf4122810fe2d04de17bb/dbt-bigquery/src/dbt/adapters/bigquery/impl.py#L818\n    fn describe_relation_bigquery(\n        &self,\n        conn: &'_ mut dyn Connection,","sourceCodeStart":4876,"sourceCodeEnd":4912,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-adapter/src/adapter/adapter_impl.rs#L4876-L4912","documentation":"Snowflake's `describe_relation` only supports describing tables of specific types (e.g. Table, View, DynamicTable, InteractiveTable). When the relation's type falls through the match arms, the adapter returns this InvalidOperation error formatting the unsupported relation type. The library throws it because there is no DESCRIBE strategy defined for that relation type on Snowflake.","triggerScenarios":"Calling `describe_relation` on a Snowflake relation whose RelationType matches the catch-all `other` arm — e.g. an external table, stage, stream, materialized view variant, or a relation with no/unknown type.","commonSituations":"Caching or introspection runs against a Snowflake object the adapter does not classify as a describable table (external/hybrid tables, iceberg tables), or a custom/older adapter version lacks the match arm for a newer Snowflake table kind.","solutions":["Log or print the relation type in the error message (`{other:?}`) to see exactly which type is unsupported","Restrict describe_relation calls to supported types (Table/View/DynamicTable/InteractiveTable) or filter such relations before caching","Upgrade the adapter if the relation is a newly supported Snowflake type (e.g. dynamic/interactive tables) that an older adapter lacks an arm for","Implement/extend the match in describe_relation to route the missing RelationType to the appropriate DESCRIBE path"],"exampleFix":"// before\nSome(RelationType::InteractiveTable) => self.describe_interactive_table(state, conn, relation, token),\nother => Err(...)\n// after\nSome(RelationType::InteractiveTable) => self.describe_interactive_table(state, conn, relation, token),\nSome(RelationType::ExternalTable) => self.describe_standard_table(state, conn, relation, token),\nother => Err(...)","handlingStrategy":"type-guard","validationCode":"// guard before calling describe_relation\nmatch relation.relation_type {\n    Some(RelationType::Table) | Some(RelationType::View) | Some(RelationType::DynamicTable) | Some(RelationType::InteractiveTable) => describe_relation(...),\n    other => println!(\"skipping describe for unsupported relation type {other:?}\"),\n}","typeGuard":"fn is_describable(rt: Option<RelationType>) -> bool {\n    matches!(rt, Some(RelationType::Table) | Some(RelationType::View) | Some(RelationType::DynamicTable) | Some(RelationType::InteractiveTable))\n}","tryCatchPattern":"match adapter.describe_relation(state, conn, relation, token) {\n    Ok(cols) => cols,\n    Err(e) if e.to_string().contains(\"describe_relation is not supported\") => {\n        eprintln!(\"skipping non-describable relation {:?}\", relation);\n        Vec::new()\n    }\n    Err(e) => return Err(e),\n}","preventionTips":["Filter relation cache population to known table types","Upgrade adapters when Snowflake introduces new table kinds","Log the relation type before introspection so failures are immediately diagnosable"],"tags":["snowflake","describe","relation-type","unsupported"],"backgroundTag":"unsupported-operation","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"}