E.27. Выпуск 9.5.18
Дата выпуска: 2019-06-20
В этот выпуск вошли различные исправления, внесённые после версии 9.5.17. За информацией о нововведениях версии 9.5 обратитесь к Разделу E.45.
E.27.1. Миграция на версию 9.5.18
Если используется версия 9.5.X, выгрузка/восстановление базы не требуется.
Однако если вы обновляете сервер с более ранней версии, чем 9.5.13, см. Раздел E.35.
E.27.2. Изменения
Устранение сбоя команды
ALTER TABLE ... ALTER COLUMN TYPE
при наличии в таблице частичного ограничения-исключения (Том Лейн)Ликвидация ошибки команды
COMMENT
при работе с комментариями ограничений доменов (Даниэль Густафссон, Микаэль Пакье)Исправление ошибочного вывода запросов с повторяющимися именами соединений (Филипп Дюбе)
Результатом исправленного упущения могли быть ошибки при выгрузке/восстановлении представлений, образованных такими запросами.
Исправление некорректной оптимизации квантификаторов
{1,1}
в регулярных выражениях (Том Лейн)Такие квантификаторы считались бесполезными и оптимизировались. Хотя в документации говорится, что они задают «жадное» поведение (или «нежадное» в случае «нежадной» вариации
{1,1}?
) для подвыражения, к которому они относятся, фактически они не действовали. Ошибка могла проявляться только с подвыражениями, содержащими группирующие скобки или обратные ссылки.Устранение возможности ошибок при инициализации данных
pg_stat_activity
для нового процесса (Том Лейн)Ранее были возможны сбои определённых операций, выполняемых внутри критической секции, например, преобразования строк, извлечённых из сертификата SSL, в кодировку базы данных. В подобных случаях могло произойти глобальное зависание базы данных из-за нарушения протокола обращения к общим данным
pg_stat_activity
.Устранение условий гонки при проверке, продолжает ли использоваться конфликтующим главным процессом ранее созданный сегмент общей памяти (Том Лейн)
Недопущение обращений к базам данных для проверки параметров в процессах, не подключённых к определённой базе данных (Вигнеш Си, Андрес Фройнд)
Некорректные обращения могли вызывать ошибки вида «cannot read pg_class without having selected a database» (невозможно прочитать pg_class, не выбрав базу данных).
Предупреждение возможного зависания в libpq при использовании SSL, когда объём данных в буфере очереди OpenSSL оказывается кратным 256 байтам (Дэвид Биндерман)
Улучшение обработки в initdb нескольких равнозначных названий часового пояса системы (Том Лейн, Эндрю Гирт)
Теперь initdb будет анализировать символическую ссылку
/etc/localtime
, если она существует, чтобы выбрать из всех равнозначных названий часового пояса системы наиболее подходящее. Таким образом при наличии нескольких названий часового пояса initdb скорее всего выберет именно то название, которое ожидает пользователь. Если же/etc/localtime
не является символической ссылкой на файл данных часового пояса и часовой пояс не задан переменной окруженияTZ
, поведение initdb останется прежним.Кроме того, теперь
UTC
предпочитается другим названиям этого часового пояса, когда ниTZ
, ни/etc/localtime
не предлагают другой вариант. Тем самым устранено неудобство, возникшее после произошедшего в tzdata 2019a изменения, сделавшего названия часового поясаUCT
иUTC
равнозначными: initdb выбирал обозначениеUCT
, что не соответствовало ожиданиям пользователей.Устранение дезориентирующих сообщений об ошибках в reindexdb (Жюльен Руо)
Возвращение корректного состояния vacuumdb в случае ошибки при выполнении параллельных заданий (Жюльен Руо)
В
contrib/postgres_fdw
теперь учитываются возможные модификации данных, производимые локальными триггерамиBEFORE ROW UPDATE
(Сёхей Мотидзуки)Если триггер изменял столбец, который не затрагивался командой
UPDATE
, новое значение не передавалось на удалённый сервер.Недопущение ошибки в Windows в случаях, когда для базы данных выбрана кодировка SQL_ASCII, а мы пытаемся вывести в журнал строку с не ASCII-символами (Ной Миш)
В коде предполагалось, что такие строки всегда представлены в UTF-8, и если оказывалось, что это не так, происходила ошибка. Теперь же в журнал просто передаются непреобразованные байты.
Обеспечение совместимости заголовочных файлов PL/pgSQL с C++ (Георгий Тарасов)
E.27. Release 9.5.18
Release date: 2019-06-20
This release contains a variety of fixes from 9.5.17. For information about new features in the 9.5 major release, see Section E.45.
E.27.1. Migration to Version 9.5.18
A dump/restore is not required for those running 9.5.X.
However, if you are upgrading from a version earlier than 9.5.13, see Section E.32.
E.27.2. Changes
Fix failure of
ALTER TABLE ... ALTER COLUMN TYPE
when the table has a partial exclusion constraint (Tom Lane)Fix failure of
COMMENT
command for comments on domain constraints (Daniel Gustafsson, Michael Paquier)Fix incorrect printing of queries with duplicate join names (Philip Dubé)
This oversight caused a dump/restore failure for views containing such queries.
Fix misoptimization of
{1,1}
quantifiers in regular expressions (Tom Lane)Such quantifiers were treated as no-ops and optimized away; but the documentation specifies that they impose greediness, or non-greediness in the case of the non-greedy variant
{1,1}?
, on the subexpression they're attached to, and this did not happen. The misbehavior occurred only if the subexpression contained capturing parentheses or a back-reference.Avoid possible failures while initializing a new process's
pg_stat_activity
data (Tom Lane)Certain operations that could fail, such as converting strings extracted from an SSL certificate into the database encoding, were being performed inside a critical section. Failure there would result in database-wide lockup due to violating the access protocol for shared
pg_stat_activity
data.Fix race condition in check to see whether a pre-existing shared memory segment is still in use by a conflicting postmaster (Tom Lane)
Avoid attempting to do database accesses for parameter checking in processes that are not connected to a specific database (Vignesh C, Andres Freund)
This error could result in failures like “cannot read pg_class without having selected a database”.
Avoid possible hang in libpq if using SSL and OpenSSL's pending-data buffer contains an exact multiple of 256 bytes (David Binderman)
Improve initdb's handling of multiple equivalent names for the system time zone (Tom Lane, Andrew Gierth)
Make initdb examine the
/etc/localtime
symbolic link, if that exists, to break ties between equivalent names for the system time zone. This makes initdb more likely to select the time zone name that the user would expect when multiple identical time zones exist. It will not change the behavior if/etc/localtime
is not a symlink to a zone data file, nor if the time zone is determined from theTZ
environment variable.Separately, prefer
UTC
over other spellings of that time zone, when neitherTZ
nor/etc/localtime
provide a hint. This fixes an annoyance introduced by tzdata 2019a's change to make theUCT
andUTC
zone names equivalent: initdb was then preferringUCT
, which almost nobody wants.Fix misleading error reports from reindexdb (Julien Rouhaud)
Ensure that vacuumdb returns correct status if an error occurs while using parallel jobs (Julien Rouhaud)
In
contrib/postgres_fdw
, account for possible data modifications by localBEFORE ROW UPDATE
triggers (Shohei Mochizuki)If a trigger modified a column that was otherwise not changed by the
UPDATE
, the new value was not transmitted to the remote server.On Windows, avoid failure when the database encoding is set to SQL_ASCII and we attempt to log a non-ASCII string (Noah Misch)
The code had been assuming that such strings must be in UTF-8, and would throw an error if they didn't appear to be validly encoded. Now, just transmit the untranslated bytes to the log.
Make PL/pgSQL's header files C++-safe (George Tarasov)