-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Description
As per the parquet-format specs the min/max values in statistics are optional. Therefore, it is possible to have numNulls in Statistics while we don't have min/max values. In StatisticsFilter we rely on the method StatisticsFilter.isAllNulls(ColumnChunkMetaData) to handle the case of null min/max values which is not correct due to the described scenario.
We shall check Statistics.hasNonNullValue() any time before using the actual min/max values.
In addition we don't check if the null_count is set or not when reading from the parquet file. We simply use the value which is 0 in case of unset. In the parquet-mr side the Statistics object uses the value 0 to sign that the num_nulls is unset. It is incorrect if we are searching for null values and we falsely drop a column chunk thinking there are no null values but the field in the statistics was simply unset.
Reporter: Gabor Szadovszky / @gszadovszky
Assignee: Gabor Szadovszky / @gszadovszky
Related issues:
- Release Parquet-mr 1.8.3 (blocks)
- Parquet MR bug can lead to incorrect SQL results (causes)
PRs and other links:
Note: This issue was originally created as PARQUET-1217. Please see the migration documentation for further details.