apache / apache/iceberg-cpp

[Umbrella] Implement PendingUpdate subclasses

オープン
#364 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る
enhancement
主要言語
C++
スター
221
フォーク
124
平均マージ
1日 16時間
マージ済み PR(30日)
21

説明

This issue tracks the progress of implementation of `PendingUpdate` subclasses. To implement each subclass, we need to make sure that following goals are met:

1. Implement respective functions in the [`TableMetadataBuilder`](https://github.com/apache/iceberg-cpp/blob/dbcbdf23ff7ebe5510431715fd66c7841df3d9fd/src/iceberg/table_metadata.h#L196) for this kind of update.
2. Implement respective [`TableUpdate`](https://github.com/apache/iceberg-cpp/blob/main/src/iceberg/table_update.h) subclass (if exists) to apply uncommitted changes to TableMetadataBuilder and generate update requirements.
3. Expose the new update as an interface to [`Table`](https://github.com/apache/iceberg-cpp/blob/main/src/iceberg/table.h) and [`Transaction`](https://github.com/apache/iceberg-cpp/blob/main/src/iceberg/transaction.h) classes.

Below is the list of subclasses that are expected to add. They should be put into the `iceberg/update` subdirectory.

### Medadata Update:

Unlike Java, we don't need pure interface for these classes.

- [x] UpdateProperties @WZhuo
- [x] ReplaceSortOrder @HeartLinked
- [x] UpdateSchema @gty404
- [x] UpdatePartitionSpec @zhjwpku
- [x] ManageSnapshots (<- SnapshotManager) @zhjwpku
- [x] SetSnapshot @HeartLinked
- [x] UpdateLocation (<- SetLocation) @HeartLinked
- [x] UpdatePartitionStatistics @HeartLinked
- [x] UpdateSnapshotReference @zhjwpku
- [x] UpdateStatistics @HeartLinked
- [x] ExpireSnapshots @dongxiao1198 @shangxinli

### Data Update:

For these classes, we still need intermediate interfaces and classes to consolidate common logic.

- [x] SnapshotUpdate(SnapshotProducer) @zhjwpku
- [x] FastAppend @zhjwpku
- [ ] MergingSnapshotProducer @gty404 (planned in 0.3.0)
- [ ] OverwriteFiles @gty404 (planned in 0.3.0)
- [ ] RowDelta
- [ ] MergeAppend
- [ ] DeleteFiles
- [ ] RewriteFiles
- [ ] ReplacePartitions
- [ ] RewriteManifests
- [ ] CherryPickOperation

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

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

iceberg/update ディレクトリに一覧されている未チェックのサブクラスから始め、完了済みの実装と比較してください。必要なメタデータ、更新、およびパブリックインターフェースを追跡するために、src/iceberg/table_metadata.h、src/iceberg/table_update.h、src/iceberg/table.h、src/iceberg/transaction.h を読みます。選択したサブクラスが実装され、関連する Table および Transaction API を通じて公開されていれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
cpp
領域
databases
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

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

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