Project Hive Partition Columns With ProjectionExec
- Vorherrschende Sprache
- Rust
- Sterne
- 9.3k
- Forks
- 2.4k
- Ø Merge
- 3 T. 11 Std.
- Gemergte PRs (30 T.)
- 360
Beschreibung
**Is your feature request related to a problem or challenge? Please describe what you are trying to do.**
Part of #2079
Currently the values of Hive partitions are projected within each of the various file format specific physical operators. As described in #2079 this has a number of drawbacks
**Describe the solution you'd like**
Rather than handling partition projection within the file scan operator, I would like to propose modifying `ListingTable` to add a `ProjectionExec` within `TableProvider::scan` instead of relying on the `FileFormat` implementations to do this. This `ProjectionExec` would be created with a set of literal expressions corresponding to the partition values
Therefore instead of `TableProvider::scan` generating something like
```
AvroExec:
```
It would generate
```
UnionExec
ProjectionExec: ... // Partition 1
AvroExec: ...
ProjectionExec: ... // Partition 2
AvroExec: ...
```
Note: this will depend on #2289
**Describe alternatives you've considered**
The logic could instead be moved to `FileFormat::create_physical_plan` implementations, but I think it would be better to keep what is a catalog detail close to the catalog implementation.
FYI @matthewmturner @yjshen @rdettai
Beitragsleitfaden
Rechercherichtung
Lies zunächst ListingTable und TableProvider::scan, und überprüfe anschließend die Implementierungen von FileFormat::create_physical_plan sowie die Abhängigkeit in #2289. Verfolge, wie Hive-Partitionswerte derzeit projiziert werden und wie ProjectionExec und UnionExec zusammengesetzt werden. Die Aufgabe ist erledigt, wenn die Partitionsprojektion von ListingTable statt von dateiformatspezifischen physischen Operatoren behandelt wird und die vorgeschlagene Planstruktur für mehrere Partitionen funktioniert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rust
- Bereich
- databases
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100