pub trait Aggregate<A, T>where
    A: RefUnwindSafe + UnwindSafe,
    T: ToSql,
{ fn init(&self) -> A; fn step(&self, _: &mut Context<'_>, _: &mut A) -> Result<()>; fn finalize(&self, _: Option<A>) -> Result<T>; }
Expand description

Aggregate is the callback interface for user-defined aggregate function.

A is the type of the aggregation context and T is the type of the final result. Implementations should be stateless.

Required Methods§

Initializes the aggregation context. Will be called prior to the first call to step() to set up the context for an invocation of the function. (Note: init() will not be called if there are no rows.)

“step” function called once for each row in an aggregate group. May be called 0 times if there are no rows.

Computes and returns the final result. Will be called exactly once for each invocation of the function. If step() was called at least once, will be given Some(A) (the same A as was created by init and given to step); if step() was not called (because the function is running against 0 rows), will be given None.

Implementors§