Vertica::AggregateFunction Class Reference
Interface for User-Defined Aggregate Function (UDAF). A UDAF operates on one column of data and returns one column of data.
Inheritance diagram for Vertica::AggregateFunction:
Collaboration diagram for Vertica::AggregateFunction:
| Public Member Functions | |
|---|---|
| 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 &intOffsets, BlockReader &arg_reader)=0 |
| void | cancelUDX (ServerInterface &srvInterface) |
| 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 |
| bool | isCanceled () const |
| 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) |
| Static Public Member Functions | |
|---|---|
| static void | updateCols (BlockReader &arg_reader, char *arg, int count, IntermediateAggs &intAggs, char *aggPtr, std::vector &intOffsets) |
| Protected Member Functions | |
|---|---|
| virtual void | cancel (ServerInterface &srvInterface) |
Detailed Description
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.
Member Function Documentation
◆aggregateArrs()
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 & 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
◆cancel()
virtual void Vertica::UDXObject::cancel(ServerInterface & srvInterface)
inlineprotectedvirtualinherited
Cancel callback to be overridden by the UDX. Called when the query running the UDX has been canceled.
Note
-
This method will be invoked at most once per UDX object. Once a UDX object has been canceled, it will never be un-canceled.
-
This method may be called from a separate thread, concurrently with other methods of this UDX object (but never the constructor or destructor). Implementations must be thread-safe with all methods of this UDX.
-
This method will be invoked for either an explicit user cancel, or in the event of an error during query execution.
Referenced by Vertica::UDXObject::cancelUDX().
◆cancelUDX()
void Vertica::UDXObject::cancelUDX(ServerInterface & srvInterface)
inline inherited Cancel callback invoked when the query running the UDX has been canceled. See cancel().
◆combine()
virtual void Vertica::AggregateFunction::combine(ServerInterface & srvInterface, IntermediateAggs & aggs_output, MultipleIntermediateAggs & aggs_other)
pure virtual Called when intermediate aggregates need to be combined with each other
◆destroy() [1/2]
virtual void Vertica::UDXFunction::destroy(ServerInterface & srvInterface, const SizedColumnTypes & argTypes)
inlinevirtualinherited
Perform per instance destruction. This function may throw errors
Referenced by Vertica::UDXFunction::destroy().
◆destroy() [2/2]
virtual void Vertica::UDXFunction::destroy(ServerInterface & srvInterface, const SizedColumnTypes & argTypes, SessionParamWriterMap & udSessionParams)
inlinevirtualinherited
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
◆initAggregate()
virtual void Vertica::AggregateFunction::initAggregate(ServerInterface & srvInterface, IntermediateAggs & aggs)
pure virtual 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.
◆isCanceled()
bool Vertica::UDXObject::isCanceled() const
inline inherited Returns true iff this UDX has been canceled
◆setup()
virtual void Vertica::UDXFunction::setup(ServerInterface & srvInterface, const SizedColumnTypes & argTypes)
inlinevirtualinherited
Perform per instance initialization. This function may throw errors.
◆terminate() [1/2]
virtual void Vertica::AggregateFunction::terminate(ServerInterface & srvInterface, BlockWriter & res_writer, IntermediateAggs & aggs)
inlinevirtual
Called by the server to get the output to the aggregate function
Referenced by terminate().
◆terminate() [2/2]
virtual void Vertica::AggregateFunction::terminate(ServerInterface & srvInterface, BlockWriter & res_writer, IntermediateAggs & aggs, SessionParamWriterMap & udSessionParams)
inlinevirtual
Called by the server to get the output to the aggregate function
◆updateCols()
void Vertica::AggregateFunction::updateCols(BlockReader & arg_reader, char * arg, int count, IntermediateAggs & intAggs, char * aggPtr, std::vector & intOffsets)
static
Helper function for aggregateArrs.
Note User should not call this function.