Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

feat: implement ReplacePartitions (two-PR plan)

Abierto
#775 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
58/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
cpp

Línea de trabajo

Comienza leyendo las implementaciones existentes de FastAppend y SnapshotUpdate; después, inspecciona los archivos de snapshot, manifest, tabla y transacción indicados. Usa el replace_partitions_test.cc planificado y su registro en CMake para verificar que están cubiertos el reemplazo de particiones, el comportamiento sin particiones, los metadatos de operación y resumen, y las nuevas API de tabla y transacción.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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

Lenguaje dominante
C++
Estrellas
223
Forks
127
Merge medio
1 d 13 h
PR fusionados (30 d)
28

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/iceberg-cpp

Todos los issues de apache/iceberg-cpp

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.