[FEA] Add DECIMAL128 support to streaming groupby
- Dominant language
- C++
- Stars
- 9.8k
- Forks
- 1.1k
- Avg merge
- 3d 6m
- Merged PRs (30d)
- 278
Description
**Is your feature request related to a problem? Please describe.**
Based on the offline discussion with @kjmph
Streaming groupby does not support `DECIMAL128`. Workloads that need it fall back to the classic `groupby::aggregate` path, which holds the full hash aggregation state for the whole input at once.
This came up while investigating TPC-H SF3K OOMs on AWS g73.48xlarge. Q18 was only fixable via host spilling, which was very slow, and `DECIMAL128` streaming groupby would help.
**Describe the solution you'd like**
Accept `DECIMAL128` in streaming groupby for keys and for the aggregations it already supports. The missing piece is 128-bit atomics for the aggregation path.
**Describe alternatives you've considered**
Host spilling. Works but too slow.
Contributor guide
Research direction
Start by tracing the streaming groupby path and comparing it with the classic groupby::aggregate path, focusing on how supported aggregations handle numeric types. Investigate the stated 128-bit atomic requirement and existing DECIMAL128 handling. Done means DECIMAL128 works for streaming-groupby keys and its already-supported aggregations without requiring host spilling.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- data
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100