CREATE EXTENSION
CREATE EXTENSION¶
在SeaboxMPP数据库中注册一个外部扩展插件.
- 语法
sql CREATE EXTENSION [ IF NOT EXISTS ] extension_name [ WITH ] [ SCHEMA schema_name ] [ VERSION version ] [ FROM old_version ] [ CASCADE ]
- 描述
-
CREATE EXTENSION
将新的扩展名加载到当前数据库中。 不可以已加载具有相同名称的扩展名。加载扩展实质上等于运行扩展脚本文件。 该脚本通常创建新的SQL对象,例如函数,数据类型,运算符和索引支持方法。
CREATE EXTENSION
命令还记录所有已创建对象的标识, 因此,如果执行DROP EXTENSION
,则可以再次删除它们。加载扩展需要与创建组件扩展对象相同的权限。 对于大多数扩展,这意味着需要超级用户或数据库所有者权限。 运行
CREATE EXTENSION
的用户将成为扩展的所有者, 以进行以后的权限检查,以及该扩展脚本创建的任何对象的所有者。 - 参数
-
该SQL命令参数说明见下
IF NOT EXISTS
- 如果已经存在具有相同名称的扩展名,请不要报错。 在这种情况下发出通知。 无法保证现有扩展与安装的扩展类似。
extension_name
-
要安装的扩展名。该名称在数据库中必须唯一。根据扩展控制文件
SHAREDIR/extension/extension_name.control
中的详细信息创建扩展。SHAREDIR
是安装共享数据目录,例如/usr/local/seaboxmpp/seaboxmpp-db/share/seaboxsql
。命令sd_config --sharedir
显示目录。 SCHEMA schema_name
-
在其中安装扩展对象的模式名称。 假定扩展名允许其内容重定位。 命名模式必须已经存在。如果未指定,并且扩展控制文件未指定模式,则使用当前的默认模式创建对象。
如果扩展名在其控制文件中指定了模式参数,则无法使用
SCHEMA
子句覆盖该模式。通常,如果给定了SCHEMA
子句,并且与扩展模式参数冲突,则会引发错误。但是,如果还给出了CASCADE
子句,则schema_name
在冲突时将被忽略。给定的schema_name
用于安装所有需要的扩展,这些扩展在其控制文件中未指定架构。扩展本身不在任何模式内。 扩展名具有非限定名称,这些名称在数据库中必须唯一。 但是属于扩展名的对象可以在模式内。
VERSION version
- 要安装的扩展程序的版本。 可以将其写为标识符或字符串文字。 默认版本是扩展控制文件中指定的值。
FROM old_version
-
仅在尝试安装扩展来替换旧模块(该扩展是未打包到扩展中的对象集合)的扩展时,才指定
FROM old_version
。如果指定,则CREATE EXTENSION
运行替代安装脚本,该脚本将现有对象吸收到扩展中,而不是创建新对象。确保SCHEMA
子句指定了包含这些预先存在的对象的模式。用于
old_version
的值由扩展作者确定,如果可以将多个旧版本的模块升级为扩展,则该值可能会有所不同。 CASCADE
- 尚未安装自动安装相关扩展。 递归检查相关的扩展,并且这些从属扩展也将自动安装。如果指定了
SCHEMA
子句,则该模式适用于扩展和已安装的所有从属扩展。指定的其他选项不适用于自动安装的从属扩展。 特别是,在安装从属扩展时始终选择默认版本。
- 注解
-
当前可用于加载的扩展名可以从pg_available_extensions或pg_available_extension_versions系统视图中识别。
在使用
CREATE EXTENSION
将扩展加载到数据库之前,必须安装支持的扩展文件,包括扩展控制文件和至少一个SQL脚本文件。支持文件必须安装在所有SeaboxMPP数据库主机上的相同位置。 - 兼容性说明
CREATE EXTENSION
是SeaboxMPP数据库扩展。- 相关SQL命令
ALTER EXTENSION
,DROP EXTENSION