diff --git a/LogicalTypes.md b/LogicalTypes.md index b55a90884..9d2656e8e 100644 --- a/LogicalTypes.md +++ b/LogicalTypes.md @@ -256,6 +256,16 @@ The primitive type is a 2-byte `FIXED_LEN_BYTE_ARRAY`. The sort order for `FLOAT16` is signed (with special handling of NANs and signed zeros); it uses the same [logic](https://github.com/apache/parquet-format#sort-order) as `FLOAT` and `DOUBLE`. +### FIXED_SIZE_LIST + +The `FIXED_SIZE_LIST` annotation represents a fixed-size list of elements +of a non-array primitive data type. It must annotate a `FIXED_LEN_BYTE_ARRAY` primitive type. + +The `FIXED_LEN_BYTE_ARRAY` data is interpreted as a fixed size sequence of +elements of the same primitive data type encoded with plain encoding. + +The sort order used for `FIXED_SIZE_LIST` is undefined. + ## Temporal Types ### DATE diff --git a/src/main/thrift/parquet.thrift b/src/main/thrift/parquet.thrift index 934b3cadd..866c9748f 100644 --- a/src/main/thrift/parquet.thrift +++ b/src/main/thrift/parquet.thrift @@ -289,6 +289,10 @@ struct ListType {} // see LogicalTypes.md struct EnumType {} // allowed for BYTE_ARRAY, must be encoded with UTF-8 struct DateType {} // allowed for INT32 struct Float16Type {} // allowed for FIXED[2], must encoded raw FLOAT16 bytes +struct FixedSizeListType { // allowed for FIXED_LEN_BYTE_ARRAY[num_values * width of type], + 1: required Type type; // see LogicalTypes.md + 2: required i32 num_values; +} /** * Logical type to annotate a column that is always null. @@ -397,12 +401,14 @@ union LogicalType { 8: TimestampType TIMESTAMP // 9: reserved for INTERVAL - 10: IntType INTEGER // use ConvertedType INT_* or UINT_* - 11: NullType UNKNOWN // no compatible ConvertedType - 12: JsonType JSON // use ConvertedType JSON - 13: BsonType BSON // use ConvertedType BSON - 14: UUIDType UUID // no compatible ConvertedType - 15: Float16Type FLOAT16 // no compatible ConvertedType + 10: IntType INTEGER // use ConvertedType INT_* or UINT_* + 11: NullType UNKNOWN // no compatible ConvertedType + 12: JsonType JSON // use ConvertedType JSON + 13: BsonType BSON // use ConvertedType BSON + 14: UUIDType UUID // no compatible ConvertedType + 15: Float16Type FLOAT16 // no compatible ConvertedType + // 16: reserved for GEOMETRY + 17: FixedSizeListType FIXED_SIZE_LIST // no compatible ConvertedType } /**