CREATE EXTENSION
CREATE EXTENSION — установить расширение
Синтаксис
CREATE EXTENSION [ IF NOT EXISTS ]имя_расширения
[ WITH ] [ SCHEMAимя_схемы
] [ VERSIONверсия
] [ FROMстарая_версия
]
Описание
CREATE EXTENSION
загружает в текущую базу данных новое расширение. Расширение с таким именем не должно быть уже загружено.
Загрузка расширения по сути сводится к запуску скрипта расширения. Этот скрипт обычно создаёт новые SQL-объекты, такие как функции, типы данных, операторы и методы поддержки индексов. CREATE EXTENSION
дополнительно записывает идентификаторы всех добавляемых объектов, так что впоследствии их можно удалить, выполнив команду DROP EXTENSION
.
Для загрузки расширения требуются те же права, что необходимы для создания составляющих его объектов. Для большинства расширений это означает, что необходимы права владельца базы данных или суперпользователя. Пользователь, запускающий CREATE EXTENSION
, становится владельцем самого расширения (это требуется для последующих проверок доступа), а также владельцем всех объектов, созданных скриптом расширения.
Параметры
IF NOT EXISTS
Не считать ошибкой, если расширение с таким именем уже существует. В этом случае будет выдано замечание. Заметьте, что нет никакой гарантии, что существующее расширение как-то соотносится с тем, которое могло бы быть создано из указанного скрипта.
имя_расширения
Имя устанавливаемого расширения. Postgres Pro создаст расширение, используя инструкции из файла
SHAREDIR/extension/
имя_расширения
.control
.имя_схемы
Имя схемы, в которую будут установлены объекты расширения (подразумевается, что расширение позволяет управлять размещением своих объектов). Указанная схема должна уже существовать. Если имя не указано и в управляющем файле расширения оно так же не задано, для создания объектов используется текущая схема.
Помните, что само расширение не считается принадлежащим какой-либо схеме; имена расширений не дополняются схемой и потому должны быть уникальными во всей базе данных. Однако объекты, принадлежащие расширениям, могут относиться к схемам.
версия
Версия устанавливаемого расширения. Её можно записать в виде идентификатора или строкового значения. По умолчанию версия считывается из управляющего файла расширения.
старая_версия
Указание
FROM
старая_версия
может быть добавлено тогда и только тогда, когда устанавливаемое расширение заменяет модуль «старого стиля», представляющий собой просто набор объектов, не упакованный в расширение. С этим указаниемCREATE EXTENSION
запускает альтернативный установочный скрипт, собирающий все существующие объекты в расширение, а не создающий новые. Учтите, чтоSCHEMA
при этом определяет схему, содержащую эти существующие объекты.Значение, задаваемое в качестве
старой_версии
, определяется автором расширения и может меняться, если в расширение нужно преобразовать не одну версию модуля в старом стиле. Для стандартных дополнительных модулей, поставляемых в PostgreSQL до версии 9.1, при преобразовании модуля в расширениестарая_версия
должна содержать значениеunpackaged
.
Замечания
Прежде чем вы сможете выполнить CREATE EXTENSION
и загрузить расширение в базу данных, необходимо правильно установить сопутствующие файлы расширения. Информацию об установке расширений, поставляемых в составе Postgres Pro, можно найти по ссылке Дополнительные поставляемые модули.
Расширения, доступные для установки в данный момент, можно найти в системном представлении pg_available_extensions
или pg_available_extension_versions
.
За информацией для разработчиков расширений обратитесь к Разделу 35.15.
Примеры
Установка расширения hstore в текущую базу данных:
CREATE EXTENSION hstore;
Преобразование установленного до версии 9.1 модуля hstore
в расширение:
CREATE EXTENSION hstore SCHEMA public FROM unpackaged;
Будьте внимательны — здесь нужно указать схему, в которую ранее были установлены существующие объекты hstore
.
Совместимость
CREATE EXTENSION
является расширением Postgres Pro.