JingsongLi opened a new pull request, #10390: URL: https://github.com/apache/paimon/pull/10390
## Summary Enable Java-aligned Blob and VARIANT updates through PyPaimon's Native core APIs. - Decouple Native update admission from the Python plain-Parquet update optimization. - Enable ordinary-column row-ID/predicate updates, upsert and deletion on tables containing dedicated Blob columns. - Enable descriptor and Blob View partial updates, including incremental Arrow, Row/Rows and batch/stream APIs. - Keep raw Blob payload updates on the existing row-aware implementation; incremental operations choose one implementation before any staging. - Honor Java's `blob.stored-descriptor-fields` fallback and restore descriptor option groups consistently during historical schema resolution. - Fix the Python updater to preserve inline references and write them to Parquet; share Blob/BlobView row-object serialization with the ordinary writer without opening payload streams. - Enable shredded VARIANT updates through Native core. Remove the Python-only `variant.shredding.enabled` switch: Java applies a configured shredding schema and reassembles physical VARIANT values independently of that option. ## Dependency and CI Depends on https://github.com/apache/paimon-rust/pull/1039. This PR is draft until that Rust core change is merged. The Native CI continues to build **apache/paimon-rust@main**. No fork or branch pin is introduced. Local validation uses a binding built from the linked Rust PR. ## Verification - Relevant update, nested update, branch, Blob, VARIANT, schema-evolution and column-directive suites with all five Native flags enabled: **1117 passed**, 3 skipped, 99 subtests passed. - Final Native update + new Blob/VARIANT tests + complete Blob table suite against the updated Rust binding: **651 passed**, 1 subtest passed. - Python Blob table suite without Native flags: **94 passed**, 1 subtest passed. - Flake8 using `dev/cfg.ini` on all changed Python files. - Python 3.6 syntax checks and focused mock/streaming/chunked regression tests; Python 3.6 runtime is not installed locally. New regressions cover both Python and Native inline updates, NULL and empty payloads, untouched reference preservation, unresolved upstream tables, REST View prescans with descriptor predicates/projection/LIMIT, row-object inputs, full normal-column metadata, historical aliases, VARIANT overflow, callable assignments, upsert and batch/stream behavior. -- 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]
