Sometimes Filters are not repartitioned when they could be
- Lingua principale
- Rust
- Stelle
- 9.3k
- Fork
- 2.4k
- Merge medio
- 3g 11h
- PR unite (30g)
- 360
Descrizione
**Describe the bug**
We previously had a plan like this (where the RepartitionExec was added prior to a filter in order to increase parallelism).
However, after upgrading DataFusion, the RepartitionExec is no longer there. I actually think this is a slightly worse plan as now the filter can not be done in parallel
```
FilterExec: tag@2 = A
RepartitionExec: partitioning=RoundRobinBatch(4) <--- This RepartitionExec has been removed
DeduplicateExec: [tag@2 ASC,time@3 ASC]
SortPreservingMergeExec: [tag@2 ASC,time@3 ASC]
UnionExec
ParquetExec: limit=None, partitions={1 group: [[1/1/1/1/00000000-0000-0000-0000-000000000000.parquet]]}, predicate=tag = Dictionary(Int32, Utf8("A")), pruning_predicate=tag_min@0 <= A AND A <= tag_max@1, output_ordering=[tag@2 ASC, time@3 ASC], projection=[bar, foo, tag, time] |
SortExec: [tag@2 ASC,time@3 ASC].
RecordBatchesExec: batches_groups=1 batches=1
```
**To Reproduce**
I am working on a reproducer
**Expected behavior**
A `RepartitionExec` should be added if it will increase parallelism for filtering
**Additional context**
We found this while upgrading IOx:
https://github.com/influxdata/influxdb_iox/pull/6603 -- see https://github.com/influxdata/influxdb_iox/pull/6603/files#r1072606494
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia producendo il riproduttore menzionato nell’issue e confronta il piano di esecuzione contenente FilterExec, DeduplicateExec, SortPreservingMergeExec, UnionExec e ParquetExec con e senza RepartitionExec. Il lavoro è completato quando il piano aggiunge RepartitionExec se questo aumenta il parallelismo per il filtraggio, con il comportamento verificato tramite il riproduttore.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rust
- Ambito
- databases
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 35/100