JingsongLi opened a new pull request, #10505:
URL: https://github.com/apache/paimon/pull/10505

   ## Summary
   
   PyPaimon already supports caller `snapshot_properties` in batch, stream and 
overwrite commits. The presence of an explicit property map previously forced 
the Python publication path, even for `{}` and REST tables which otherwise 
qualified for Native.
   
   - Route eligible commits with properties through Native and pass metadata to 
the existing batch/stream commit operation.
   - Keep callback and non-REST routing on the Python path.
   - Preserve the preparation/publication exception boundary: errors once 
Native publication begins must not trigger another publication or abort 
prepared files.
   - Add REST tests for Append, PK and Data Evolution, stream checkpoint 
isolation, empty commits, static/dynamic empty overwrite and lost publication 
responses.
   
   Properties describe the current commit, are not inherited by subsequent 
checkpoints, and empty maps are absent from snapshot metadata. These rules 
follow Java `ManifestCommittable.properties` and `FileStoreCommitImpl` snapshot 
construction. No new Python capability or API is introduced.
   
   ## Dependency
   
   Depends on https://github.com/apache/paimon-rust/pull/1104 for Rust core 
snapshot-property publication and the optional binding argument. This PR is 
draft until that change reaches Rust main. Native CI continues to build 
upstream `apache/paimon-rust@main`.
   
   ## Verification
   
   Built the companion Rust extension and enabled Native plan/read/write/commit 
for:
   
   ```
   pypaimon/tests/native_snapshot_properties_test.py
   pypaimon/tests/native_commit_test.py
   pypaimon/tests/table_commit_test.py
   ```
   
   - 117 tests passed, with 68 Native plans, 56 reads, 54 writes and 73 commits 
exercised.
   - Existing Python `table_commit_test.py` and `table/simple_table_test.py`: 
41 passed.
   - Rust commit regression: 121 passed; Python binding commit suite: 58 passed.
   - Clippy 1.98.0, Rust formatting, Python Flake8, Python 3.6 syntax parsing 
and diff checks passed.
   - Independent core/API and Python adapter reviews have no remaining findings.
   
   New cases assert that property maps cannot leak between stream checkpoints, 
empty-map metadata is omitted, static empty overwrite publishes properties 
while dynamic empty overwrite creates no snapshot, and publication response 
loss preserves both metadata and referenced data files.
   


-- 
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]

Reply via email to