Interface for User-Defined Aggregate Function (UDAF). A UDAF operates on one column of data and returns one column of data.
More...
|
virtual void | aggregateArrs (ServerInterface &srvInterface, void **dstTuples, int doff, const void *arr, int stride, const void *rcounts, int rcstride, int count, IntermediateAggs &intAggs, std::vector< int > &intOffsets, BlockReader &arg_reader)=0 |
|
virtual void | combine (ServerInterface &srvInterface, IntermediateAggs &aggs_output, MultipleIntermediateAggs &aggs_other)=0 |
|
virtual void | destroy (ServerInterface &srvInterface, const SizedColumnTypes &argTypes) |
|
virtual void | destroy (ServerInterface &srvInterface, const SizedColumnTypes &argTypes, SessionParamWriterMap &udSessionParams) |
|
virtual void | initAggregate (ServerInterface &srvInterface, IntermediateAggs &aggs)=0 |
|
virtual void | setup (ServerInterface &srvInterface, const SizedColumnTypes &argTypes) |
|
virtual void | terminate (ServerInterface &srvInterface, BlockWriter &res_writer, IntermediateAggs &aggs) |
|
virtual void | terminate (ServerInterface &srvInterface, BlockWriter &res_writer, IntermediateAggs &aggs, SessionParamWriterMap &udSessionParams) |
|
Interface for User-Defined Aggregate Function (UDAF). A UDAF operates on one column of data and returns one column of data.
An AggregateFunction must have an associated AggregateFunctionFactory.
virtual void Vertica::AggregateFunction::aggregateArrs |
( |
ServerInterface & |
srvInterface, |
|
|
void ** |
dstTuples, |
|
|
int |
doff, |
|
|
const void * |
arr, |
|
|
int |
stride, |
|
|
const void * |
rcounts, |
|
|
int |
rcstride, |
|
|
int |
count, |
|
|
IntermediateAggs & |
intAggs, |
|
|
std::vector< int > & |
intOffsets, |
|
|
BlockReader & |
arg_reader |
|
) |
| |
|
pure virtual |
Called by the server to perform aggregation on multiple blocks of data
- Note
- User should not explicity implement this function. It is implemented by calling the InlineAggregate() macro. User should follow the convention of implementing void aggregate(ServerInterface &srvInterface, BlockReader &arg_reader, IntermediateAggs &aggs) along with initAggregate, combine, and terminate. For references on what a fully implemented Aggregate Function looks like, check the examples in the example folder.
which the inlined aggregateArrs implemention will invoke
Called when intermediate aggregates need to be combined with each other
Perform per instance destruction. This function may throw errors
Perform per instance destruction and write session parameters to be used by UDxs that are invoked after this one returns. This function may throw errors
Called by the server to set the starting values of the Intermediate aggregates.
- Note
- This can be called multiple times on multiple machines, so starting values should be idempotent.
Perform per instance initialization. This function may throw errors.
Called by the server to get the output to the aggregate function
Called by the server to get the output to the aggregate function
void Vertica::AggregateFunction::updateCols |
( |
BlockReader & |
arg_reader, |
|
|
char * |
arg, |
|
|
int |
count, |
|
|
IntermediateAggs & |
intAggs, |
|
|
char * |
aggPtr, |
|
|
std::vector< int > & |
intOffsets |
|
) |
| |
|
static |
Helper function for aggregateArrs.
- Note
- User should not call this function.