EPIC: Complete `GroupValuesColumn` for Faster Aggregation support
- Dominant language
- Rust
- Stars
- 9.3k
- Forks
- 2.4k
- Avg merge
- 3d 7h
- Merged PRs (30d)
- 344
Description
- Follow on to https://github.com/apache/datafusion/issues/22715#issuecomment-5248863589
### Is your feature request related to a problem or challenge?
When running a query like `SELECT ... GROUP BY x, y` the DataFusion grouping operator computes / stores the group keys using an instance of the [`GroupValuesColumn`](https://docs.rs/datafusion/latest/datafusion/physical_plan/aggregates/group_values/multi_group_by/struct.GroupValuesColumn.html) trait.
This trait is a column-wise provides type-specific specializations under [`multi_group_by`](https://github.com/apache/datafusion/blob/1b27f348c97c6eb65d922cb1a208465a2f109311/datafusion/physical-plan/src/aggregates/group_values/multi_group_by/mod.rs#L1-L0)
If any one of the group by keys does not have a specialization of `GroupValuesColumn` DataFusion falls back to the general, but slower byte-encoded [`GroupValuesRows`](https://github.com/apache/datafusion/blob/68d587468073c1fc84ffe00db66f35d506dcc828/datafusion/physical-plan/src/aggregates/group_values/row.rs#L46-L45).
The currently supported types are listed in `group_column_supported_type`: https://github.com/apache/datafusion/blob/047f531488f6617e88c76769baf2e2d6ac8e1c0e/datafusion/physical-plan/src/aggregates/group_values/multi_group_by/mod.rs#L930
## Definition of Done
This EPIC tracks **completing the GroupValuesColumn type coverage** so that [`GroupValuesRows`](https://github.com/apache/datafusion/blob/68d587468073c1fc84ffe00db66f35d506dcc828/datafusion/physical-plan/src/aggregates/group_values/row.rs#L46-L45) can be removed
## Subtasks
- [ ] #22682
- [ ] #23993
- [x] #22701
- [ ] #23127
### Describe the solution you'd like
_No response_
### Describe alternatives you've considered
_No response_
### Additional context
_No response_
Contributor guide
Research direction
Start by reviewing datafusion/physical-plan/src/aggregates/group_values/multi_group_by/mod.rs, especially the group_column_supported_type entry point and existing GroupValuesColumn specializations. Read the related subtasks #22682, #23993, #22701, and #23127, along with group_values/row.rs. Done means the required type coverage is complete and GroupValuesRows can be removed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust, sql
- Domain
- databases
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 28/100