CREATE FUNCTION
语法
CREATE FUNCTION qualified_function_name (
parameter_name parameter_type
[, ...]
)
RETURNS return_type
[ COMMENT function_description ]
[ LANGUAGE [ JAVA ] ]
[ SPECIFIC specificName ]
[ DETERMINISTIC | NOT DETERMINISTIC ]
[ RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT ]
[ SYMBOL class_name ]
[ URI hdfs_path_to_jar ]
描述
通过给定的定义创建一个新的函数。
- 每一个函数都由其限定函数名称和参数类型列表唯一标识。“qualified_function_name”的格式需要为“catalog.schema.function_name”,函数命名空间(格式为“catalog.schema”)可以自行规划管理,与HetuEngine中的catalog、schema概念无关联;“parameter_type”需要为HetuEngine支持的数据类型。
- “return_type”需要为HetuEngine支持的数据类型,要与函数的返回实际类型匹配,不做类型强制转换。
- 可以指定一组特征来修饰函数并指定其行为,每个特征最多只能指定一次,详情请参考表1。
表1 特征说明 特征
默认值
描述
Language clause
-
定义函数的语言。目前支持JAVA语言。- JAVA函数:需要提供函数实现的JAR文件,并将JAR文件放入HetuEngine可以读取的HDFS中。
Deterministic characteristic
NOT DETERMINISTIC
函数是否确定性。
- DETERMINISTIC:如果函数在使用相同的输入集调用时总是返回相同的结果集,则该函数被视为确定性。
- NOT DETERMINISTIC:如果函数在使用相同的输入集调用时不返回相同的结果集,则该函数将被视为非确定性。
Null-call clause
CALLED ON NULL INPUT
函数的行为。
- RETURNS NULL ON NULL INPUT:当“NULL”作为函数参数时,返回“NULL”。
- CALLED ON NULL INPUT:当“NULL”作为函数参数时调用。
Symbol class_name
-
JAVA函数使用,指定函数实现的限定类名。
Uri hdfs_path_to_jar
-
JAVA函数使用,指定函数实现的JAR文件路径。
限制
- 权限控制仅使用基于用户组方式进行控制,详情如表2。
示例
- 创建一个新的JAVA函数“example.default.add_two”(需要先构建和部署UDF)
CREATE FUNCTION example.default.add_two ( num integer ) RETURNS integer LANGUAGE JAVA DETERMINISTIC SYMBOL "com.example.functions.AddTwo" URI "hdfs://hacluster/udfs/function-1.0.jar"; --执行函数 select hetu.default.add_two(2);