E.7. Выпуск 9.5.19
Дата выпуска: 2019-08-08
В этот выпуск вошли различные исправления, внесённые после версии 9.5.18. За информацией о нововведениях версии 9.5 обратитесь к Разделу E.26.
E.7.1. Миграция на версию 9.5.19
Если используется версия 9.5.X, выгрузка/восстановление базы не требуется.
Однако если вы обновляете сервер с более ранней версии, чем 9.5.13, см. Раздел E.16.
E.7.2. Изменения
Требование указания схемы при приведении к временному типу с использованием синтаксиса вызова функции (Ной Миш)
Мы давно требуем, чтобы вызов временных функций записывался с явным указанием временной схемы, примерно так:
pg_temp.. Теперь её необходимо указывать и в приведении к временным типам с использованием функциональной записи:имя_функции(аргументы)pg_temp.. В противном случае имеется возможность перехватить вызов функции, используя временный объект, что позволит повысить привилегии примерно тем же способом, который мы блокировали в CVE-2007-2138. (CVE-2019-10208)имя_типа(аргумент)Устранение сбоя в
ALTER TABLE ... ALTER COLUMN TYPEпри изменении типов нескольких столбцов в одной команде (Том Лейн)Тем самым устранена регрессия, которая появилась в предыдущих корректирующих выпусках: индексы, построенные по модифицируемым столбцам, обрабатывались неправильно, что приводило к странным ошибкам в процессе
ALTER TABLE.Устранение ненужных этапов сортировки в некоторых запросах с предложением
GROUPING SETS(Эндрю Гирт, Ричард Гуо)Исправление поведения внешних ключей, содержащих несколько столбцов, при перестроении ограничения внешнего ключа (Том Лейн)
Команда
ALTER TABLEмогла неправильно определять, нужно ли перепроверять внешний ключ, если столбцы в ключе имели разные типы. По всей видимости проявлялось это всегда консервативным образом, то есть перепроверка производилась и тогда, когда это не требовалось.Исправление преобразования диапазонов дат с бесконечными границами
infinityс приведением их к канонической форме (Лауренц Альбе)Если граница диапазона — бесконечность, пытаться преобразовать открытый диапазон в закрытый и наоборот путём увеличения или уменьшения граничного значения нельзя. Поэтому в подобных случаях диапазон не должен изменяться.
Ликвидирована потеря дробных цифр при приведении очень больших значений типа
moneyк типуnumeric(Том Лейн)Исправление ассемблерного кода циклических блокировок для процессоров MIPS, чтобы он корректно работал на MIPS r6 (ЮньЦян Су)
Игнорирование символа перевода каретки (
\r) при разборе файлов описаний служб в libpq (Том Лейн, Микаэль Пакье)В некоторых случаях такие файлы с переводами строк в стиле Windows могли разбираться неправильно, что проявлялось в ошибках при подключении.
Исправление в pg_dump порядка вывода пользовательских классов операторов (Том Лейн)
Если пользовательский класс операторов оказывался классом операторов подтипа для пользовательского диапазонного типа, связанные объекты выводились в неправильном порядке; в результате выгруженные данные нельзя было восстановить. (Нижележащая ошибка в обработке зависимости классов операторов могла проявляться и в других случаях, но зафиксирован только этот.)
Обеспечение в
contrib/passwordcheckвозможности сосуществования с другими пользователями функцииcheck_password_hook(Микаэль Пакье)Исправление проверок
contrib/sepgsqlдля поддержки последних версий SELinux (Майк Пальмиотто)Уменьшение объёма вывода в stderr в тестировочном скрипте pg_upgrade (Том Лейн)
Обеспечение поддержки сборки Postgres с использованием Microsoft Visual Studio 2019 (Харибабу Комми)
При сборке проектов Visual Studio переменная окружения
WindowsSDKVersionне должна игнорироваться, если она установлена (Пэйфэн Цю)Это исправление решает проблемы сборки в некоторых конфигурациях.
Поддержка в проектах Visual Studio библиотеки OpenSSL версии 1.1.0 и выше (Хуан Хосе Сантамария Флеча, Микаэль Пакье)
Возможность передачи параметров make нижележащей утилите gmake при вызове на верхнем уровне make не из комплекта GNU (Томас Манро)
Недопущение выбора вариантов
localtimeиposixrulesв качестве значенияTimeZoneв процессе initdb (Том Лейн)В некоторых случаях программа initdb могла выбирать одно из таких имён несуществующих часовых поясов вместо имени «настоящего» часового пояса. Этим двум именам будет предпочитаться любое другое, представляющее часовой пояс на уровне C.
Изменение представления
pg_timezone_names: часовой поясFactoryбудет отображаться, только если он имеет короткую аббревиатуру (Том Лейн)В прошлом администрация IANA ввела этот искусственный пояс с «аббревиатурой»
Local time zone must be set--see zic manual page(Должен быть задан местный часовой пояс -- см. страницу руководства zic). Современные версии базы данных tzdb содержат для него аббревиатуру-00, но на ряде платформ эта база модифицируется так, что из неё продолжают исходить подобные старинные написания. Поэтому решено показывать этот часовой пояс, только если его аббревиатура действительно кратка.Синхронизация нашей копии библиотеки timezone с выпущенной IANA версией 2019b (Том Лейн)
В результате была добавлена поддержка нового ключа
-b slimпрограммы zic, что позволяет уменьшить размер устанавливаемых файлов часовых поясов. Эта возможность может пригодиться нам в будущем.Обновление данных часовых поясов до версии tzdata 2019b, включающее изменение правил перехода на летнее время в Бразилии, а также корректировку исторических данных для Гонконга, Италии и Палестины.
E.7. Release 9.5.19
Release date: 2019-08-08
This release contains a variety of fixes from 9.5.18. For information about new features in the 9.5 major release, see Section E.26.
E.7.1. Migration to Version 9.5.19
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.13.
E.7.2. Changes
Require schema qualification to cast to a temporary type when using functional cast syntax (Noah Misch)
We have long required invocations of temporary functions to explicitly specify the temporary schema, that is
pg_temp.. Require this as well for casting to temporary types using functional notation, for examplefunc_name(args)pg_temp.. Otherwise it's possible to capture a function call using a temporary object, allowing privilege escalation in much the same ways that we blocked in CVE-2007-2138. (CVE-2019-10208)type_name(arg)Fix failure of
ALTER TABLE ... ALTER COLUMN TYPEwhen altering multiple columns' types in one command (Tom Lane)This fixes a regression introduced in the most recent minor releases: indexes using the altered columns were not processed correctly, leading to strange failures during
ALTER TABLE.Avoid using unnecessary sort steps for some queries with
GROUPING SETS(Andrew Gierth, Richard Guo)Fix mishandling of multi-column foreign keys when rebuilding a foreign key constraint (Tom Lane)
ALTER TABLEcould make an incorrect decision about whether revalidation of a foreign key is necessary, if not all columns of the key are of the same type. It seems likely that the error would always have been in the conservative direction, that is revalidating unnecessarily.Prevent incorrect canonicalization of date ranges with
infinityendpoints (Laurenz Albe)It's incorrect to try to convert an open range to a closed one or vice versa by incrementing or decrementing the endpoint value, if the endpoint is infinite; so leave the range alone in such cases.
Fix loss of fractional digits when converting very large
moneyvalues tonumeric(Tom Lane)Fix spinlock assembly code for MIPS CPUs so that it works on MIPS r6 (YunQiang Su)
Make libpq ignore carriage return (
\r) in connection service files (Tom Lane, Michael Paquier)In some corner cases, service files containing Windows-style newlines could be mis-parsed, resulting in connection failures.
Fix pg_dump to ensure that custom operator classes are dumped in the right order (Tom Lane)
If a user-defined opclass is the subtype opclass of a user-defined range type, related objects were dumped in the wrong order, producing an unrestorable dump. (The underlying failure to handle opclass dependencies might manifest in other cases too, but this is the only known case.)
Fix
contrib/passwordcheckto coexist with other users ofcheck_password_hook(Michael Paquier)Fix
contrib/sepgsqltests to work under recent SELinux releases (Mike Palmiotto)Reduce stderr output from pg_upgrade's test script (Tom Lane)
Support building Postgres with Microsoft Visual Studio 2019 (Haribabu Kommi)
In Visual Studio builds, honor
WindowsSDKVersionenvironment variable, if that's set (Peifeng Qiu)This fixes build failures in some configurations.
Support OpenSSL 1.1.0 and newer in Visual Studio builds (Juan José Santamaría Flecha, Michael Paquier)
Allow make options to be passed down to gmake when non-GNU make is invoked at the top level (Thomas Munro)
Avoid choosing
localtimeorposixrulesasTimeZoneduring initdb (Tom Lane)In some cases initdb would choose one of these artificial zone names over the “real” zone name. Prefer any other match to the C library's timezone behavior over these two.
Adjust
pg_timezone_namesview to show theFactorytime zone if and only if it has a short abbreviation (Tom Lane)Historically, IANA set up this artificial zone with an “abbreviation” like
Local time zone must be set--see zic manual page. Modern versions of the tzdb database show-00instead, but some platforms alter the data to show one or another of the historical phrases. Show this zone only if it uses the modern abbreviation.Sync our copy of the timezone library with IANA tzcode release 2019b (Tom Lane)
This adds support for zic's new
-b slimoption to reduce the size of the installed zone files. We are not currently using that, but may enable it in future.Update time zone data files to tzdata release 2019b for DST law changes in Brazil, plus historical corrections for Hong Kong, Italy, and Palestine.