[ 
https://issues.apache.org/jira/browse/PARQUET-1217?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gabor Szadovszky updated PARQUET-1217:
--------------------------------------
    Fix Version/s: 1.8.3

> Incorrect handling of missing values in Statistics
> --------------------------------------------------
>
>                 Key: PARQUET-1217
>                 URL: https://issues.apache.org/jira/browse/PARQUET-1217
>             Project: Parquet
>          Issue Type: Bug
>    Affects Versions: 1.5.0, 1.6.0, 1.7.0, 1.8.0, 1.9.0, 1.10.0
>            Reporter: Gabor Szadovszky
>            Assignee: Gabor Szadovszky
>            Priority: Major
>             Fix For: 1.10.0, 1.8.3
>
>
> 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)|https://github.com/apache/parquet-mr/blob/master/parquet-hadoop/src/main/java/org/apache/parquet/filter2/statisticslevel/StatisticsFilter.java#L90]
>  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.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to