CREATE EXTENSION

CREATE EXTENSION

Registers an extension in a Greenplum database.

概要

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的用户将成为扩展的所有者, 以进行以后的权限检查,以及该扩展脚本创建的任何对象的所有者。

参数

IF NOT EXISTS

如果已经存在具有相同名称的扩展名,请不要报错。 在这种情况下发出通知。 无法保证现有扩展与安装的扩展类似。

extension_name

要安装的扩展名。该名称在数据库中必须唯一。 根据扩展控制文件SHAREDIR/extension/extension_name.control中的详细信息创建扩展。

SHAREDIR是安装共享数据目录,例如/usr/local/greenplum-db/share/postgresql。 命令pg_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的值由扩展作者确定,如果可以将多个旧版本的模块升级为扩展,则该值可能会有所不同。 对于9.1之前的PostgreSQL提供的标准附加模块,在将模块更新为扩展样式时, 请为old_version指定unpackaged

CASCADE

尚未安装自动安装相关扩展。 递归检查相关的扩展,并且这些从属扩展也将自动安装。 如果指定了SCHEMA子句,则该模式适用于扩展和已安装的所有从属扩展。 指定的其他选项不适用于自动安装的从属扩展。 特别是,在安装从属扩展时始终选择默认版本。

注解

当前可用于加载的扩展名可以从pg_available_extensionspg_available_extension_versions系统视图中识别。

在使用CREATE EXTENSION将扩展加载到数据库之前,必须安装支持的扩展文件,包括扩展控制文件和至少一个SQL脚本文件。 支持文件必须安装在所有Greenplum数据库主机上的相同位置。 有关创建新扩展的信息,请参见PostgreSQL有关将相关对象打包到扩展中的信息。

兼容性

CREATE EXTENSION是Greenplum数据库扩展。