Class ParquetFieldIdColumnResolverFactory

java.lang.Object
io.deephaven.parquet.table.location.ParquetFieldIdColumnResolverFactory
All Implemented Interfaces:
ParquetColumnResolver.Factory

public final class ParquetFieldIdColumnResolverFactory extends Object implements ParquetColumnResolver.Factory
This ParquetColumnResolver.Factory resolves Parquet columns via field ids. The field ids are considered for resolution no matter what level in the schema they exist. For example, the following schema has field ids at different levels:
 message root {
   required int32 X = 42;
   required group Y (LIST) = 43 {
     repeated group list {
       required int32 element;
     }
   }
   required group Z (LIST) {
     repeated group list {
       required int32 element = 44;
     }
   }
 }
 
In this example, 42 would be resolvable to [X], 43 would be resolvable to [Y, list, element], and 44 would be resolvable to [Z, list, element].

If a schema has ambiguous field ids (according to this implementation's definition), the resolution will fail if the user requests those field ids. For example:

 message root {
   required int32 X = 42;
   required group Y (LIST) = 43 {
     repeated group list {
       required int32 element;
     }
   }
   required group Z (LIST) {
     repeated group list {
       required int32 element = 42;
     }
   }
 }
 
In this example, if 42 was requested, resolution would fail because it is ambiguous between paths [X] and [Z, list, element]. If 43 was requested, resolution would succeed.