{"record":{"id":"25df4cfb6d8184ca","repo":"dbt-labs/dbt-core","slug":"dbtquoting-resolvedquoting-conversion","errorCode":null,"errorMessage":"DbtQuoting -> ResolvedQuoting conversion","messagePattern":"DbtQuoting -> ResolvedQuoting conversion","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/dbt-parser/src/resolve/resolve_seeds.rs","lineNumber":395,"sourceCode":"                    .clone()\n                    .map(Into::into)\n                    .unwrap_or_default(),\n                classifiers: Default::default(),\n                meta: properties_config.meta.clone().unwrap_or_default(),\n            },\n            __base_attr__: NodeBaseAttributes {\n                adapter: selected_adapter,\n                propagate: selected_propagate,\n                database: database.to_string(), // will be updated below\n                schema: schema.to_string(),     // will be updated below\n                alias: \"\".to_owned(),           // will be updated below\n                relation_name: None,            // will be updated below\n                columns,\n                depends_on: NodeDependsOn::default(),\n                quoting: properties_config\n                    .quoting\n                    .try_into()\n                    .expect(\"DbtQuoting -> ResolvedQuoting conversion\"),\n                materialized: DbtMaterialization::Table,\n                static_analysis_off_reason: (*static_analysis == StaticAnalysisKind::Off)\n                    .then_some(StaticAnalysisOffReason::ConfiguredOff),\n                static_analysis,\n                unrendered_config,\n                persist_docs: properties_config.persist_docs.clone(),\n                ..Default::default()\n            },\n            __seed_attr__: DbtSeedAttr {\n                quote_columns: properties_config.quote_columns.unwrap_or(false),\n                column_types: properties_config.column_types.clone(),\n                delimiter: properties_config.delimiter.clone().map(|d| d.into_inner()),\n                root_path: Some(seed_file.base_path.clone()),\n                catalog_name: properties_config.catalog_name.clone(),\n            },\n            __other__: BTreeMap::new(),\n            deprecated_config: properties_config.clone().into(),\n        };","sourceCodeStart":377,"sourceCodeEnd":413,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-parser/src/resolve/resolve_seeds.rs#L377-L413","documentation":"Panic \"DbtQuoting -> ResolvedQuoting conversion\" occurs in NodeBaseAttributes for seeds when `properties_config.quoting.try_into::<ResolvedQuoting>()` returns Err. Like the model case, this conversion should be total; failure signals an unexpected field/value combination in the seed's quoting config.","triggerScenarios":"Building NodeBaseAttributes for a seed whose properties_config.quoting carries a value the TryFrom impl cannot map (e.g., a newly added DbtQuoting field or an incompatible enum variant).","commonSituations":"Seed YAML with quoting keys that the parser's ResolvedQuoting type doesn't support; version drift where DbtQuoting gained fields before the conversion was updated.","solutions":["Update the TryFrom<DbtQuoting> for ResolvedQuoting impl to cover the failing field/variant.","Normalize or drop unsupported quoting keys for seeds before conversion.","Propagate the error with seed name context instead of expect."],"exampleFix":"// before\nquoting: properties_config.quoting.try_into().expect(\"DbtQuoting -> ResolvedQuoting conversion\"),\n// after\nquoting: properties_config.quoting.clone().try_into().unwrap_or_default(),","handlingStrategy":"fallback","validationCode":"let rq: Result<ResolvedQuoting, _> = properties_config.quoting.clone().try_into();\nif rq.is_err() { eprintln!(\"seed quoting not convertible: {:?}\", properties_config.quoting); }","typeGuard":"fn convertible_seed_quoting(q: &DbtQuoting) -> bool { ResolvedQuoting::try_from(q.clone()).is_ok() }","tryCatchPattern":"let quoting: ResolvedQuoting = properties_config.quoting.clone().try_into().unwrap_or_default();","preventionTips":["Keep seed quoting keys within the supported set","Add conversion round-trip tests for ResolvedQuoting","Update conversions when DbtQuoting changes"],"tags":["rust","seeds","config","conversion"],"backgroundTag":"type-mismatch","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"}