E.1. Postgres Pro Standard 13.18.1

Дата выпуска: 2024-11-27

E.1.1. Обзор

Этот выпуск основан на PostgreSQL 13.18 и Postgres Pro Standard 13.16.1. Все усовершенствования, унаследованные от PostgreSQL 13.18, перечислены в Замечаниях к выпуску PostgreSQL 13.18. Другие важные изменения и улучшения перечислены ниже:

  • Добавлена возможность вместо Append формировать операцию MergeAppend, которая позволяет исключить дополнительную сортировку, необходимую для гарантии сортировки данных. Теперь MergeAppend формируется с указанием столбцов для сортировки. Новая возможность применяется только в том случае, если параметр enable_appendorpath имеет значение ON.

  • Добавлена возможность преобразования связанных подзапросов IN в соединения.

  • Реализована возможность выгружать состояние отдельного обслуживающего процесса путём отправки сигнала выгрузки.

  • Изменён уровень ошибки для расчёта статистики по прерываниям очистки только на уровень ERROR (PGERROR). Расчёт прерываний очистки для уровня ошибок PANIC мог приводить к непредсказуемому поведению системы, а статистика в любом случае не могла быть рассчитана из-за сбоя сервера.

  • Устранена ошибка сегментации, которая могла возникнуть в ходе команды COPY TO при использовании модуля online_analyze.

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

  • Устранена утечка памяти, которая могла возникнуть, если в выводе команды EXPLAIN было более 64 столбцов.

  • Устранена проблема, из-за которой команда EXPLAIN ANALYZE отображала неверное количество вставленных и конфликтующих кортежей во время вставки строк с конфликтующими первичными ключами при использовании ON CONFLICT DO NOTHING.

  • Устранена проблема, которая могла замедлить выполнение запроса. Причина заключалась выборе неоптимального индекса оптимизатором из-за отсутствия оценки его стоимости после удаления избыточных предложений с включённым (значение ON) параметром enable_appendorpath.

  • Прекращена поддержка ОС Ubuntu 23.10.

  • Обновлён модуль aqo. Включены следующие исправления и усовершенствования:

    • Улучшен поиск соседей в aqo (aqo.wide_search = on) для одновременного использования данных от нескольких соседей. Также пересмотрено взаимодействие поиска с aqo.min_neighbors_for_predicting, чтобы допустить поиск соседей для запросов, у которых число образцов данных меньше заданного в параметре значения. Ранее такие запросы не учитывались.

    • Исправлена ошибка выхода за пределы массива в логике обновления «умного» тайм-аута операторов aqo, а также проблема с некорректной записью статистики в aqo_query_stats при переполнении массивов.

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

    • Добавлена поддержка систем, в которых установлена версия setuptools выше 67.7.2.

    • Прекращено использование указания user:group с точками на этапе перед установкой RPM.

  • Расширение oracle_fdw обновлено до версии 2.7.0.

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

  • Расширение pg_filedump обновлено до версии 17.1, в которой была устранена проблема, приводившая к ошибке сегментации при обработке неполных страниц и сбою pg_filedump.

  • Расширение pg_portal_modify обновлено до версии 0.3.4.

  • Приложение pg_probackup обновлено до версии 2.8.5, в которой улучшена производительность и исправлены некоторые ошибки:

    • Добавлена возможность вывода команды version в формате JSON с помощью --format=json.

    • Добавлен параметр --all для команды amcheck, который позволяет выполнить все проверки в одной команде.

    • Добавлена поддержка параметра include в файле конфигурации. Содержимое файла, указанного в include, добавляется в файл конфигурации вместо этого параметра.

    • Добавлена возможность указывать конкретное количество потоков для выполнения резервного копирования и его последующей проверки, задав их в параметрах --backup-threads и --validate-threads соответственно.

    • Изменён приоритет значений PGDATA и BACKUP_PATH. Теперь приоритет имеют значения из параметров командной строки.

    • Добавлена проверка файлов WAL для резервных копий, объединяемых командой merge.

    • Сообщение об ошибке, которое выдавалось, когда команда validate, запущенная с параметром --wal, обнаруживала архив в состоянии DEGRADED, было заменено предупреждением, поскольку резервные копии в этом состоянии не влияют на корректность восстановления в целом.

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

    • Устранена ошибка, которая могла возникнуть во время проверки или восстановления, если использовался механизм PITR из предыдущей линии времени.

  • Утилита 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).

    • Устранена проблема, которая могла возникнуть во время трассировки сеанса и вызвать ошибки «could not write file ""pg_stat/pgpro_stats_filters.trace.tmp"": No such file or directory» (не удалось записать файл ""pg_stat/pgpro_stats_filters.trace.tmp"": Такого файла или каталога не существует). Параллельная запись из разных сеансов в файл трассировки теперь работает корректно, и процессы могут выполнять запись в файл трассировки параллельно без конфликтов.

  • Модуль pgpro_pwr обновлён до версии 4.7, в которой улучшена производительность и добавлены новые возможности. Основные изменения перечислены ниже:

    • Механизм промежуточных выборок для сбора относительно быстро меняющихся данных.

    • Новые таблицы отчётов, в частности касающиеся состояний сеансов.

    • Поддержка новых статистик Postgres Pro 17.

    • Возможность не сбрасывать статистику расширения по сбору статистики при получении выборки.

    • Изменение тип поля, отслеживающего идентификаторы транзакций в определённой таблице, с xid на text. Использование типа xid ранее могло привести к сбою pg_upgrade при обновлении с Postgres Pro Standard до Postgres Pro Enterprise.

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

  • Расширение pg_wait_sampling обновлено для отслеживания идентификаторов подзапросов и операторов утилит. Также был добавлен параметр pg_wait_sampling.sample_cpu, который позволяет указать режим обработки показаний, определяющий, следует ли выполнять обработку показаний процессов, использующих ЦП.

  • Расширение PTRACK обновлено для предотвращения возможных проблем с резервными копиями PTRACK путём автоматического удаления файла ptrack.map при отключении PTRACK.

