ALTER LIBRARY
替换当前与 Vertica 编录中的 UDx 库关联的库文件。Vertica 自动将更新文件的副本分发到所有群集节点。编录中定义的引用更新库的 UDx 将自动开始使用更新库文件。如果名称和签名匹配,则视为 UDx 相同。
当前库和替换库必须使用同一种语言编写。
当心
如果原始库中存在的某个 UDx 函数在更新后的库中不存在,则会自动将其删除。如果正在使用该函数,可能会导致数据丢失,例如,如果表依赖它填充列。语法
ALTER LIBRARY [[database.]schema.]name [DEPENDS 'depends-path'] AS 'path';
参数
- 架构
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。- name
- 使用 CREATE LIBRARY 创建的现有库的名称。
-
DEPENDS 'depends-path'
此库所依赖的文件或库,启动程序节点的文件系统或其他受支持的文件系统或对象存储中的一个或多个文件或目录。对于目录,路径条目以斜杠 (
/
) 结束,后跟通配符 (*
)(可选)。要指定多个文件,请使用冒号 (:
) 分隔条目。如果任何路径条目包含冒号(例如 URI),请在整个 DEPENDS 路径两端加上括号,且单个路径元素使用双引号,如下例所示:
DEPENDS '["s3://mybucket/gson-2.3.1.jar"]'
要指定具有多个目录级别的库,请参阅多级库依赖项。
DEPENDS 对使用 R 编写的库没有影响。R 软件包必须本地安装在每个节点上,包括外部依赖项。
重要
CREATE LIBRARY 的性能在 Eon 模式下会降低,这与 DEPENDS 子句指定的依赖关系的数量和深度成正比。-
AS path
- 替换库文件在启动程序节点文件系统上的绝对路径。
特权
超级用户,或者架构上的 UDXDEVELOPER 和 CREATE。非超级用户必须明确启用 UDXDEVELOPER 角色。有关示例,请参阅 CREATE LIBRARY。
如果 DEPENDS 子句指定具有多个目录级别的库,Vertica 将按照库路径包含该库的所有子目录。例如,以下 CREATE LIBRARY 语句使 UDx 库 mylib
能够导入它在 site‑packages
的子目录中找到的所有 Python 包和模块:
=> CREATE LIBRARY mylib AS '/path/to/python_udx' DEPENDS '/path/to/python/site-packages' LANGUAGE 'Python';
重要
DEPENDS 可以指定深度达 100 级的 Java 库依赖项。示例
此示例显示了如何使用新文件更新名为 myFunctions
的已定义库。
=> ALTER LIBRARY myFunctions AS '/home/dbadmin/my_new_functions.so';