Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

E.1. Выпуск 13.21

Дата выпуска: 2025-05-08

В этот выпуск вошли различные исправления, внесённые после версии 13.20. За информацией о нововведениях версии 13 обратитесь к Разделу E.22.

Сообщество PostgreSQL прекратит выпуск обновлений для версии 13.X в ноябре 2025 г. Поэтому пользователям не следует медлить с переходом на более новую основную версию.

E.1.1. Миграция на версию 13.21

Если используется версия 13.X, выгрузка/восстановление базы не требуется.

Однако если вы используете ограничения ссылающихся на себя внешних ключей в секционированных таблицах, может потребоваться пересоздать такие ограничения, чтобы удостовериться в их корректном применении. Обратитесь ко второму пункту в списке изменений ниже.

Если вы обновляете сервер с более ранней версии, чем 13.17, см. также Раздел E.5.

E.1.2. Изменения

  • Устранение выхода за границы буфера на один байт при проверке некорректно закодированных строк, которые якобы приведены в кодировке GB18030 (Ной Миш, Андрес Фройнд) § §

    Если неполный многобайтовый символ появлялся за пределами памяти, на сервере и в использующих libpq приложениях с невысокой вероятностью мог возникать сбой из-за ошибки сегментации SIGSEGV. (CVE-2025-4207)

  • Исправление обработки ссылающихся на себя внешних ключей в секционированных таблицах (Альваро Эррера) §

    При создании или присоединении секций для ограничения внешнего ключа не создавались необходимые записи каталога, если это ограничение ссылалось на ту же секционированную таблицу. По этой причине ограничение не применялось в полной мере.

    Чтобы устранить проблему, удалите и пересоздайте ссылающиеся на себя внешние ключи в секционированных таблицах, если секции были созданы или присоединены после создания ограничения. Обратите внимание, что строки, нарушающие ограничение, уже могут содержаться в таблицах, поэтому пересоздать ограничение в этом случае не получится и придётся исправить эти строки, чтобы попробовать устранить проблему ещё раз.

  • Устранение непредвиденных ошибок «attribute has wrong type» (атрибут имеет неверный тип) в запросах UPDATE, DELETE и MERGE, при которых переменные «вся строка» таблицы ссылаются на представления или функции в предложении FROM (Том Лейн) § § §

  • Исправление обработки ссылок на имена внешних CTE внутри предложения WITH, присоединённого к команде INSERT/UPDATE/DELETE/MERGE, которая сама находится внутри предложения WITH (Том Лейн) §

    Анализатор запросов не выявлял недопустимые случаи рекурсивных запросов и не учитывал такие ссылки при сортировке CTE в корректном порядке выполнения.

  • Исправление вывода некорректных результатов конструкциями ARRAY(подзапрос) и ARRAY[выражение, ...] при передаче данных типа int2vector или oidvector (Том Лейн) §

    Это исправление восстанавливает поведение, которое демонстрировалось до версии PostgreSQL 9.5. Результат теперь снова выводится с типом int2vector[] или oidvector[].

  • Исправление возможных некорректных выводов ошибок о недействительных аффиксах во время разбора словарей Ispell (Джейкоб Брейзил) §

  • Исправление команды ALTER TABLE ADD COLUMN для корректной обработки типа данных домена со значением по умолчанию (Цзянь Хи, Том Лейн, Тендер Ван) § §

    Если у доменного типа было значение по умолчанию, при добавлении столбца этого типа (без явного указания предложения DEFAULT) значение домена по умолчанию к существующим строкам не применялось. Вместо этого в новом столбце подставлялось значение NULL.

  • Улучшение текста сообщения об ошибке, которое выводится при попытках недопустимого изменения свойств ограничения внешнего ключа (Альваро Эррера) §

  • Исправление ошибки, возникавшей при сбросе флага relhassubclass временной таблицы, для которой указано предложение ON COMMIT DELETE ROWS (Ной Миш) §

  • Отключение оптимизации «пропуск выборки» в сканировании кучи по битовой карте (Маттиас ван де Меент) §

    Оказалось, что из-за этой оптимизации могли возвращаться мёртвые кортежи, когда параллельные операции очистки помечали страницу как полностью видимую.

  • Устранение проблем производительности при запуске поиска по индексу GIN с большим числом поисковых ключей (Том Лейн, Винод Шридхаран) § §

    Поиск по индексируемым предложениям с большим числом поисковых ключей (например, jsonbcol ?| array[...] с десятками тысяч элементов массива) запускался через O(N2) времени. В течение этого временного промежутка его также нельзя было отменить.

  • Выявление недостающих опорных процедур в классе операторов индекса BRIN и вывод ошибки вместо сбоя (Альваро Эррера) §

  • Устранение условий гонки при обработке параметра конфигурации synchronous_standby_names сразу после запуска сервера (Максим Мельников, Микаэль Пакье) §

    В течение короткого промежутка времени после запуска системы обслуживающие процессы могли не дожидаться синхронного подтверждения транзакций, несмотря на установленный параметр synchronous_standby_names.

  • Устранение сбоя функции pg_strtof() при передаче NULL в endptr (Александр Лахин, Том Лейн) §

  • Устранение сбоя при нехватке памяти в стеммере Snowball (Максим Коротков) §

  • Пропуск переработки и предварительного выделения WAL во время восстановления из архива во избежание повреждения файлов WAL, восстановленных из архива (Ной Миш, Арун Тхирупати) § § § § § § §

    Это изменение также переносит правки кода из PostgreSQL 15, которые на момент выпуска версии считались лишь косметическими. Последующие правки кода показали, что эти изменения предотвращают повреждение данных.

  • Предотвращение слишком сильного продвижения значения catalog_xmin в «ускоренном» режиме логического декодирования (Хоу Чжицзе) §

    Ранее это могло приводить к очистке удалённых записей каталога, несмотря на то, что они потенциально могли быть необходимы процессу чтения WAL.

  • Предотвращение потери данных при выполнении DDL-операций без сильной блокировки для таблиц, участвующих в логической репликации (Шлок Кьял, Хайато Курода) § §

    Изменения каталога, вызванные командами DDL, не отражались в процессах декодирования WAL, из-за чего последующие изменения декодировались с использованием устаревших данных каталога. Это потенциально могло приводить к повреждению данных.

  • Запрет создания дубликата снимка при поиске по индексу во время логической репликации (Хейкки Линнакангас) § §

  • Исправление слишком строгого проверочного утверждения в функции gistFindCorrectParent() (Хейкки Линнакангас) §

  • Исправление ошибки «unexpected plan node type» (неожиданный тип узла плана) в PL/pgSQL при определении прокручиваемого курсора для простого запроса SELECT выражение (Андрей Лепихов) §

  • Запрет удаления отдельных секций индекса в режиме --clean утилиты pg_dump (Цзянь Хи) §

    Сервер не принимает такие команды DROP. Однако реальных последствий это не вызывает, поскольку секции всё равно удалятся при последующем удалении их родительских таблиц или секционированного индекса. Тем не менее выводимая ошибка о попытке удаления мешала во время восстановления в режиме --single-transaction.

  • Запрет генерирования недействительных команд GRANT для ролей утилитой pg_dumpall, если в каталоге pg_auth_members содержатся недействительные OID ролей (Том Лейн) §

    Вместо этого теперь выводится предупреждение, и вхождение каталога пропускается. Такое решение позволяет лучше справляться с повреждением каталога, которое могло возникать в ветвях старых версий в результате условий гонки между командами GRANT и DROP ROLE.

  • Возможность прерывать запросы contrib/dblink операцией отмены запроса (Ной Миш) § §

    Это изменение также переносит правки кода из PostgreSQL 17. Оно предотвращает возможные зависания команд CREATE DATABASE и DROP DATABASE из-за ошибок при определении взаимоблокировок.

  • Устранение сбоя при передаче повреждённых входных данных функции heap_page_items() модуля contrib/pageinspect (Дмитрий Коваленко) §

  • Устранение сбоя проверочного утверждения в функции pg_freespace() модуля contrib/pg_freespacemap (Тендер Ван) §

    Вызов функции pg_freespace() для отношений без физического хранилища (например, для представлений) приводил к сбою проверочного утверждения, хотя негативно на сборки без проверочных утверждений это не влияло. Теперь для таких случаев добавлена проверка ошибок.

  • Исправление ошибки сборки в macOS 15.4 (Том Лейн, Питер Эйзентраут) §

    Обновление macOS повредило проверку конфигурации для функции strchrnul().

  • Обновление данных часовых поясов до версии tzdata 2025b, включающее изменение правил перехода на летнее время в Чили, а также корректировку исторических данных для Ирана (Том Лейн) §

    Появился новый часовой пояс America/Coyhaique для области Айсен в Чили, который позволяет учитывать для неё часовой пояс UTC-03 без перехода на летнее время и соответствующее расхождение с поясом America/Santiago.