Class ColumnOrder

java.lang.Object
org.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
org.apache.parquet.format.ColumnOrder
All Implemented Interfaces:
Serializable, Comparable<ColumnOrder>, org.apache.thrift.TBase<ColumnOrder,ColumnOrder._Fields>, org.apache.thrift.TSerializable

@Generated(value="Autogenerated by Thrift Compiler (0.23.0)", date="2026-08-06") public class ColumnOrder extends org.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
Union to specify the order used for the min_value and max_value fields for a column. This union takes the role of an enhanced enum that allows rich elements (which will be needed for a collation-based ordering in the future). Possible values are: * TypeDefinedOrder - the column uses the order defined by its logical or physical type (if there is no logical type). * IEEE754TotalOrder - the floating point column uses IEEE 754 total order. If the reader does not support the value of this union, min and max stats for this column should be ignored.
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static enum 
    The set of fields this struct contains, along with convenience methods for finding and manipulating them.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Map<ColumnOrder._Fields,org.apache.thrift.meta_data.FieldMetaData>
     

    Fields inherited from class org.apache.thrift.TUnion

    setField_, value_
  • Constructor Summary

    Constructors
    Constructor
    Description
     
     
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
     
    int
     
     
    enumForId(short id)
     
    boolean
    equals(Object other)
     
    boolean
     
    fieldForId(int fieldId)
     
    protected org.apache.thrift.protocol.TField
     
     
    protected org.apache.thrift.protocol.TStruct
     
    The sort orders for logical types are: UTF8 - unsigned byte-wise comparison INT8 - signed comparison INT16 - signed comparison INT32 - signed comparison INT64 - signed comparison UINT8 - unsigned comparison UINT16 - unsigned comparison UINT32 - unsigned comparison UINT64 - unsigned comparison DECIMAL - signed comparison of the represented value DATE - signed comparison FLOAT16 - signed comparison of the represented value (*) TIME_MILLIS - signed comparison TIME_MICROS - signed comparison TIMESTAMP_MILLIS - signed comparison TIMESTAMP_MICROS - signed comparison INTERVAL - undefined JSON - unsigned byte-wise comparison BSON - unsigned byte-wise comparison ENUM - unsigned byte-wise comparison LIST - undefined MAP - undefined VARIANT - undefined GEOMETRY - undefined GEOGRAPHY - undefined In the absence of logical types, the sort order is determined by the physical type: BOOLEAN - false, true INT32 - signed comparison INT64 - signed comparison INT96 (only used for legacy timestamps) - undefined(+) FLOAT - signed comparison of the represented value (*) DOUBLE - signed comparison of the represented value (*) BYTE_ARRAY - unsigned byte-wise comparison FIXED_LEN_BYTE_ARRAY - unsigned byte-wise comparison (+) While the INT96 type has been deprecated, at the time of writing it is still used in many legacy systems.
    int
     
     
    boolean
     
    boolean
     
    void
     
    void
    The sort orders for logical types are: UTF8 - unsigned byte-wise comparison INT8 - signed comparison INT16 - signed comparison INT32 - signed comparison INT64 - signed comparison UINT8 - unsigned comparison UINT16 - unsigned comparison UINT32 - unsigned comparison UINT64 - unsigned comparison DECIMAL - signed comparison of the represented value DATE - signed comparison FLOAT16 - signed comparison of the represented value (*) TIME_MILLIS - signed comparison TIME_MICROS - signed comparison TIMESTAMP_MILLIS - signed comparison TIMESTAMP_MICROS - signed comparison INTERVAL - undefined JSON - unsigned byte-wise comparison BSON - unsigned byte-wise comparison ENUM - unsigned byte-wise comparison LIST - undefined MAP - undefined VARIANT - undefined GEOMETRY - undefined GEOGRAPHY - undefined In the absence of logical types, the sort order is determined by the physical type: BOOLEAN - false, true INT32 - signed comparison INT64 - signed comparison INT96 (only used for legacy timestamps) - undefined(+) FLOAT - signed comparison of the represented value (*) DOUBLE - signed comparison of the represented value (*) BYTE_ARRAY - unsigned byte-wise comparison FIXED_LEN_BYTE_ARRAY - unsigned byte-wise comparison (+) While the INT96 type has been deprecated, at the time of writing it is still used in many legacy systems.
    protected Object
    standardSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TField field)
     
    protected void
    standardSchemeWriteValue(org.apache.thrift.protocol.TProtocol oprot)
     
    protected Object
    tupleSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, short fieldID)
     
    protected void
    tupleSchemeWriteValue(org.apache.thrift.protocol.TProtocol oprot)
     
     

    Methods inherited from class org.apache.thrift.TUnion

    clear, getFieldValue, getFieldValue, getFieldValue, getSetField, isSet, isSet, isSet, read, setFieldValue, setFieldValue, toString, write

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • metaDataMap

      public static final Map<ColumnOrder._Fields,org.apache.thrift.meta_data.FieldMetaData> metaDataMap
  • Constructor Details

  • Method Details

    • deepCopy

      public ColumnOrder deepCopy()
    • TYPE_ORDER

      public static ColumnOrder TYPE_ORDER(TypeDefinedOrder value)
    • IEEE_754_TOTAL_ORDER

      public static ColumnOrder IEEE_754_TOTAL_ORDER(IEEE754TotalOrder value)
    • checkType

      protected void checkType(ColumnOrder._Fields setField, Object value) throws ClassCastException
      Specified by:
      checkType in class org.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
      Throws:
      ClassCastException
    • standardSchemeReadValue

      protected Object standardSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TField field) throws org.apache.thrift.TException
      Specified by:
      standardSchemeReadValue in class org.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
      Throws:
      org.apache.thrift.TException
    • standardSchemeWriteValue

      protected void standardSchemeWriteValue(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException
      Specified by:
      standardSchemeWriteValue in class org.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
      Throws:
      org.apache.thrift.TException
    • tupleSchemeReadValue

      protected Object tupleSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, short fieldID) throws org.apache.thrift.TException
      Specified by:
      tupleSchemeReadValue in class org.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
      Throws:
      org.apache.thrift.TException
    • tupleSchemeWriteValue

      protected void tupleSchemeWriteValue(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException
      Specified by:
      tupleSchemeWriteValue in class org.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
      Throws:
      org.apache.thrift.TException
    • getFieldDesc

      protected org.apache.thrift.protocol.TField getFieldDesc(ColumnOrder._Fields setField)
      Specified by:
      getFieldDesc in class org.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
    • getStructDesc

      protected org.apache.thrift.protocol.TStruct getStructDesc()
      Specified by:
      getStructDesc in class org.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
    • enumForId

      protected ColumnOrder._Fields enumForId(short id)
      Specified by:
      enumForId in class org.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
    • fieldForId

      public ColumnOrder._Fields fieldForId(int fieldId)
    • getTYPE_ORDER

      public TypeDefinedOrder getTYPE_ORDER()
      The sort orders for logical types are: UTF8 - unsigned byte-wise comparison INT8 - signed comparison INT16 - signed comparison INT32 - signed comparison INT64 - signed comparison UINT8 - unsigned comparison UINT16 - unsigned comparison UINT32 - unsigned comparison UINT64 - unsigned comparison DECIMAL - signed comparison of the represented value DATE - signed comparison FLOAT16 - signed comparison of the represented value (*) TIME_MILLIS - signed comparison TIME_MICROS - signed comparison TIMESTAMP_MILLIS - signed comparison TIMESTAMP_MICROS - signed comparison INTERVAL - undefined JSON - unsigned byte-wise comparison BSON - unsigned byte-wise comparison ENUM - unsigned byte-wise comparison LIST - undefined MAP - undefined VARIANT - undefined GEOMETRY - undefined GEOGRAPHY - undefined In the absence of logical types, the sort order is determined by the physical type: BOOLEAN - false, true INT32 - signed comparison INT64 - signed comparison INT96 (only used for legacy timestamps) - undefined(+) FLOAT - signed comparison of the represented value (*) DOUBLE - signed comparison of the represented value (*) BYTE_ARRAY - unsigned byte-wise comparison FIXED_LEN_BYTE_ARRAY - unsigned byte-wise comparison (+) While the INT96 type has been deprecated, at the time of writing it is still used in many legacy systems. If a Parquet implementation chooses to write statistics for INT96 columns, it is recommended to order them according to the legacy rules: - compare the last 4 bytes (days) as a little-endian 32-bit signed integer - if equal last 4 bytes, compare the first 8 bytes as a little-endian 64-bit signed integer (nanos) See https://github.com/apache/parquet-format/issues/502 for more details (*) Because TYPE_ORDER is ambiguous for floating point types due to underspecified handling of NaN and -0/+0, it is recommended that writers use IEEE_754_TOTAL_ORDER for these types. If TYPE_ORDER is used for floating point types, then the following compatibility rules should be applied when reading statistics: - If the min is a NaN, it should be ignored. - If the max is a NaN, it should be ignored. - If the nan_count field is set, a reader can compute nan_count + null_count == num_values to deduce whether all non-null values are NaN. - If the min is +0, the row group may contain -0 values as well. - If the max is -0, the row group may contain +0 values as well. - When looking for NaN values, min and max should be ignored. If the nan_count field is set, it can be used to check whether NaNs are present. When writing page or column chunk statistics for columns with TYPE_ORDER order, the following rules must be followed: - The nan_count field must be set for floating point types, even if it is zero. - If the nan_count field is set, min and max statistics fields, when present, must not contain NaN values and must be computed from non-NaN values only. This signals to readers that the min and max statistics are reliable for non-NaN values. - If all non-null values are NaN, min and max statistics must not be written. - If the computed max value is zero (whether negative or positive), `+0.0` should be written into the max statistics field. - If the computed min value is zero (whether negative or positive), `-0.0` should be written into the min statistics field. When writing column indexes for columns with TYPE_ORDER order, the following rules must be followed: - NaNs must not be written to min_values or max_values. - If all non-null values of a page are NaN, a column index must not be written for this column chunk because min_values and max_values are required. - If the computed max value is zero (whether negative or positive), `+0.0` should be written into the corresponding max_values entry. - If the computed min value is zero (whether negative or positive), `-0.0` should be written into the corresponding min_values entry.
    • setTYPE_ORDER

      public void setTYPE_ORDER(TypeDefinedOrder value)
      The sort orders for logical types are: UTF8 - unsigned byte-wise comparison INT8 - signed comparison INT16 - signed comparison INT32 - signed comparison INT64 - signed comparison UINT8 - unsigned comparison UINT16 - unsigned comparison UINT32 - unsigned comparison UINT64 - unsigned comparison DECIMAL - signed comparison of the represented value DATE - signed comparison FLOAT16 - signed comparison of the represented value (*) TIME_MILLIS - signed comparison TIME_MICROS - signed comparison TIMESTAMP_MILLIS - signed comparison TIMESTAMP_MICROS - signed comparison INTERVAL - undefined JSON - unsigned byte-wise comparison BSON - unsigned byte-wise comparison ENUM - unsigned byte-wise comparison LIST - undefined MAP - undefined VARIANT - undefined GEOMETRY - undefined GEOGRAPHY - undefined In the absence of logical types, the sort order is determined by the physical type: BOOLEAN - false, true INT32 - signed comparison INT64 - signed comparison INT96 (only used for legacy timestamps) - undefined(+) FLOAT - signed comparison of the represented value (*) DOUBLE - signed comparison of the represented value (*) BYTE_ARRAY - unsigned byte-wise comparison FIXED_LEN_BYTE_ARRAY - unsigned byte-wise comparison (+) While the INT96 type has been deprecated, at the time of writing it is still used in many legacy systems. If a Parquet implementation chooses to write statistics for INT96 columns, it is recommended to order them according to the legacy rules: - compare the last 4 bytes (days) as a little-endian 32-bit signed integer - if equal last 4 bytes, compare the first 8 bytes as a little-endian 64-bit signed integer (nanos) See https://github.com/apache/parquet-format/issues/502 for more details (*) Because TYPE_ORDER is ambiguous for floating point types due to underspecified handling of NaN and -0/+0, it is recommended that writers use IEEE_754_TOTAL_ORDER for these types. If TYPE_ORDER is used for floating point types, then the following compatibility rules should be applied when reading statistics: - If the min is a NaN, it should be ignored. - If the max is a NaN, it should be ignored. - If the nan_count field is set, a reader can compute nan_count + null_count == num_values to deduce whether all non-null values are NaN. - If the min is +0, the row group may contain -0 values as well. - If the max is -0, the row group may contain +0 values as well. - When looking for NaN values, min and max should be ignored. If the nan_count field is set, it can be used to check whether NaNs are present. When writing page or column chunk statistics for columns with TYPE_ORDER order, the following rules must be followed: - The nan_count field must be set for floating point types, even if it is zero. - If the nan_count field is set, min and max statistics fields, when present, must not contain NaN values and must be computed from non-NaN values only. This signals to readers that the min and max statistics are reliable for non-NaN values. - If all non-null values are NaN, min and max statistics must not be written. - If the computed max value is zero (whether negative or positive), `+0.0` should be written into the max statistics field. - If the computed min value is zero (whether negative or positive), `-0.0` should be written into the min statistics field. When writing column indexes for columns with TYPE_ORDER order, the following rules must be followed: - NaNs must not be written to min_values or max_values. - If all non-null values of a page are NaN, a column index must not be written for this column chunk because min_values and max_values are required. - If the computed max value is zero (whether negative or positive), `+0.0` should be written into the corresponding max_values entry. - If the computed min value is zero (whether negative or positive), `-0.0` should be written into the corresponding min_values entry.
    • getIEEE_754_TOTAL_ORDER

      public IEEE754TotalOrder getIEEE_754_TOTAL_ORDER()
    • setIEEE_754_TOTAL_ORDER

      public void setIEEE_754_TOTAL_ORDER(IEEE754TotalOrder value)
    • isSetTYPE_ORDER

      public boolean isSetTYPE_ORDER()
    • isSetIEEE_754_TOTAL_ORDER

      public boolean isSetIEEE_754_TOTAL_ORDER()
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • equals

      public boolean equals(ColumnOrder other)
    • compareTo

      public int compareTo(ColumnOrder other)
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object