Информация по Untrusted-расширениям
В СУБД Pangolin часть расширений вынесена в untrusted-часть, так как они представляют собой интерпретируемые языки программирования. Для обеспечения гибкости, безопасности и минимизации рисков, каждый такой пакет требует отдельной установки соответствующего языка программирования. Список групп данных расширений:
plperl – PL/Perl недоверенный процедурный язык;
plpython3 – PL/Python3 недоверенный процедурный язык;
pltcl – PL/Tcl недоверенный процедурный язык;
bool_plperl – преобразование логических значений для plperl;
hstore_plperl – преобразование между hstore и plperl;
hstore_plpython3 – преобразование между hstore и plpython3;
jsonb_plperl – преобразование между jsonb и plperl;
jsonb_plpython3 – преобразование между jsonb и plpython3;
ltree_plpython3 – преобразование между ltree и plpython3.
Расширения поставляются в отдельном архиве в составе дистрибутива, каждое в своем отдельном rpm/deb-пакете со всеми необходимыми зависимостями.
Название rpm/deb-пакета имеет вид pangolin-dbms-{base_version}-{name}-{product_version}-{OS}.{ARCH}.rpm, где:
name – название расширения;
base_version – базовая версия продукта;
product_version – полная версия продукта (x.x.x);
OS – целевая операционная система и ее версия;
ARCH – целевая архитектура.
Название deb-пакета: pangolin-dbms-{base_version}-{name}_{product_version}_{ARCH}.deb, где:
name – название расширения;
base_version – базовая версия продукта;
product_version – полная версия продукта (x.x.x);
ARCH – целевая архитектура.
Состав пакета:
{PREFIX}/lib/*.so;{PREFIX}/share/extension/*.[control,sql];{PREFIX}/share/locale/{LANG}/LC_MESSAGES/*.mo.
При этом все файлы, попавшие в состав пакета расширения, исключаются из состава продукта.
Документация на расширение {PREFIX}/share/doc/html/*.html остается в составе продукта и не добавляется в пакет расширения.
Пакеты с отладочными символами находятся в директории debug в архиве untrusted-distrib.tar.gz.
Установка и удаление расширений
Для установки расширения:
- Установите rpm/deb-пакет с расширением.
- Подключитесь к БД, в которой необходимо зарегистрировать расширение.
- Выполните команду
CREATE EXTENSION name [CASCADE].
Расширения устанавливаются в PGHOME.
Для удаления расширения:
- Подключитесь ко всем БД, в которых зарегистрировано расширение.
- Выполните команду
DROP EXTENSION name [CASCADE]. - Удалите rpm/deb-пакет с расширением.
Скрипты установки и обновления
В скрипты установки добавлены три новых опции: untrusted_perl, untrusted_python, untrusted_tcl. При включении какой-либо опции, будут установлены все пакеты с Untrusted-расширениями (на уровне менеджера пакетов), относящиеся к соответствующему языку. По умолчанию все три опции включены.
Действия, которые будут выполнены всегда, вне зависимости от окружения и конфигурации:
- Проверка на наличие Untrusted-части в дистрибутиве. Если архива с Untrusted-частью нет, то произойдет остановка с ошибкой.
- Пакеты Untrusted-расширений всегда добавляются в локальный репозиторий, который создается при отсутствии всех необходимых зависимостей. Новые опции не оказывают влияния на локальный репозиторий, только на установку непосредственно rpm/deb-пакетов.
Регистрация Untrusted-расширений по тексту ниже означает выполнение в базе данных запроса CREATE EXTENSION. Повторная регистрация - ALTER EXTENSION UPDATE.
Установка для версии Pangolin 7.1.1 и выше:
- Если опция
untrusted_*включена – будут установлены все пакеты с untrusted-расширениями, относящиеся к соответствующему языку. - Если опция
untrusted_*выключена – пакеты с untrusted-расширениями, относящиеся к соответствующему языку, установлены не будут.
Обновление с более ранних версий до версии 7.1.1:
-
Если Untrusted-расширения не были зарегистрированы в базе данных – пакетов с Untrusted-расширениями установлено не будет.
-
Если какое-либо из Untrusted-расширений было зарегистрировано в базе данных:
- Будут установлены только те пакеты с Untrusted-расширениями, которые были зарегистрированы.
- Для зарегистрированных Untrusted-расширений будет произведена повторная регистрация.
Обновление с версии 7.1.1 до более поздних версий:
-
Будет проверено наличие зарегистрированных в базе данных Untrusted-расширений.
-
Будет проверено наличие установленных пакетов из Untrusted-части.
-
Если какое-либо из Untrusted-расширений было зарегистрировано в базе данных или в системе есть установленные пакеты из Untrusted-части:
- Будут обновлены только уже установленные пакеты с Untrusted-расширениями.
- Будут повторно зарегистрированы только уже зарегистрированные в базе данных Untrusted-расширения.
-
Если на стенде нет установленных пакетов и зарегистрированных в базе данных Untrusted-расширений, то пункт 3 не выполняется.