函数命名空间管理器
函数命名空间管理器是用来管理外部函数的,各个connector注册的外部函数(当前只支持标量函数)会在此空间管理。 一个函数命名空间表示为 (例如:mysqlfun.default
),可以理解为函数定义存储的模式,不过此模式只能用于函数,不支持表或视图之类。 每个函数,不管是built in
函数的还是外部注册的外部函数,都属于一个格式为catalog.schema
的函数命名空间。 外部类型函数的全引用名为函数命名空间加上函数名(例如:mysqlfun.default.func
)。
所有built in
函数的使用方式为直接使用函数名,如:select count(*) from ...
。外部函数需要使用全引用名,如:。 每个函数命名空间管理器与一个catalog
关联,并且管理此catalog
下的所有函数。 建议不使用实际connector_catalog
名称作为函数命名空间管理器catalog
。
当前仅支持类型为memory
函数命名空间管理器,memory
类型的函数命名空间管理器在系统重启后,需要重新加载外部函数信息。 配置项supported-function-languages
表明当前函数命名空间管理器实例支持的外部函数种类,你可以自己定义注册类型,此项参数需要用户定义的外部函数注册信息一致。 当前我们仅支持JDBC
。
当需要管理属于不同catalog
的外部函数时,我们需要在目录下配置多个文件名不同的文件来加载多个函数命名空间管理器分别管理属于不同catalog
的外部函数。
openLooKeng系统支持外部函数通过Jdbc Connector下推到数据源执行。具体请参考 外部函数注册。
注意 外部函数仅支持下推到数据源执行。 如果一个外部函数不能下推到数据源,则当前的包含外部函数调用的查询将会失败。