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

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

Расширения — это модули, предоставляющие дополнительную функциональность: функции, операторы, типы и т.д.

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

Вы можете просмотреть доступные расширения, используя psql:

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

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

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

SELECT * FROM pg_available_extensions;

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

Информация об установленных расширениях хранится в каталоге pg_extension. В ADPG для служебной базы данных postgres предустановлены расширения plpgsql и pg_stat_statements. При создании новой базы данных используются расширения, которые присутствуют в базе данных template1 (по умолчанию только plpgsql). См. Template Databases.

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

SELECT * FROM pg_extension;

Результат:

  oid  |      extname       | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-------+--------------------+----------+--------------+----------------+------------+-----------+--------------
 14472 | plpgsql            |       10 |           11 | f              | 1.0        |           |
 16388 | pg_stat_statements |       10 |         2200 | t              | 1.9        |           |

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

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

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

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

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

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

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

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

Если расширение не найдено, установите соответствующий пакет, содержащий его.

Следующий код загружает модуль pg_stat_statements, который включен в расширение contrib:

CREATE EXTENSION pg_stat_statements;

Вы можете найти дополнительную информацию об этой команде в статье 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 чтобы сообщить о ней