Repository navigation
Description
Indeed, as part of adding the Adaptive Lossless Floating-Point encoding to the Parquet standard, we should provide sample files in the parquet-testing repo that other implementations can use to verify they correctly read such files
Quoting @CurtHagenlocher on the dev list
As part of the process of amending the Parquet format, perhaps it would be a good idea for early implementations to generate sample files and commit them to apache/parquet-testing: Apache Parquet Testing for other implementations to leverage?
Suggested Requirements
Size
Given that the parquet-format repository is checked out many times by many different repositories as part of CI, it is important to keep the size of these example files down. They should typically be no more than a few kb in size at most
Reference Values
I suggest we follow the model of BYTE_STREAM_SPLIT (see here) and create a single parquet file that has multiple columns with the different test and validation sets.
For example, one column of PLAIN encoded f32 and a column of PLAIN encoded f64 as baseline and then several columns of the same data encoded using ALP with different parameters (to cover parts of the spec)
ALP / patterns
We should ensure the dataset has ALP data with the following properties:
- Vectors with no exceptions
- Vectors with 1 exception
- Vectors with many exceptions
- Vectors with NAN, INF, etc
- Vectors with many/most exceptions (e.g. random float data)
- Vectors with ALL exception
- Vectors with NULL values
- A page with multiple Vectors that have different exponents/values
- All possible ALP bit widths sizes (1 -> 15 == 65k)
- Both f32 and f64
- a. Null values
Documentation
Here is some other Documentation that I think shows the best practice
Activity
pitrou commentedon Jul 21, 2026
Do you mean log2 vector size?
alamb commentedon Aug 3, 2026
I spent some time designing what I think would be an example file that covers all the relevant corner cases.
byte_stream_split_extended.gzip.parquet)Columns
float_plain,double_plainfloat_alp_1024,double_alp_1024float_alp_4096,double_alp_4096log_vector_sizefrom the page header rather than assume 1024float_alp_32,double_alp_32Data distribution (9000 rows)
Base distribution: random values in [-10.00, 10.00] with exactly 2 decimal digits (e.g. 9.43) — losslessly encodable by ALP, so base values produce zero exceptions.
Total row count is deliberately not a multiple of any vector size to ensure coverage of incomplete vectors
5e-324double /1e-45float)nan_count, −0.0/+0.0 normalization)3.141592653589793at 250044974934523.343at 3100 and-1243432432.3432at 3711random() * 20 - 10unrounded), rest base7.77)Documentation
Following the model of Additional types and the variant README, the PR should add a
data/README.mdsection with: the schema, the row-range table above, and verification instructions.alamb commentedon Aug 4, 2026
Here is my proposal: