AggregateFunctionFactory 类

AggregateFunctionFactory 类可指定元数据信息,例如,聚合函数的参数和返回类型。此类还可将 AggregateFunction 子类实例化。子类必须实施以下方法:

  • getPrototype() - 定义函数所接受的参数数量和数据类型。聚合函数接受单个参数。

  • getIntermediateTypes() - 定义函数所使用的中间变量。这些变量在组合 aggregate() 调用的结果时使用。

  • getReturnType() - 定义输出列的类型。

您的函数还可以实施 getParameterType(),后者定义了此函数使用的参数名称和类型。

当您调用 CREATE AGGREGATE FUNCTION SQL 语句以将函数添加到数据库编录时,Vertica 将使用这些数据。

API

仅 C++ 支持聚合函数。

AggregateFunctionFactory API 提供了以下通过子类扩展的方法:

virtual AggregateFunction *
        createAggregateFunction ServerInterface &srvInterface)=0;

virtual void getPrototype(ServerInterface &srvInterface,
        ColumnTypes &argTypes, ColumnTypes &returnType)=0;

virtual void getIntermediateTypes(ServerInterface &srvInterface,
        const SizedColumnTypes &inputTypes, SizedColumnTypes &intermediateTypeMetaData)=0;

virtual void getReturnType(ServerInterface &srvInterface,
        const SizedColumnTypes &argTypes, SizedColumnTypes &returnType)=0;

virtual void getParameterType(ServerInterface &srvInterface,
        SizedColumnTypes &parameterTypes);