[carnot] Implement execution of partial aggregates.
Describe the Task We already have support for planning queries with partial aggregates (Partial aggregates means some of the aggregation is done on the agent nodes before sending the partially aggregated results to Kelvin for final aggregation). However, the query execution engine doesn't yet support executing partial aggregate nodes. This issue tracks the implementation on the execution side.
Subtasks
- [x] Add UDADefinition accessors for Serialize/Deserialize methods so that the execution side can access them.
- [x] Fix the compiler's output schema for partial aggregates. Currently, the compiler outputs a single column for all partial aggregates, but its much more convenient from the execution's point of view for there to be one column for each UDA executed.
- [x] Implement the deserialization, merging, and serialization in the agg node.
- [x] Finally, enable partial aggregates on the planner side.
Reopening since this was reverted in https://github.com/pixie-io/pixie/pull/1692.
The partial aggregate change was re-enabled in https://github.com/pixie-io/pixie/pull/1702, however, when testing the next release I noticed that the flame graph script was still broken. #1721 will be reverting this change again.