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

Zoltán Borók-Nagy resolved IMPALA-15640.
----------------------------------------
    Resolution: Fixed

> Parquet writer accumulates BOOLEAN column statistics across files
> -----------------------------------------------------------------
>
>                 Key: IMPALA-15640
>                 URL: https://issues.apache.org/jira/browse/IMPALA-15640
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Backend
>            Reporter: Zoltán Borók-Nagy
>            Assignee: Zoltán Borók-Nagy
>            Priority: Critical
>              Labels: correctness
>             Fix For: Impala 5.0.0
>
>
> {{HdfsParquetTableWriter::BoolColumnWriter}} doesn't override {{Reset()}}, so 
> its page and row group statistics are not reset when the writer starts a new 
> file. When a fragment instance writes several files, e.g. because of 
> PARQUET_FILE_SIZE, the statistics of a BOOLEAN column also include the values 
> of the previous files: min/max is their union, and null_count is cumulative. 
> The Parquet scanner skips row groups where null_count equals num_values for 
> min/max predicates, so queries return wrong results. Iceberg tables also 
> record these statistics in their manifests, so Iceberg can skip such files 
> too.
> {code:sql}
> set parquet_file_size=8m;
> set num_nodes=1;
> set compression_codec=none;
> create table t (b boolean, s string) stored as parquet;
> insert into t
> select if(id <= 8095, null, true), lpad(cast(id as string), 1000, 'x')
> from (select row_number() over (order by a.id) as id
>       from functional.alltypes a, functional.alltypes b limit 16190) v
> order by id limit 16190;
> set num_nodes=0;
> select count(*) from t where b = true;
> -- returns 0, expected 8095
> {code}
> Each file has 8095 rows here. The second file only has TRUE values, but its 
> null_count is 8095, the number of NULLs in the first file.
> Found while working on IMPALA-15629, which makes Iceberg use these statistics 
> for any predicate.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to