[core] Support configured data directories throughout table IO - #974
Merged
Merged
Conversation
leaves12138
approved these changes
Sep 28, 2026
leaves12138
left a comment
There was a problem hiding this comment.
Reviewed commit 2a46e49fe7433165bf066c1e4c6abac8cf3cec60 together with apache/paimon#10249.
Fixed and pushed the findings from this review:
- Preserve the
./prefix when normalization exposes a colon in the first relative path component. Windows must not reinterpret that component as a drive root; this fixes the previous Windows unit-test failure. - Preserve an empty path when a child such as
.orx/..resolves against a scheme/authority-only parent, matching JavaPathinstead of introducing an extra slash. - Added common and explicit Windows-mode regression cases, including Windows-mode coverage runnable on Linux.
Validation of this revision:
cargo test --locked -p paimon --lib: 3,410 passed, 6 ignored.data_file_directory_test,table_update_paths_test, andtable_update_test: 35 passed.cargo fmt --all -- --check: passed.- Built the Python native extension from this exact Rust revision and tested it with the paired Python changes: 1,748 passed, 4 skipped, and 143 subtests passed with PyArrow 18.1.0 and native planning/reading/writing/updating/committing enabled.
No remaining blocking code-review findings for the paired revisions. The new cross-platform CI run is still in progress; this approval does not replace the required CI checks. LGTM.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Support
data-file.path-directorythroughout Paimon table IO so PyPaimon can use Native planning, reading, writing, updating, and committing for tables with a configured data directory.Previously, Rust built bucket paths directly under the table root. Using Native IO could therefore fail to find existing files or write files into a different layout from Java/Python.
Brief change log
Pathsemantics, including Windows drives and UNC paths.Tests
data_file_directory_test,table_update_paths_test, andtable_update_test.cargo clippy --locked --all-targets --workspace --features fulltext,vortex -- -D warningspassed.cargo fmt --all --checkpassed.API and Format
Adds a
CoreOptionsaccessor and options-aware file-statistics entry points. Existing statistics entry points retain their default-directory behavior. No file-format or manifest-format changes; schema, snapshot, manifest, and table-level index metadata remain rooted at the table location.Documentation
Includes API documentation and Java-derived path expectations in regression tests. The option already exists in Java/PyPaimon.