bug: TableMetadataBuilder::RemoveSchemas leaves removed ids in the schema index
Les mainteneurs répondent en général sous 2 jours
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 72/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- cpp
- Domaine
- data-engineering
Piste de recherche
Commence par l'implémentation de TableMetadataBuilder::Impl::RemoveSchemas, où metadata_.schemas est filtré mais pas schemas_by_id_. Vérifie comment SetCurrentSchema, AddSchema et la vérification du schéma courant dans Build() utilisent cet index. La tâche est terminée lorsque, après RemoveSchemas({1}), SetCurrentSchema(1) échoue et que AddSchema avec le même schéma le réajoute, avec un test couvrant ces deux cas.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- C++
- Étoiles
- 228
- Forks
- 136
- Merge moyen
- 5 j 19 h
- PR mergées (30 j)
- 53
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de apache/iceberg-cpp
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 12/100
apache/iceberg-cpp#1027 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
bug: gzip table metadata is neither written nor detected as gzipPeut-être pris @LuciferYang l’a pris il y a 7 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 66/100
apache/iceberg-cpp#1013 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
apache/iceberg-cpp#1000 · 2 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 8/100
apache/iceberg-cpp#988 · 2 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 20/100
apache/iceberg-cpp#959 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de apache/iceberg-cpp
Issues similaires
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
metasequoiaime/msime#9113 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
tone-3000/tone3000-plugin#257 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Locked plugin flip-flops position on every refresh after being disabledPeut-être pris @Illustar0 l’a pris aujourd’hui. Ouverteissue report
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
ModOrganizer2/modorganizer#2449 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
Les mainteneurs répondent en général sous 1 jour
-
enhancement P5
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
open-astro/AlpacaBridge#1468 ·
Les mainteneurs répondent en général sous 1 jour