C++ SDK Documentation  9.0
Vertica::ScalarFunction Class Referenceabstract

Interface for User-Defined Scalar Function (UDSF). A UDSF produces a single value from a row of data. More...

Inheritance diagram for Vertica::ScalarFunction:
Inheritance graph
Collaboration diagram for Vertica::ScalarFunction:
Collaboration graph

Public Member Functions

virtual void destroy (ServerInterface &srvInterface, const SizedColumnTypes &argTypes)
 
virtual void destroy (ServerInterface &srvInterface, const SizedColumnTypes &argTypes, SessionParamWriterMap &udSessionParams)
 
virtual void getOutputRange (ServerInterface &srvInterface, ValueRangeReader &inRange, ValueRangeWriter &outRange)
 
virtual void processBlock (ServerInterface &srvInterface, BlockReader &arg_reader, BlockWriter &res_writer)=0
 
virtual void setup (ServerInterface &srvInterface, const SizedColumnTypes &argTypes)
 

Friends

class ::UdfSupport
 

Detailed Description

Interface for User-Defined Scalar Function (UDSF). A UDSF produces a single value from a row of data.

A UDSF can be used anywhere a native function can be used, except CREATE TABLE BY PARTITION and SEGMENTED BY expressions.

A ScalarFunction must have an associated ScalarFunctionFactory.

Member Function Documentation

virtual void Vertica::UDXObject::destroy ( ServerInterface srvInterface,
const SizedColumnTypes argTypes 
)
inlinevirtualinherited

Perform per instance destruction. This function may throw errors

virtual void Vertica::UDXObject::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

virtual void Vertica::ScalarFunction::getOutputRange ( ServerInterface srvInterface,
ValueRangeReader inRange,
ValueRangeWriter outRange 
)
inlinevirtual

Invoke a user defined function to determine the output value range of this function. Ranges are represented by a minimum/maximum pair of values (inclusive). The developer is responsible to provide an output value range on the basis of the input argument ranges. Minimum/maximum values of ranges are of the same type as defined in the metadata class getPrototype() function.

Parameters
srvInterfacea ServerInterface object used to communicate with Vertica
inRangeinput value range
outRangeoutput value range
Remarks
By default, the ValueRangeWriter object can have NULL values, values in the range are unsorted, and it is unbounded, i.e., the following functions return as follows:
  • outRange.canHaveNulls() == true
  • outRange.getSortedness() == EE::SORT_UNORDERED
  • outRange.isBounded() == false
Note
  • This methods may be invoked by different threads at different times, and by a different thread than the constructor.
  • C++ exceptions may NOT be thrown out of this method. Use the vertica specific vt_throw_exception() function or vt_report_error() macro instead
  • Invoking vt_throw_exception() or vt_report_error() from this method will not stop the function execution, which may still complete successfully. Instead, the output range will be discarded, and a WARNING message will be written to the Vertica log
virtual void Vertica::ScalarFunction::processBlock ( ServerInterface srvInterface,
BlockReader arg_reader,
BlockWriter res_writer 
)
pure virtual

Invoke a user defined function on a set of rows. As the name suggests, a batch of rows are passed in for every invocation to amortize performance.

Parameters
srvInterfacea ServerInterface object used to communicate with Vertica
arg_readerinput rows
res_writeroutput location
Note
  • This methods may be invoked by different threads at different times, and by a different thread than the constructor.
  • The order in which the function sees rows is not guaranteed.
  • C++ exceptions may NOT be thrown out of this method. Use the vertica specific vt_throw_exception() function or vt_report_error() macro instead
virtual void Vertica::UDXObject::setup ( ServerInterface srvInterface,
const SizedColumnTypes argTypes 
)
inlinevirtualinherited

Perform per instance initialization. This function may throw errors.