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]

Reply via email to