Работа с расширениями
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.