Rework the AggregateExecutor interface to no longer have unnecessary pointers and arrays #7671
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR changes the
AggregateExecutor
interface to be simpler and no longer have pointers and arrays - but instead have references everywhere and useoptional_ptr
for optionals (such as the bind data). In addition we add some extra structures likeAggregateUnaryInput
that offer helper methods which further cleans up the interface.Note that the actual
AggregateFunction
interface is unchanged - this only changes theAggregateExecutor
helper that allows for easier implementation of aggregates (and that is used by most of our aggregate functions).New Interface
Old Interface
One side-effect of this change is that the
Count
function can no longer use theAggregateExecutor
- as that was previously reliant on ignoring the input data array to support input data of all types, which it can no longer do now that it is a reference instead of a pointer.