{"record":{"id":"d6194b9e5d4dbbac","repo":"influxdata/influxdb","slug":"no-partition-id-specified-for-parquet-file","errorCode":null,"errorMessage":"no partition id specified for parquet file","messagePattern":"no partition id specified for parquet file","errorType":"exception","errorClass":"ParquetFileProtoError","httpStatus":null,"severity":"error","filePath":"core/data_types/src/lib.rs","lineNumber":1305,"sourceCode":"            file_size_bytes: v.file_size_bytes,\n            row_count: v.row_count,\n            compaction_level: v\n                .compaction_level\n                .try_into()\n                .map_err(|_| ProtoV1ParquetFileError::CompactionLevel)?,\n            created_at: Timestamp::new(v.created_at),\n            column_set: ColumnSet::new(v.column_set.into_iter().map(ColumnId::new)),\n            max_l0_created_at: Timestamp::new(v.max_l0_created_at),\n            source: ParquetFileSource::from_proto(v.source),\n        })\n    }\n}\n\n/// Errors deserialising a protobuf serialised [`ParquetFile`].\n#[derive(Debug, Error)]\npub enum ParquetFileProtoError {\n    /// The proto type does not contain a partition ID.\n    #[error(\"no partition id specified for parquet file\")]\n    NoPartitionId,\n\n    /// The specified object store UUID is invalid.\n    #[error(\"invalid object store ID: {0}\")]\n    InvalidObjectStoreId(uuid::Error),\n\n    /// The specified compaction level value is invalid.\n    #[error(transparent)]\n    InvalidCompactionLevel(#[from] CompactionLevelProtoError),\n}\n\n/// Value for a `parquet_file` record's `max_l0_created_at` field. If `MaxL0CreatedAt::Computed`,\n/// the value came from the computation of the maximum of the `created_at` attributes of the source\n/// files compacted into this file. If `MaxL0CreatedAt::SameAsCreatedAt`, this file was not created\n/// from other files (that is, it was created via ingest) and its `max_l0_created_at` field should\n/// be set to the same value for `created_at` that the catalog will assign.\n#[derive(Debug, Copy, Clone, PartialEq, Eq)]\npub enum MaxL0CreatedAt {","sourceCodeStart":1287,"sourceCodeEnd":1323,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/core/data_types/src/lib.rs#L1287-L1323","documentation":"ParquetFileProtoError::NoPartitionId is raised when deserializing a protobuf-serialized ParquetFile that lacks a partition ID field entirely. Every ParquetFile must be associated with a partition, so the library treats its absence as a hard deserialization failure.","triggerScenarios":"Deserializing a ParquetFile proto message where the partition id field was never set (None/0 default absent), typically when reading catalog records written incompletely or by buggy writers.","commonSituations":"Partial catalog writes that skipped the partition id; older record formats predating the partition-id field; manual proto construction in tests/tools omitting the field.","solutions":["Ensure the partition id is set on the ParquetFile proto before serializing/storing","Repair existing records by backfilling the correct partition id","Re-generate the ParquetFile record so it references a valid partition"],"exampleFix":"// before\nParquetFileProto { partition_id: None, .. }\n// after\nParquetFileProto { partition_id: Some(partition_id), .. }","handlingStrategy":"validation","validationCode":"fn parquet_file_proto_ok(pf: &ParquetFileProto) -> bool {\n    pf.partition_id.is_some()\n}","typeGuard":null,"tryCatchPattern":"let pf = ParquetFile::try_from(proto).map_err(|e| match e {\n    ParquetFileProtoError::NoPartitionId => anyhow!(\"parquet file {} missing partition id\", proto.id),\n    other => anyhow!(other),\n})?;","preventionTips":["Always set partition_id when constructing ParquetFile protos","Backfill partition ids on records created before the field existed","Reject writes of ParquetFile protos without a partition id at the catalog boundary"],"tags":["rust","protobuf","parquet","missing-field"],"backgroundTag":"missing-required-argument","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"}