E.4. Postgres Pro Enterprise 15.10.1
Дата выпуска: 2024-12-09
E.4.1. Обзор
Этот выпуск основан на PostgreSQL 15.10 и Postgres Pro Enterprise 15.8.2. Все изменения, унаследованные от PostgreSQL 15.10, описаны в Замечаниях к выпуску PostgreSQL 15.10. По сравнению с Postgres Pro Enterprise 15.8.2 эта версия также содержит следующие изменения:
- Добавлена возможность вместо - Appendформировать операцию- MergeAppend, которая позволяет исключить дополнительную сортировку, необходимую для гарантии сортировки данных. Теперь- MergeAppendформируется с указанием столбцов для сортировки. Новая возможность применяется только в том случае, если параметр enable_appendorpath имеет значение- ON.
- Улучшена производительность CFS за счёт сокращения количества сообщений об аннулировании для таблиц, которые ранее вызывали множество событий повторного открытия файлов. Теперь аннулирование нацелено на конкретные сегменты, с которыми работает сборщик мусора. 
- В файлах JSON, содержащих замороженные планы, массивы типов параметров теперь отображаются в текстовом формате, а не в числовом, что упрощает редактирование неверного типа параметра. 
- Добавлена возможность преобразования связанных подзапросов - INв соединения.
- Реализована возможность выгружать состояние отдельного обслуживающего процесса путём отправки сигнала выгрузки. 
- Добавлен шаг для проверки программой pg_upgrade ненулевых значений в неиспользуемых полях заголовков файлов - *.cfm.
- Изменён уровень ошибки для расчёта статистики по прерываниям очистки только на уровень - ERROR(- PGERROR). Расчёт прерываний очистки для уровня ошибок- PANICмог приводить к непредсказуемому поведению системы, а статистика в любом случае не могла быть рассчитана из-за сбоя сервера.
- Признана устаревшей возможность создания конструкций с использованием - JSON_EXISTS()с предложением- RETURNING. Этот синтаксис не поддерживается стандартом SQL/JSON, согласно которому предикат- JSON_EXISTS()должен возвращать только TRUE, FALSE или UNKNOWN.
- Исправлено поведение функции - cfs_gc_relationдля возврата фактического количества обработанных сегментов отношения.
- Исправлена проблема, возникавшая при обновлении PostgreSQL или Postgres Pro Standard до Postgres Pro Enterprise с использованием pg_upgrade при переполнении счётчика смещения мультитранзакций. 
- Исправлена обработка 64-битных идентификаторов транзакций для корректного кодирования и декодирования идентификаторов транзакций. 
- Устранена проблема с обновлением PostgreSQL или Postgres Pro Standard до Postgres Pro Enterprise с помощью pg_upgrade, которая могла возникнуть при попытке преобразовать страницы кучи в формат страницы - double xmaxв случаях, когда для размещения специальной области было недостаточно свободного места. При наличии мультитранзакций это могло привести к ошибкам вида «MultiXactId XXXXX has not been created yet» (идентификатор XXXXX мультитранзакции ещё не создан) или «could not access status of transaction XXXXXX» (не удалось получить доступ к статусу транзакции XXXXXX), в зависимости от версии сервера. При этом не должно происходить потери данных, поскольку не происходит фактического преобразования. Теперь страницы безопасно преобразуются при первом обращении.
- Устранена утечка памяти, которая могла возникнуть, если в выводе команды - EXPLAINбыло более 64 столбцов.
- Устранена ошибка сегментации, которая могла возникнуть при выполнении команды - COPY TOпри использовании модуля online_analyze.
- Устранена проблема, из-за которой команда - EXPLAIN ANALYZEотображала неверное количество вставленных и конфликтующих кортежей во время вставки строк с конфликтующими первичными ключами при использовании- ON CONFLICT DO NOTHING.
- Устранена проблема, которая могла замедлить выполнение запроса. Причина заключалась в выборе неоптимального индекса оптимизатором из-за отсутствия оценки его стоимости после удаления избыточных предложений с включённым (значение - ON) параметром enable_appendorpath.
- Устранена проблема с разбором имён подготовленных операторов в случаях, когда имя оператора содержало имя команды SQL, а также удалён ставший ненужным параметр - sr_plan.max_consts_len.
- Добавлена поддержка архитектуры ARM для РЕД ОС МУРОМ 8. 
- Удалена поддержка загрузки устаревших данных, ранее необходимая для чтения устаревших двоичных планов sr_plan и преобразования их в формат JSON. Сохранена минимальная функциональность для обнаружения устаревших файлов, их резервного копирования и записи сообщения об этом в журнал. 
- Обновлён модуль aqo. Включены следующие исправления и усовершенствования: - Улучшен поиск соседей в aqo ( - aqo.wide_search=- on) для одновременного использования данных от нескольких соседей. Также пересмотрено взаимодействие поиска с- aqo.min_neighbors_for_predicting, чтобы допустить поиск соседей для запросов, у которых число образцов данных меньше заданного в параметре значения. Ранее такие запросы не учитывались.
- Исправлена ошибка выхода за пределы массива в логике обновления «умного» тайм-аута операторов aqo, а также проблема с некорректной записью статистики в - aqo_query_statsпри переполнении массивов. В предыдущих версиях использование- aqo_query_stat_updateс массивами величиной 20 и более могло привести к записи последующих изменений статистики в неконтролируемые сегменты памяти. Обязательно установите Postgres Pro как на ведущем, так и на ведомом сервере, чтобы избежать подобных проблем с повреждением памяти.
 
