FWIW, there is a file "unknown-logical-type.parquet" in the parquet-testing 
data directory. My version of parquet-cli (1.14.4) fails to read this file.

Cheers,
Ed

On 2026/07/02 05:14:58 Kevin Liu wrote:
> We've discussed this issue during the parquet sync today. 
> 
> To summarize: 
> - We agreed that this is a bug and should be fixed. I'll put up a PR for it. 
> - I proposed to backport the fix and create patch releases so older 
> parquet-java versions can be fixed without being forced to upgrade to newer 
> versions. 
> - I’ll also do some follow-up testing across other popular implementations, 
> since this behavior may not be limited to parquet-java. Will mentioned that 
> Go and FastParquet will crash with new logical types.
> - There was a suggestion to add the “unknown logical type” case to to the 
> parquet testing suite.​
> 
> Best,
> Kevin Liu​
> 
> 
> On 2026/07/01 04:28:14 Kevin Liu wrote:
> > Thanks Micah! I wanted to confirm my understanding. 
> > I would love to fix older readers so they can still open parquet files with 
> > the variant type. Do you think its worth backporting a fix to older readers 
> > as a patch release? 
> > 
> > I'll also do some research for other parquet clients based on when they 
> > added support for the variant type and their corresponding behavior for 
> > older readers. 
> > 
> > Best,
> > Kevin Liu
> > 
> > On 2026/06/30 19:13:45 Micah Kornfield wrote:
> > > Hi Kevin,
> > > 
> > > This sounds like a bug.
> > > 
> > > if an older reader sees a logical type
> > > > it does not know how to decode, should it treat that logical annotation 
> > > > as
> > > > absent, preserve the physical schema, and continue as long as the
> > > > unsupported column is not interpreted semantically?
> > > 
> > > 
> > > I think most implementations that support it, go even further and still
> > > allow the column to be projected.  The main other thing that unknown
> > > logical types should do is not surface statistics (as that is a form of
> > > semantic interpretation).
> > > 
> > > Cheers,
> > > Micah
> > > 
> > > 
> > > 
> > > On Sat, Jun 27, 2026 at 11:01 AM Kevin Liu <[email protected]> wrote:
> > > 
> > > > Hi all,
> > > >
> > > > I wanted to ask for guidance on the expected behavior for older
> > > > parquet-java readers when reading a file that contains a newer logical
> > > > type.
> > > >
> > > > In PARQUET-3633 [1], parquet-java 1.15.x fails while opening a file 
> > > > with a
> > > > VARIANT column, even when the read projection only requests a separate 
> > > > id
> > > > column. The failure happens during footer schema conversion, before
> > > > projection is applied. I put up a small repro PR here [2].
> > > >
> > > > VARIANT was added in parquet-format 2.12.0 and picked up by parquet-java
> > > > starting in the 1.16 line. parquet-java 1.15.x uses parquet-format 
> > > > 2.10.0,
> > > > so this is an older-reader/newer-logical-type compatibility case. I’m
> > > > looking at the parquet-format compatibility guidance [3], which calls 
> > > > out
> > > > adding new logical types as a forward-compatible change. In this case, 
> > > > I’d
> > > > expect parquet-java 1.15.x not to understand VARIANT semantics, but 
> > > > still
> > > > to tolerate the annotation in the footer, preserve the physical schema, 
> > > > and
> > > > allow reads that only project non-VARIANT columns.
> > > >
> > > > The behavior I’m wondering about is: if an older reader sees a logical 
> > > > type
> > > > it does not know how to decode, should it treat that logical annotation 
> > > > as
> > > > absent, preserve the physical schema, and continue as long as the
> > > > unsupported column is not interpreted semantically? That would allow
> > > > projected reads of unrelated columns to succeed without implying that 
> > > > the
> > > > older reader understands VARIANT.
> > > >
> > > > I also sketched one possible fix/regression test here [4]. It treats
> > > > unknown LogicalType union fields as absent during footer conversion, 
> > > > keeps
> > > > the physical schema usable, and verifies that reading only the 
> > > > projected id
> > > > column succeeds for the shredded_variant/case-001.parquet fixture from
> > > > apache/parquet-testing.
> > > >
> > > > Does that match the intended forward-compatibility behavior for new 
> > > > logical
> > > > types?
> > > >
> > > > Thanks,
> > > >
> > > > Kevin
> > > >
> > > > [1] https://github.com/apache/parquet-java/issues/3633
> > > > [2] https://github.com/kevinjqliu/parquet-java/pull/1
> > > > [3]
> > > >
> > > > https://github.com/apache/parquet-format/blob/master/CONTRIBUTING.md#compatibility-and-feature-enablement
> > > > [4] https://github.com/kevinjqliu/parquet-java/pull/2
> > > >
> > > 
> > 
> 

Reply via email to