Expose SessionContext.register_higher_order_function / deregister_higher_order_function (v54)
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 30/100
Piste de recherche
Commencez par lire la PR #1561 et les signatures d’enregistrement de SessionContext en amont pour HigherOrderFunctionImpl et Expr. Définissez l’API destinée à Python pour enregistrer et désenregistrer des fonctions higher-order personnalisées, notamment la manière dont invoke renvoie un Expr ; le travail est terminé lorsque la surface d’enregistrement de v54 est exposée et utilisable par les auteurs de bibliothèques.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Background
DataFusion 54 introduced first-class higher-order functions (HOFs) that take lambdas plus collection arguments and rewrite to a scalar Expr at planning time. PR #1561 exposed Python lambda syntax and the built-in HOFs (array_transform, array_filter, array_any_match, etc.) but did not expose the registration API for custom HOFs.
Upstream signature
pub fn register_higher_order_function(&self, func: Arc<dyn HigherOrderFunctionImpl>)
pub fn deregister_higher_order_function(&self, name: &str) -> Option<Arc<dyn HigherOrderFunctionImpl>>
HigherOrderFunctionImpl trait requires name(), args_count() (min, max), and invoke(&self, args: &[Expr]) -> Result<Expr>.
User value
Lets library authors add lambda-aware operators that are not in DataFusion's built-in set. Examples: array_window(arr, size, x -> ...), array_partition_by(arr, x -> key(x)), array_zip_with(a, b, (x, y) -> x * y), or domain-specific operators on JSON / graph / geo arrays. The HOF runs at logical-plan time, rewriting lambda + args into a standard Expr tree the planner optimizes -- not equivalent to a ScalarUDF.
Why deferred
Effort estimate is medium-large (~350-550 LOC) and the authoring cost is high for end users: the invoke callback must return a DataFusion Expr tree from Python, which requires familiarity with the Expr grammar. Most array-lambda needs are already covered by the built-in HOFs PR #1561 ships. No open user requests at the time of audit. Filed for tracking to complete the v54 HOF surface symmetrically once a concrete use case or extension-library ecosystem emerges.
- 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
- 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/datafusion-python
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
apache/datafusion-python#1757 ·
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
apache/datafusion-python#1726 ·
-
Difficulté 2/5 Une demi-journée Accessibilité débutants 88/100
apache/datafusion-python#1691 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/datafusion-python#1644 ·
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
apache/datafusion-python#1737 ·
Toutes les issues de apache/datafusion-python
Issues similaires
-
[Bug] reef-hermes tells me to resume with hermes --resume, which does not work from my shell Ouvertearea: harness bug status: needs-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Human-Agent-Society/reef#625 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 80/100
learningequality/kolibri#15351 · 2 commentaires ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Name consistency Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
eellak/triplestore#65 · 1 commentaire ·