- Приложение mamonsu обновлено до версии 3.5.9, в которой улучшена производительность и исправлены некоторые ошибки. Основные изменения перечислены ниже: - Добавлена поддержка систем, в которых установлена версия setuptools выше 67.7.2. 
- Прекращено использование указания - user:groupс точками на этапе перед установкой RPM.
 
- Расширение multimaster обновлено до версии 1.2.0. Значительно увеличена производительность синхронизации за счёт включения асинхронных операций фиксации на отстающем узле, который синхронизируется с узлом-донором. Использование таких операций можно включить с помощью параметра - multimaster.enable_async_3pc_on_catchup.
- Драйвер ODBC обновлён до версии 17.00.0002. 
- Расширение oracle_fdw обновлено до версии 2.7.0. 
- Модуль orafce обновлён до версии 4.13.5. 
- Расширение pg_filedump обновлено до версии 17.1, в которой была устранена проблема, приводившая к ошибке сегментации при обработке неполных страниц и сбою pg_filedump. 
- Расширение pg_hint_plan обновлено до версии 1.5.2. 
- Утилита pg_integrity_check обновлена для отображения фактических значений контрольной суммы только с параметром - --verbose, если контрольные суммы различаются.
- Расширение pg_portal_modify обновлено до версии 0.3.4. 
- Обновлено расширение pg_proaudit. Включены следующие исправления и усовершенствования: - Добавлена регистрация событий безопасности, связанных с операциями с профилями: - CREATE PROFILE,- ALTER PROFILEи- DROP PROFILE.
- Изменено распределение событий безопасности, связанных с функциями и хранимыми процедурами, по группам событий безопасности: группа - ALL_DDLтеперь не включает события, связанные с функциями и хранимыми процедурами,- ALL_PROCвключает- CREATE,- ALTERи- DROP, а- ALL_DMLвключает- EXECUTE.
- Исправлена совместимость с пулом соединений. Ранее могли возникнуть проблемы при регистрации событий безопасности - AUTHENTICATEи- DISCONNECT.
- Исправлена регистрация расширением pg_proaudit событий безопасности для секционированных таблиц. Теперь события - SELECT/UPDATE/INSERT/DELETE/TRUNCATEв секционированной таблице регистрируются, если правила регистрации подразумевают регистрацию соответствующих событий для этой таблицы. Ранее регистрировались только события для отдельных секций.
 
