jackylee-ch opened a new pull request, #10161:
URL: https://github.com/apache/paimon/pull/10161

   ### Purpose
   
   A `partial-update` table with `ignore-delete` set — the documented first 
choice for handling deletes in partial-update — was rejected by pypaimon. Both 
the read-side guard (`TableRead` → `merge_engine_support.check_supported`) and 
the shared merge dispatch listed `ignore-delete` / 
`partial-update.ignore-delete` as unsupported, so such a table could be neither 
read nor written (`NotImplementedError`).
   
   It is now handled the same way `FirstRowMergeFunction` already does: 
`PartialUpdateMergeFunction` takes an `ignore_delete` flag and skips DELETE / 
UPDATE_BEFORE rows instead of raising, and `build_merge_function` derives the 
flag from the table options. Both unsupported lists drop the two 
`ignore-delete` keys; `sequence-group`, per-field aggregator override and 
`partial-update.remove-record-on-*` remain unsupported and still raise. Without 
`ignore-delete`, a retract row still raises, so plain partial-update is 
unchanged.
   
   ### Tests
   
   - `test_partial_update_merge_function`: retract rows are skipped, and a 
retract-only group yields nothing, when `ignore_delete` is set.
   - `test_merge_engine_dispatch`: the flag is wired from options; 
`remove-record-on-delete` is still flagged.
   - `test_partial_update_e2e`: an `ignore-delete` table is accepted and still 
merges last-non-null (the write path cannot emit a DELETE row without 
`rowkind.field`, so retract-skipping is covered as a unit).
   
   Written with Claude Code; verification is mine.
   


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