feat: implement ReplacePartitions (two-PR plan)
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 58/100
- Issue-Typ
- Feature
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- cpp
- Bereich
- data-engineering
Rechercherichtung
Beginne damit, die bestehenden Implementierungen von FastAppend und SnapshotUpdate zu lesen, und untersuche anschließend die aufgeführten Snapshot-, Manifest-, Tabellen- und Transaktionsdateien. Verwende die geplante replace_partitions_test.cc und deren CMake-Registrierung, um zu überprüfen, dass Partitionsersetzung, das Verhalten bei nicht partitionierten Tabellen, Operations- und Summary-Metadaten sowie die neuen Tabellen- und Transaktions-APIs abgedeckt sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Overview
This issue tracks the implementation of ReplacePartitions in C++, assigned in #637.
ReplacePartitions performs dynamic partition overwrite: each file added to the operation marks its entire partition for deletion, and on commit, existing files in those partitions are atomically replaced. The resulting snapshot uses operation="overwrite" and summary property "replace-partitions"="true".
Implementation Plan
PR 1 — Core implementation
New files:
src/iceberg/update/replace_partitions.hsrc/iceberg/update/replace_partitions.cc
Modified files:
src/iceberg/snapshot.h— addkReplacePartitionsconstant toSnapshotSummaryFieldssrc/iceberg/type_fwd.h— addclass ReplacePartitions;src/iceberg/CMakeLists.txt— register new source
PR 2 — Table/Transaction API surface + tests
Modified files:
src/iceberg/table.h/table.cc— addNewReplacePartitions()src/iceberg/transaction.h/transaction.cc— addNewReplacePartitions()
New files:
src/iceberg/test/replace_partitions_test.ccsrc/iceberg/test/CMakeLists.txt— register test
Design
ReplacePartitions extends SnapshotUpdate (same pattern as FastAppend) and uses ManifestFilterManager to mark existing partition files as DELETED:
AddFile(file): callsfilter_manager_.DropPartition(spec_id, partition), accumulates new file innew_data_files_by_spec_ValidateAppendOnly(): callsfilter_manager_.FailAnyDelete()Apply(): for unpartitioned tables callsfilter_manager_.DeleteByRowFilter(AlwaysTrue); callsFilterManifests()on existing snapshot, then prepends new manifestsoperation(): returnsDataOperation::kOverwriteSummary(): sets"replace-partitions"="true"
Relates to: #637
- Vorherrschende Sprache
- C++
- Sterne
- 223
- Forks
- 127
- Ø Merge
- 1 T. 13 Std.
- Gemergte PRs (30 T.)
- 28
Entwicklungsumgebung
Die Einrichtungsdateien dieses Projekts haben wir noch nicht geprüft. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus apache/iceberg-cpp
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
apache/iceberg-cpp#973 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 20/100
apache/iceberg-cpp#959 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
apache/iceberg-cpp#955 · 3 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
apache/iceberg-cpp#946 · 5 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
apache/iceberg-cpp#944 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in apache/iceberg-cpp
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
cp-algorithms/cp-algorithms#1715 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Icinga/icinga2#11058 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
status:needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
PX4/PX4-Autopilot#28924 ·
Maintainer antworten meist innerhalb von 1 Tag
-
component: split-view platform: windows
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
zen-browser/desktop#15616 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag