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]
