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]

Reply via email to