M-Tesla opened a new pull request, #3144: URL: https://github.com/apache/iceberg-rust/pull/3144
## Which issue does this PR close? - Closes #3118. ## What changes are included in this PR? `InclusiveMetricsEvaluator::in` and `ManifestEvaluator::in` tested the lower bound and the upper bound against the full literal set independently. An `In` list whose values sit entirely outside `[lower, upper]` but straddle it — for example bounds `[30, 79]` and `id IN (5, 104)` — was therefore not pruned. Both evaluators now narrow the literal set against each bound in turn, matching Iceberg Java, PyIceberg, and the existing `StrictMetricsEvaluator::not_in` implementation in this crate. Scan results were already correct (the plan was a superset); this only avoids opening files and manifests that cannot contain a match. ## Are these changes tested? Unit tests in `inclusive_metrics_evaluator` and `manifest_evaluator` for the straddling case (`id IN (5, 104)` against bounds `[30, 79]`). Existing `In` tests in those modules still pass. Locally: `cargo fmt --all -- --check`, `cargo clippy -p iceberg --all-targets --all-features -- -D warnings`, and `cargo test -p iceberg --lib expr::visitors`. ## AI Disclosure Assisted draft of the bound-narrowing change and regression tests. The algorithm matches Iceberg Java, PyIceberg, and `StrictMetricsEvaluator::not_in`. Reviewed and verified with the checks above. Made with [Cursor](https://cursor.com) -- 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]
