{"record":{"id":"58327fe5269a5e1d","repo":"influxdata/influxdb","slug":"unsupported-data-type-in-catalog-other","errorCode":null,"errorMessage":"unsupported data type in catalog {other:?}","messagePattern":"unsupported data type in catalog (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"influxdb3_catalog/src/snapshot/versions/v1.rs","lineNumber":305,"sourceCode":"        }\n    }\n}\n\n// NOTE: Ideally, we will remove the need for the InfluxFieldType, and be able\n// to use Arrow's DataType directly. If that happens, this conversion will need\n// to support the entirety of Arrow's DataType enum, which is why [`DataType`]\n// has been defined to mimic the Arrow type.\n//\n// See <https://github.com/influxdata/influxdb_iox/issues/11111>\nimpl From<DataType> for InfluxFieldType {\n    fn from(data_type: DataType) -> Self {\n        match data_type {\n            DataType::Bool => Self::Boolean,\n            DataType::I64 => Self::Integer,\n            DataType::U64 => Self::UInteger,\n            DataType::F64 => Self::Float,\n            DataType::Str => Self::String,\n            other => unimplemented!(\"unsupported data type in catalog {other:?}\"),\n        }\n    }\n}\n\nimpl From<&DataType> for InfluxFieldType {\n    fn from(data_type: &DataType) -> Self {\n        match data_type {\n            DataType::Bool => Self::Boolean,\n            DataType::I64 => Self::Integer,\n            DataType::U64 => Self::UInteger,\n            DataType::F64 => Self::Float,\n            DataType::Str => Self::String,\n            other => unimplemented!(\"unsupported data type in catalog {other:?}\"),\n        }\n    }\n}\n\n#[cfg(test)]","sourceCodeStart":287,"sourceCodeEnd":323,"githubUrl":"https://github.com/influxdata/influxdb/blob/06200ef96ba82c5f6727e5038a83af8e722c6875/influxdb3_catalog/src/snapshot/versions/v1.rs#L287-L323","documentation":"This panic comes from `From<DataType> for InfluxFieldType` in the catalog snapshot v1 code. `InfluxFieldType` only models the classic InfluxDB field types (Boolean, Integer, UInteger, Float, String); any other catalog `DataType` (e.g. Time, Bin, or the newer type variants) triggers `unimplemented!(\"unsupported data type in catalog {other:?}\")`, which panics and includes the offending type in the message. It marks the gap between the catalog's richer type model and the legacy field-type model.","triggerScenarios":"Converting a catalog `DataType` that is not Bool/I64/U64/F64/Str into `InfluxFieldType` — e.g. a tag/table column typed as `DataType::Time(..)`, `DataType::Bin`, `DataType::I8`, `DataType::F16`, or any snapshot type added without updating this conversion.","commonSituations":"Opening or loading a catalog snapshot written by a newer InfluxDB3 version whose `DataType` enum gained variants; a column typed as timestamp or binary being converted to an Influx field type; tests exercising all `DataType` variants.","solutions":["Check the panic message's `{other:?}` to identify the unsupported `DataType` variant, then change the schema/column to one of Bool, I64, U64, F64, or Str.","Ensure the catalog snapshot files were written by a compatible InfluxDB3 version, or migrate them so all column types map to the five supported field types.","If you maintain the code, extend `From<DataType> for InfluxFieldType` (and its `&DataType` twin below) to map the new variants, or return a descriptive error instead of `unimplemented!()`."],"exampleFix":"// before\nother => unimplemented!(\"unsupported data type in catalog {other:?}\"),\n// after\nDataType::Time(unit, tz) => Self::String, // or map appropriately\nother => return Err(CatalogError::UnsupportedFieldType(other.clone())),","handlingStrategy":"validation","validationCode":"fn is_influx_field_type(dt: &DataType) -> bool {\n    matches!(\n        dt,\n        DataType::Bool | DataType::I64 | DataType::U64 | DataType::F64 | DataType::Str\n    )\n}\n// assert!(is_influx_field_type(&column_type)) before From::<InfluxFieldType>","typeGuard":"fn is_field_convertible(dt: &DataType) -> bool {\n    matches!(\n        dt,\n        DataType::Bool | DataType::I64 | DataType::U64 | DataType::F64 | DataType::Str\n    )\n}","tryCatchPattern":null,"preventionTips":["Only convert columns of type Bool/I64/U64/F64/Str into InfluxFieldType.","Check catalog snapshot version compatibility before loading files written by newer versions.","Read the panic's `{other:?}` debug output to pinpoint the offending variant quickly.","Keep both `From<DataType>` and `From<&DataType>` for InfluxFieldType in sync when adding variants."],"tags":["catalog","schema","panic","type-conversion"],"backgroundTag":"method-not-implemented","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"}