跳到主要内容

ALTER FUNCTION

Introduced or updated: v1.2.955

替换现有外部函数的定义。

语法​

ALTER FUNCTION <function_name>
( <input_param_types> ) RETURNS <return_type> LANGUAGE <language_name>
HANDLER = '<handler_name>' ADDRESS = '<udf_server_address>'
[ EXTERNAL_ACCESS_INTEGRATIONS = (<integration_name>, ...) ]
[ DESC = '<description>' ]

此语句提供完整的新定义,不是局部更新。参数说明见 CREATE FUNCTION。ALTER FUNCTION 不支持 IF EXISTS 或 IF NOT EXISTS。

访问控制与策略​

修改 UDF 需要原有的全局 ALTER 权限。如果新定义引用 integration,开发者还需要每个对象的 USAGE。引用 integration 不会为该语句额外增加 SUPER 要求。

所有 integration 都必须存在且已启用。地址必须匹配规则,并通过非空的 operator udf_server_allow_list。Databend 在 integration 绑定的策略和远程 schema 校验之前检查权限。Arrow Flight schema 的要求不变。

新定义省略 EXTERNAL_ACCESS_INTEGRATIONS 时,会移除绑定,改用原有的配置 allow-list 路径。配置列表为空时,此路径拒绝访问。要保留绑定,需要在替换定义中再次指定。

示例​

假定 gcd 已存在,integration udf_access 允许该目标,且 Flight 服务器提供兼容的 gcd_new handler:

ALTER FUNCTION gcd (INT, INT)
RETURNS INT NULL
LANGUAGE python
HANDLER = 'gcd_new'
ADDRESS = 'https://udf.example.com'
EXTERNAL_ACCESS_INTEGRATIONS = (udf_access);

配置与传播行为见外部访问集成。

欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验