Zoltán Borók-Nagy created IMPALA-15638:
------------------------------------------

             Summary: Queries fail on migrated Iceberg tables if string bounds 
are not valid UTF-8
                 Key: IMPALA-15638
                 URL: https://issues.apache.org/jira/browse/IMPALA-15638
             Project: IMPALA
          Issue Type: Bug
          Components: Frontend
            Reporter: Zoltán Borók-Nagy
            Assignee: Zoltán Borók-Nagy


Parquet files written without the UTF8 annotation store strings as plain 
BINARY. When such files are migrated to Iceberg, their bounds are truncated to 
16 bytes, possibly in the middle of a multi-byte character. When a predicate on 
such a column is pushed down, Iceberg fails to decode the bound, and the query 
fails:

{code:sql}
set parquet_annotate_strings_utf8=false;
create table m (s string) partitioned by (p int) stored as parquet;
insert into m partition (p=1) values ('中文中文中文');
alter table m convert to iceberg;
set parquet_annotate_strings_utf8=true;
select count(*) from m where p = 1 and s = 'x';
-- RuntimeIOException: Failed to decode value as UTF-8:
--   java.nio.HeapByteBuffer[pos=0 lim=16 cap=16]
{code}

Impala could plan the scan without pushing down the predicates in this case.

Found while working on IMPALA-15629. Master only pushes down predicates to 
Iceberg if one of them is on a partition column, or on a column listed in the 
{{impala.iceberg.push_down_hint}} table property, so the repros use these. 
IMPALA-15629 would push down predicates on any column.



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

Reply via email to