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

   ## What changes
   
   Close verified gaps in the existing PyPaimon Native write/update path, using 
current Java behavior.
   
   - Support `rowkind.field` on append and data-evolution tables, including 
CHAR/VARCHAR fields. Check required values before filtering; reject surviving 
DELETE/UPDATE_BEFORE events; honor `ignore-delete` and `ignore-update-before` 
before routing or materializing Blob inputs. Keep append files free of KV 
system fields.
   - Accept `rowkind.field` with INPUT changelogs for primary-key tables and 
preserve the exact generated events. Resolve the event column once per batch 
and preserve its identity through reordered write types.
   - Allow row-ID, predicate, shard, DELETE and matched-only MERGE operations 
over historical read views. Partial files retain their historical schema/field 
IDs and messages retain the captured snapshot as the conflict baseline. 
Captured empty views stay empty.
   - Match updated columns to global-index metadata by field identity from each 
file's schema. Handle renamed columns, dropped/readded names, extra indexed 
fields and complete-row updates with omitted `write_cols`.
   
   Ordinary write/commit entry points, upserts and MERGE clauses which can 
INSERT continue to reject historical handles. Publish historical update 
messages through a current table. No new public API or dependency.
   
   ## Java references
   
   - `AppendOnlyFileStoreTable.newWrite`, `TableWriteImpl.writeAndReturn`, 
`RowKindGenerator`, `RowKindFilter`, and `AppendOnlyWriter.write`.
   - Spark `MergeIntoPaimonDataEvolutionTable.withMatchedUpdateScanOptions`, 
partial update write type, captured read snapshot and global-index update 
policy.
   
   ## Verification
   
   - Reproduced append acceptance/schema guards and renamed index-policy 
failures before their fixes.
   - Rust 1.98.0 Core library: **4320 passed, 7 ignored**.
   - Append, historical update, filtered input and retained-delete 
integrations: **17 passed**.
   - Python binding library (embedded Python; no extension installation): **104 
passed**.
   - Rust 1.98.0 Core and Python binding Clippy, all targets, `-D warnings`.
   - `cargo fmt --all -- --check` and diff checks.
   
   The companion Python PR retains Native CI's Rust main build; it will depend 
on this PR.
   


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