General framework to decorrelate the subqueries
- Lingua principale
- Rust
- Stelle
- 9.3k
- Fork
- 2.4k
- Merge medio
- 3g 11h
- PR unite (30g)
- 360
Descrizione
**Is your feature request related to a problem or challenge? Please describe what you are trying to do.**
In the current DataFusion, it has very limited support for correlated subqueries. It can only decorrelate the (NOT) IN/Exists predicate subqueries to Semi/Anti Joins. Even in the simplest IN/Exists cases, if the correlated expressions are not in the Filter/Join conditions, the current decorrelate rules will not support them.
In the paper "Unnesting Arbitrary Queries" by T. Neumann; A. Kemper
(http://www.btw-2015.de/res/proceedings/Hauptband/Wiss/Neumann-Unnesting_Arbitrary_Querie.pdf). It raise a mechanism to unnest arbitrary queries. This was already implemented by the Hyper DB:
For example:
select * from orders
where 1 in (select 1 from part left join (select l_partkey from lineitem where o_orderkey = 2) lineitem on p_partkey = lineitem.l_partkey)
https://hyper-db.de/interface.html#
Both SparkSQL and PostgreSQL do not support decorrelate such kind of queries.
**Describe the solution you'd like**
**Describe alternatives you've considered**
**Additional context**
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia leggendo il comportamento esistente di DataFusion per la decorrelazione delle sottoquery correlate e il paper di riferimento "Unnesting Arbitrary Queries". Usa l'esempio SQL nell'issue come caso obiettivo e verifica che le sottoquery correlate arbitrarie oltre all'attuale supporto di semi-join e anti-join per IN/EXISTS siano gestite correttamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rust, sql
- Ambito
- databases
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Tranquilla
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 30/100