E.3. Postgres Pro Enterprise 17.4.1 #
Дата выпуска: 2025-03-13
E.3.1. Обзор #
Этот выпуск основан на PostgreSQL 17.4 и Postgres Pro Enterprise 17.2.2. Все изменения, унаследованные от PostgreSQL 17.4, описаны в Замечаниях к выпуску PostgreSQL 17.4. По сравнению с Postgres Pro Enterprise 17.2.2 эта версия также содержит следующие изменения:
- В выходные файлы - crash_infoдобавлены новые сведения, например текущий рабочий каталог, каталог- PGDATAи т. д.
- Добавлены повышенные требования безопасности для команды CREATE PROFILE. Теперь при использовании параметра - PASSWORD_REQUIRE_COMPLEXпароли должны содержать символы из трёх разных групп. Также все буквы или их аналоги в языках без разделения на регистры (хинди, китайский и т.п.) в кодировке UTF-8 считаются строчными буквами.
- Добавлен параметр конфигурации skip_temp_rel_lock, который позволяет пропускать блокировку для временных отношений. 
- Реализованы следующие исправления и усовершенствования для CFS: - Изменено значение по умолчанию для параметра конфигурации cfs_gc_threshold с 50 до 30 процентов. 
- Исправлена проблема с блокировкой сборщика мусора CFS процессом резервного копирования. Если резервное копирование выполнялось слишком долго, оно могло привести к блокировкам, мешающим записи в сжатые табличные пространства. Теперь оба процесса блокируют только определённые файлы данных на короткое время, избегая взаимоблокировок. 
- Устранена проблема с отсутствующими параметрами сжатия для табличных пространств на резервных серверах путём добавления нового типа записи WAL. Ранее резервные серверы не получали такие параметры сжатия, поскольку команда - ALTER TABLESPACE ... SET (compression=true)не регистрировалась в WAL.
- Исправлено поведение функции - cfs_start_gc, чтобы недопустимые значения аргумента- n_workersотклонялись.
- Устранена ошибка, из-за которой процесс запуска сборки мусора CFS мог не запуститься и не запустить рабочие процессы сборки мусора на резервных серверах. 
 
- Исправлена проблема, возникавшая при обновлении Postgres Pro Standard до Postgres Pro Enterprise с использованием pg_upgrade, которое могло завершиться ошибкой вида «could not open file» (не удалось открыть файл), если в старом кластере эпоха была больше 1. 
- Устранена проблема с обработкой файлов - *.cfm.bckс помощью pg_upgrade.
- Исправлено поведение параметра pg_upgrade - --checkдля корректной проверки того, что pg_upgrade запущен на резервном сервере. Ранее она завершалась ошибками вида «cannot assign TransactionIds during recovery» (не удалось назначить идентификаторы транзакций во время восстановления).
- Устранена ошибка сегментации, вызванная аннулированием обёртки сторонних данных во время автономных транзакций, если автономная транзакция сбрасывала глобальные переменные, в то время как зарегистрированные функции-обработчики оставались активными. Теперь функции-обработчики проверяют наличие глобальных переменных, а данные об аннулировании сохраняются для родительских транзакций. 
- Устранена проблема, из-за которой сервер аварийно завершал работу ошибкой уровня PANIC вместо возврата соответствующей ошибки при удалении кортежей со страницы, где разница между минимальным идентификатором транзакции и текущим идентификатором транзакции превышала 2^31. 
- Устранено раздувание - pg_multixactпутём введения «нестрогих» ограничений, запускающих автоочистку раньше.
- Устранена проблема, из-за которой при включённом параметре - crash_infoмогли не записываться диагностические файлы во время обработки переполнения стека. Ранее обработчик сигналов запускался на стеке с переполнением, что могло помешать его запуску из-за нехватки памяти. Теперь обработчик использует альтернативный стек.
- Устранена проблема, из-за которой роли без явно заданного атрибута - VALID UNTILи связанные с профилем, у которого для PASSWORD_GRACE_TIME установлено значение 0, а для- PASSWORD_LIFE_TIME—- UNLIMITED, некорректно получали предупреждения об истечении срока действия пароля. Теперь пароли корректно считаются действительными бесконечно.
- Устранена ошибка, которая вызывала проблемы с запуском последователей, добавленных после выполнения - ALTER SYSTEMна инициализированном лидере.
- Расширение apache_age обновлено до версии 1.5.1. 
- Обновлено решение BiHA — включены следующие возможности, усовершенствования и исправления: - Реализована возможность уменьшения параметра конфигурации max_connections в BiHA-кластере без отключения расширения biha. Теперь можно уменьшить значение параметра на узле-лидере и перезапустить его, чтобы изменения вступили в силу. Ранее значение - max_connectionsможно было уменьшить только при временном удалении расширения biha из- shared_preload_libraries.
- Реализован параметр bihactl init - --enable-proxima, позволяющий включить расширение proxima при создании BiHA-кластера.
- Устранена ошибка, приводившая к перезагрузке процесса - biha-background-workerпри удалении слота репликации.
- Устранена ошибка, вызывавшая проблемы с преобразованием кластера в BiHA-кластер при заданной переменной shared_preload_libraries в файле postgresql.auto.conf. 
- Устранена ошибка, вызывавшая проблемы при преобразовании синхронного кластера в BiHA-кластер. Теперь не требуется сбрасывать параметр - synchronous_standby_namesперед преобразованием синхронного кластера.
 
- Оптимизирован модуль fasttrun для пропуска ненужных операций усечения пустых временных отношений. 
- Устранена проблема, возникавшая в некоторых особых случаях с обновлением pageinspect до версии 1.10.1 или выше. 
- Расширение pgpro_multiplan обновлено до версии 1.1, в которую включены следующие исправления: - Устранена проблема с выполнением запроса, если план был одобрен при включённом pgpro_multiplan.auto_capturing, а затем запрос выполнялся с другим планом при выключенном - pgpro_multiplan.auto_capturing. Проблема могла проявляться в ошибках вида «cache lookup failed for type» (ошибка поиска в кеше для типа).
- Устранена проблема, из-за которой расширение pgpro_multiplan не могло идентифицировать зарегистрированный запрос с параметром, используемым в нескольких местах этого запроса, что препятствовало замораживанию планов для таких запросов. 
 
- Приложение pgbadger обновлено до версии 13.0. 
- pgbouncer обновлён до версии 1.24.0. 
- Модуль pg_hint_plan обновлён до версии 1.7.0.3. 
- Расширение pg_portal_modify обновлено до версии 0.3.5. 
- Расширение pgpro_anonymizer обновлено до версии 1.3.2. 
- Обновлено расширение pg_proaudit. Включены следующие усовершенствования: - Добавлено новое поле событий: имя пользователя сеанса. Теперь события содержат информацию об атрибутах - session_userи- current_userSQL-сеанса.
- Добавлена поддержка новых классов событий: - ALL_DDL_NONTEMPи- ALL_DML_NONTEMP. Область действия этих классов ограничена объектами, не находящимися во временных схемах- pg_temp_.- nnn
- Исправлено внесение в журнал событий - SELECT FOR UPDATEи- SELECT FOR KEY SHARE: теперь они корректно указываются как команды- SELECT, а не- UPDATE.
 
- Приложение pg_probackup обновлено до версии 2.8.7 Enterprise, в которой улучшена производительность и исправлены некоторые ошибки: - Уровень записи в журнал сообщений вида «checking WAL file name» (проверка имени файла WAL), выдающихся при выполнении команды - showс параметром- --archive, понижен с- INFOдо- VERBOSE.
- Изменена логика команды - add-instance: теперь обязательно использовать параметр- -D, указывающий путь к каталогу. Команда- add-instanceбольше не использует переменную среды- PGDATAкак расположение каталога, а требует явного указания пути к каталогу в параметре команды.
- Улучшен механизм сбора мусора в CFS, используемый при создании резервной копии. Блокировки на уровне файловой системы решают проблему с одновременным доступом к файлам из сжатых табличных пространств во время копирования в резервную копию и во время дефрагментации. 
- Устранена проблема с механизмом многопоточного копирования файлов, предотвращающим многократное копирование одного файла. Ранее из-за этой проблемы могла не создаваться резервная копия при высокой нагрузке на сервер. 
 
- Добавлено расширение pgpro_gbtree, позволяющее создавать и использовать глобальные индексы для секционированных таблиц. Глобальный индекс создаётся для одного или нескольких столбцов секционированной таблицы и не включает ключ секционирования. Это позволяет выполнять сканирование индекса без перебора всех секций. 
- Расширение pgpro_queue обновлено до версии 1.1, где удалён ставший ненужным параметр - pgpro_queue.launcher_database. Теперь при попытке указать этот параметр будет выведено соответствующее предупреждение.
- Расширение pgpro_scheduler обновлено до версии 2.11.1, в которой устранена ошибки сегментации, которая могла возникнуть, если pgpro_scheduler не завершал свои процессы при удалении связанного расширения или схемы. Теперь работа завершается ошибкой, а не сбоем. 
- Расширение pgpro_sfile обновлено: добавлена проверка аргумента - a_sf_indexфункции- sf_write, его значение должно быть больше нуля.
- Обновлено расширение pgpro_stats. Включены следующие усовершенствования и исправления: - Изменён формат файла выгрузки статистики и соответствующие процедуры сохранения/загрузки. 
- Имена атрибутов фильтра - explain_*трассировщика сеансов приведены в соответствие с именами параметров конфигурации трассировки сеансов.
- Реализовано отключение функциональности трассировки сеансов, если не указаны соответствующие фильтры. 
 
- Устранена проблема с записью более ранних временных меток расширением pgpro_usage. Ранее время последнего использования права регистрировалось на основе времени начала транзакции, что могло привести к перемещению временной метки назад, если длительная транзакция обращалась к таблице с опозданием, в то время как более короткая параллельная транзакция обращалась к ней раньше. 
- Обновлено расширение proxima. Включены следующие возможности, усовершенствования и исправления: - Реализованы параметры конфигурации proxima.p2p_ssl_enabled, proxima.p2p_auth_methods и proxima.ssl_trusted_certs_dir для управления SSL-взаимодействием и аутентификацией между узлами кластера. 
- Расширен список SQL-функций, позволяющих расширению proxima автоматически устанавливать динамический выделенный сеанс, если эти функции присутствуют в запросе. Новые функции: - set_config()и- setseed().
- Отключён запуск proxima на узле-рефери BiHA-кластера, так как это могло вызвать проблемы с авторизацией. 
- Устранена ошибка, из-за которой идентификаторы узлов BiHA не отображались в процессе proxima. 
- Устранена ошибка, из-за которой расширение proxima не учитывало значения - listen_addressesPostgres Pro при запуске локальных обслуживающих процессов.
 
- Обновлён модуль rum: изменено сообщение об ошибках, возникающих в случаях, когда в запросе - SELECTиспользуется- ORDER BY.
E.3.2. Миграция на версию 17.4.1 #
Если вы производите обновление выпуска Postgres Pro Enterprise, базирующегося на той же основной версии PostgreSQL, достаточно просто установить новый выпуск в текущий каталог инсталляции.
Версия ABI может измениться в корректирующем выпуске Postgres Pro. В таком случае при попытке запустить расширение возникает ошибка ABI mismatch (Несоответствие ABI), поэтому обязательно установите новую версию расширения, поставляемую с новым выпуском Postgres Pro, или перекомпилируйте стороннее расширение, чтобы использовать его с текущей версией Postgres Pro.
Важно
Чтобы обновить BiHA-кластер с Postgres Pro Enterprise версии 17.2 до Postgres Pro Enterprise версии 17.4, обратитесь к инструкциям по миграции BiHA.
Для перехода с PostgreSQL, а также с выпуска Postgres Pro Standard или Postgres Pro Enterprise, базирующегося на предыдущей основной версии PostgreSQL, обратитесь к инструкциям по миграции на версию 17.