Package org.apache.parquet.format
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 ClassesModifier and TypeClassDescriptionstatic enumThe set of fields this struct contains, along with convenience methods for finding and manipulating them. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Map<ColumnOrder._Fields,org.apache.thrift.meta_data.FieldMetaData> Fields inherited from class org.apache.thrift.TUnion
setField_, value_ -
Constructor Summary
ConstructorsConstructorDescriptionColumnOrder(ColumnOrder other) ColumnOrder(ColumnOrder._Fields setField, Object value) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcheckType(ColumnOrder._Fields setField, Object value) intcompareTo(ColumnOrder other) deepCopy()protected ColumnOrder._FieldsenumForId(short id) booleanbooleanequals(ColumnOrder other) fieldForId(int fieldId) protected org.apache.thrift.protocol.TFieldgetFieldDesc(ColumnOrder._Fields setField) protected org.apache.thrift.protocol.TStructThe 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.inthashCode()static ColumnOrderbooleanbooleanvoidvoidsetTYPE_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.protected ObjectstandardSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TField field) protected voidstandardSchemeWriteValue(org.apache.thrift.protocol.TProtocol oprot) protected ObjecttupleSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, short fieldID) protected voidtupleSchemeWriteValue(org.apache.thrift.protocol.TProtocol oprot) static ColumnOrderTYPE_ORDER(TypeDefinedOrder value) Methods inherited from class org.apache.thrift.TUnion
clear, getFieldValue, getFieldValue, getFieldValue, getSetField, isSet, isSet, isSet, read, setFieldValue, setFieldValue, toString, write
-
Field Details
-
metaDataMap
-
-
Constructor Details
-
ColumnOrder
public ColumnOrder() -
ColumnOrder
-
ColumnOrder
-
-
Method Details
-
deepCopy
-
TYPE_ORDER
-
IEEE_754_TOTAL_ORDER
-
checkType
- Specified by:
checkTypein classorg.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:
standardSchemeReadValuein classorg.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:
standardSchemeWriteValuein classorg.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:
tupleSchemeReadValuein classorg.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:
tupleSchemeWriteValuein classorg.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields> - Throws:
org.apache.thrift.TException
-
getFieldDesc
- Specified by:
getFieldDescin classorg.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
-
getStructDesc
protected org.apache.thrift.protocol.TStruct getStructDesc()- Specified by:
getStructDescin classorg.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
-
enumForId
- Specified by:
enumForIdin classorg.apache.thrift.TUnion<ColumnOrder,ColumnOrder._Fields>
-
fieldForId
-
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
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
-
setIEEE_754_TOTAL_ORDER
-
isSetTYPE_ORDER
public boolean isSetTYPE_ORDER() -
isSetIEEE_754_TOTAL_ORDER
public boolean isSetIEEE_754_TOTAL_ORDER() -
equals
-
equals
-
compareTo
-
hashCode
public int hashCode()
-