JingsongLi opened a new pull request, #10653: URL: https://github.com/apache/paimon/pull/10653
## Purpose Use Native for additional existing PyPaimon write/update operations, and align partition overwrite/truncate input semantics with current Java. Depends on https://github.com/apache/paimon-rust/pull/1170 for manifest codecs and exact numeric timestamp partition specs. ## Native routing - Accept fully NULL source upsert key columns even when their physical Arrow type differs from the target. Handle selected NULL dictionary values and ignore unreferenced dictionary payloads. Compatible types retain their existing fast path; non-NULL mismatches and unsupported Pure Arrow kernels retain their previous qualification rules. - Allow whole-partition predicate DELETE on PK tables configured with changelog production. Keep row-level update/delete restrictions and canonical predicate validation. ## Commit semantics - Share private declared-type partition-spec conversion between static overwrite and truncate. Cover numeric bounds, DECIMAL rounding/overflow, Java Unicode digits, ASCII trimming, temporal precision, system-local LTZ semantics and default NULL partitions. - Preserve Java's numeric TIMESTAMP(0) overflow remainder so a spec cannot accidentally target an unrelated whole-second partition. - Keep malformed specs and mismatched prepared writes from publishing snapshots; preserve their files. - Update the existing partition-predicate mock to explicitly represent an absent index manifest. ## Regression coverage - Real REST Pure/Native cases cover typed specs, refused specs without publication/deletion, NULL-key upserts and input-changelog PK partition deletion. - Parquet table tests cover bzip2/xz manifest history across Pure seed commits, stream append, lost publication responses, HASH indexes, changelogs, overwrite, truncate and historical reads. Native planning/reading/commit fallback is prohibited in the corresponding cases. - Final affected write/update/commit suites: 389 passed, 324 skipped, 12 subtests passed. Changed Python files pass the project Flake8 configuration and Python 3.6 syntax checks. Native-dependent cases are skipped in the local runtime. No Native extension was rebuilt or installed. This PR remains draft until its Rust companion merges; Native CI continues to build Rust main. -- 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]
