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]

Reply via email to