JingsongLi opened a new pull request, #1082: URL: https://github.com/apache/paimon-rust/pull/1082
## Motivation PyPaimon already accepts row Blob objects, including ARRAY<BLOB> and MAP<X,BLOB>, but native row writes currently switch to the Python writer and row upserts cannot use core key matching. A row-object bridge also needs to resolve its live streams without taking ownership of ordinary FileIO/HTTP descriptors. ## Changes - Add optional URI ownership selection to custom reader factories. Existing factories keep their current ownership semantics; scoped factories can leave ordinary references on native FileIO/HTTP. Selection and source errors propagate. - Share TableUpdate's Blob reader configuration across row-ID updates, matched/upsert writes, appended rows and MERGE. - Normalize dedicated Blob map row inputs as key/value lists with nullable keys, following Java's Blob map layout. Validate visible entries and child nullability before fetching payloads. - Convert plain decimal row keys in core with Java Decimal.fromBigDecimal HALF_UP rounding and declared precision checks, including arbitrary source fractional precision. - Preserve original Python callback exceptions across update operations; keep the Python binding as an adapter to core. The physical Blob format and prepared CommitMessage ownership remain unchanged. Prepared files are retained after writer/commit errors. ## Java references - [MapBlobElementSerializer](https://github.com/apache/paimon/blob/9c3c5187a4bd045d31b1ed9fb0decd58e6d63e8e/paimon-format/src/main/java/org/apache/paimon/format/blob/MapBlobElementSerializer.java): NULL keys, key validation and payload framing. - [Decimal.fromBigDecimal](https://github.com/apache/paimon/blob/9c3c5187a4bd045d31b1ed9fb0decd58e6d63e8e/paimon-common/src/main/java/org/apache/paimon/data/Decimal.java): HALF_UP rounding and precision overflow. ## Verification - cargo test --locked -p paimon --all-targets: 4,357 passed, 6 existing ignored. - cargo test --locked -p paimon-datafusion --all-targets: 926 passed, 2 existing ignored; the two Lumina search cases were excluded locally because their native library is Linux-only. - DataFusion Vortex integration: 1 passed. - Python binding Blob URI/consumer/update/write regression suites: 81 passed. - cargo +1.98.0 clippy --locked --all-targets --workspace --features fulltext,vortex -- -D warnings. - cargo +1.98.0 fmt --all -- --check. - Independent review and Decimal parser comparison: 9,384 cases matched existing Java-aligned Decimal rounding. PyPaimon's corresponding PR uses this core support to retain native row writes and upserts for existing Blob inputs. -- 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]
