{"record":{"id":"7c88e99bde5ad931","repo":"dbt-labs/dbt-core","slug":"not-a-catalogtype-as-str-output","errorCode":null,"errorMessage":"not a CatalogType::as_str() output","messagePattern":"not a CatalogType::as_str\\(\\) output","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-schemas/src/schemas/dbt_catalogs_v2.rs","lineNumber":738,"sourceCode":"        match raw {\n            \"horizon\" => Self::Horizon,\n            \"glue\" => Self::Glue,\n            // \"ICEBERG_REST\" only exists on the Jinja plane. Model configs should\n            // be lowercase to obscure the internal uppercase as much as possible.\n            \"iceberg_rest\" => Self::IcebergRest,\n            \"hive_metastore\" => Self::HiveMetastore,\n            \"unity\" => Self::Unity,\n            \"biglake_metastore\" => Self::BiglakeMetastore,\n            \"ducklake\" => Self::DuckLake,\n            \"local_filesystem\" => Self::LocalFilesystem,\n            \"BUILT_IN\" => Self::SnowflakeBuiltIn,\n            \"duckdb\" => Self::DuckdbNative,\n            \"INFO_SCHEMA\" => match adapter_type {\n                dbt_adapter_core::AdapterType::Bigquery => Self::BigqueryNative,\n                dbt_adapter_core::AdapterType::Snowflake => Self::SnowflakeNative,\n                _ => unreachable!(\"only Snowflake/Bigquery ever egress INFO_SCHEMA\"),\n            },\n            _ => unreachable!(\"not a CatalogType::as_str() output\"),\n        }\n    }\n}\n\nimpl serde::Serialize for CatalogType {\n    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {\n        serializer.serialize_str(self.as_str())\n    }\n}\n\n#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]\n#[serde(rename_all = \"lowercase\")]\npub enum TableFormat {\n    Default,\n    Iceberg,\n}\n\nimpl TableFormat {","sourceCodeStart":720,"sourceCodeEnd":756,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-schemas/src/schemas/dbt_catalogs_v2.rs#L720-L756","documentation":"Documented asymmetry in parse_from_str: 'BUILT_IN' is accepted as an input token (Snowflake built-in catalog) but is deliberately not a CatalogType::as_str() output — the round trip is one-way. Code that echoes parsed values back through as_str() will not reproduce this raw string.","triggerScenarios":"Thrown at crates/dbt-schemas/src/schemas/dbt_catalogs_v2.rs:738 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Do not round-trip 'BUILT_IN' through as_str(); retain the original raw string","Normalize tokens so parse(as_str(x)) == x holds for every variant","Keep the one-way token documented next to the match arm"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}