Expose SessionContext.add_optimizer_rule for Python-defined logical optimizer rules
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- Clairement spécifiée
- Activité
- Calme
- Domaine
- data-engineering
Piste de recherche
Commencez par examiner le binding Python existant pour SessionContext.remove_optimizer_rule ainsi que le travail sur add_physical_optimizer_rule dans PR #1557. Revenez sur cette issue dès qu’upstream fournira FFI_OptimizerRule et des constructeurs Python LogicalPlan ; le travail sera considéré comme terminé lorsque des règles logiques définies en Python pourront être enregistrées via add_optimizer_rule et exécutées via le binding.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Background
SessionContext::add_optimizer_rule registers an Arc<dyn OptimizerRule> that runs during logical plan optimization. The Python bindings only expose remove_optimizer_rule, never the additive side. PR #1557 ultimately landed add_physical_optimizer_rule for the physical pipeline via FFI but did not address the logical pipeline.
Upstream signature
pub fn add_optimizer_rule(&self, optimizer_rule: Arc<dyn OptimizerRule + Send + Sync>)
User value
Lets users add domain-specific logical rewrites (predicate normalization, redundant join elimination, scan pruning informed by external metadata) without forking DataFusion. Complements the existing remove_optimizer_rule to round out the surface.
Why deferred
Blocked upstream. As documented in PR #1557, DataFusion does not currently expose an FFI bridge for the logical OptimizerRule / AnalyzerRule traits, and there are no Python constructors for LogicalPlan node variants -- a pure-Python rule could observe plans but not transform them. The PR #1557 commit history shows an initial attempt at a Python-defined logical rule that was abandoned for this reason. This is filed for tracking; it should be revisited once upstream lands an FFI_OptimizerRule (mirroring FFI_PhysicalOptimizerRule).
- 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
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
stephrobert/dsoxlab#238 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
sublimehq/package_control#1780 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
nwg-piotr/nwg-displays#145 ·