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

   ## Summary
   
   Complete the native core/binding pieces needed by PyPaimon's existing 
write/update paths:
   
   - Allow a resolved table to retain an explicitly bound FUSE FileIO while 
preserving its REST publication identity and selected branch. Schema I/O 
follows the replacement provider. Add a mounted write/read/commit/truncate test 
that retains files referenced by old snapshots and verifies truncate retry 
idempotence.
   - Infer fixed bucket counts for new postpone partitions across all input 
batches when neither an explicit bucket plan nor a default count is supplied. 
Pin the baseline snapshot once, reuse known layouts without buffering their 
rows, and stage unknown partitions until preparation. Match the current Java 
batch decision order: current input only, row target before size target, 
ceiling, power-of-two rounding, then maximum parallelism.
   - Parse textual truncate/overwrite partition specs in core using Java 
TypeUtils rules, including FLOAT precision checks and 
DATE/TIME/TIMESTAMP/DECIMAL values. Ordinary Python typed literals retain the 
shared conversion path.
   - Accept callable MERGE assignments in the Python binding through the 
existing core UpdateAssignment::Function implementation. Core owns matching, 
lazy clause evaluation, validation, casting, staging and error ownership; no 
duplicate merge engine is added in the binding.
   
   ## Scope of automatic planning
   
   Byte sizing uses the BinaryRow estimate already used by PyPaimon's 
in-process planner. It does not promise identical bucket counts to Spark's 
newer staged-file implementation, which measures temporary compressed files. 
Existing layouts are preserved; this does not introduce Spark staging, 
rescaling, or compaction functionality that PyPaimon does not currently 
implement.
   
   ## Verification
   
   - `cargo +1.98.0 test -p paimon --lib --quiet`: 4258 passed, 6 ignored.
   - Focused final partition-spec and postpone tests: passed (46 postpone 
tests).
   - `cargo +1.98.0 clippy -p paimon --lib --tests -- -D warnings`: passed.
   - `PYO3_PYTHON=/opt/homebrew/bin/python3.13 cargo +1.98.0 clippy -p 
pypaimon_rust --all-targets -- -D warnings`: passed.
   - Added binding integration coverage for callable MERGE across target files, 
chunked results, inserts, no-match laziness and original exception propagation. 
Native Python extension tests are left to CI; no extension was rebuilt or 
installed locally.
   
   Companion PyPaimon PR will wire FUSE writes/commits, truncate, automatic 
postpone planning and public MERGE callbacks to these APIs.
   


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