Работа с расширениями

PostgreSQL предоставляет возможность расширить функциональность базы данных, объединяя объекты SQL в модули и используя их как единое целое. Такие модули называются расширениями. Расширения могут включать функции, операторы, типы и прочее.

Просмотр доступных расширений

Чтобы просмотреть установленные расширения, используйте psql:

  • Выполните метакоманду \dx, чтобы просмотреть список установленных расширений.

  • Вызовите метакоманду \dx+, чтобы просмотреть список установленных расширений и ассоциированных с ними объектов.

Представление pg_available_extensions содержит расширения, доступные для установки. Используйте следующий код, чтобы просмотреть их:

SELECT * FROM pg_available_extensions;

Список доступных расширений также можно найти в статье Поддерживаемые расширения.

Информация об установленных расширениях хранится в каталоге pg_extension. В ADP для служебной базы данных postgres предустановлено расширение plpgsql.

Используйте следующий код, чтобы проверить установленные расширения:

SELECT * FROM pg_extension;

Результат:

  oid  |      extname       | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-------+--------------------+----------+--------------+----------------+------------+-----------+--------------
 14472 | plpgsql            |       10 |           11 | f              | 1.0        |           |

При создании новой базы данных все расширения, которые установлены в шаблоне баз данных template1, используемом по умолчанию, будут созданы в новой базе данных (в ADP в template1 предустановлено только plpgsql). См. Template Databases.

Управление расширениями

Можно создавать, изменять и удалять расширения с помощью соответствующих команд.

ВНИМАНИЕ
Если вы используете процедурные языки PL/Perl, PL/PerlU, PL/Python3U, PL/Tcl или PL/TclU, которым необходимы дополнительные пакеты, убедитесь, что все пакеты, требуемые соответствующими расширениями, установлены на всех нодах сервиса ADPG — лидере и всех репликах. В противном случае кластер может быть поврежден во время минорного/мажорного обновления.

Создание расширения

CREATE EXTENSION создает новое расширение в текущей базе данных. Расширения должны иметь уникальные имена в пределах одной базы данных.

При вызове команды CREATE EXTENSION PostgreSQL запускает скрипт-файл расширения. Скрипт создает новые объекты SQL, например, функции, типы данных, операторы и методы поддержки индексов. CREATE EXTENSION также сохраняет идентификаторы всех созданных объектов, чтобы их можно было удалить, если вызвана команда DROP EXTENSION для этого расширения.

Пользователь, выполнивший CREATE EXTENSION, становится владельцем самого расширения, а также владельцем всех объектов, созданных скриптом расширения.

Следующий код устанавливает расширение pg_stat_statements:

CREATE EXTENSION pg_stat_statements;

Если скрипт-файл расширения, указанного в команде CREATE EXTENSION, не найден, то возникнет ошибка, сообщающая об этом. В этом случае следует установить соответствующий пакет, содержащий расширение.

Вы можете найти дополнительную информацию о команде CREATE EXTENSION в статье CREATE EXTENSION.

Удаление расширения

DROP EXTENSION удаляет расширение из базы данных. Удаление расширения также влечет удаление всех объектов, входящих в расширение.

В коде ниже используется параметр CASCADE для удаления расширения, всех зависимых объектов и объектов, зависящих от зависимых объектов расширения:

DROP EXTENSION plperlu CASCADE;

За дополнительной информацией обратитесь к статье DROP EXTENSION.

Изменение расширения

ALTER EXTENSION модифицирует расширение.

Следующий код изменяет схему расширения hstore на schema1:

ALTER EXTENSION hstore SET SCHEMA schema1;

За дополнительной информацией обратитесь к статье ALTER EXTENSION.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней