Is your feature request related to a problem? Please describe.
In AggExec, currently the aggregate buffers are combined into one BinaryArray. this introduces extra serialization and C2R/R2C cost when there are multiple aggregate functions. and the code is hard to understand.
Describe the solution you'd like
use columnar based aggregate buffers, each aggregate function manages its own buffers.
Describe alternatives you've considered
Additional context