apache / apache/iceberg-cpp

[Umbrella] Implement PendingUpdate subclasses

Đang mở
#364 4 bình luận 0 reaction 0 người được giao Xem trên GitHub
enhancement
Ngôn ngữ chính
C++
Star
221
Fork
124
Merge trung bình
1 ngày 16 giờ
Pull request đã merge (30 ngày)
21

Mô tả

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

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu với các lớp con chưa được đánh dấu được liệt kê cho thư mục iceberg/update và so sánh chúng với các triển khai đã hoàn tất. Đọc src/iceberg/table_metadata.h, src/iceberg/table_update.h, src/iceberg/table.h và src/iceberg/transaction.h để theo dõi các giao diện metadata, update và public bắt buộc. Được coi là hoàn tất khi lớp con được chọn đã được triển khai và được cung cấp thông qua các API Table và Transaction liên quan.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
cpp
Lĩnh vực
databases
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.