deniskuzZ opened a new pull request, #6882:
URL: https://github.com/apache/hive/pull/6882
### What changes were proposed in this pull request?
In `ParquetFilterPredicateConverter`, a leaf whose runtime value
(`DynamicValue`) is not available filters nothing (returns `null`) instead of
failing the whole conversion.
### Why are the changes needed?
One such leaf made `toFilterPredicate` return `null`, so the reader lost the
static leaves of the same conjunction too, and each failure logged an ERROR
with a stack trace: `BETWEEN`/`IN` got an empty literal list ("Not able to
build 'between' operation filter with [] which needs two literals"), a single
literal threw `NoDynamicValuesException`. One TPC-DS 10 TB run logged 45,927 of
these from the LLAP IO threads reading semijoin-filtered Parquet scans. The
search argument pushes `NOT` down to the leaves, so dropping a leaf from a
conjunction only weakens the filter; a disjunction containing it still filters
nothing.
### Does this PR introduce _any_ user-facing change?
No; Parquet scans keep the row-group filtering of their other conjuncts, and
the ERROR log lines are gone.
### How was this patch tested?
`TestParquetFilterPredicate#testUnresolvedRuntimeValueDropsOnlyItsLeaf`: `a
< 5 AND b = <unavailable> AND c BETWEEN <unavailable>` converts to `lt(a, 5)`
(was `null`); `a < 5 OR c BETWEEN <unavailable>` stays `null`.
`TestParquetRowGroupFilter` and `TestConvertAstToSearchArg` pass.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]