bug: TableMetadataBuilder::RemoveSchemas leaves removed ids in the schema index
I maintainer di solito rispondono entro 2 giorni
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- cpp
- Ambito
- data-engineering
Direzione di ricerca
Parti dall'implementazione di TableMetadataBuilder::Impl::RemoveSchemas, dove metadata_.schemas viene filtrato ma schemas_by_id_ no. Controlla come SetCurrentSchema, AddSchema e il controllo dello schema corrente in Build() usano questo indice. Il lavoro è completo quando, dopo RemoveSchemas({1}), SetCurrentSchema(1) fallisce e AddSchema dello stesso schema lo riaggiunge, con un test che copra entrambi i casi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- C++
- Stelle
- 228
- Fork
- 136
- Merge medio
- 5g 22h
- PR unite (30g)
- 52
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/iceberg-cpp
-
build: regression after #1021 — Arrow's arrow_SOURCE_DIR collides with FetchContent on CMake 3.28, breaks vendored Arrow buildForse già presa @raulcd l’ha presa oggi. Aperta
Difficoltà 3/5 Mezza giornata Idoneità per principianti 22/100
apache/iceberg-cpp#1028 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 12/100
apache/iceberg-cpp#1027 ·
I maintainer di solito rispondono entro 2 giorni
-
bug: gzip table metadata is neither written nor detected as gzipForse già presa @LuciferYang l’ha presa 3 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 66/100
apache/iceberg-cpp#1013 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
apache/iceberg-cpp#1000 · 2 commenti · 1 reazione ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 8/100
apache/iceberg-cpp#988 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di apache/iceberg-cpp
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Mac mini M6 (16 GB): Q2_0 streaming works - measured 11.7->27.2 tok/s + arena fix for sub-32 GB MacsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
champion good first issue remake source/qq
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
metasequoiaime/msime-windows#1025 ·
I maintainer di solito rispondono entro 1 giorno
-
backlog bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
EchoTools/nevr-runtime#653 ·
I maintainer di solito rispondono entro 1 giorno
-
`--fail-require-skip` never fires: run_tests.py searches stdout, but the unittest binary writes the skip summary to stderrForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno