Skip to content

perf(arrow): prune IN predicates with row-group stats - #705

Merged
JingsongLi merged 1 commit into
apache:mainfrom
QuakeWang:in-minmax-pruning
Aug 15, 2026
Merged

perf(arrow): prune IN predicates with row-group stats#705
JingsongLi merged 1 commit into
apache:mainfrom
QuakeWang:in-minmax-pruning

Conversation

@QuakeWang

Copy link
Copy Markdown
Member

Purpose

IN min/max pruning is opt-in in the shared statistics evaluator. Parquet page statistics enabled it in #704, but Parquet and Mosaic row-group statistics still used the default fail-open behavior. As a result, non-matching row groups could not be skipped, including in Parquet files without page indexes.

Brief change log

  • Enable min/max pruning for IN predicates using Parquet and Mosaic row-group statistics.
  • Preserve fail-open behavior for missing, inverted, or incompatible statistics.
  • Add regression tests for row-group selection and avoided Mosaic column reads.

Tests

  • cargo fmt --all -- --check
  • cargo clippy --locked --all-targets --workspace --features fulltext,vortex -- -D warnings
  • cargo test --locked -p paimon --all-targets --features fulltext,vortex

API and Format

Documentation

Signed-off-by: QuakeWang <wangfuzheng0814@foxmail.com>
@JingsongLi

Copy link
Copy Markdown
Contributor

+1

@JingsongLi
JingsongLi merged commit 2cdfec8 into apache:main Aug 15, 2026
25 of 26 checks passed
jerry-024 added a commit to jerry-024/paimon-rust that referenced this pull request Aug 17, 2026
* main:
  perf(vindex): size native batches by active indexes (apache#709)
  fix(data-evolution): require row tracking and row IDs (apache#718)
  feat(go): add table write bindings (apache#658)
  fix(scan): preserve Data Evolution file order in row-id groups (apache#717)
  fix(file_index): align file index format with Java V1 (apache#719)
  fix: configure OpenDAL writer chunk size (apache#713)
  fix(python): release GIL during catalog I/O (apache#716)
  feat(write): add fixed-bucket write primitives for postpone tables (apache#659)
  feat: rust examples for creating and querying Paimon tables (apache#648)
  fix(table): reject row ranges for format tables at read construction (apache#700)
  perf(arrow): prune IN predicates with row-group stats (apache#705)
  feat(io): support in-memory local cache (apache#710)
  fix(dlf): refresh expiring credentials (apache#714)
  fix(datafusion): normalize index_type in global index procedures (apache#715)
  fix(auth): fail closed on query-auth tables outside the read boundary (apache#691)

# Conflicts:
#	crates/paimon/src/table/vector_search_builder.rs
#	crates/paimon/src/vindex/reader.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants