CREATE EXTENSION
Создание расширения.
Синтаксис
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/matrixdb/share/postgresql (путь YMatrix 4.X) или /opt/ymatrix/matrixdb5/share/postgresql (путь YMatrix 5.X). Директорию можно определить с помощью команды pg_config --sharedir.
SCHEMA schema_name
- Имя схемы, в которую будут установлены объекты расширения. Предполагается, что расширение допускает размещение своих компонентов в указанной схеме. Указанная схема должна уже существовать. Если параметр не задан, а в файле управления расширением не указана схема, объекты создаются в текущей схеме по умолчанию.
Если в файле управления расширения указан параметр schema, то переопределить его с помощью предложения SCHEMA невозможно. Обычно, если указано предложение SCHEMA и оно конфликтует с параметром schema расширения, возникает ошибка. Однако, если также указано предложение CASCADE, имя schema_name в случае конфликта игнорируется. Указанное schema_name используется для установки всех зависимых расширений, которые не определяют схему в своих файлах управления. Само расширение не принадлежит ни к одной схеме. Расширения имеют неполные имена, которые должны быть уникальными в базе данных. Однако объекты, входящие в расширение, могут находиться в схеме.
VERSION version
- Версия устанавливаемого расширения. Может быть указана как идентификатор или строковый литерал. По умолчанию используется версия, указанная в файле управления расширением.
FROM old_version
- Указывайте параметр FROM old_version только тогда, когда вы пытаетесь установить расширение, заменяющее ранее существовавшее расширение, которое не было оформлено как набор объектов в виде расширения. При указании этого параметра команда CREATE EXTENSION запускает альтернативный скрипт установки, который «включает» уже существующие объекты в состав расширения вместо создания новых. Убедитесь, что предложение SCHEMA указывает на схему, содержащую эти заранее существующие объекты.
Значение old_version определяется автором расширения и может различаться, если возможно обновление нескольких старых версий модулей до расширения. Для стандартных дополнительных модулей, поставляемых PostgreSQL до версии 9.1, при переходе к расширениям следует указывать значение unpackaged для old_version.
CASCADE
- Автоматически устанавливать связанные расширения, которые ещё не установлены. Рекурсивно проверяются зависимости, и все зависимые расширения также будут автоматически установлены. Если указано предложение SCHEMA, указанная схема применяется к основному расширению и всем зависимым расширениям, которые устанавливаются. Другие параметры не распространяются на автоматически устанавливаемые зависимые расширения. В частности, при установке зависимых расширений всегда выбирается версия по умолчанию.
Примечания
Расширения, доступные для загрузки, можно определить по системным представлениям pg_available_extensions или pg_available_extension_versions.
Перед тем как загружать расширение в базу данных с помощью команды CREATE EXTENSION, необходимо установить соответствующие файлы расширения, включая файлы управления расширением и хотя бы один SQL-скрипт. Файлы поддержки должны быть установлены в одинаковых путях на всех хостах кластера MatrixDB.
Совместимость
CREATE EXTENSION является расширением YMatrix.
Смотрите также
ALTER EXTENSION , DROP EXTENSION