JingsongLi opened a new pull request, #1029: URL: https://github.com/apache/paimon-rust/pull/1029
### Purpose Align row-tracking commit behavior with Java before enabling Data Evolution publication through PyPaimon's native REST commit bridge. The audit reproduced three metadata differences: existing sequence ranges were overwritten, pending maximum sequence numbers lost the original minimum, and `row-tracking.partition-group-on-commit` was ignored. It also reproduced a Blob update spanning two adjacent normal-file ranges being accepted by Rust and producing a snapshot that neither reader could read. ### Brief change log - Extract row-tracking metadata assignment into a focused core helper following `RowTrackingCommitUtils`: stamp new files, complete pending maximum sequence numbers, and preserve completed sequence ranges. - Honor Java's partition grouping option (default `true`) while preserving file order within each partition and independently rolled Blob columns. - Require dedicated update files to fit entirely inside one normal-file range. Exclude dedicated files from the normal-file existence index and validate dedicated ranges in the merged layout. - Support Java's `global-index.column-update-action=IGNORE` commit policy, retaining existing index metadata. Incremental index refresh planning remains a separate capability. - Add persisted-manifest, overwrite, Blob alignment, dedicated-range rejection, retry/recovery, and index-policy regression tests. ### Tests - Added reproductions that failed before the fixes for sequence preservation, partition grouping, dedicated range conflicts, and `IGNORE`. - `cargo test --locked -p paimon --lib`: **3635 passed, 6 ignored**. - `cargo clippy --locked -p paimon --all-targets --features fulltext,vortex -- -D warnings`: passed. - `cargo fmt --all -- --check`: passed. - Companion PyPaimon tests exercise real REST publication and Parquet/Blob files with both Python and native readers. ### API and Format Adds the existing Java partition grouping option and the `Ignore` enum variant in Rust core. Existing wire and storage formats are unchanged. Python bindings continue to delegate to core. ### Documentation Core option and metadata helper documentation describes the Java semantics. `IGNORE` retains index files; refreshing affected indexes is a subsequent operation. -- 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]
