Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

View does not expose metadata_location: RestCatalog.load_view discards it from the server's response

Ouverte Adaptée aux débutants
#4,073 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@Soumo-git-hub y travaille déjà.

Depuis le 4/10/2026.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
84/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python
Domaine
api, databases

Piste de recherche

Commencez dans pyiceberg/catalog/rest/init.py, au niveau de _response_to_view, en le comparant à _response_to_table et au modèle ViewResponse. Vérifiez que load_view et create_view préservent la valeur REST de metadata-location et que la View résultante l’expose pour le cas d’utilisation de register_view décrit dans l’issue.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

kind:bug
Apache Iceberg version

0.12.0 (latest release)

Please describe the bug 🐞

RestCatalog.load_view (and create_view) parse the server's metadata-location but drop it when building the View, so callers cannot learn where a view's current metadata file is. Tables keep it as Table.metadata_location; views have no equivalent. The behaviour is unchanged on main.

The spec (open-api/rest-catalog-open-api.yaml) requires the field in every view load result:

LoadViewResult:
  required:
    - metadata-location
    - metadata

with the description: "The corresponding file location of view metadata is returned in the metadata-location field. Clients can check whether metadata has changed by comparing metadata locations after the view has been created."

pyiceberg parses it, then discards it (pyiceberg/catalog/rest/__init__.py on main):

class ViewResponse(IcebergBaseModel):
    metadata_location: str | None = Field(alias="metadata-location", default=None)
    metadata: ViewMetadata
    config: Properties = Field(default_factory=dict)

def _response_to_view(self, identifier_tuple, view_response: ViewResponse) -> View:
    return View(
        identifier=identifier_tuple,
        metadata=view_response.metadata,
        config=view_response.config,
    )   # view_response.metadata_location is never passed on

_response_to_table, by contrast, passes metadata_location=table_response.metadata_location to Table.

Why it matters: without it, a client cannot detect changes to a view the way the spec suggests (comparing metadata locations), record where a view's metadata lives, or re-register a view from that file later with register_view.

Expected: View exposes metadata_location, set from the REST response, like Table.metadata_location.

PR #3390 ("REST: Add metadata_location to View, and register_view integration test") addressed this but was closed unmerged. Related umbrella issue: #818.

Willingness to contribute
  • I can contribute a fix for this bug independently
  • I would be willing to contribute a fix for this bug with guidance from the Iceberg community
  • I cannot contribute a fix for this bug at this time
Langage dominant
Python
Étoiles
1.1k
Forks
606
Merge moyen
1 j 11 h
PR mergées (30 j)
76

Préparer son environnement

  • Aucun Dockerfile ni fichier Docker Compose
  • Propose un modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/iceberg-python

Toutes les issues de apache/iceberg-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.