feat: implement ReplacePartitions (two-PR plan)
Mantenedores costumam responder em até 2 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 58/100
- Tipo de issue
- Funcionalidade
- Clareza
- Claramente especificada
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- cpp
- Domínio
- data-engineering
Direção de pesquisa
Comece lendo as implementações existentes de FastAppend e SnapshotUpdate e, em seguida, inspecione os arquivos de snapshot, manifest, tabela e transação listados. Use o replace_partitions_test.cc planejado e seu registro no CMake para verificar se a substituição de partições, o comportamento não particionado, os metadados de operação e resumo e as novas APIs de tabela e transação estão cobertos.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- C++
- Estrelas
- 226
- Forks
- 133
- Merge médio
- 5d 10h
- PRs com merge (30d)
- 33
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de apache/iceberg-cpp
-
bug: ReferenceVisitor::GetReferencedFieldIds dereferences null on a bound COUNT(*)Talvez já em andamento @LuciferYang assumiu há 11 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
apache/iceberg-cpp#978 ·
Mantenedores costumam responder em até 2 dias
-
bug: InMemoryCatalog skips the namespace existence check in CreateTable and RegisterTableTalvez já em andamento @LuciferYang assumiu há 11 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
apache/iceberg-cpp#977 ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
apache/iceberg-cpp#1000 · 1 comentário · 1 reação ·
Mantenedores costumam responder em até 2 dias
-
Support Iceberg table encryption (Java-compatible)Talvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 8/100
apache/iceberg-cpp#988 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 20/100
apache/iceberg-cpp#959 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
Todas as issues de apache/iceberg-cpp
Issues semelhantes
-
ai_p2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
ClickHouse/ClickHouse#125522 ·
Mantenedores costumam responder em até 1 dia
-
Branch-3.3.5a
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100
TrinityCore/TrinityCore#32060 ·
Mantenedores costumam responder em até 3 dias
-
needs-triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
open-telemetry/opentelemetry-cpp#4697 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
secondlife/viewer#6432 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
rajpreetcodes/Skills_MCP_Server#39 ·
Mantenedores costumam responder em até 1 dia