[Feature] Support changelog production

オープン
#174 コメント 0 件 リアクション 0 件 担当者 1 名 GitHub で見る

まだ誰も着手していません。

評価

この issue はまだ評価されていません。

説明

enhancement
Search before asking
  • I searched in the issues and found nothing similar.
Motivation

Java Paimon supports producing changelog files for primary-key tables through the
changelog-producer option, including input, lookup, and full-compaction
modes.

Paimon C++ already contains part of the required infrastructure, such as:

  • Parsing the changelog-producer option.
  • Changelog file metadata in DataIncrement and CompactIncrement.
  • Changelog manifest and snapshot commit support.
  • Lookup changelog merge functions and changelog compaction rewriters.
  • Streaming changelog scans and the audit_log and binlog system tables.

However, schema validation currently rejects every value except none, and the
writer does not produce changelog files. As a result, primary-key tables written
by Paimon C++ cannot provide the same changelog behavior as tables written by
Java Paimon.

Supporting Java-compatible changelog production would enable incremental
downstream consumption and improve interoperability between Java Paimon and
Paimon C++.

Solution

Implement changelog production for Paimon C++ primary-key table writes, aligned
with Java Paimon semantics and storage format.

The implementation should cover the following producer modes:

  • input

    • Preserve input row kinds and double-write input changes to changelog files.
    • Attach generated changelog files to the corresponding data increment.
  • lookup

    • Look up the previous value of each primary key when necessary.
    • Produce the correct INSERT, UPDATE_BEFORE, UPDATE_AFTER, and DELETE
      records.
    • Generate changelog files while compacting level-0 data.
  • full-compaction

    • Produce changelog files during full compaction by comparing the compacted
      result with the previous table state.

The generated changelog files should:

  • Use the same file schema, row-kind encoding, metadata, and directory layout as
    Java Paimon.
  • Be committed through changelog manifests and referenced by the snapshot.
  • Be readable through streaming scans, audit_log, and binlog.
  • Work correctly with supported merge engines, sequence fields, partitions, and
    bucket modes.
  • Either support deletion vectors consistently with Java Paimon or reject
    unsupported combinations with a clear validation error.
  • Be included in commit metrics, expiration, rollback, and orphan-file cleanup.

The feature can be delivered incrementally, with separate pull requests for each
changelog producer mode.

Anything else?

No response

Are you willing to submit a PR?
  • I'm willing to submit a PR!
主要言語
C++
スター
65
フォーク
29
平均マージ
2日 4時間
マージ済み PR(30日)
78

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

apache/paimon-cpp のほかの issue

apache/paimon-cpp の issue をすべて見る

似ている issue

C++ の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。