Eliminate more outer joins by supporting more expressions
- 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