Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

feat: implement ReplacePartitions (two-PR plan)

Offen
#775 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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

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.h
  • src/iceberg/update/replace_partitions.cc

Modified files:

  • src/iceberg/snapshot.h — add kReplacePartitions constant to SnapshotSummaryFields
  • src/iceberg/type_fwd.h — add class ReplacePartitions;
  • src/iceberg/CMakeLists.txt — register new source
PR 2 — Table/Transaction API surface + tests

Modified files:

  • src/iceberg/table.h / table.cc — add NewReplacePartitions()
  • src/iceberg/transaction.h / transaction.cc — add NewReplacePartitions()

New files:

  • src/iceberg/test/replace_partitions_test.cc
  • src/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): calls filter_manager_.DropPartition(spec_id, partition), accumulates new file in new_data_files_by_spec_
  • ValidateAppendOnly(): calls filter_manager_.FailAnyDelete()
  • Apply(): for unpartitioned tables calls filter_manager_.DeleteByRowFilter(AlwaysTrue); calls FilterManifests() on existing snapshot, then prepends new manifests
  • operation(): returns DataOperation::kOverwrite
  • Summary(): 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

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus apache/iceberg-cpp

Alle Issues in apache/iceberg-cpp

Ähnliche Issues

Weitere Issues zu C++

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.