Расширения

В данном разделе содержится информация о модулях, которые можно найти в каталоге share/extension дистрибутива QHB. В их число входят средства портирования, утилиты анализа и подключаемые функции, не включенные в состав основной системы QHB, в основном потому что они предназначены для ограниченной аудитории или чересчур экспериментальны, чтобы быть частью основного дерева кода. Тем не менее это не отменяет их полезность.

В этом приложении рассматриваются расширения и другие подключаемые серверные модули, находящиеся в пакете qhb-contrib, который необходимо установить в соответствии с описанием по установке.

Многие модули предоставляют новые пользовательские функции, операторы и типы. Чтобы использовать один из этих модулей после установки его кода, вы должны зарегистрировать новые объекты SQL в СУБД. Для этого нужно выполнить команду CREATE EXTENSION. В чистой базе данных можно просто выполнить

CREATE EXTENSION имя_модуля;

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

Для всех этих модулей CREATE EXTENSION должен выполнять суперпользователь, если только модуль не рассматривается как «доверенный» — тогда его может устанавливать любой пользователь, имеющий право CREATE в текущей базе данных. В разделах, где описываются модули, отмечено, какие из них являются доверенными. В целом, доверенными модулями считаются те, которые не предоставляют доступ к функциональности за рамками базы данных.

Многие модули позволяют устанавливать свои объекты в схему по выбору. Для этого нужно добавить SCHEMA имя_схемы в команду CREATE EXTENSION. По умолчанию объекты устанавливаются в текущую схему для создаваемых объектов, которой, в свою очередь, по умолчанию становится public.

Однако обратите внимание, что некоторые из этих модулей не являются «расширениями» в этом смысле, а загружаются на сервер по-другому, например, через параметр shared_preload_libraries. Более подробную информацию можно найти в документации каждого модуля.