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 ¶meterTypes);