Перейти к основному содержимому

Информация по Untrusted-расширениям

Часть расширений вынесена в 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.

Установка и удаление расширений

Для установки расширения:

  1. Установите rpm/deb-пакет с расширением.
  2. Подключитесь к БД, в которой необходимо зарегистрировать расширение.
  3. Выполните команду CREATE EXTENSION name [CASCADE].

Расширения устанавливаются в PGHOME.

Для удаления расширения:

  1. Подключитесь ко всем БД, в которых зарегистрировано расширение.
  2. Выполните команду DROP EXTENSION name [CASCADE].
  3. Удалите rpm/deb-пакет с расширением.

Скрипты установки и обновления

В скрипты установки добавлены три новых опции: untrusted_perl, untrusted_python, untrusted_tcl. При включении какой-либо опции, будут установлены все пакеты с Untrusted-расширениями (на уровне менеджера пакетов), относящиеся к соответствующему языку. По умолчанию все три опции включены.

Действия, которые будут выполнены всегда, вне зависимости от окружения и конфигурации:

  1. Проверка на наличие Untrusted-части в дистрибутиве. Если архива с Untrusted-частью нет, то произойдет остановка с ошибкой.
  2. Пакеты Untrusted-расширений всегда добавляются в локальный репозиторий, который создается при отсутствии всех необходимых зависимостей. Новые опции не оказывают влияния на локальный репозиторий, только на установку непосредственно rpm/deb-пакетов.

Регистрация Untrusted-расширений по тексту ниже означает выполнение в базе данных запроса CREATE EXTENSION. Повторная регистрация - ALTER EXTENSION UPDATE.

Установка для версии Pangolin 7.1.1 и выше:

  1. Если опция untrusted_* включена – будут установлены все пакеты с untrusted-расширениями, относящиеся к соответствующему языку.
  2. Если опция untrusted_* выключена – пакеты с untrusted-расширениями, относящиеся к соответствующему языку, установлены не будут.

Обновление с более ранних версий до версии 7.1.1:

  1. Если Untrusted-расширения не были зарегистрированы в базе данных – пакетов с Untrusted-расширениями установлено не будет.

  2. Если какое-либо из Untrusted-расширений было зарегистрировано в базе данных:

    1. Будут установлены только те пакеты с Untrusted-расширениями, которые были зарегистрированы.
    2. Для зарегистрированных Untrusted-расширений будет произведена повторная регистрация.

Обновление с версии 7.1.1 до более поздних версий:

  1. Будет проверено наличие зарегистрированных в базе данных Untrusted-расширений.

  2. Будет проверено наличие установленных пакетов из Untrusted-части.

  3. Если какое-либо из Untrusted-расширений было зарегистрировано в базе данных или в системе есть установленные пакеты из Untrusted-части:

    1. Будут обновлены только уже установленные пакеты с Untrusted-расширениями.
    2. Будут повторно зарегистрированы только уже зарегистрированные в базе данных Untrusted-расширения.
  4. Если на стенде нет установленных пакетов и зарегистрированных в базе данных Untrusted-расширений, то пункт 3 не выполняется.