bug: TableMetadataBuilder::RemoveSchemas leaves removed ids in the schema index
Mantenedores costumam responder em até 2 dias
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 72/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- cpp
- Domínio
- data-engineering
Direção de pesquisa
Comece na implementação de TableMetadataBuilder::Impl::RemoveSchemas, onde metadata_.schemas é filtrado, mas schemas_by_id_ não é. Verifique como SetCurrentSchema, AddSchema e a verificação do esquema atual em Build() usam esse índice. Está concluído quando, após RemoveSchemas({1}), SetCurrentSchema(1) falha e AddSchema do mesmo esquema o readiciona, com um teste cobrindo os dois casos.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Summary
TableMetadataBuilder::Impl::RemoveSchemas filters metadata_.schemas but never touches schemas_by_id_. Within the same builder the removed ids stay resolvable, so Build() can produce metadata whose current-schema-id points at a schema that is no longer in schemas.
Root cause
SetCurrentSchema checks the id against schemas_by_id_, and the current-schema check in Build() uses the same index. Both still find the removed schema, so:
RemoveSchemas({1})followed bySetCurrentSchema(1)succeeds, andBuild()returns metadata withcurrent-schema-id: 1whileschemasno longer contains schema 1.RemoveSchemas({1})followed byAddSchemaof the same schema finds it through the stale index and skips re-adding it toschemas.
Impact
InMemoryCatalog::CommitTable and SqlCatalog::CommitTable apply the caller's update list on one builder, then Build() and write the result. A commit carrying [remove-schemas, set-current-schema] for the same id is enough to write that metadata file, and reading it back fails with Cannot find schema with current-schema-id=..., so the table can no longer be loaded.
Java's Builder.removeSchemas does not update schemasById either, so this is stricter than Java's builder.
Proposed fix
Erase the removed ids from schemas_by_id_ alongside the existing filter of metadata_.schemas.
Out of scope
RemovePartitionSpecs has the same gap with specs_by_id_. Follow-up.
- Linguagem predominante
- C++
- Estrelas
- 226
- Forks
- 133
- Merge médio
- 6d 5h
- PRs com merge (30d)
- 40
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: manifest Avro headers use the wrong partition-spec shape and omit schema-idTalvez já em andamento @mavam assumiu hoje. Aberta
Dificuldade 4/5 1-2 dias Facilidade para iniciantes 58/100
apache/iceberg-cpp#1016 ·
Mantenedores costumam responder em até 2 dias
-
bug: gzip table metadata is neither written nor detected as gzipTalvez já em andamento @LuciferYang assumiu há 1 dia. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 66/100
apache/iceberg-cpp#1013 ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
apache/iceberg-cpp#1000 · 2 comentários · 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
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
bitcoin-core/gui-qml#1030 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
tesseract-robotics/tesseract#1384 ·
-
Fix the silent drop of oversized clusters in the plain EuclideanClusterObjectDetectorTalvez já em andamento @xmfcx assumiu hoje. Abertacomponent:perception type:bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
autowarefoundation/autoware_core#1497 ·
Mantenedores costumam responder em até 2 dias
-
agent:WSL bug linux LOW
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Mantenedores costumam responder em até 1 dia
-
Build failure: limoAberta0.kind: build failure
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia