E.3. Postgres Pro Enterprise 15.6.1

Дата выпуска: 2024-02-22

E.3.1. Обзор

Этот выпуск основан на PostgreSQL 15.6 и Postgres Pro Enterprise 15.5.1. Все изменения, унаследованные от PostgreSQL 15.6, описаны в Замечаниях к выпуску PostgreSQL 15.6. По сравнению с Postgres Pro Enterprise 15.5.1 эта версия также содержит следующие изменения:

  • Введены два новых модификатора для работы с пакетами: #private и #export. Модификатор #private определяет функции и процедуры как внутренние, а модификатор #export определяет, какие переменные пакета являются публичными.

  • Добавлены параметры конфигурации, позволяющие управлять сбором информации о сбоях сервера. Параметр crash_info включает эту функциональность, а crash_info_dump и crash_info_location указывают содержимое и расположение файлов с информацией о сбоях соответственно.

  • Добавлен новый параметр конфигурации cfs_gc_respond_time, позволяющий задавать интервал времени, в течение которого CFS ждёт снятия блокировки с файла в процессе сборки мусора, прежде чем запишет предупреждение в журнал.

  • Оптимизировано потребление памяти при оценке избирательности для каждого элемента массива по сравнению с ванильными версиями PostgreSQL.

  • Оптимизировано аннулирование локального кеша отношений в случаях, когда кортеж временной таблицы или кортеж индекса в pg_class не обновляется при усечении отношения.

  • Изменены на lz4 значения по умолчанию параметров конфигурации default_toast_compression и wal_compression, что ускоряет обработку WAL и TOAST и снижает объём используемого дискового пространства.

  • Исправлено некорректное преобразование цепочек HOT из 32-битного в 64-битный формат после обновления Postgres Pro Enterprise с помощью pg_upgrade, ранее приводившее к появлению бесконечного цикла очистки. Количество повторных попыток очистки теперь ограничено одной на кортеж. При превышении в журнал заносится ошибка.

  • Устранена ошибка сегментации, которая могла возникнуть при выполнении запросов или использовании планировщика во время работы расширения pg_pathman. Расширение не учитывало появление новых полей в структуре RangeTblEntry (RTE), и они инициализировались некорректно. При создании обычной копии родительской RTE pg_pathman также переносились указатели на родительские классы эквивалентности или их члены. Это несоответствие обнаруживалось при планировании запроса и вызывало ошибку.

  • Устранены условия гонки между рабочим процессом автоочистки и серверными процессами при удалении потерянных таблиц, приводившие к ошибкам «cache lookup failed for relation» (ошибка поиска в кеше для отношения). Теперь при удалении потерянных таблиц процесс автоочистки блокирует пространства имён.

  • Устранена проблема, которая могла возникать во время установки сервера Postgres Pro в системах на базе Debian, включённых в домен с пользователем postgres.

  • Исправлен вывод скрипта pg-setup, в котором при инициализации кластера ошибочно отображалась локаль из переменной окружения LANG. Теперь сообщение о локали на данном этапе не отображается.

  • Устранена проблема, которая могла возникать в случае сбоя рабочего процесса сборки мусора CFS. Раньше для продолжения работы требовался перезапуск сервера, поскольку рабочий процесс не перезапускался автоматически. Теперь рабочий процесс перезапускается, если был недоступен более 10 секунд.

  • Сокращено время жизни временных файлов CFS, которые образуются при работе сборщика мусора или в ходе выполнения операции VACUUM FULL.

  • Прекращена поддержка Rosa Enterprise Linux Server 7.

  • Прекращена поддержка ОС РОСА «КОБАЛЬТ» (серверная редакция) на платформе РОСА 7.

  • Расширение apache_age обновлено до версии 1.5.0.

  • Модуль orafce обновлён до версии 4.9.2.

  • pg_filedump обновлён до версии 16.1.

  • Приложение pg_probackup обновлено до версии 2.7.2 Enterprise, в которой улучшена производительность и исправлены некоторые ошибки. Основные изменения перечислены ниже:

    • Оптимизировано использование памяти при резервном копировании в удалённом режиме.

    • Устранена проблема, возникавшая во время инкрементального копирования, из-за которой ещё не скопированная таблица удалялась из CFS.

    • Исправлен порядок обработки файлов WAL командой archive-push в случаях, когда количество файлов WAL превышает указанное значение --batch-size.

    • Исправлена ошибка «WAL segment is absent» (сегмент WAL отсутствует), которая могла возникнуть, если размер регистрируемой записи WAL превышал размер сегмента WAL.

    • Устранена ошибка, возникавшая при создании версионированного бакета в VK Cloud.

    • Устранена ошибка сегментации, возникавшая во время выполнения команды merge в S3.

  • Утилита pg_repack обновлена до версии 1.5.0.

  • Обновлено расширение pg_variables, которое теперь предоставляет функциональность итератора для любых коллекций, а также функции для работы с общими переменными-коллекциями. Эти функции позволяют получить доступ к элементам коллекции по ключу, который может иметь целочисленный или текстовый тип. Эти улучшения облегчают миграцию кода Oracle, обрабатывающего коллекции.

  • Расширение pg_proaudit обновлено до версии 2.0, в которую включены следующие основные изменения и усовершенствования:

    • Добавлены новые функции pg_proaudit_set_rule и pg_proaudit_remove_rule, которые позволяют создавать и удалять правила регистрации событий соответственно. Эти функции заменили pg_proaudit_set_object, pg_proaudit_set_role, pg_proaudit_reset_object и pg_proaudit_reset_role.

    • Реализована возможность регистрировать группы событий, указав соответствующее значение в аргументе event_type.

    • В представление pg_proaudit_settings добавлен столбец comment, в котором отображается комментарий с описанием созданного правила регистрации событий.

    • Реализована возможность регистрации событий безопасности, связанных с объектами типа PREPARED STATEMENT, а также событий типов DEALLOCATE, EXECUTE и PREPARE.

    • Устранена проблема с некорректной регистрацией событий безопасности для команд CREATE DATABASE, CREATE GROUP, CREATE ROLE, CREATE TABLESPACE и CREATE USER. Раньше эти события регистрировались как SUCCESS после проверки синтаксиса и до выполнения самой команды. Теперь SUCCESS вносится в журнал при завершении выполнения команды, а в случае сбоя она помечается как FAILURE.

  • Расширение pgpro_anonymizer обновлено до версии 1.2.0.

  • Расширение pgpro_stats обновлено до версии 1.7, в которой улучшена производительность и исправлены некоторые ошибки:

    • Реализация в расширении pgpro_stats чтения файла «текстов запросов» блоками размером не больше 1 ГБ (подобно аналогичной реализации в pg_stat_statements). Такие большие файлы с текстами запросов встречаются крайне редко, но в случае их наличия ранее происходил сбой в 64-битной ОС Windows (в которой один запрос на чтение файла не может прочитать больше 2 ГБ).

    • Добавлена обратная совместимость функций pgpro_stats_statements и pgpro_stats_totals. Теперь поддерживаются случаи, когда более новая версия загружаемого модуля pgpro_stats используется со старым объявлением SQL функций. Ранее подобные случаи вызывали крах сервера.

    • Устранена проблема, из-за которой не выводились статистики очистки баз данных в представлении pgpro_stats_vacuum_database.

  • Модуль pgpro_pwr обновлён до версии 4.4, в которой добавлена поддержка pgpro_stats 1.7, и в отчёты включены новые интерактивные возможности и фильтрация на основе подстроки.

  • Расширение PLV8 обновлено до версии 3.2.2.

  • Модуль sr_plan был обновлён, в новой версии улучшена производительность и исправлены некоторые ошибки:

    • Добавлен параметр конфигурации sr_plan.auto_tracking, позволяющий автоматически нормализовывать и регистрировать запросы, выполняемые с использованием команды EXPLAIN.

    • Реализована возможность сохранять разные планы запроса с разными наборами параметризованных констант с помощью уникальной пары queryid и const_hash, где const_hash — это хешированное значение непараметризованных констант. Эта пара ключей заменила srid.

    • Реализована возможность замораживания планов запросов на основе наборов указаний, которые можно увидеть в новом столбце hintstr представлений расширения.

    • Устранена проблема, из-за которой расширение не могло заморозить план для зарегистрированного запроса, что могло приводить к сбою из-за нехватки памяти при повторной попытке заморозить тот же план.

    • Устранена проблема с удалением файла хранилища планов запросов, которая могла возникнуть при обновлении Postgres Pro. Теперь создаётся резервная копия файла, благодаря чему можно вернуться к предыдущей версии расширения и восстановить планы запросов.

E.3.2. Миграция на версию 15.6.1

Если вы производите обновление выпуска Postgres Pro Enterprise, базирующегося на той же основной версии PostgreSQL, достаточно просто установить новый выпуск в текущий каталог инсталляции.

Начиная с 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.