E.1. Postgres Pro Standard 12.22.1
Дата выпуска: 2024-11-27
E.1.1. Обзор
Этот выпуск Postgres Pro Standard должен стать последним в серии 12. Пользователям следует поторопиться с переходом на более новую основную версию Postgres Pro Standard.
Этот выпуск основан на PostgreSQL 12.22 и Postgres Pro Standard 12.20.1. Все усовершенствования, унаследованные от PostgreSQL 12.22, перечислены в Замечаниях к выпуску PostgreSQL 12.22. Другие важные изменения и улучшения перечислены ниже:
Добавлена возможность преобразования связанных подзапросов
INв соединения.Реализована возможность выгружать состояние отдельного обслуживающего процесса путём отправки сигнала выгрузки.
Устранена ошибка сегментации, которая могла возникнуть в ходе команды
COPY TOпри использовании модуля online_analyze.Устранена ошибка, которая могла приводить к переполнению стека в сценариях с большим количеством подтранзакций. Теперь при обработке процесса фиксации транзакции вместо хвостовой рекурсии используется итерация.
Устранена утечка памяти, которая могла возникнуть, если в выводе команды
EXPLAINбыло более 64 столбцов.Устранена проблема, из-за которой команда
EXPLAIN ANALYZEотображала неверное количество вставленных и конфликтующих кортежей во время вставки строк с конфликтующими первичными ключами при использованииON CONFLICT DO NOTHING.Устранена проблема, которая могла замедлить выполнение запроса. Причина заключалась выборе неоптимального индекса оптимизатором из-за отсутствия оценки его стоимости после удаления избыточных предложений с включённым (значение
ON) параметром enable_appendorpath.Приложение 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. Миграция на версию 12.22.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.
Встроенные функции numeric_eq, numeric_ne, numeric_gt, numeric_ge, numeric_lt и numeric_le фактически являются герметичными, но они не имели соответствующей пометки в Postgres Pro Standard версии 12.1.1, в результате чего запросы могли выполняться неоптимально. В частности, это отрицательно сказывалось на производительности запросов при использовании политик защиты на уровне строк. В версии 12.2.1 это было исправлено для новых инсталляций в результате корректировки исходных данных каталога, но существующие инсталляции сохранят некорректные пометки, пока вы не исправите записи этих функций в pg_proc. Чтобы их исправить, обновите экземпляр сервера с помощью pg_upgrade либо вручную измените их в существующем кластере, выполнив во всех его базах данных соответствующие команды ALTER FUNCTION. Например:
ALTER FUNCTION pg_catalog.numeric_eq LEAKPROOF
При обновлении с версии Postgres Pro 12.6.1 и ниже перестройте покрывающие индексы с неключевыми столбцами, для которых на уровне таблицы определено правило сортировки.
Если вы используете PTRACK в процедуре резервного копирования, реализуемой c помощью утилиты pg_probackup, и обновляетесь с Postgres Pro версии 12.6.2 или ниже, сделайте полную резервную копию базы данных после обновления.
E.1. Postgres Pro Standard 12.22.1
Release Date: 2024-11-27
E.1.1. Overview
This is expected to be the last Postgres Pro Standard release in the 12 series. Users are encouraged to update to a newer Postgres Pro Standard major version soon.
This release is based on PostgreSQL 12.22 and Postgres Pro Standard 12.20.1. All improvements inherited from PostgreSQL 12.22 are listed in PostgreSQL 12.22 Release Notes. Other major changes and enhancements are as follows:
Allowed transformation of correlated
INsubqueries into joins.Implemented the ability to dump the state of a single backend process by sending the dump signal.
Fixed a segmentation fault, which could occur while executing the
COPY TOcommand when using the online_analyze module.Fixed an issue to avoid potential stack overflow in scenarios involving a large number of subtransactions. Now when handling the process of committing a transaction, iteration is used instead of tail recursion.
Fixed a memory leak that could occur when the
EXPLAINcommand's output produced over 64 columns.Fixed an issue where
EXPLAIN ANALYZEshowed incorrect counts of inserted and conflicted tuples during row inserts with conflicting primary keys when usingON CONFLICT DO NOTHING.Fixed an issue that could slow down query execution. The reason was that the optimizer selected a suboptimal index due to the lack of its cost estimation after removing redundant clauses with the enable_appendorpath option set to
ON.Upgraded mamonsu to version 3.5.9, which provides optimizations and bug fixes. Notable changes are as follows:
Added support for systems where setuptools version greater than 67.7.2 is installed.
Ended the use of dotted
user:groupspecification at the RPM pre-install stage.
Upgraded oracle_fdw to version 2.7.0.
Upgraded orafce to version 4.13.5.
Upgraded pg_filedump to version 17.1, which specifically fixed an issue that could cause pg_filedump to crash with a segmentation fault when handling incomplete pages.
Upgraded pg_portal_modify to version 0.3.4.
Upgraded pg_probackup to version 2.8.5, which provides the following optimizations and bug fixes:
Enabled the output of the
versioncommand in the JSON format using--format=json.Added the
--alloption to theamcheckcommand, which allows performing all the checks in a single command.Added support for the
includeparameter in the configuration file. The contents of the file specified inincludegets added to the configuration file instead of this parameter.Added a possibility to specify an individual number of threads for execution of a backup and its subsequent validation by specifying the
--backup-threadsand--validate-threadsoption, respectively.Changed the priority of setting
PGDATAandBACKUP_PATH. Now the values from the command-line options take precedence.Added validation of WAL files for backups to be merged by the
mergecommand.An error message that was issued when the
validatecommand run with the--waloption found an archive in theDEGRADEDstatus has been replaced with a warning since backups in this status do not affect the restore correctness as a whole.Fixed an issue that could occur if the command line was too long.
Fixed an issue that could occur during validation or restore when the PITR from a previous timeline was performed.
Upgraded pgpro_controldata to version 17.1.0.
Upgraded pgpro_stats to version 1.8, which supports Postgres Pro 17. Notable changes are as follows:
Updated
pgpro_stats_statementsandpgpro_stats_totalsviews to include fields added to pg_stat_statements. Related functions were updated accordingly.Streamlined access to views and functions. Specifically, access to the
pgpro_stats_archiver,pgpro_stats_vacuum_database,pgpro_stats_vacuum_tables, andpgpro_stats_vacuum_indexesviews was granted to all users. Previously, these views required explicitly granting access rights. Access to execution of thepgpro_stats_trace_resetfunction, which could previously be executed by any user, was restricted to superusers.Implemented an optimization that lowers the locking time in some cases when copying metrics from the local memory to the shared memory.
Eliminated an excessive check of holding the lock when accessing the hash table of session-tracing filters.
Fixed processing of the
pgpro_stats.stats_temp_directoryconfiguration parameter. Previously after the server restart for changes to this parameter value to take effect, the fatal error “pfree called with invalid pointer” could occur when processing this parameter.Fixed an issue that could occur during session tracing and cause errors “could not write file ""pg_stat/pgpro_stats_filters.trace.tmp"": No such file or directory”. Concurrent writing from different sessions to a trace file is fixed now, so processes can write to the trace file in parallel without collisions.
Upgraded pgpro_pwr to version 4.7, which provides new features, optimizations and bug fixes. Notable changes are as follows:
A subsample feature to collect relatively fast changing data.
New report tables, specifically regarding session states.
Support for new Postgres Pro 17 statistics.
A possibility not to reset statistics of the statistics collecting extension during taking a sample.
The change of the type for the field that tracks transaction IDs in a certain table from
xidtotext. The use of thexidtype could previously cause a failure of pg_upgrade when upgrading from Postgres Pro Standard to Postgres Pro Enterprise.
Upgraded pg_repack to version 1.5.1.
Upgraded pg_wait_sampling to provide tracking of subquery IDs and utility statements and to add the new
pg_wait_sampling.sample_cpuparameter, which allows specifying the sampling mode that determines whether to perform sampling of on-CPU backends.Upgraded PTRACK to prevent possible issues with PTRACK backups by setting the
ptrack.mapfile for automatic deletion when PTRACK is disabled.
E.1.2. Migration to Version 12.22.1
If you are upgrading from Postgres Pro Standard based on the same PostgreSQL major version, it is enough to install the new version into your current installation directory.
ABI versions may change between minor releases of Postgres Pro. If this is the case, and you see the ABI mismatch error when trying to run your extension, make sure to install a new version of the extension supplied with a new release of Postgres Pro, or recompile your third-party extension to be able to use it with the current version of Postgres Pro.
If you take backups using pg_probackup and you have previously upgraded it to version 2.8.0 or 2.8.1, make sure to upgrade it to version 2.8.2 or higher and retake a full backup after upgrade, since backups taken using those versions might be corrupted. If you suspect that your backups taken with versions 2.8.0 or 2.8.1 may be corrupted, you can validate them using version 2.8.2.
While functions numeric_eq, numeric_ne, numeric_gt, numeric_ge, numeric_lt, and numeric_le are actually leakproof, they were not marked as such in Postgres Pro Standard 12.1.1, which could lead to incorrect query optimization. In particular, it negatively affected query execution if row-level security policy was in use. Version 12.2.1 repairs this issue for new installations by correcting the initial catalog data, but existing installations will still have incorrect markings unless you update pg_proc entries for these functions. You can run pg_upgrade to upgrade your server instance to a version containing the corrected initial data, or manually correct these entries in each database of the installation using the ALTER FUNCTION command. For example:
ALTER FUNCTION pg_catalog.numeric_eq LEAKPROOF
When upgrading from Postgres Pro versions 12.6.1 or lower, rebuild indexes containing at least one included column of type for which the collation was defined in the table.
If you are upgrading from Postgres Pro versions 12.6.2 or lower and take PTRACK backups using pg_probackup, retake a full backup after upgrade.