pub trait AggregateFunction: Send + Sync {
// Required methods
fn aggregate<'a>(
&'a mut self,
ctx: AggregateFunctionContext<'a>,
) -> AggregateFunctionResult<()>;
fn finalize(
&mut self,
) -> AggregateFunctionResult<(Vec<GroupKey>, ColumnData)>;
fn return_type(&self, input_type: &Type) -> Type;
fn accepted_types(&self) -> InputTypes;
}