E.1.2. Миграция на версию 13.18.1

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

Версия ABI может измениться в корректирующем выпуске Postgres Pro. В таком случае при попытке запустить расширение возникает ошибка ABI mismatch (Несоответствие ABI), поэтому обязательно установите новую версию расширения, поставляемую с новым выпуском Postgres Pro, или перекомпилируйте стороннее расширение, чтобы использовать его с текущей версией Postgres Pro.

Если вы создаёте резервные копии с помощью pg_probackup и ранее обновили его до версии 2.8.0 или 2.8.1, обязательно обновите его до версии 2.8.2 или выше и сделайте полную резервную копию базы данных после обновления, поскольку резервные копии, созданные с использованием этих версий, могут быть повреждены. Чтобы проверить, повреждены ли резервные копии, созданные с помощью версий 2.8.0 или 2.8.1, можно использовать версию 2.8.2.

При обновлении с версии Postgres Pro 13.2.1 и ниже вы должны перестроить покрывающие индексы с неключевыми столбцами, для которых на уровне таблицы определено правило сортировки.

Если вы используете PTRACK в процедуре резервного копирования, реализуемой c помощью утилиты pg_probackup, и обновляетесь с Postgres Pro версии 13.2.2 или ниже, сделайте полную резервную копию базы данных после обновления.

При обновлении до версии Postgres Pro 13.11.1 и выше обязательно обновите pg_probackup до версии 2.6.3 или выше, поскольку более ранние версии pg_probackup несовместимы с этими версиями Postgres Pro.

Для перехода с PostgreSQL или выпуска Postgres Pro Standard, базирующегося на предыдущей основной версии PostgreSQL, обратитесь к инструкциям в Замечаниях к выпуску Postgres Pro Standard 13.1.1.