Hi Andrew, I think the the confusion is that there are two methods for denoting semantically logical types in Parquet:
1. Converted Types [1] which are deprecated. It was discovered enum's were not sufficient to describe everything that would be desirable in a logic type 2. LogicalType [2] which is a replacement for Converted types (this is currently the recommended way to communicate logical types). The language in the Thrift files indicates that writers should write out both Converted Type and Logical Type to ensure backwards compatibility, but at this point I would guess most readers are relying on logical type. Hope this helps. Thanks, Micah [1] https://github.com/apache/parquet-format/blob/786142e26740487930ddc3ec5e39d780bd930907/src/main/thrift/parquet.thrift#L49 [2] https://github.com/apache/parquet-format/blob/786142e26740487930ddc3ec5e39d780bd930907/src/main/thrift/parquet.thrift#L471 On Thu, Nov 13, 2025 at 9:54 AM Andrew Bell <[email protected]> wrote: > Hi, > > I think I heard (or read in some code) that logical types are deprecated or > shouldn't be used. But the parquet::arrow::FileWriter uses these when > creating a schema for types smaller than 32 bits and for unsigned types. > Can someone explain the current expectations WRT logical types. > > Thanks, > > -- > Andrew Bell > [email protected] >
