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

   ## Purpose
   
   Continue aligning Python and Rust execution APIs while preserving public 
PyPaimon contracts. This follows the merged #10712.
   
   Depends on apache/paimon-rust#1188 for captured append writer configuration 
and the private row transport query. Native CI continues to build Rust main; 
this PR remains draft until that dependency is merged.
   
   ## Changes
   
   - Replace unbound executor mixin calls with explicit bound Python/Native 
scan and read executors. Both backends use the same actual operations, while 
public hooks continue to observe live configuration.
   - Bind Python writer, row-ID/predicate update, delete, upsert, MERGE and 
shard executors to their public contexts. Prepared upsert/MERGE requests use 
matching execution entry points on either backend. No generic proxies, 
compatibility aliases or cross-backend imports are added.
   - Give writer executors one explicit `prepare_commit(identifier)` boundary. 
Public batch facades accept no arguments and retain the one-time guard; public 
stream facades require a signed 64-bit identifier. Native facades enforce the 
same signatures before preparation, including after an explicit switch to 
Python.
   - Align append reconfiguration with current Java: each partition/bucket 
captures its columns and Blob consumer, retaining them across prepares. Future 
buckets use the new configuration. Check every target layout before staging any 
group.
   - Keep Native row conversion thin: ask Core for destination columns using 
routing metadata only, retain the captured order and avoid opening unused Blob 
inputs. NOT NULL/event validation precedes this query. Core owns routing, 
schema history and physical preflight.
   - Delete the acceptance package and its tests, and remove its 
test/distribution configuration.
   - Document execution contracts and writer lifecycle. Update existing 
regression expectations for Java-style reconfiguration and propagation of 
prefetch errors.
   
   ## Verification
   
   - Focused read/write/update execution, lifecycle, public-hook, 
prepare-identifier, backend import-isolation and reconfiguration tests.
   - Native transport regressions use mock SDK handles; actual destination 
validation, routing, prepare/readback and callback GC are covered by the 
companion Rust tests.
   - 9 actual sdist/wheel packaging tests pass.
   - Full package Flake8, changed-file Python 3.6 grammar check, license 
headers and `git diff --check` pass.
   - Independent API/boundary reviews confirm existing public method 
arguments/defaults, class paths, hooks and backend isolation.
   
   The local installed SDK predates this change. It was not rebuilt or 
installed, and no Native version probing/fallback or CI dependency override was 
added.
   


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