Zoltán Borók-Nagy created IMPALA-15633:
------------------------------------------
Summary: Iceberg predicate push down unescapes constant folded
string literals again
Key: IMPALA-15633
URL: https://issues.apache.org/jira/browse/IMPALA-15633
Project: IMPALA
Issue Type: Bug
Components: Frontend
Reporter: Zoltán Borók-Nagy
Assignee: Arnab Karmakar
IcebergPredicateConverter gets the value of string literals with
{{StringLiteral.getUnescapedValue()}}. Literals created by constant folding are
already unescaped, so their backslashes are treated as escape characters again,
and Iceberg filters on a different value. String literals that are not valid
UTF-8 make the query fail.
{code:sql}
create table t (s string) partitioned by spec (s) stored as iceberg;
insert into t values (concat('a', chr(92), 'b'));
select count(*) from t where s = concat('a', chr(92), 'b');
-- returns 0, expected 1
select count(*) from t where s = unhex('FF');
-- fails: IllegalStateException: non-utf8 string: unhex("FF")
{code}
Non-partition columns are affected the same way when their predicates are
pushed down.
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)