You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Field metadata for dictionary-encoded extension types is lost #7982
The representation of Dictionary in the data types enum seems to exclude field metadata, so extension types are dropped when they go through arrow-rs structures:
The definition of RunEndEncoded and others seem to use a FieldRef and I'm wondering if it was a deliberate choice not to do this or whether it's just never come up.
The IPC flatbuffers format doesn't allow for field metadata on the dictionary value type, which I'm guessing why it never made it to the DataType enum. Arrow C++ handles this ambiguity at IPC deserialization time via the extension registry (if the extension type rejects Dictionary as a storage type, value type gets the extension metadata instead and is then deserialized). Functionally there are no extension types that actually support dictionary storage (except maybe arrow.opaque, which can have any storage type but is usually binary), so the value type is almost always the thing that should have the extension. metadata.
Activity
paleolimbot commentedon Apr 7, 2026
Just updating this while the details are fresh in my head from apache/arrow-nanoarrow#861 :
The IPC flatbuffers format doesn't allow for field metadata on the dictionary value type, which I'm guessing why it never made it to the DataType enum. Arrow C++ handles this ambiguity at IPC deserialization time via the extension registry (if the extension type rejects Dictionary as a storage type, value type gets the extension metadata instead and is then deserialized). Functionally there are no extension types that actually support dictionary storage (except maybe arrow.opaque, which can have any storage type but is usually binary), so the value type is almost always the thing that should have the extension. metadata.
Add `custom_metadata` to IPC `DictionaryEncoding`
Add `custom_metadata` to IPC `DictionaryEncoding`