- Приложение pg_probackup обновлено до версии 2.8.5 Enterprise, в которой улучшена производительность и исправлены некоторые ошибки: - Добавлена возможность вывода команды - versionв формате JSON с помощью- --format=- json.
- Добавлен параметр - --allдля команды- amcheck, который позволяет выполнить все проверки в одной команде.
- Добавлена поддержка параметра - includeв файле конфигурации. Содержимое файла, указанного в- include, добавляется в файл конфигурации вместо этого параметра.
- Добавлена возможность указывать конкретное количество потоков для выполнения резервного копирования и его последующей проверки, указав их в параметрах - --backup-threadsи- --validate-threadsсоответственно.
- Изменён приоритет значений - PGDATAи- BACKUP_PATH. Теперь приоритет имеют значения из параметров командной строки.
- Добавлена проверка файлов WAL для резервных копий, объединяемых командой - merge.
- Сообщение об ошибке, которое выдавалось, когда команда - validate, запущенная с параметром- --wal, обнаруживала архив в состоянии- DEGRADED, было заменено предупреждением, поскольку резервные копии в этом состоянии не влияют на корректность восстановления в целом.
- Добавлена поддержка параметра - --s3-config-fileдля- restore_command. Файл- postgresql.auto.confдолжен включать- restore_commandс параметром- --s3-config-file, если резервная копия была создана с этим параметром.
- Для - PG_PROBACKUP_S3_IGNORE_CERT_VERустановлено значение по умолчанию- onсогласно документации.
- Устранена проблема, которая могла возникнуть при слишком длинной командной строке. 
- Устранена ошибка, которая могла возникнуть во время проверки или восстановления, если использовался механизм PITR из предыдущей линии времени. 
- Исправлена проблема, которая могла возникнуть, когда порт подключения S3 был указан как в - PG_PROBACKUP_S3_PORT, так и в- PG_PROBACKUP_S3_HOST. Теперь значение, указанное в- PG_PROBACKUP_S3_HOST, вместе с адресом имеет более высокий приоритет.
 
- Утилита pgpro_controldata обновлена до версии 17.1.0. 
- Расширение pgpro_stats обновлено до версии 1.8, в которой добавлена поддержка Postgres Pro 17. Основные изменения перечислены ниже: - Обновлены представления - pgpro_stats_statementsи- pgpro_stats_totals, чтобы включить новые поля, добавленные в модуль pg_stat_statements. Также были обновлены соответствующие функции.
- Упрощён доступ к представлениям и функциям. В частности, всем пользователям был предоставлен доступ к представлениям - pgpro_stats_archiver,- pgpro_stats_vacuum_database,- pgpro_stats_vacuum_tablesи- pgpro_stats_vacuum_indexes. Ранее для этих представлений требовалось явное предоставление прав доступа. Доступ к выполнению функции- pgpro_stats_trace_reset, которая ранее могла быть выполнена любым пользователем, теперь ограничен суперпользователями.
- Устранена избыточная проверка удержания блокировки при доступе к хеш-таблице фильтров трассировки сеансов. 
- Исправлена обработка параметра конфигурации - pgpro_stats.stats_temp_directory. Ранее после перезапуска сервера, необходимого для вступления в силу изменений значения этого параметра, могла возникнуть фатальная ошибка «pfree called with invalid pointer» (неверный указатель для функции pfree).
 
- Модуль pgpro_pwr обновлён до версии 4.7, в которой улучшена производительность и добавлены новые возможности. Основные изменения перечислены ниже: - Механизм промежуточных выборок для сбора относительно быстро меняющихся данных. 
- Новые таблицы отчётов, в частности касающиеся состояний сеансов. 
- Поддержка новых статистик Postgres Pro 17. 
- Возможность не сбрасывать статистику расширения по сбору статистики при получении выборки. 
- Изменение тип поля, отслеживающего идентификаторы транзакций в определённой таблице, с - xidна- text. Использование типа- xidранее могло привести к сбою pg_upgrade при обновлении с Postgres Pro Standard до Postgres Pro Enterprise.
 
