E.48. Выпуск 14.4
Дата выпуска: 2022-06-16
В этот выпуск вошли различные исправления, внесённые после версии 14.3. За информацией о нововведениях версии 14 обратитесь к Разделу E.52.
E.48.1. Миграция на версию 14.4
Если используется версия 14.X, выгрузка/восстановление базы не требуется.
Однако если у вас есть индексы, созданные в неблокирующем режиме версией 14, их нужно переиндексировать после обновления. Об этом рассказывается в первом пункте списка изменений.
Если вы обновляете сервер с более ранней версии, чем 14.3, см. также Раздел E.49.
E.48.2. Изменения
Предотвращение возможности повреждения индексов, созданных или перестроенных с указанием
CONCURRENTLY(Альваро Эррера) §Вследствие оптимизации, добавленной в версии 14, команды
CREATE INDEX ... CONCURRENTLYиREINDEX ... CONCURRENTLYиногда пропускали и не индексировали строки, изменяемые во время построения индекса. Эту оптимизацию решено было убрать. После установления данного обновления рекомендуется перестроить все индексы, которые были получены с указаниемCONCURRENTLY. (Также их можно просто перестроить без указанияCONCURRENTLY.)Улучшение устойчивости узла Memoize при использовании недетерминированной функции равенства (Дэвид Роули) §
При обработке узла Memoize в плане могло произойти падение сервера, если функция равенства или хеша для типа данных выдавала несогласованные данные от вызова к вызову. Теперь в таких случаях выдаётся ошибка времени выполнения.
Исправление ошибочной оценки стоимости для узлов Memoize (Дэвид Роули) §
В результате ошибки план с Memoize мог использоваться тогда, когда на самом деле он не был оптимальным, а также мог очень долго запускаться исполнитель, инициализирующий при запуске чрезмерно большую хеш-таблицу для узла Memoize.
Исправление запросов, в которых переменная «вся строка» ссылается на результат функции, возвращающей домен поверх составного типа (Том Лейн) §
Устранение ошибки планировщика «variable not found in subplan target list» (переменная не найдена в целевом списке подплана) при подтягивании наверх вложенного
SELECT, задействованного в аргументе функцииGROUPING(Ричард Гуо) §Исключение возможности получения от функции
pg_stat_get_subscription()дополнительной строки с «мусорными» значениями (Кунтал Гхош) §Исправление проверки входных данных в
COPY FROMдля случаев, когда кодировка базы данных —SQL_ASCII, а клиент использует многобайтную кодировку (Хейкки Линнакангас) §Вследствие устранённой теперь ошибки могли выдаваться ложные сообщения о неправильной кодировке входных данных.
Устранение сбоя при использовании в конструкции
XMLTABLEилиJSON_TABLEслишком большого числа псевдонимов столбцов (Альваро Эррера) § §Отображение столбцов
SELECT, выводимых в выдаваемом определении правила или представления, с предложениемAS "?column?", если могут существовать внешние ссылки на них (Том Лейн) §Ранее такой автоматически создаваемый псевдоним всегда скрывался, но вследствие этого в некоторых случаях полученное определение правила или представления нельзя было восстановить.
Передача информации о неявном создании семейств операторов событийным триггерам (Масахико Савада) §
Если при выполнении
CREATE OPERATOR CLASSнеявно создавалось семейство операторов, событийные триггеры не замечали создание этого объекта.Корректировка изменения управляющего файла при выполнении процедуры точки перезапуска во время повышения ведомого сервера (Кётаро Хоригути) §
Ранее при завершении процедуры точки перезапуска она могла ошибочно изменить сведения о последней контрольной точке в управляющем файле, следствием чего могла быть аварийная остановка сервера и невозможность перезапустить сервер в случае сбоя до выполнения следующей контрольной точки.
Предотвращение срабатывания тайм-аута
wal_receiver_timeoutна ведомом сервере в процессе логической репликации больших транзакций (Вэй Ван, Амит Капила) §Если во время большой транзакции на ведущем сервере ведомому не передавались никакие данные (например, потому что изменяемые в ней таблицы не опубликованы), на ведомом сервере мог сработать тайм-аут. Для устранения этой проблемы в таких ситуациях периодически будут передаваться сообщения об активности.
Предотвращение утечки открытого дескриптора при чтении неправильного файла с сокращёнными обозначениями часовых поясов (Кётаро Хоригути) §
В таких случаях могли выдаваться некритичные предупреждения.
Обеспечение поддержки дополнительных серверных параметров, для которых в качестве короткого описания задано NULL (Стив Чавес) §
Расширения могли создавать такие параметры и ранее, но в некоторых местах кода при их обработке происходил сбой.
Удаление в libpq ненужной проверки владельца файла SSL-ключа (Том Лейн) §
В предыдущих корректирующих выпусках мы скопировали правила проверки разрешений для файла закрытого ключа SSL, принятые на стороне сервера, в libpq. Однако проверку владения этого файла копировать не следовало. Хотя она работала в обычных ситуациях, она мешала запустить клиентское приложение от имени root, и, возможно, в других случаях.
Обеспечение вывода вменяемого сообщения при потере подключения к серверу в ecpg (Том Лейн) §
Вследствие неправильной обработки ошибки, сформированной libpq, например при потере подключения, вместо полезного сообщения могла выдаваться строка «(null)», а в старых версиях мог произойти сбой.
Предотвращение сбоя при потере подключения к серверу в pg_amcheck (Том Лейн) §
Вследствие неправильной обработки ошибки, сформированной libpq, например при потере подключения, мог произойти сбой.
Корректировка теста PL/Perl для обеспечения совместимости с Perl 5.36 (Дагфинн Ильмари Маннсакер) §
Недопущение ошибочного использования устаревшей библиотеки libldap_r в случае, когда при сборке PostgreSQL обнаруживается несколько инсталляций OpenLDAP (Том Лейн) §
E.48. Release 14.4
Release date: 2022-06-16
This release contains a variety of fixes from 14.3. For information about new features in major release 14, see Section E.52.
E.48.1. Migration to Version 14.4
A dump/restore is not required for those running 14.X.
However, if you have any indexes that were created using the CONCURRENTLY option under 14.X, you should re-index them after updating. See the first changelog entry below.
Also, if you are upgrading from a version earlier than 14.3, see Section E.49.
E.48.2. Changes
Prevent possible corruption of indexes created or rebuilt with the
CONCURRENTLYoption (Álvaro Herrera) §An optimization added in v14 caused
CREATE INDEX ... CONCURRENTLYandREINDEX ... CONCURRENTLYto sometimes miss indexing rows that were updated during the index build. Revert that optimization. It is recommended that any indexes made with theCONCURRENTLYoption be rebuilt after installing this update. (Alternatively, rebuild them withoutCONCURRENTLY.)Harden Memoize plan node against non-deterministic equality functions (David Rowley) §
Memoize could crash if a data type's equality or hash functions gave inconsistent results across different calls. Throw a runtime error instead.
Fix incorrect cost estimates for Memoize plans (David Rowley) §
This mistake could lead to Memoize being used when it isn't really the best plan, or to very long executor startup times due to initializing an overly-large hash table for a Memoize node.
Fix queries in which a “whole-row variable” references the result of a function that returns a domain over composite type (Tom Lane) §
Fix “variable not found in subplan target list” planner error when pulling up a sub-
SELECTthat's referenced in aGROUPINGfunction (Richard Guo) §Prevent
pg_stat_get_subscription()from possibly returning an extra row containing garbage values (Kuntal Ghosh) §Fix
COPY FROM's error checking in the case where the database encoding isSQL_ASCIIwhile the client's encoding is a multi-byte encoding (Heikki Linnakangas) §This mistake could lead to false complaints of invalidly-encoded input data.
Avoid crashing if too many column aliases are attached to an
XMLTABLEorJSON_TABLEconstruct (Álvaro Herrera) § §When decompiling a view or rule, show a
SELECToutput column'sAS "?column?"alias clause if it could be referenced elsewhere (Tom Lane) §Previously, this auto-generated alias was always hidden; but there are corner cases where doing so results in a non-restorable view or rule definition.
Report implicitly-created operator families to event triggers (Masahiko Sawada) §
If
CREATE OPERATOR CLASSresults in the implicit creation of an operator family, that object was not reported to event triggers that should capture such events.Fix control file updates made when a restartpoint is running during promotion of a standby server (Kyotaro Horiguchi) §
Previously, when the restartpoint completed it could incorrectly update the last-checkpoint fields of the control file, potentially leading to PANIC and failure to restart if the server crashes before the next normal checkpoint completes.
Prevent triggering of standby's
wal_receiver_timeoutduring logical replication of large transactions (Wang Wei, Amit Kapila) §If a large transaction on the primary server sends no data to the standby (perhaps because no table it changes is published), it was possible for the standby to timeout. Fix that by ensuring we send keepalive messages periodically in such situations.
Prevent open-file leak when reading an invalid timezone abbreviation file (Kyotaro Horiguchi) §
Such cases could result in harmless warning messages.
Allow custom server parameters to have short descriptions that are NULL (Steve Chavez) §
Previously, although extensions could choose to create such settings, some code paths would crash while processing them.
Remove misguided SSL key file ownership check in libpq (Tom Lane) §
In the previous minor releases, we copied the server's permission checking rules for SSL private key files into libpq. But we should not have also copied the server's file-ownership check. While that works in normal use-cases, it can result in an unexpected failure for clients running as root, and perhaps in other cases.
Ensure ecpg reports server connection loss sanely (Tom Lane) §
Misprocessing of a libpq-generated error result, such as a report of lost connection, would lead to printing “(null)” instead of a useful error message; or in older releases it would lead to a crash.
Prevent crash after server connection loss in pg_amcheck (Tom Lane) §
Misprocessing of a libpq-generated error result, such as a report of lost connection, would lead to a crash.
Adjust PL/Perl test case so it will work under Perl 5.36 (Dagfinn Ilmari Mannsåker) §
Avoid incorrectly using an out-of-date libldap_r library when multiple OpenLDAP installations are present while building PostgreSQL (Tom Lane) §