# Aggregate

A user-defined aggregate function needs to implement this interface. The class must be public and must have a public non-argument constructor.

Methods
void | add(Object value) This method is called once for each row.
void | add(Object value) throws SQLException This method is called once for each row. If the aggregate function is called with multiple parameters, those are passed as array. Parameters: value - the value(s) for this row
int | getInternalType(int[] inputTypes) This method must return the H2 data type,

int

getInternalType(int[] inputTypes) throws SQLException
This method must return the H2 data type, {@link org.h2.value.Value}, of the aggregate function, given the H2 data type of the input data. The method should check here if the number of parameters passed is correct, and if not it should throw an exception.
Parameters:
inputTypes - the H2 data type of the parameters,
Returns:
the H2 data type of the result
Throws:
SQLException - if the number/type of parameters passed is incorrect

Object | getResult() This method returns the computed aggregate value.
Object | getResult() throws SQLException This method returns the computed aggregate value. Returns: the aggregated value
void | init(Connection conn) This method is called when the aggregate function is used.
void | init(Connection conn) throws SQLException This method is called when the aggregate function is used. A new object is created for each invocation. Parameters: conn - a connection to the database