apache / apache/datafusion

Eliminate more outer joins by supporting more expressions

Ouverte
#13,232 5 commentaires 3 réactions 0 personnes assignées Voir sur GitHub
enhancement optimizer performance
Langage dominant
Rust
Étoiles
9.3k
Forks
2.4k
Merge moyen
3 j 11 h
PR mergées (30 j)
362

Description

### Is your feature request related to a problem or challenge?

This PR by @JasonLi-cn tried to support more pushdown of filters https://github.com/apache/datafusion/pull/13184 , however the implementation wasn't 100% right as it pushed down more predicates, but didn't change the join type (left to inner).

### Describe the solution you'd like

Add support for a wider range of expressions in `EliminateOuterJoin`, notably in `extract_non_nullable_columns`.
We lack support of more complex nested expressions, quite some binary operators, UDFs etc. such as:

* `abs(x) > 1`
* `a + a` > `c + b`

We should aim to support any operator that returns null when the input value is null (most binary / unary operators).

### Describe alternatives you've considered

_No response_

### Additional context

_No response_

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par la règle d’optimisation EliminateOuterJoin, en particulier extract_non_nullable_columns, et examinez la PR #13184 concernant le comportement de pushdown existant. La tâche est considérée comme terminée lorsque les expressions imbriquées décrites, les opérateurs binaires et les UDFs qui renvoient null pour des entrées null sont pris en charge, tout en modifiant correctement le type de jointure lorsque les prédicats le permettent.

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

Évaluation

Stack technique
rust
Domaine
databases
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
50/100

Recevez les nouvelles issues par e-mail

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