Skip to content

Push down simple Iceberg changelog metadata predicates #2431

Description

@weimingdiit

Is your feature request related to a problem? Please describe.

Auron Iceberg native changelog scan supports insert-only changelog tasks and materializes changelog metadata columns as per-task constant values.

However, simple predicates on changelog metadata columns are not used to prune changelog scan tasks during native scan planning. For example, a query filtering by _commit_snapshot_id may still plan all insert-only changelog tasks in the selected changelog range.

Describe the solution you'd like

Use simple changelog metadata predicates to prune AddedRowsScanTasks before building native Iceberg scan tasks.

The scope should be limited to task-level constants:

  • _change_type
  • _commit_snapshot_id
  • _change_ordinal

Only simple predicate forms should be supported:

  • =
  • IN
  • AND

Unsupported expressions such as OR, NOT, complex expressions, or mixed data-column predicates should not be used for task-level pruning.

Describe alternatives you've considered

One alternative is to rely only on the existing post-scan filter path.

That keeps correctness, but it can require native scan to read changelog tasks that are known not to match based on task-level metadata.

Additional context

This change should not add support for delete, update, position delete, or equality delete changelog operations.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions