Работа со сторонними расширениями (PostGIS, pgrouting, pg_background)
В данном разделе описаны дополнительные параметры к процессу обновления, которые необходимо настроить для выполнения обновления вместе со сторонними расширениями (PostGIS, pgrouting, pg_background).
Расположение файлов сторонних расширений
Файлы сторонних расширений были перенесены из PGHOME в /opt/pangolin-extensions/<base_version>. Это изменение направлено на разделение процессов обновления расширений от основного процесса обновления СУБД, что особенно важно при обновлениях исполняемых файлов или обновлениях системных данных каталога, когда PGHOME остается общим для исходной и новой версии, и при обновлении производится перезапись файлов сторонних расширений.
Где <base_version> – базовая версия продукта (текущая – 6).
Содержимое каталога /opt/pangolin-extensions/<base_version> выглядит так:
/opt/pangolin-extensions/06
/opt/pangolin-extensions/06
drwx------ 5 postgres postgres 4096 Jun 26 10:31 .
drwxr-xr-x 3 root root 4096 Jul 4 22:04 ..
drwx------ 5 postgres postgres 4096 Jul 4 22:06 lib
drwx------ 2 postgres postgres 4096 Jul 4 22:06 license
drwx------ 3 postgres postgres 4096 Jun 26 10:31 share
/opt/pangolin-extensions/06/lib
/opt/pangolin-extensions/06/lib
drwx------ 5 postgres postgres 4096 Jul 4 22:06 .
drwx------ 5 postgres postgres 4096 Jun 26 10:31 ..
-r-------- 1 postgres postgres 898192 Jun 26 10:31 address_standardizer-3.so
-r-------- 1 postgres postgres 1085 Jun 26 10:31 libgdal.la
lrwxrwxrwx 1 postgres postgres 17 Jun 26 10:31 libgdal.so -> libgdal.so.29.0.1
lrwxrwxrwx 1 postgres postgres 17 Jun 26 10:31 libgdal.so.29 -> libgdal.so.29.0.1
-r-------- 1 postgres postgres 26568296 Jun 26 10:31 libgdal.so.29.0.1
lrwxrwxrwx 1 postgres postgres 14 Jun 26 10:31 libgeos_c.so -> libgeos_c.so.1
lrwxrwxrwx 1 postgres postgres 19 Jun 26 10:31 libgeos_c.so.1 -> libgeos_c.so.1.19.0
-r-------- 1 postgres postgres 416816 Jun 26 10:31 libgeos_c.so.1.19.0
lrwxrwxrwx 1 postgres postgres 17 Jun 26 10:31 libgeos.so -> libgeos.so.3.13.0
-r-------- 1 postgres postgres 4522288 Jun 26 10:31 libgeos.so.3.13.0
-r-------- 1 postgres postgres 120020896 Jun 26 10:31 libpgrouting-3.6.so
lrwxrwxrwx 1 postgres postgres 13 Jun 26 10:31 libproj.so -> libproj.so.22
lrwxrwxrwx 1 postgres postgres 17 Jun 26 10:31 libproj.so.22 -> libproj.so.23.0.1
-r-------- 1 postgres postgres 4602048 Jun 26 10:31 libproj.so.23.0.1
lrwxrwxrwx 1 postgres postgres 14 Jun 26 10:31 libSFCGAL.so -> libSFCGAL.so.1
lrwxrwxrwx 1 postgres postgres 18 Jun 26 10:31 libSFCGAL.so.1 -> libSFCGAL.so.1.5.2
-r-------- 1 postgres postgres 17715400 Jun 26 10:31 libSFCGAL.so.1.5.2
-r-------- 1 postgres postgres 172200 Jun 26 10:29 pg_background.so
-r-------- 1 postgres postgres 34784 Jun 26 10:29 pg_background_test.so
-r-------- 1 postgres postgres 4765432 Jun 26 10:31 postgis-3.so
-r-------- 1 postgres postgres 2214856 Jun 26 10:31 postgis_raster-3.so
-r-------- 1 postgres postgres 571520 Jun 26 10:31 postgis_sfcgal-3.so
-r-------- 1 postgres postgres 890944 Jun 26 10:31 postgis_topology-3.so
/opt/pangolin-extensions/06/license
/opt/pangolin-extensions/06/license
drwx------ 2 postgres postgres 4096 Jul 4 22:06 .
drwx------ 5 postgres postgres 4096 Jun 26 10:31 ..
-r-------- 1 postgres postgres 35147 Jun 26 10:29 LICENSE_pg_background.md
-r-------- 1 postgres postgres 18092 Jun 26 10:31 LICENSE_pgrouting.md
-r-------- 1 postgres postgres 2883 Jun 26 10:31 LICENSE_postgis.md
/opt/pangolin-extensions/06/share
/opt/pangolin-extensions/06/share/
drwx------ 4 postgres postgres 4096 Jul 11 19:46 .
drwx------ 5 postgres postgres 4096 Jul 11 19:46 ..
drwx------ 3 postgres postgres 4096 Jul 11 19:46 contrib
drwx------ 2 postgres postgres 53248 Jul 11 19:46 extension
/opt/pangolin-extensions/06/share/contrib
/opt/pangolin-extensions/06/share/contrib/
drwx------ 3 postgres postgres 4096 Jul 11 19:46 .
drwx------ 4 postgres postgres 4096 Jul 11 19:46 ..
drwx------ 2 postgres postgres 4096 Jul 11 19:46 postgis-3.4
/opt/pangolin-extensions/06/share/contrib/postgis-3.4
/opt/pangolin-extensions/06/share/contrib/postgis-3.4
drwx------ 2 postgres postgres 4096 Jul 11 19:46 .
drwx------ 3 postgres postgres 4096 Jul 11 19:46 ..
-rw------- 1 postgres postgres 1225 Jul 11 18:44 legacy_gist.sql
-rw------- 1 postgres postgres 2462 Jul 11 18:44 legacy_minimal.sql
-rw------- 1 postgres postgres 60270 Jul 11 18:44 legacy.sql
-rw------- 1 postgres postgres 51056 Jul 11 18:44 postgis_comments.sql
-rw------- 1 postgres postgres 297793 Jul 11 18:44 postgis.sql
-rw------- 1 postgres postgres 356322 Jul 11 18:44 postgis_upgrade.sql
-rw------- 1 postgres postgres 95273 Jul 11 18:44 raster_comments.sql
-rw------- 1 postgres postgres 5714 Jul 11 18:44 rtpostgis_legacy.sql
-rw------- 1 postgres postgres 287995 Jul 11 18:44 rtpostgis.sql
-rw------- 1 postgres postgres 337257 Jul 11 18:44 rtpostgis_upgrade.sql
-rw------- 1 postgres postgres 2871 Jul 11 18:44 sfcgal_comments.sql
-rw------- 1 postgres postgres 5981 Jul 11 18:44 sfcgal.sql
-rw------- 1 postgres postgres 10702 Jul 11 18:44 sfcgal_upgrade.sql
-rw------- 1 postgres postgres 7166554 Jul 11 18:44 spatial_ref_sys.sql
-rw------- 1 postgres postgres 17809 Jul 11 18:44 topology_comments.sql
-rw------- 1 postgres postgres 231700 Jul 11 18:44 topology.sql
-rw------- 1 postgres postgres 200286 Jul 11 18:44 topology_upgrade.sql
-rw------- 1 postgres postgres 16493 Jul 11 18:44 uninstall_legacy.sql
-rw------- 1 postgres postgres 65994 Jul 11 18:44 uninstall_postgis.sql
-rw------- 1 postgres postgres 69205 Jul 11 18:44 uninstall_rtpostgis.sql
-rw------- 1 postgres postgres 2440 Jul 11 18:44 uninstall_sfcgal.sql
-rw------- 1 postgres postgres 17320 Jul 11 18:44 uninstall_topology.sql
Каждое расширение может иметь сторонние зависимости. Например, расширение PostGIS зависит от таких библиотек, как CGAL, GDAL, PROJ и других. Ранее эти библиотеки устанавливались в системную директорию /usr/local/lib, что затрудняло контроль версий и могло приводить к конфликтам при обновлении. Теперь подход изменен: зависимости хранятся в каталоге /opt/pangolin-extensions/<base_version>/lib, что позволяет более точно контролировать версии используемых зависимостей. Для автоматического поиска этих библиотек задан RPATH, указывающий относительные пути внутри структуры проекта. Пример:
0x000000000000000f (RPATH) Library rpath: [$ORIGIN/../lib/:$ORIGIN/../../../opt/pangolin-extensions/06/lib]
Это означает, что теперь нет необходимости вручную настраивать системные пути поиска библиотек через ldconfig. Все необходимые библиотеки для конкретной версии стороннего расширения будут найдены автоматически.
Название собранных пакетов сторонних расширений было изменено с формата pangolin-{extension_name} на pangolin-{extension_name}-{base_version}, где {extension_name} – название расширения. Такое изменение сделано для обеспечения возможности одновременной установки и использования нескольких версий одного и того же расширения.
Это особенно важно при выполнении обновлений с переносом данных, когда требуется сохранять совместимость старых версий СУБД с предыдущими версиями расширений. Новый формат позволяет точно идентифицировать установленную версию и избежать конфликтов при обновлении:
- Старый формат:
pangolin-postgis. - Новый формат:
pangolin-postgis-6.
Состав runtime-зависимостей для сторонних расширений PostGIS, pgrouting и pg_background был изменен. Перечень пакетов приведен в разделе «Системные требования».
Сообщения проверок и выполнения обновления
В процессе обновления со сторонними расширениями система формирует информационные, предупреждающие и ошибочные сообщения. Они сгруппированы по стадиям выполнения ролей (pre_check.yml, post_check.yml, main.yml).
Сообщения pre_check.yml
INFO-сообщения:
"{{ global_control_name }}.INFO__I11001:RPM/DEB пакет с версией '{}' компонента '{}' найден на хосте {}.__{{ global_control_name }}.INFO"
"{{ global_control_name }}.INFO__I11002:Скачивание зависимостей для пакета компонента {} завершилось успешно.__{{ global_control_name }}.INFO"
"{{ global_control_name }}.INFO__I11003:Версии СУБД Pangolin для формирования имени пакета расширения успешно получена: {}.__{{ global_control_name }}.INFO"
"{{ global_control_name }}.INFO__I11004:Каталог для файлов расширения {} по пути {} найден.__{{ global_control_name }}.INFO"
"{{ global_control_name }}.INFO__I11005:Файлы расширения {} по пути {} найдены.__{{ global_control_name }}.INFO"
"{{ global_control_name }}.INFO__I11007:Обновление с исходным расширением {} поддерживается.__{{ global_control_name }}.INFO"
"{{ global_control_name }}.INFO__I11008:На хосте {} обнаружен запущенный экземпляр СУБД Pangolin на порте '{}'.__{{ global_control_name }}.INFO"
"{{ global_control_name }}.INFO__I11009:Проверка подключения к СУБД Pangolin для пользователя postgres успешно пройдена.__{{ global_control_name }}.INFO"
ERROR-сообщения:
"{{ global_control_name }}.FAIL__E11001:RPM/DEB пакет с версией '{}' компонента '{}' не был найден на хосте {}. Необходимо обеспечить наличие пакета в репозитории.__{{ global_control_name }}.FAIL"
"{{ global_control_name }}.FAIL__E11002:Проверка наличия зависимостей для пакета компонента {} завершилось с ошибками: {}. Необходимо обеспечить наличие данных пакетов в репозитории или произвести их предварительную установку самостоятельно.__{{ global_control_name }}.FAIL"
"{{ global_control_name }}.FAIL__E11003:Версию СУБД Pangolin для формирования имени пакета расширения не удалось получить. Для продолжения скорректируйте параметр {}, указав корректную версию.__{{ global_control_name }}.FAIL"
"{{ global_control_name }}.FAIL__E11004:Выполнение скриптов автоматизации было прервано из-за неожиданной ошибки: {}. Для продолжения изучите лог установки расширения.__{{ global_control_name }}.FAIL"
"{{ global_control_name }}.FAIL__E11005:Каталог для файлов расширения {} по пути {} не найден. Для продолжения изучите лог установки расширения.__{{ global_control_name }}.FAIL"
"{{ global_control_name }}.FAIL__E11006:Файлы расширения {} по пути {} не найдены. Проверьте полноту архива с расширением на управляющем хосте.__{{ global_control_name }}.FAIL"
"{{ global_control_name }}.FAIL__E11008:Обновление с исходным расширением {} не поддерживается.__{{ global_control_name }}.FAIL"
"{{ global_control_name }}.FAIL__E11009:На хосте {}, по результатам проверки активных портов, не обнаружено запущенного экземпляра СУБД Pangolin. Для продолжения проверьте состояние сервиса.__{{ global_control_name }}.FAIL"
"{{ global_control_name }}.FAIL__E11010:Проверка подключения к СУБД Pangolin по предоставленным учетным данным для пользователя postgres завершилась ошибкой. Необходимо обеспечить передачу корректных значений для подключения к БД в кастомном конфигурационном файле.__{{ global_control_name }}.FAIL"
WARNING-сообщение:
"{{ global_control_name }}.WARNING__W11001:RPM/DEB пакет с версией '{}' компонента '{}' не был найден на хосте {}. Необходимо обеспечить наличие пакета в репозитории.__{{ global_control_name }}.WARNING"
Сообщения post_check.yml
INFO-сообщение:
"{{ global_control_name }}.INFO__I11006:Пакет {} найден в списке установленных на стенде.__{{ global_control_name }}.INFO"
ERROR-сообщение:
"{{ global_control_name }}.FAIL__E11007:Пакет {} не найден в списке установленных на стенде. Для продолжения изучите лог установки расширения.__{{ global_control_name }}.FAIL"
Сообщения основной роли (main.yml)
ERROR-сообщение:
"{{ global_control_name }}.FAIL__E11004:Выполнение скриптов автоматизации было прервано из-за неожиданной ошибки: {}. Для продолжения изучите лог установки расширения.__{{ global_control_name }}.FAIL"
Включение дополнительных настроек для обновления со сторонними расширениями
Был введен параметр, с помощью которого можно контролировать запуск обновления версии расширения. Действует он только при обновлении исполняемых файлов или обновлении системных данных каталога. Данный флаг не сработает в значении false, для стендов с расширениями, находящимися в PGHOME. Вызвано это тем, что все сторонние расширения переехали из PGHOME в /opt/pangolin-extensions/<base_version>.
При обновлении с переносом данных расширение будет вынуждено мигрировать с одного каталога в другой, поскольку <base_version> в пути /opt/pangolin-extensions/<base_version> будет меняться. Поэтому данный параметр не контролирует обновление расширения для данного типа обновления. Даже если версия расширения не поменялась, будет произведено обновление расширения, в котором будет лишь миграция файлов в другой каталог. Такой подход был выбран для изоляции библиотек расширений разных мажорных версий продукта.
Необходимо учитывать особенность работы данного ключа при запуске обновления. По умолчанию данный параметр имеет значение true и находится в секции UPDATE PANGOLIN (optional) файла custom_config_sample.yml:
###################################################### UPDATE PANGOLIN (optional) ####################################################################
extensions_update_ver: true # Pangolin 3rdparty extensions will be updated if new version is available for minor
Для повышения гибкости процесса обновления был введен параметр two_phases_update. При значении true (по умолчанию), утилита pg_upgrade будет запущена в режиме двухфазного обновления. Если установлено false, будет применен флаг --no-two-phases.
Для стендов, использующих PostGIS, значение параметра two_phases_update допустимо только в значении false.
В рамках автоматизации также реализован параметр two_phases_extensions. Если этот параметр не определен (пустой), pg_upgrade будет обрабатывать расширения в фиксированном порядке: fuzzystrmatch, postgis, postgis_raster, postgis_sfcgal, postgis_topology, postgis_tiger_geocoder, address_standardizer, address_standardizer_data_us, pgrouting. Этот параметр позволяет гибко настраивать порядок миграции расширений, учитывая их зависимости (например, psql_diagpack от pg_stat_statements). Список элементов two_phases_extensions не должен выходить за рамки списка legal_extensions.
Список legal_extensions можно посмотреть в разделе «Проверка готовности к обновлению».
Новые параметры в custom_config_initial.yml:
######################################### 2. UPDATE #########################################
two_phases_update: true # Включение режима двухфазного обновления в утилите pg_upgrade
two_phases_extensions: # Конфигурация порядка миграции расширений с учетом их зависимостей
- fuzzystrmatch
- postgis
- postgis_raster
- postgis_sfcgal
- postgis_topology
- postgis_tiger_geocoder
- address_standardizer
- address_standardizer_data_us
- pgrouting
- isn
Процесс первичной установки стороннего расширения, как и любое обновление стенда со сторонним расширением предполагает не только установку пакета на стенд. Для обеспечения корректной работы требуется обязательная конфигурация параметра dynamic_library_path в конфигурационном файле БД (postgresql.conf/postgres.yml). Этот параметр определяет пути к каталогам, содержащим динамические библиотеки, от которых зависит работа расширений, в том числе и contrib.
Для автоматической настройки этих параметров во время ручной установки pangolin-dbms, необходимо запустить установку с переменной окружения SEARCH_EXT_PATH, установленной в значение true. Это можно сделать следующим образом:
SEARCH_EXT_PATH=true dnf install pangolin-dbms -y
SEARCH_EXT_PATH=true apt-get install pangolin-dbms -y
SEARCH_EXT_PATH=true apt install pangolin-dbms -y
При этом произойдет замена настроек по умолчанию на альтернативные пути в файле postgresql.conf.sample, который используется при последующей инициализации базы данных.
Отсутствие или некорректное значение dynamic_library_path приведет к невозможности загрузки необходимых библиотек. Корректная настройка dynamic_library_path является важным шагом. Ввиду этого в процессе обновления параметр dynamic_library_path будет скорректирован с учетом нового расположения файлов расширения. При изменении значения данного параметра будет учтено его исходное значение. Рекомендованное значение:
dynamic_library_path = "/opt/pangolin-extensions/<base_version>/lib:$libdir"
Пример:
dynamic_library_path = '/some_temp_directory/lib:/opt/pangolin-extensions/06/lib:$libdir'
Если данный параметр не задан или имеет пустое значение, поиск расширений будет осуществляться только в директории $libdir = $PGHOME/lib.
Помимо обязательного указания значения для dynamic_library_path необходимо указать путь к .control-файлам расширения. Для этого был введен новый GUC-параметр alternative_extension_control_directory. Корректная настройка которого также важна для работы БД со сторонними расширениями. В процессе обновления он будет добавлен в конфигурационный файл со значением:
alternative_extension_control_directory = "/opt/pangolin-extensions/<base_version>/share/extension"
Пример:
alternative_extension_control_directory = '/some_temp_directory/share/extension, /opt/pangolin-extensions/06/share/extension'
Если данный параметр не задан или имеет пустое значение, поиск расширений будет осуществляться только в директории $PGHOME/share/extension.
Представления для вывода списка установленных расширений
Все доступные расширения можно увидеть через представления pg_available_extensions_ext и pg_available_extension_versions_ext, которые содержат дополнительную информацию относительно оригинальных pg_available_extensions и pg_available_extension_versions, которые включают в себя пути, по которым располагаются .control-файлы и признак того, заблокировано расширение или нет. Примеры вывода новых представлений:
postgres=# SELECT * FROM pg_available_extensions_ext;
name | default_version | installed_version | comment | path | blocked
-----------------------------------+-----------------+-------------------+---------------------------------------------------------------------------------------------------------------------+----------------------------------------------------+---------
psql_license_info | 1.0 | | psql_license_info | /usr/pangolin-<base_version>/share/alt_extension | t
postgis_raster | 3.4.2 | | PostGIS raster types and functions | /opt/pangolin-extensions/06/share/extension | f
postgis | 3.4.2 | | PostGIS geometry and geography spatial types and functions | /opt/pangolin-extensions/06/share/extension | f
postgis_sfcgal | 3.4.2 | | PostGIS SFCGAL functions | /opt/pangolin-extensions/06/share/extension | f
postgis_topology | 3.4.2 | | PostGIS topology spatial types and functions | /opt/pangolin-extensions/06/share/extension | f
address_standardizer | 3.4.2 | | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step. | /opt/pangolin-extensions/06/share/extension | f
address_standardizer_data_us | 3.4.2 | | Address Standardizer US dataset example | /opt/pangolin-extensions/06/share/extension | f
postgis_tiger_geocoder | 3.4.2 | | PostGIS tiger geocoder and reverse geocoder | /opt/pangolin-extensions/06/share/extension | f
sslinfo | 1.2 | | information about SSL certificates | /usr/pangolin-<base_version>/share/extension | f
pg_freeze_recovery | 1.0 | | PostgreSQL extension for freeze page manually | /usr/pangolin-<base_version>/share/extension | f
plperl | 1.0 | | PL/Perl procedural language | /usr/pangolin-<base_version>/share/extension | f
anon | 1.3.1-psql | | Data anonymization tools | /usr/pangolin-<base_version>/share/extension | f
postgres=# SELECT * FROM pg_available_extension_versions_ext LIMIT 12;
name | version | installed | superuser | trusted | relocatable | schema | requires | comment | path | blocked
-------------------+------------+-----------+-----------+---------+-------------+------------+-----------+------------------------------------------------------------+----------------------------------------------------+---------
psql_license_info | 1.0 | f | t | t | f | pg_catalog | | psql_license_info | /usr/pangolin-<base_version>/share/alt_extension | t
postgis_raster | 3.4.2 | f | t | f | f | | {postgis} | PostGIS raster types and functions | /opt/pangolin-extensions/06/share/extension | f
postgis_raster | ANY | f | t | f | f | | {postgis} | PostGIS raster types and functions | /opt/pangolin-extensions/06/share/extension | f
postgis_raster | unpackaged | f | t | f | f | | {postgis} | PostGIS raster types and functions | /opt/pangolin-extensions/06/share/extension | f
postgis | 3.4.2 | f | t | f | f | | | PostGIS geometry and geography spatial types and functions | /opt/pangolin-extensions/06/share/extension | f
postgis | ANY | f | t | f | f | | | PostGIS geometry and geography spatial types and functions | /opt/pangolin-extensions/06/share/extension | f
postgis | unpackaged | f | t | f | f | | | PostGIS geometry and geography spatial types and functions | /opt/pangolin-extensions/06/share/extension | f
postgis_sfcgal | 3.4.2 | f | t | f | t | | {postgis} | PostGIS SFCGAL functions | /opt/pangolin-extensions/06/share/extension | f
postgis_sfcgal | ANY | f | t | f | t | | {postgis} | PostGIS SFCGAL functions | /opt/pangolin-extensions/06/share/extension | f
postgis_sfcgal | unpackaged | f | t | f | t | | {postgis} | PostGIS SFCGAL functions | /opt/pangolin-extensions/06/share/extension | f
postgis_topology | unpackaged | f | t | f | f | topology | {postgis} | PostGIS topology spatial types and functions | /opt/pangolin-extensions/06/share/extension | f
postgis_topology | 3.4.2 | f | t | f | f | topology | {postgis} | PostGIS topology spatial types and functions | /opt/pangolin-extensions/06/share/extension | f
(12 rows)
Блокировка чтения расширений при миграции
Для реализации процесса обновления с переносом данных стендов для СУБД Pangolin со сторонними расширениями выбран подход, который позволяет управлять загрузкой расширений, а именно позволяет блокировать старые версии расширений на момент обновления СУБД. Под блокировкой подразумевается, что никакая библиотека не может быть загружена в память, никаким способом: через shared(session, local)_preload_libraries, команду load, команду create extension libname;. Для этого был введен новый GUC параметр blocked_extensions_prefix, который позволяет задать префиксы имен расширений, которые будут заблокированы при старте СУБД или в ходе ее использования. В примере ниже осуществляется блокировка всех версий расширения postgis и блокировка расширения pgrouting только версии 3.1:
blocked_extensions_prefix = 'postgis, pgrouting-3.1'
Если данный параметр не задан или имеет пустое значение, блокировка расширений не осуществляется.
Логирование
Для информирования пользователя о местонахождении загружаемых библиотек было добавлено дополнительное сообщение в лог в режиме логирования DEBUG1, которое выводится в случае загрузки библиотек при старте СУБД или использовании явной загрузки расширения с помощью команды LOAD. Пример вывода:
2025-07-11 12:48:33.263 MSK [1764709] DEBUG: full path of the library "auto_explain" is "/usr/pangolin-<base_version>/lib/auto_explain.so"
2025-07-11 12:37:03.499 MSK [1764093] DEBUG: full path of the library "psql_license_info" is "/usr/pangolin-<base_version>/alt_lib/psql_license_info.so"
При блокировании расширений также выводятся соответствующие уведомления в лог в следующих случаях:
-
В случае создания расширений, которые заблокированы, выводится ошибка вида:
2025-07-01 17:02:18.445 MSK [993224] ERROR: CREATE EXTENSION failed because of extension "psql_license_info" has been blocked via GUC "blocked_extension_prefix"='psql_license_info' -
В случае вызова функций заблокированного расширения, выводится предупреждение вида:
2025-07-09 12:57:25.970 MSK [1675015] WARNING: could not find function "psql_license_info" in file "/usr/pangolin-<base_version>/alt_lib/psql_license_info.so" due to extension has been blocked via GUC "blocked_extensions_prefix"='psql_license' -
В случае попытки загрузки заблокированного расширения, выводится уведомление в лог в режиме
DEBUG1вида:2025-07-09 12:56:05.191 MSK [1674963] DEBUG: library "psql_license_info" with filename "/usr/pangolin-<base_version>/alt_lib/psql_license_info.so" could not be loaded due to extension has been blocked via GUC "blocked_extensions_prefix"='psql_license' -
В случае загрузки заблокированных расширений при работе параллельного рабочего процесса, выводится предупреждение вида:
2025-07-09 13:56:06.11 MSK [1674963] WARNING: library "psql_license_info" could not be loaded due to extension has been blocked via GUC "blocked_extensions_prefix"='psql_license' -
Также в случае синтаксических ошибок при разборе строки указанных выше параметров, выводится ошибка вида:
2025-07-11 16:48:47.304 MSK [1767261] FATAL: invalid list syntax in parameter "blocked_extensions_prefix"=',,psql_license'
Ограничения
- Выделение расширений из
contribв рамках текущей реализации не производится, но возможно в качестве развития функциональности. - Сценарий автоматизированной установки и настройки сторонних расширений в рамках работы не предусмотрен.
- Обновление с переносом данных стендов с использованием в БД типов данных
PostGISс предопределенным SRID не поддерживается. - Обновление с переносом данных стендов с использованием в БД типов данных
PostGISс предопределенным пользовательским SRID не поддерживается. - Обновление с переносом данных стендов с использованием в БД типов данных
PostGIS, хранящихся в виде массива, и основанных на них объектов физического хранения не поддерживается. - При неудачном выполнении команды
ALTER EXTENSION UPDATEдля сторонних расширений произойдет полное восстановление базы данных, так как именно такой подход предусмотрен логикой механизма восстановления для обеспечения отказоустойчивости при обновлении расширений.