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

   ### Purpose
   
   Continue separating the public PyPaimon API from Python and Native 
execution. Public objects keep configuration, validation and explicit 
delegation; Native adapters invoke Rust without retaining or constructing 
Python executors.
   
   * Remove Python/Native mixin inheritance and eager executor imports from 
public read, scan, write, update, delete, row-id and upsert facades. Keep the 
original public object as the delegation context so subclass and instance 
hooks, metadata and public return types continue to work.
   * Put planning/read selection, Arrow output and resource ownership, explain 
aggregation, search transport, writer switching, update coordination and index 
selection in shared execution modules. Preserve independent 
plan/read/write/commit options, preparation-only fallback and no replay after 
uncertain mutation or publication outcomes.
   * Keep Native writers and search adapters independent of Python fallback 
factories. Shared coordinators own explicit diagnostics, lazy 
transported-plan/split reads and safe pre-write switching. Python vector 
readers use the Python SDK directly, and Python predicate matching follows the 
selected public read configuration.
   * Give Python global-index construction its own executor and move Ray shard 
coordination under Python execution. Remove private Python writer/build proxy 
methods from the public index builder; workers serialize the executor directly.
   * Make shared Arrow child-nullability validation independent of extension 
installation, preserving visible-NULL checks, parent masks, slices, chunks and 
physical layouts. Load row-key extractors and BLOB writers only when their 
Python operation is invoked. Recognize already-loaded fork-safety errors 
without importing the optional Native SDK from a Python error path.
   * Freeze single and batch query vectors for live/transported readers. Close 
materialization and Native read sources on success, errors and cancellation, 
preserving a primary read error if cleanup also fails.
   * Add strict cross-backend import guards, real Python 
write/update/commit/index round trips, hook and source-lifecycle regressions, 
and updated wheel/sdist assertions.
   
   No Rust changes, new runtime dependencies or Native version compatibility 
branches.
   
   ### Tests
   
   * Full ordinary Python regression, acceptance, Torch and py36 test files are 
running in an environment without the Rust extension; final results will be 
added before marking the PR ready.
   * Public API comparison against master: all 1,383 effective public 
signatures retain their parameters, defaults and binding modes, including 
inherited methods and re-exports. Two return annotations are deferred to avoid 
importing executors. All 56 documentation import targets resolve; removed 
aliases are internal.
   * Targeted read/projection/parallel/resource, explain, authorization, schema 
and system/search suites pass, including strict fresh-process guards forbidding 
the entire other backend.
   * Targeted write/dispatch: 576 passed, 175 skipped. 
Update/row-id/upsert/MERGE: 312 passed, 469 skipped; shared-validator cleanup 
was separately verified with 252 passing cases. New writer boundary/hook cases: 
6 passed.
   * Real Ray index workers and validation: 11 passed. Python index 
build/streaming/writer suites pass; Python end-to-end read/update/index 
execution is checked while Native imports are forbidden.
   * Using the existing installed extension without rebuilding or installing 
it: 17 Native search cases passed (22 Native plans exercised); 9 real Native 
write/commit cases passed; the Blob write-state case passed with Native writes 
explicitly enabled.
   * wheel/sdist: 9 passed, including new execution modules and exclusion of 
the removed internal Ray alias. Whole-package Flake8, license headers, 
changed-file Python 3.6 grammar and diff checks pass.
   * Multiple independent reviews covered backend boundaries, effective public 
APIs, query capture, transport, source cleanup, safe writer switching and 
commit lifecycle. Full Native CI remains required against Rust main; no local 
extension was rebuilt or installed.
   


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