{"record":{"id":"d8bc598f76fc4f14","repo":"influxdata/influxdb","slug":"unknown-field-0","errorCode":null,"errorMessage":"Unknown field: {0}","messagePattern":"Unknown field: (.+?)","errorType":"error_code","errorClass":"ProjectionError","httpStatus":null,"severity":"error","filePath":"core/parquet_file/src/storage.rs","lineNumber":445,"sourceCode":"                .expect(\"valid object store URL\"),\n            object_store: Arc::clone(&self.object_store),\n            object_meta: ObjectMeta {\n                location: path.object_store_path(),\n                // we don't care about the \"last modified\" field\n                last_modified: Default::default(),\n                size: file_size,\n                e_tag: None,\n                version: None,\n            },\n        }\n    }\n}\n\n/// Error during projecting parquet file data to an expected schema.\n#[derive(Debug, Error)]\npub enum ProjectionError {\n    /// Unknown field.\n    #[error(\"Unknown field: {0}\")]\n    UnknownField(String),\n\n    /// Field type mismatch\n    #[error(\"Type mismatch, expected {expected:?} but got {actual:?}\")]\n    FieldTypeMismatch {\n        /// Expected field.\n        expected: Field,\n\n        /// Actual field.\n        actual: Field,\n    },\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n    use arrow::{\n        array::{ArrayRef, Int64Array, StringArray},","sourceCodeStart":427,"sourceCodeEnd":463,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/core/parquet_file/src/storage.rs#L427-L463","documentation":"ProjectionError::UnknownField is raised when projecting a parquet file's schema onto an expected schema and a field present in the query/expected schema cannot be found in the file's schema. It carries the offending field name.","triggerScenarios":"Reading a parquet file whose schema lacks a column that the caller's projection/expected schema requires.","commonSituations":"Schema drift: querying an older parquet file for a column added later; a typo'd field name in a projection; mixing files written by different schema versions.","solutions":["Verify the field name against the file's actual schema (parquet metadata) before projecting","Handle files from older schema versions by excluding or defaulting missing fields","Regenerate/re-write the file with the current schema if it is stale"],"exampleFix":"// before\nlet proj = schema.fields.iter().map(|f| f.name.clone());\n// after\nlet file_fields: HashSet<_> = file_schema.fields.iter().map(|f| f.name.clone()).collect();\nlet proj: Vec<_> = schema.fields.iter().filter(|f| file_fields.contains(f.name())).collect();","handlingStrategy":"validation","validationCode":"let file_names: HashSet<&str> = file_schema.fields.iter().map(|f| f.name().as_str()).collect();\nlet missing: Vec<_> = expected.fields.iter().filter(|f| !file_names.contains(f.name().as_str())).map(|f| f.name().clone()).collect();\nif !missing.is_empty() { return Err(missing); }","typeGuard":null,"tryCatchPattern":"match project(&file, &expected) {\n    Err(ProjectionError::UnknownField(name)) => handle_missing_field(&name),\n    Err(e) => return Err(e.into()),\n    Ok(b) => b,\n}","preventionTips":["Read the parquet footer schema and intersect with the expected schema before projecting","Pin schema versions and handle old files explicitly"],"tags":["parquet","schema","projection"],"backgroundTag":"schema-validation-failed","analyzedSha":"06200ef96ba82c5f6727e5038a83af8e722c6875","analyzedAt":"2026-09-19T12:55:30.003Z","contentChangedAt":"2026-09-19T12:55:30.003Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}