- Приложение pgpro_scheduler обновлено до версии 2.10, в которую были включены следующие изменения: - Исправлена проблема с автоматическим перезапуском разовых заданий после их прерывания. 
- Исправлено поведение функции - schedule.get_active_jobsдля корректного вывода списка выполняющихся заданий cron.
- Устранена проблема, из-за которой возникающие во время выполнения задания ошибки не регистрировались должным образом из-за ограничения первичного ключа, препятствующего внесению нескольких записей в журнал. 
- Устранена ошибка, из-за которой работа - at job executorзавершалась сбоем, если- database managerпреждевременно освобождал сегмент общей памяти до того, как к нему подключался рабочий процесс.
- Устранена проблема, из-за которой функция - schedule.timetableне выводила следующее время выполнения заданий cron ни с- next_time_statement, ни с массивом дат. Устранена проблема с расчётом следующего времени выполнения для заданий cron, из-за которой экземпляры заданий пропускались.
- Устранена проблема, приводившая к сбоям баз данных из-за ошибок сегментации в фоновом рабочем процессе исполнителя заданий. 
 
- Модуль pg_repack обновлён до версии 1.5.1. 
- Расширение pg_wait_sampling обновлено для отслеживания идентификаторов подзапросов и операторов утилит. Также был добавлен параметр - pg_wait_sampling.sample_cpu, который позволяет указать режим обработки показаний, определяющий, следует ли выполнять обработку показаний процессов, использующих ЦП.
- Модуль pljava обновлён до версии 1.6.8. 
- Расширение PLV8 обновлено до версии 3.2.3. 
- Обеспечена совместимость - postgres_fdwс автономными транзакциями.
- Расширение PTRACK обновлено для предотвращения возможных проблем с резервными копиями PTRACK путём автоматического удаления файла - ptrack.mapпри отключении PTRACK.
- Расширение tds_fdw обновлено до версии 2.0.4. 
E.4.2. Миграция на версию 15.10.1
Если вы производите обновление выпуска Postgres Pro Enterprise, базирующегося на той же основной версии PostgreSQL, достаточно просто установить новый выпуск в текущий каталог инсталляции.
Версия ABI может измениться в корректирующем выпуске Postgres Pro. В таком случае при попытке запустить расширение возникает ошибка ABI mismatch (Несоответствие ABI), поэтому обязательно установите новую версию расширения, поставляемую с новым выпуском Postgres Pro, или перекомпилируйте стороннее расширение, чтобы использовать его с текущей версией Postgres Pro.
Если вы создаёте резервные копии с помощью pg_probackup и ранее обновили его до версии 2.8.0 Enterprise или 2.8.1 Enterprise, обязательно обновите его до версии 2.8.2 Enterprise или выше и сделайте полную резервную копию базы данных после обновления, поскольку резервные копии, созданные с использованием этих версий, могут быть повреждены. Чтобы проверить, повреждены ли резервные копии, созданные с помощью версий 2.8.0 или 2.8.1, можно использовать версию 2.8.2.
Начиная с Postgres Pro Enterprise 15.5.1, права ролей с атрибутом CREATEROLE ограничены, и для изменения свойств других ролей требуется наличие права ADMIN OPTION.
Настоятельно не рекомендуется обновлять кластер с 32-битными идентификаторами транзакций на версии Postgres Pro Enterprise ниже 15.4.2 при наличии мультитранзакций в базе данных, поскольку это может вызвать повреждение данных.
При обновлении до версии Postgres Pro Enterprise 15.3.1 и выше обязательно обновите pg_probackup Enterprise до версии 2.6.4 или выше, поскольку более ранние версии pg_probackup несовместимы с этими версиями Postgres Pro Enterprise.
Для перехода с PostgreSQL, а также с выпуска Postgres Pro Standard или Postgres Pro Enterprise, базирующегося на предыдущей основной версии PostgreSQL, обратитесь к инструкциям по миграции на версию 15.