AnalyticFunctionFactory 类

AnalyticFunctionFactory 类将向 Vertica 提供有关 UDAnF 的元数据:其参数数量和数据类型及其返回值的数据类型。该类还会实例化 AnalyticFunction 的子类。

AnalyticFunctionFactory 子类必须实施以下方法:

  • getPrototype() 可描述函数的输入参数和输出值。可以通过对传递到方法的两个 ColumnTypes 对象调用函数来设置这些值。

  • createAnalyticFunction() 可提供 AnalyticFunction 的实例,Vertica 可以调用此实例以处理 UDAnF 函数调用。

  • getReturnType() 可提供有关函数输出的详细信息。通过此方法,您可以设置输出值的宽度(如果函数将返回可变宽度值,例如 VARCHAR),或者设置输出值的精度(如果该输出值具有可设置的精度,例如 TIMESTAMP)。

API

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

virtual AnalyticFunction * createAnalyticFunction (ServerInterface &srvInterface)=0;

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

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

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

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

public abstract AnalyticFunction createAnalyticFunction (ServerInterface srvInterface);

public abstract void getPrototype(ServerInterface srvInterface, ColumnTypes argTypes, ColumnTypes returnType);

public abstract void getReturnType(ServerInterface srvInterface, SizedColumnTypes argTypes,
        SizedColumnTypes returnType) throws UdfException;

public void getParameterType(ServerInterface srvInterface, SizedColumnTypes parameterTypes);