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]
