Skip to content

fix(table): reject row ranges for format tables at read construction - #700

Merged
JingsongLi merged 1 commit into
apache:mainfrom
jackylee-ch:fix/format-table-row-ranges-at-read
Aug 15, 2026
Merged

fix(table): reject row ranges for format tables at read construction#700
JingsongLi merged 1 commit into
apache:mainfrom
jackylee-ch:fix/format-table-row-ranges-at-read

Conversation

@jackylee-ch

@jackylee-ch jackylee-ch commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

FormatTableScan::plan rejects row ranges, but FormatReadBuilder::new_read never reads
self.row_ranges, so with_row_ranges(..).new_read() on a format table silently ignores the
request instead of reporting it. Reachable from core Rust callers, which reach
FormatReadBuilder through ReadBuilder::new_read.

Fix: fail closed in new_read too, matching ReadBuilder::new_read, which guards the
same way for the same reason.

@JingsongLi

Copy link
Copy Markdown
Contributor

The Python bindings did not pass row_ranges from PyReadBuilder to PyTableRead.

@jackylee-ch

Copy link
Copy Markdown
Contributor Author

Right, and PyTableRead should not carry them: core new_read does not consume row_ranges
either — they reach readers through DataSplit, set at planning. The guard is for core Rust
callers, not the binding: a format table can neither honour nor report the request.

@JingsongLi
JingsongLi merged commit f10cb91 into apache:main Aug 15, 2026
13 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