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

Report which extension codec handled each node of a serialized plan

Ouverte
#1,706 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
python

Piste de recherche

Commencez par SessionContext.logical_extension_codec_ids() et physical_extension_codec_ids(), puis consultez la chaîne de codecs d’extension décrite dans #1678. Déterminez comment un plan sérialisé est représenté pour EXPLAIN et définissez comment le codec gagnant peut être attribué à chaque nœud ; le travail est terminé lorsqu’une inspection spécifique au plan ou un résultat EXPLAIN identifie le codec qui gère chaque nœud sérialisé.

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

Description

enhancement

Is your feature request related to a problem or challenge? Please describe what you are trying to do.

Extension codecs compose as of #1678: a session holds a chain of them, and encoding walks the chain in install order until one claims an object. With several libraries installed there is currently no way to ask which codec handled a given node. Raised in https://github.com/apache/datafusion-python/pull/1678#pullrequestreview-4940081598.

Part of this is answered already. SessionContext.logical_extension_codec_ids() and physical_extension_codec_ids() list what is installed, in install order, and those ids are what a payload carries — so a decode failure names the codec that wrote the bytes and lists what the session actually has. What is missing is per-call attribution: which codec handled which node of a particular plan. Today the only way to find out is to check a codec's own call counters before and after, which requires the codec to expose them and tells you nothing about which node was involved.

Describe the solution you'd like

Surface the winning codec per node, most naturally in EXPLAIN output for a plan that has been serialized, or failing that as an inspection call that reports the encode decisions made for a given plan.

Describe alternatives you've considered

Leaving it to the decode error, which already names the responsible codec. That covers the case where something went wrong but not the case where someone is trying to understand a working setup, which is when a multi-library chain is most confusing.

Logging each claim at debug level. Cheap to add and much weaker: it is per-session rather than per-plan, and it puts the burden of correlating lines with nodes on the reader.

Additional context

Deliberately left out of #1678: recording the winner means threading it through plan formatting, which is a change to how plans are displayed rather than to how codecs compose.

Langage dominant
Python
Étoiles
605
Forks
176
Merge moyen
1 j 23 h
PR mergées (30 j)
8

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

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/datafusion-python

Toutes les issues de apache/datafusion-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.