[Umbrella] Implement PendingUpdate subclasses
- Dominant language
- C++
- Stars
- 221
- Forks
- 124
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 21
Description
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
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the unchecked subclasses listed for the iceberg/update directory and compare them with the completed implementations. Read src/iceberg/table_metadata.h, src/iceberg/table_update.h, src/iceberg/table.h, and src/iceberg/transaction.h to trace the required metadata, update, and public interfaces. Done means the selected subclass is implemented and exposed through the relevant Table and Transaction APIs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- databases
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100