{"record":{"id":"c7d461e203eacb91","repo":"dbt-labs/dbt-core","slug":"only-snowflake-bigquery-ever-egress-info-schema","errorCode":null,"errorMessage":"only Snowflake/Bigquery ever egress INFO_SCHEMA","messagePattern":"only Snowflake/Bigquery ever egress INFO_SCHEMA","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-schemas/src/schemas/dbt_catalogs_v2.rs","lineNumber":736,"sourceCode":"\n    pub fn parse_from_str(raw: &str, adapter_type: dbt_adapter_core::AdapterType) -> Self {\n        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}","sourceCodeStart":718,"sourceCodeEnd":754,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-schemas/src/schemas/dbt_catalogs_v2.rs#L718-L754","documentation":"Invariant marker in CatalogType::parse_from_str (catalogs v2): the INFO_SCHEMA egress token is only ever selected for Snowflake and BigQuery adapters. The parser accepts the adapter-specific raw string, but the gate guarantees no other adapter can reach the INFO_SCHEMA path — reaching it for another adapter would be a dispatch bug.","triggerScenarios":"Thrown at crates/dbt-schemas/src/schemas/dbt_catalogs_v2.rs:736 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Keep INFO_SCHEMA handling gated on AdapterType::Snowflake | AdapterType::Bigquery","Return a validation error if another adapter attempts to select INFO_SCHEMA","Add a pinning test whenever a new INFO_SCHEMA-capable adapter is introduced"],"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"}