JingsongLi opened a new pull request, #1179:
URL: https://github.com/apache/paimon-rust/pull/1179

   ### Purpose
   
   Align existing Python Native write/update behavior with current Java, 
preserving logical NOT NULL constraints while allowing valid deduplicate DELETE 
records and unused update inputs.
   
   ### Changes
   
   - Derive a nullable physical KV value schema for deduplicate tables without 
cross-partition updates, matching `PrimaryKeyFileStoreTable.store()`. Preserve 
primary-key/sequence fields and the logical table schema.
   - Preserve physical root nullability in the Paimon fields supplied to the 
Parquet writer, including data and INPUT changelog files. Preserve field IDs, 
descriptions, defaults and nested nullability.
   - Resolve row kinds and enforce logical top-level NOT NULL checks before the 
optional row-kind filter, including when no ignore option is enabled. Other 
merge engines and cross-partition writes retain strict checks.
   - Reuse the existing write-input Arrow importer for update/upsert/MERGE 
sources. Preserve actual NULLs, sliced buffers and metadata until Core selects 
target payloads; selected target constraints remain enforced in Core.
   - Update the existing invalid-row-kind test to assert rejection at write 
time and no staged output.
   
   ### Verification
   
   - New retained-delete integration suite: 3 passed. Covers 
explicit/configured row kinds, STRING/LargeString, automatic/precomputed 
buckets, separate INSERT and DELETE commits, sequence ordering, physical 
Parquet root fields, INPUT changelogs, value predicates that must not resurrect 
deleted rows, managed BLOB files, and 
required-field/other-engine/cross-partition negatives.
   - Existing filtered-write integration suite: 4 passed.
   - Python-binding Rust library: 103 passed. New source-transport and real 
upsert tests first fail on the old importer, then pass, including discarded 
duplicate values and invalid selected target NULLs.
   - Rust core library, pinned Rust 1.98.0 core/binding all-target Clippy with 
`-D warnings`, rustfmt and diff checks.
   - Current Java reference tests 
`TableWriteTest.testDeduplicateDeleteWithPrimaryKeyOnly` and 
`testDeleteRequiresSequenceField`: 2 passed.
   - Companion Python regressions cover ordinary/dedicated-BLOB target 
constraints, physical schema flags, and real commit/read results. Local Python 
tests did not rebuild or install the Native extension.
   
   No new dependency, public API, version probe or commit-failure cleanup is 
introduced.
   


-- 
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