Skip to content

[EPIC] Execution-time adaptive pruning for Iceberg readers #3343

Description

@unikdahal

What's the feature are you trying to implement?

Summary

Add generic execution-time predicate support to iceberg-rust so readers can progressively avoid file, row-group, page, and payload reads as predicates become available during query execution.

The reader remains producer-agnostic: callers publish Iceberg predicates and generations, while iceberg-rust handles safe application through the existing reader pipeline.

This epic tracks the upstream reader infrastructure required by execution engines such as DataFusion Comet.

Related work

Work items

Dependencies

Reader foundations

Adaptive pruning

  • Reject file tasks before footer and delete-file I/O
  • Refresh predicates and prune unread row groups
  • Represent static page selections per row group
  • Preserve position and equality deletes during live pruning
  • Refresh page pruning and row filters after predicate updates
  • Preserve late materialization with runtime predicates

Correctness and robustness

  • Bound refresh overhead and cover reader edge cases
  • Add adaptive pruning observability and reader-level metrics
  • Complete delete, split-task, schema-evolution, and fallback coverage

Correctness principles

  • Runtime predicates are conservative restrictions.
  • Previously skipped data is never required by a later predicate publication.
  • Missing or unusable statistics retain candidates.
  • Runtime predicate failures must not disable planned filtering or delete handling.
  • Position deletes and metadata row positions preserve original file ordinals.
  • Equality deletes remain active across predicate refreshes.
  • Existing reader and schema adaptation paths should be reused rather than duplicated.

Definition of done

  • No private Arrow/Parquet patch is required.
  • Generic task-start and live runtime predicate APIs are upstream.
  • Whole-file, row-group, page, and row-filter pruning use the existing reader pipeline.
  • Position deletes, equality deletes, and combined deletes are supported.
  • Stable predicates add minimal reader overhead.
  • Each work item above is linked to its corresponding issue or PR.

Willingness to contribute

I can contribute to this feature independently

Activity

  1. unikdahal commented on Oct 4, 2026

    @unikdahal
    Author

    take

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions