TransformFunctionFactory 类
TransformFunctionFactory
类将向 Vertica 提供有关 UDTF 的元数据:其参数的数量和数据类型及其返回值的数据类型。该类还会实例化 TransformFunction
的子类。
您必须在 TransformFunctionFactory
中实施以下方法:
-
getPrototype()
将返回两个ColumnTypes
对象,这两个对象描述 UDTF 将用作输入的列以及作为输出返回的列。 -
getReturnType()
将向 Vertica 提供有关输出值的详细信息:可变大小数据类型(例如 VARCHAR)的宽度和具有可设置精度的数据类型(例如 TIMESTAMP)的精度。您还可以使用此函数设置输出列的名称。虽然此方法对于返回单个值的 UDx 是可选的,但您必须为 UDTF 实施该方法。 -
createTransformFunction()
实例化TransformFunction
子类。
对于使用 C++ 语言编写的转换函数,您可以提供有助于优化查询的信息。请参阅提高查询性能(仅限 C++)。
API
TransformFunctionFactory API 提供了以下通过子类扩展的方法:
virtual TransformFunction *
createTransformFunction (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 ¶meterTypes);
TransformFunctionFactory API 提供了以下通过子类扩展的方法:
public abstract TransformFunction createTransformFunction(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);
TransformFunctionFactory API 提供了以下通过子类扩展的方法:
def createTransformFunction(self, srv)
def getPrototype(self, srv_interface, arg_types, return_type)
def getReturnType(self, srv_interface, arg_types, return_type)
def getParameterType(self, server_interface, parameterTypes)
实施 工厂函数 API 以定义转换函数工厂:
FunctionNameFactory <- function() {
list(name = FunctionName,
udxtype = c("scalar"),
intype = c("int"),
outtype = c("int"))
}