Thanks Irene for driving this.

Looks good to me! cc @[email protected] to take a look~

Best,
Jingsong

On Tue, Jul 7, 2026 at 10:02 PM Irene Rodriguez
<[email protected]> wrote:
>
> Hi Paimon devs,
>
> I'd like to propose adding Flink FLIP-510 support to Paimon's primary-key
> table sink, and I've opened an issue and a PR for it:
>
> - Issue: https://github.com/apache/paimon/issues/8498
> - PR:    https://github.com/apache/paimon/pull/8452
>
> Motivation
> ----------
> FLIP-510 ("Drop ChangelogNormalize for operations which don't need it")
> lets a
> sink advertise a "keyOnlyDeletes" capability, so the Flink planner can drop
> the
> upstream ChangelogNormalize node when the source produces deletes by key.
>
> This is especially useful for CDC sources, where UPDATE_AFTER already
> carries
> the full row: dropping ChangelogNormalize removes its state and overhead
> with
> no loss of correctness.
>
> Proposed approach
> -----------------
> - Advertise the FLIP-510 keyOnlyDeletes capability on primary-key table
> sinks.
> - Gated behind a new table option `sink.key-only-deletes.enabled` (default
>   false), so existing plans are unchanged unless explicitly opted in.
> - The API only exists in Flink 2.1+, so the behavior is wired through
>   ChangelogModeUtils in paimon-flink1-common (no-op) and
> paimon-flink2-common
>   (sets the flag), keeping paimon-flink-common compiling against both
>   Flink 1.x and 2.x.
>
> I've tested this in a real environment and ChangelogNormalize is correctly
> dropped when the option is enabled. CI on the PR is green.
>
> I'd appreciate feedback on the approach, and would be grateful if a
> committer
> could take a look / assign the issue.
>
> Thanks!
> Irene

Reply via email to