E.7. Выпуск 9.6.18
Дата выпуска: 2020-05-14
В этот выпуск вошли различные исправления, внесённые после версии 9.6.17. За информацией о нововведениях версии 9.6 обратитесь к Разделу E.25.
E.7.1. Миграция на версию 9.6.18
Если используется версия 9.6.X, выгрузка/восстановление базы не требуется.
Однако если вы обновляете сервер с более ранней версии, чем 9.6.16, см. Раздел E.9.
E.7.2. Изменения
Сохранение свойства
indisclustered
у индексов, перезаписываемых командойALTER TABLE
(Амит Ланготе, Джастин Призби)Ранее команда
ALTER TABLE
теряла информацию о том, для какого индекса выполнялась командаCLUSTER
.Сохранение свойства идентификации реплики у индексов, перезаписываемых командой
ALTER TABLE
(Цюань Цзунлян, Питер Эйзентраут)Блокирование объектов на более ранней стадии выполнения
DROP OWNED BY
(Альваро Эррера)Это позволяет исключить ошибки в условиях гонки, когда какие-либо из удаляемых объектов параллельно удаляются в другом сеансе.
Исправление обработки ошибок при выполнении
CREATE ROLE ... IN ROLE
(Эндрю Гирт)В некоторых случаях при ошибке вместо надлежащего сообщения выдавалось «unexpected node type» (неожиданный тип узла) или что-то подобное.
Исправление в полнотекстовом поиске обработки отрицания для результата поиска фразы (Том Лейн)
Запросы вида
!(foo<->bar)
не могли найти нужные строки, когда применялся поиск по индексу GiST или GIN.Исправление полнотекстового поиска в ситуациях, когда в поисковой фразе оказывается элемент, задающий и искомый префикс, и вес (Том Лейн)
Улучшение выбора выдержек из документа в функции
ts_headline()
при обработке фразовых запросов (Том Лейн)Устранение ошибок в обработке
gin_fuzzy_search_limit
(Аде Хэйуорд, Том Лейн)При небольшом значении
gin_fuzzy_search_limit
выполнение запросов могло неожиданно замедляться из-за непреднамеренного многократного сканирования одной и той же страницы индекса. В другом месте кода желаемая фильтрация не применялась вовсе, в результате чего могло возвращаться слишком много значений.Добавление в набор форматов, допустимых для типа
circle
, формата «(
», который должен приниматься согласно документации (Дэвид Чжан)x
,y
),r
Доработка функций
get_bit()
иset_bit()
для поддержки строкbytea
длиннее 256 МБ (Мувад Ли)Так как аргумент, задающий номер бита, имеет тип
int4
, с помощью этих функций нельзя обращаться к битам за пределами первых 256 мегабайт значенияbytea
. В 13 версии тип аргумента будет расширен доint8
, а тем временем в текущей версии обеспечена поддержка этими функциями больших значенийbytea
в обозначенном пределе.Устранение возможной утечки открытого дескриптора каталога в
pg_ls_dir()
,pg_timezone_names()
,pg_tablespace_databases()
и родственных функциях (Джастин Призби)Исправление разрешения типов в полиморфных функциях, чтобы фактический тип результата
anyarray
выводился из входного типа, если на вход поступает толькоanyrange
(Том Лейн)Устранение возможности сбоя при прерывании команды
REINDEX
сигналом завершения сеанса (Том Лейн)Предотвращение отображения мусорных данных при выводе статистики таблицы соединения по хешу в
EXPLAIN
(Константин Книжник, Том Лейн, Томас Манро)Исправление расчёта длительности этапов в процедуре усечения кучи при выполнении
VACUUM VERBOSE
(Тацухито Касахара)Предотвращение повторного добавления «waiting» (ожидание) в заголовок процесса, выводимый PS (Масахико Савада)
Предотвращение преждевременного перерабатывания сегментов WAL во время восстановления после сбоя (Жеан-Гийом де Рорте)
Сегменты WAL, которые становились готовыми к архивации в ходе процедуры восстановления, могли перерабатываться, не попадая в архив.
Отказ от сканирования неактуальных линий времени в ходе восстановления архива (Кётаро Хоригути)
Теперь не будут производиться многократные попытки считать несуществующие файлы WAL из архивного хранилища, что важно при низкоскоростном подключении к архиву.
Удаление ненужной проверки, сигнализирующей об ошибке «subtransaction logged without previous top-level txn record» (записи подтранзакции в журнале не предшествует запись транзакции верхнего уровня) (Арсений Шер, Амит Капила)
Ситуация, которая ранее считалась недопустимой, могла сложиться на вполне законных основаниях, поэтому данную проверку следует удалить.
Обеспечение снятия блокировки
io_in_progress_lock
для слота репликации при обработке нештатных ситуаций (Паван Деоласи)Ранее блокировка снималась не всегда, вследствие чего процесс walsender мог зависнуть в ожидании.
Устранение условий гонки при управлении синхронными ведомыми серверами (Том Лейн)
В процессе применения изменений параметра
synchronous_standby_names
существовало окно, в котором могли быть приняты неверные решения об освобождении транзакций, ожидающих синхронной фиксации. Подобные неверные решения могли приниматься и тогда, когда после завершения процесса walsender он сразу же заменялся другим.Недопущение изменения
nextXid
в обратном направлении на ведомом сервере (Ека Паламадай)В результате условия гонки сервер горячего резерва мог передавать ведущему серверу некорректные ответные сообщения, вследствие чего на ведущем операция
VACUUM
могла выполняться раньше времени.Добавление значений SQLSTATE в формируемые отчёты об ошибках в нескольких местах (Масахико Савада)
Реализация в PL/pgSQL надёжного метода пресечения попытки выполнить функцию событийного триггера как обычную функцию (Том Лейн)
Устранение утечки памяти в libpq при использовании режима
sslmode=verify-full
(Роман Пешкуров)При проверке сертификата на стадии установления соединения была возможна утечка памяти. Это могло стать серьёзной проблемой, если клиентский процесс в своём жизненном цикле устанавливал много подключений к базе данных.
Обработка в ecpg аргумента «
-
» как означающего «читать с stdin» на всех платформах (Том Лейн)Добавление в pg_dump поддержки конструкции
ALTER ... DEPENDS ON EXTENSION
(Альваро Эррера)Ранее программа pg_dump игнорировала зависимости, добавленные таким образом, вследствие чего они терялись после выгрузки/восстановления или выполнения pg_upgrade.
Исправление в pg_dump выгрузки комментариев к объектам политики RLS (Том Лейн)
Перенос в выгрузке pg_dump восстановления событийных триггеров на финальный этап (Фабрицио де Ройес Мелло, Хамид Ахтар, Том Лейн)
Это снижает риск нежелательного влияния событийных триггеров на восстановление других объектов.
Исправление обработки кавычек в значениях параметров
--encoding
,--lc-ctype
и--lc-collate
утилиты createdb (Микаэль Пакье)Устранение краха при попытке вызвать функцию
lo_manage()
изcontrib/lo
как обычную функцию, а не в качестве триггера (Том Лейн)Защита от переполнения полей длины в типах
ltree
иlquery
модуляcontrib/ltree
(Никита Глухов)Устранение утечки ссылки на кеш в
contrib/sepgsql
(Майкл Ло)Исправление обработки имён локалей в стиле Unix на платформе Windows (Хуан Хосе Сантамария Флеча)
Исправление в сборках MSVC манипуляции с путём к Python с учётом того, что он может содержать пробелы (Виктор Вагнер)
Исправление в сборках MSVC определения версии Visual Studio во избежание зависимости от языковых настроек (Эндрю Дунстан)
Использование в сборках MSVC ключа
-Wno-deprecated
с bison версии новее 3.0, как уже делается в сборках для отличных от Windows ОС (Эндрю Дунстан)Обновление данных часовых поясов до версии tzdata 2020a, включающее изменение правил перехода на летнее время в Марокко и канадском Юконе, а также корректировку исторических данных для Шанхая.
Часовой пояс America/Godthab был переименован в America/Nuuk в соответствии с принятым сейчас названием; старое обозначение сохранено для совместимости в виде ссылки.
Также был актуализирован список известных initdb часовых поясов в Windows, так что теперь параметры системного часового пояса на этой платформе будут восприняты корректно с большей вероятностью.