unikdahal opened a new pull request, #3351: URL: https://github.com/apache/iceberg-rust/pull/3351
## Which issue does this PR close? - Closes #3350. - Part of #3343. ## What changes are included in this PR? Lets execution engines hand restrictions learned during a query (a join build's key range, a TopK or MIN/MAX bound) to `ArrowReader` as Iceberg predicates. - Adds `RuntimePredicateProvider` (a cheap `generation()` plus `snapshot()`), `RuntimePredicateSnapshot`, and `ArrowReaderBuilder::with_runtime_predicate_provider`. Without a provider, behaviour is unchanged. - When a data-file task starts, the reader refreshes the predicate only if the generation changed. Refreshes are serialized and the bound predicate is shared by later tasks. - The runtime predicate is combined with the task and equality-delete predicates into one Arrow row filter, and their row-group, page-index and bloom-filter pruning is intersected. Positional and equality deletes are unaffected. - Runtime predicates are advisory. Provider, binding, planning and page-pruning failures drop only the runtime part for that file. It is also skipped for files that lack a referenced column or store it with a type that needs promotion. - The provider contract (tighten-only publications, what `None` means, generation ordering) is documented on the trait, with an example. This is the reader layer only. `TableScan::to_arrow` cannot pass a provider yet; that wiring is a follow-up. ## Are these changes tested? Yes. Unit tests cover the cache under concurrent tasks and generation changes, row-group, page and byte savings, fail-open paths, schema evolution and type promotion, delete handling, bloom filters, and `Some` -> `None` -> tighter `Some` transitions. CI passes on current `main`. ## AI Disclosure Assisted by Claude Code, reviewed by me. -- 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]
