Bumping up this thread.

I submitted a PR to change the Arrow docs here - 
https://github.com/apache/arrow/pull/50810

@alamb suggested that it should go through the mailing list first, because the 
changes can be considered as changing the spec.

Please take a look and let me know what you think.

Thanks,
Kosta



Sent with Proton Mail secure email.

On Thursday, July 23rd, 2026 at 6:32 PM, Kosta Tarasov 
<[email protected]> wrote:

> Hi everyone,
> 
> I was reviewing a PR (https://github.com/apache/arrow-rs/pull/10417) for an 
> issue in arrow-rs - https://github.com/apache/arrow-rs/issues/10416 - and 
> discovered an inconsistency between the Arrow spec and the Parquet spec.
> 
> The issue proposed adding Unsigned integer typed_value support for Shredded 
> Variant based on the Arrow spec - 
> https://arrow.apache.org/docs/format/CanonicalExtensions.html#parquet-variant
> 
> It says - "A field named typed_value which can be a Primitive Type Mappings 
> or a List, LargeList, ListView or Struct". Where Primitive Type Mapping is 
> https://arrow.apache.org/docs/format/CanonicalExtensions.html#primitive-type-mappings
> 
> This table is inconsistent with the Shredded Value Types table in the Parquet 
> Shredding Spec - 
> https://github.com/apache/parquet-format/blob/master/VariantShredding.md#shredded-value-types
> 
> Among other differences, the Arrow table allows Uint8/16/32 and Null 
> typed_value columns, which have no valid Parquet shredded representation and 
> can never round trip through Parquet. Implementations have already diverged 
> over this: arrow-rs rejects unsigned typed_value, while Arrow Go accepts it 
> and writes it to Parquet as INT(8/16/32, false), which the shredding spec 
> does not allow.
> 
> I propose refreshing the Arrow Parquet Variant spec table based on the one in 
> the Parquet Shredding spec.
> 
> I filed an issue in the Arrow repo with the proposed table - 
> https://github.com/apache/arrow/issues/50622
> 
> Thank you,
> Kosta

Reply via email to