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]
