E.18. Выпуск 12.5
Дата выпуска: 2020-11-12
В этот выпуск вошли различные исправления, внесённые после версии 12.4. За информацией о нововведениях версии 12 обратитесь к Разделу E.23.
E.18.1. Миграция на версию 12.5
Если используется версия 12.X, выгрузка/восстановление базы не требуется.
Если вы обновляете сервер с более ранней версии, чем 12.2, см. также Раздел E.21.
E.18.2. Изменения
Запрещение конструкции
DECLARE CURSOR ... WITH HOLDи вызова отложенных триггеров в выражениях индексов и запросов матпредставлений (Ной Миш) §Устранённая уязвимость по сути позволяла выйти из защищённой среды, в которой выполняются «операции с ограничениями безопасности». Злоумышленник, имеющий право создания не временных SQL-объектов, мог воспользоваться этой уязвимостью для выполнения произвольного SQL-кода от имени суперпользователя.
Проект PostgreSQL благодарит Этьена Сталманса за сообщение об этой проблеме. (CVE-2020-25695)
Исправление обработки сложных параметров в строках подключений в программах pg_dump, pg_restore, clusterdb, reindexdb и vacuumdb (Том Лейн) § §
В аргументе
-dпрограмм pg_dump и pg_restore, а также в аргументе--maintenance-dbдругих перечисленных программ может задаваться «строка подключения», содержащая не просто имя базы данных, но и другие параметры подключений. В случаях, когда эти программы должны были устанавливать дополнительные соединения, например, для параллельной обработки или работы с несколькими базами, строка соединения терялась, и для дополнительных подключений использовались только основные параметры (адрес и порт сервера, имя базы данных и имя пользователя). Это могло приводить к сбоям подключений, если строка подключения дополнительно содержала существенную информацию, например, изменённые параметры SSL или GSS. Хуже того, успешно установленное соединение могло оказаться незашифрованным (тогда как должно было шифроваться) или подверженным атакам с посредником (которые предотвращались бы при использовании заданных параметров). (CVE-2020-25694)Обеспечение использования всех не переопределённых параметров из предыдущей строки соединения при выполнении команды psql
\connect(Том Лейн) §Это исправление предотвращает ошибки переподключения, которые могли раньше возникать из-за упущения значимых параметров, например, параметров SSL или GSS. Хуже того, раньше переподключение могло произойти успешно, но при этом оказаться незашифрованным (тогда как должно было шифроваться) или подверженным атакам с посредником (которые предотвращались бы при использовании заданных параметров). По большому счёту это та же проблема, что и описанная выше проблема pg_dump и др., но в случае psql ситуация усложняется тем, что пользователь может намеренно переопределить некоторые параметры соединений. (CVE-2020-25694)
Недопущение изменения командой psql
\gsetспециальных переменных (Ной Миш) §Команда
\gsetбез префикса ранее переопределяла любые переменные по указанию сервера. Таким образом, скомпрометированный сервер мог установить переменную специального назначения, напримерPROMPT1, в результате чего было возможно выполнение произвольного кода оболочки в сеансе пользователя.Проект PostgreSQL благодарит Ника Клитона за сообщение об этой проблеме. (CVE-2020-25696)
Предотвращение возможной потери данных при параллельном усечении журналов SLRU (Ной Миш) § §
Из-за этого редко проявлявшегося дефекта впоследствии могли выдаваться ошибки «apparent wraparound» (видимо, произошло зацикливание) или «could not access status of transaction» (не удалось получить состояние транзакции).
Обеспечение должного сохранения каталогов SLRU на диске во время контрольных точек (Томас Манро) §
Тем самым предупреждается риск потери данных в случае последующего сбоя операционной системы.
Исправление поведения
ALTER ROLEдля пользователей, имеющих атрибутBYPASSRLS(Том Лейн, Стивен Фрост) §Атрибут
BYPASSRLSу ролей могут изменять только суперпользователи, но другие действияALTER ROLE, например смена пароля, должны разрешаться и непривилегированным пользователям с учётом обычных ограничений. Предыдущая реализация разрешала любые операции с ролью, имеющей такой атрибут, только суперпользователям.Предотвращение воздействия
ALTER TABLE ONLY ... ENABLE/DISABLE TRIGGERна дочерние таблицы (Альваро Эррера) §Ранее флаг
ONLYне учитывался.Исключение ненужного рекурсивного обращения к секциям в
ALTER TABLE SET NOT NULL, когда целевой столбец уже помечен какNOT NULL(Том Лейн) §Тем самым устраняется риск взаимоблокировки при выполнении pg_restore в параллельном режиме.
Исправление обработки выражений
CREATE TABLE LIKEс наследованием (Том Лейн) § §Если команда
CREATE TABLEиспользует и традиционное наследование, иLIKE, ссылки на столбцы в ограниченияхCHECKи выражениях индексов, приходящие из родительской таблицыLIKE, могли быть неправильно пронумерованы, вследствие чего выдавались некорректные результаты или странные сообщения об ошибках. То же самое могло наблюдаться с генерируемыми выражениями (в тех версиях, где они поддерживаются).Недопущение выполнения
DROP INDEX CONCURRENTLYс секционированной таблицей (Альваро Эррера, Микаэль Пакье) §Это действие и раньше прерывалось ошибкой, но её текст вызывал вопросы.
Устранение ошибки при выполнении
LOCK TABLEс представлением, ссылающимся на себя (Том Лейн) §Ранее такие команды выдавали ошибку с сообщением о бесконечной рекурсии, однако они вполне могут выполняться успешно.
Сохранение статистики индекса в ходе
REINDEX CONCURRENTLY(Микаэль Пакье, Фабрицио де Ройес Мелло) §Такая статистика всегда сохранялась при блокирующем перестроении индексов.
Исправление процедуры информирования о прогрессе операции
REINDEX CONCURRENTLY(Маттиас ван де Меент, Микаэль Пакье) §Пересчёт генерируемых столбцов (
GENERATED) в случае изменения столбцов, от которых зависят первые, посредством правил или в изменяемом представлении (Том Лейн) §Это исправление также гарантирует в подобных случаях корректное срабатывание триггера, привязанного к столбцу.
Перепроверка ограничений секции по умолчанию при перенаправлении добавляемого или изменяемого кортежа в нужную секцию (Амит Ланготе, Альваро Эррера)
Благодаря этому исправляется поведение в особых случаях при добавлении секций параллельно с добавлением строк в таблицу.
Устранение ошибок, возникавших с выражениями границ секций, зависящими от правил сортировки (Том Лейн) §
Поддержка хеширования текстовых массивов (Питер Эйзентраут) §
Ранее хеширование массива было невозможно, если тип элемента массива был сортируемым. А именно, невозможно было использовать секционирование по хешу, если ключом секционирования был столбец с массивом текстовых элементов.
Исправление ошибки со сдвигом на один отрицательных значений, соответствующих годам до н. э. в функциях
to_date()иto_timestamp()(Дар Альатар-Йемен, Том Лейн) §Кроме того, отрицательное значение года с явным указанием «BC» (до н. э.) теперь становится положительным, относящимся к н. э.
Обеспечение архивирования файлов истории линий времени вместе с WAL на ведомых серверах при выбранном в
archive_modeрежимеalways(Григорий Смолкин, Фудзии Масао) §Вследствие устранённого теперь упущения можно было лишиться возможности восстановления на момент времени (PITR).
Устранение ошибки «cache lookup failed for relation 0» (ошибка поиска в кеше для отношения 0) в рабочих процессах логической репликации (Том Лейн) §
Практические следствия этой ошибки незначительны, так как она весьма маловероятна, а в случае её возникновения рабочий процесс просто перезапускается.
Предотвращение передачи избыточных контрольных запросов процессами логической репликации (Том Лейн) §
Выполнение в процедуре отключения «smart» остановки фоновых процессов только после завершения всех клиентских сеансов (сеансов переднего плана) (Том Лейн) §
С прежним поведением нарушалось выполнение параллельных запросов, так как управляющий процесс принудительно завершал процессы параллельных исполнителей и не запускал новые. Также при этом переставала работать автоочистка, что могло быть чревато большими проблемами, если продолжавшие существование клиентские сеансы вносили множество изменений данных.
Предупреждение переполнения стека при обработке сигналов в процессе postmaster (Том Лейн) §
При активной параллельной обработке наблюдались сбои процесса postmaster по причине поступления слишком большого количества сигналов, запрашивающих создание параллельных исполнителей.
Недопущение вызова обработчиков atexit при выходе по сигналу SIGQUIT (Кётаро Хоригути, Том Лейн) § §
Большинство серверных процессов уже отказались от этой практики, но процесс архиватора по недосмотру сохранил старое поведение. Также неправильно завершались процессы, находившиеся в состоянии ожидания стартового клиентского пакета.
Предотвращение неправильной оптимизации ограничений подзапроса, обращающихся к группирующим столбцам, которые представляются константами (Том Лейн) §
«Константный» выходной столбец подзапроса в действительности не будет константой, если это группирующий столбец, фигурирующий только в некоторых из наборов группирования.
Устранение возможности сбоя при рассмотрении GEQO-оптимизатором соединений с учётом секционирования (Том Лейн) §
Предупреждение сбоя в случаях, когда внедрённая SQL-функция меняет форму потенциально хешируемого выражения сравнения для подплана (Том Лейн) §
Корректировка поведения в случае появления новых HOT-цепочек в ходе построения или перестроения индекса, когда одновременно происходит изменение данных (Анастасия Лубенникова, Альваро Эррера) § §
В результате устранённого теперь упущения могли выдаваться ошибки «failed to find parent tuple for heap-only tuple» (не удалось найти родительский кортеж для HOT-кортежа).
Устранение сбоя при параллельном сканировании B-дерева в случае, когда условие индекса не удовлетворяется (Джеймс Хантер) §
Обеспечение распаковки данных перед добавлением их в индекс BRIN (Томаш Вондра) §
В элементах индексов не должны содержаться указатели на внешние данные TOAST, однако в реализации BRIN это не учли. Вследствие этого могли возникать ошибки «missing chunk number 0 for toast value NNN» (отсутствует порция номер 0 для TOAST-значения NNN). (Если вы столкнулись с такой ошибкой в существующем индексе, для устранения её должно быть достаточно выполнить
REINDEX.)Корректировка обработки сброса обобщения в случае, когда он осуществляется одновременно со сканированием индекса BRIN (Александр Лахин, Альваро Эррера) §
Ранее, если сброс обобщения зоны страниц происходил в неудачный момент времени, при сканировании индекса могла выдаваться ложная ошибка с сообщением о повреждении индекса.
Устранение редкой ошибки «lost saved point in index» (потеряна сохранённая точка в индексе) при сканировании составных индексов GIN (Том Лейн) §
Исправление буферизованного построения индексов GiST, содержащих неключевые столбцы (Павел Борисов) §
Исправление непереносимого использования
getnameinfo()в реализации представленияpg_hba_file_rules(Том Лейн) §Из-за ликвидированной теперь ошибки на FreeBSD 11 и возможно других платформах столбцы
addressиnetmaskв этом представлении всегда содержали null.Предотвращение сбоя при запуске параллельных исполнителей, происходившего, когда переменная
debug_query_stringравна NULL (Ной Миш) §Устранение риска использования памяти после освобождения при отслеживании в событийном триггере операции
ALTER TABLE(Жеан-Гийом де Рорте) §Предупреждение сбоев в ситуациях, когда триггер
BEFORE ROW UPDATEпросто возвращает «старую» строку таблицы с удалёнными или «отсутствующими» столбцами (Амит Ланготе, Том Лейн) § §При таком способе подавления изменений данных можно было получить сбои, неожиданные ошибки ограничений
CHECKили неверные результаты сRETURNING, так как для этих целей «отсутствующие» столбцы воспринимаются как содержащие NULL. (В данном случае столбец считается «отсутствующим», если он был добавлен командойALTER TABLE ADD COLUMNсо значением по умолчанию, постоянным и отличным от NULL.) Также проблемы могли возникать с удалёнными столбцами.Исправление некорректного сообщения об ошибке, выдаваемой при несовпадении типов движущегося агрегата (Джефф Джейнс) §
Устранение блокировки при получении от параллельного исполнителя очень большого сообщения об ошибке (Вигнеш Си) §
Избавление от неоправданной ошибки при передаче очень большого объёма данных через очереди в разделяемой памяти (Маркус Ваннер) §
Исправление некорректной обработки атрибутов шаблонных функций при генерировании JIT-кода (Андрес Фройнд) § §
Сбои вследствие некорректной обработки наблюдались на платформе
s390x, но вполне вероятно, что подобное могло иметь место и на других платформах.Устранение утечек памяти в кеше отношений при использовании политик RLS (Том Лейн) §
Ликвидация утечки памяти в особых случаях в функции
index_get_partition()(Джастин Призби) §Устранение небольшой утечки памяти при обработке сигнала SIGHUP, возникавшей с новыми значениями GUC-переменных, которые нельзя изменить без перезагрузки (Том Лейн) §
Ликвидация утечек памяти при обработки команды
CALLв PL/pgsql (Павел Стехуле, Том Лейн) §Поддержка в libpq строк произвольной длины в файлах
.pgpass(Том Лейн) § §Это прежде всего полезно, когда в качестве паролей сохраняются очень длинные защищённые ключи.
Отказ в libpq для Windows от вызовов
WSACleanup()и сведение вызововWSAStartup()к одному единственному для процесса (Том Лейн, Александр Лахин)Ранее libpq вызывала
WSAStartup()при установлении каждого соединения, аWSACleanup()— при закрытии соединения. Однако как оказалось, вызовWSACleanup()может повлиять на другие операции программы, а именно, мы иногда наблюдали исчезновение ожидаемого вывода программы. По всей видимости, ликвидация этого вызова не должна иметь никаких побочных эффектов, поэтому он был удалён. (Это также способствует повышению производительности, если программа устанавливает множество подключений к серверу, так как она не будет постоянно загружать и выгружать DLL.)Исправление логики инициализации потоков в библиотеке ecpg для Windows (Том Лейн, Александр Лахин) §
Из-за некорректной установки блокировок многопоточные приложения ecpg при редком стечении обстоятельств могли работать некорректно.
Смена в Windows режима чтения вывода команды «обратный апостроф» в psql с двоичного на текстовый (Том Лейн) §
Благодаря этому будут корректно обрабатываться символы новой строки.
Включение в pg_dump сбора информации о столбцах в таблицах конфигурации расширений (Фабрицио де Ройес Мелло, Том Лейн) § §
Из-за отсутствия этой информации происходили сбои при загрузке данных таблицы, выгруженных с указанием
--insertsили с неполными (хотя обычно корректными) командамиCOPY.Обеспечение при параллельном выполнении pg_restore правильного порядка обработки внешних ключей, ссылающихся на секционированные таблицы (Альваро Эррера) §
Ранее программа pg_restore могла попытаться восстановить ограничение внешнего ключа до восстановления всех необходимых индексов, что приводило к ошибке.
Добавление в pg_upgrade проверки существования каталогов табличных пространств в целевом кластере (Брюс Момджян) § §
Устранение возможности утечки памяти в
contrib/pgcrypto(Микаэль Пакье) §Добавление проверки на случай маловероятной ошибки во время выполнения в
contrib/pgcrypto(Даниэль Густафссон) §Исправление недавно добавленных в тесты проверок
timetz, которые работали только когда в США действовало летнее время (Том Лейн) §Обновление данных часовых поясов до версии tzdata 2020d, включающее изменение правил перехода на летнее время на Фиджи, в Марокко, Палестине, канадском Юконе, на острове Маккуори и на станции Кейси (Антарктика), а также корректировку исторических данных для Франции, Венгрии, Монако и Палестины. § §
Синхронизация нашей копии библиотеки timezone с выпущенной IANA версией tzcode 2020d (Том Лейн) § §
С этой версией к нам попало изменение выбираемого по умолчанию формата вывода zic с «fat» (расширенный) на «slim» (минимальный). Для наших целей это не имеет практического значения, так как мы продолжаем использовать формат «fat» в версиях ниже 13. Также теперь гарантируется, что
strftime()будет менять значениеerrno, только если произойдёт ошибка.
E.18. Release 12.5
Release date: 2020-11-12
This release contains a variety of fixes from 12.4. For information about new features in major release 12, see Section E.23.
E.18.1. Migration to Version 12.5
A dump/restore is not required for those running 12.X.
However, if you are upgrading from a version earlier than 12.2, see Section E.21.
E.18.2. Changes
Block
DECLARE CURSOR ... WITH HOLDand firing of deferred triggers within index expressions and materialized view queries (Noah Misch) §This is essentially a leak in the “security restricted operation” sandbox mechanism. An attacker having permission to create non-temporary SQL objects could parlay this leak to execute arbitrary SQL code as a superuser.
The PostgreSQL Project thanks Etienne Stalmans for reporting this problem. (CVE-2020-25695)
Fix usage of complex connection-string parameters in pg_dump, pg_restore, clusterdb, reindexdb, and vacuumdb (Tom Lane) § §
The
-dparameter of pg_dump and pg_restore, or the--maintenance-dbparameter of the other programs mentioned, can be a “connection string” containing multiple connection parameters rather than just a database name. In cases where these programs need to initiate additional connections, such as parallel processing or processing of multiple databases, the connection string was forgotten and just the basic connection parameters (database name, host, port, and username) were used for the additional connections. This could lead to connection failures if the connection string included any other essential information, such as non-default SSL or GSS parameters. Worse, the connection might succeed but not be encrypted as intended, or be vulnerable to man-in-the-middle attacks that the intended connection parameters would have prevented. (CVE-2020-25694)When psql's
\connectcommand re-uses connection parameters, ensure that all non-overridden parameters from a previous connection string are re-used (Tom Lane) §This avoids cases where reconnection might fail due to omission of relevant parameters, such as non-default SSL or GSS options. Worse, the reconnection might succeed but not be encrypted as intended, or be vulnerable to man-in-the-middle attacks that the intended connection parameters would have prevented. This is largely the same problem as just cited for pg_dump et al, although psql's behavior is more complex since the user may intentionally override some connection parameters. (CVE-2020-25694)
Prevent psql's
\gsetcommand from modifying specially-treated variables (Noah Misch) §\gsetwithout a prefix would overwrite whatever variables the server told it to. Thus, a compromised server could set specially-treated variables such asPROMPT1, giving the ability to execute arbitrary shell code in the user's session.The PostgreSQL Project thanks Nick Cleaton for reporting this problem. (CVE-2020-25696)
Prevent possible data loss from concurrent truncations of SLRU logs (Noah Misch) § §
This rare problem would manifest in later “apparent wraparound” or “could not access status of transaction” errors.
Ensure that SLRU directories are properly fsync'd during checkpoints (Thomas Munro) §
This prevents possible data loss in a subsequent operating system crash.
Fix
ALTER ROLEfor users with theBYPASSRLSattribute (Tom Lane, Stephen Frost) §The
BYPASSRLSattribute is only allowed to be changed by superusers, but otherALTER ROLEoperations, such as password changes, should be allowed with only ordinary permission checks. The previous coding erroneously restricted all changes on such a role to superusers.Ensure that
ALTER TABLE ONLY ... ENABLE/DISABLE TRIGGERdoes not recurse to child tables (Álvaro Herrera) §Previously the
ONLYflag was ignored.Avoid unnecessary recursion to partitions in
ALTER TABLE SET NOT NULL, when the target column is already markedNOT NULL(Tom Lane) §This avoids a potential deadlock in parallel pg_restore.
Fix handling of expressions in
CREATE TABLE LIKEwith inheritance (Tom Lane) § §If a
CREATE TABLEcommand uses bothLIKEand traditional inheritance, column references inCHECKconstraints and expression indexes that came from aLIKEparent table tended to get mis-numbered, resulting in wrong answers and/or bizarre error messages. The same could happen inGENERATEDexpressions, in branches that have that feature.Disallow
DROP INDEX CONCURRENTLYon a partitioned table (Álvaro Herrera, Michael Paquier) §This case failed anyway, but with a confusing error message.
Allow
LOCK TABLEto succeed on a self-referential view (Tom Lane) §It previously threw an error complaining about infinite recursion, but there seems no need to disallow the case.
Retain statistics about an index across
REINDEX CONCURRENTLY(Michael Paquier, Fabrízio de Royes Mello) §Non-concurrent reindexing has always preserved such statistics.
Fix incorrect progress reporting from
REINDEX CONCURRENTLY(Matthias van de Meent, Michael Paquier) §Ensure that
GENERATEDcolumns are updated when the column(s) they depend on are updated via a rule or an updatable view (Tom Lane) §This fix also takes care of possible failure to fire a column-specific trigger in such cases.
Recheck default partition constraints while routing an inserted or updated tuple to the correct partition (Amit Langote, Álvaro Herrera) §
This fixes race conditions when partitions are added concurrently with the insertion.
Fix failures with collation-dependent partition bound expressions (Tom Lane) §
Support hashing of text arrays (Peter Eisentraut) §
Array hashing failed if the array element type is collatable. Notably, this prevented using hash partitioning with a text array column as partition key.
Fix off-by-one conversion of negative years to BC dates in
to_date()andto_timestamp()(Dar Alathar-Yemen, Tom Lane) §Also, arrange for the combination of a negative year and an explicit “BC” marker to cancel out and produce AD.
Ensure that standby servers will archive WAL timeline history files when
archive_modeis set toalways(Grigory Smolkin, Fujii Masao) §This oversight could lead to failure of subsequent PITR recovery attempts.
Fix “cache lookup failed for relation 0” failures in logical replication workers (Tom Lane) §
The real-world impact is small, since the failure is unlikely, and if it does happen the worker would just exit and be restarted.
Prevent logical replication workers from sending redundant ping requests (Tom Lane) §
During “smart” shutdown, don't terminate background processes until all client (foreground) sessions are done (Tom Lane) §
The previous behavior broke parallel query processing, since the postmaster would terminate parallel workers and refuse to launch any new ones. It also caused autovacuum to cease functioning, which could have dire long-term effects if the surviving client sessions make a lot of data changes.
Avoid recursive consumption of stack space while processing signals in the postmaster (Tom Lane) §
Heavy use of parallel processing has been observed to cause postmaster crashes due to too many concurrent signals requesting creation of a parallel worker process.
Avoid running atexit handlers when exiting due to SIGQUIT (Kyotaro Horiguchi, Tom Lane) § §
Most server processes followed this practice already, but the archiver process was overlooked. Backends that were still waiting for a client startup packet got it wrong, too.
Avoid misoptimization of subquery qualifications that reference apparently-constant grouping columns (Tom Lane) §
A “constant” subquery output column isn't really constant if it is a grouping column that appears in only some of the grouping sets.
Fix possible crash when considering partition-wise joins during GEQO planning (Tom Lane) §
Avoid failure when SQL function inlining changes the shape of a potentially-hashable subplan comparison expression (Tom Lane) §
While building or re-building an index, tolerate the appearance of new HOT chains due to concurrent updates (Anastasia Lubennikova, Álvaro Herrera) § §
This oversight could lead to “failed to find parent tuple for heap-only tuple” errors.
Fix failure of parallel B-tree index scans when the index condition is unsatisfiable (James Hunter) §
Ensure that data is detoasted before being inserted into a BRIN index (Tomas Vondra) §
Index entries are not supposed to contain out-of-line TOAST pointers, but BRIN didn't get that memo. This could lead to errors like “missing chunk number 0 for toast value NNN”. (If you are faced with such an error from an existing index,
REINDEXshould be enough to fix it.)Handle concurrent desummarization correctly during BRIN index scans (Alexander Lakhin, Álvaro Herrera) §
Previously, if a page range was desummarized at just the wrong time, an index scan might falsely raise an error indicating index corruption.
Fix rare “lost saved point in index” errors in scans of multicolumn GIN indexes (Tom Lane) §
Fix buffered GiST index builds to work when the index has included columns (Pavel Borisov) §
Fix unportable use of
getnameinfo()inpg_hba_file_rulesview (Tom Lane) §On FreeBSD 11, and possibly other platforms, the view's
addressandnetmaskcolumns were always null due to this error.Avoid crash if
debug_query_stringis NULL when starting a parallel worker (Noah Misch) §Fix use-after-free hazard when an event trigger monitors an
ALTER TABLEoperation (Jehan-Guillaume de Rorthais) §Avoid failures when a
BEFORE ROW UPDATEtrigger returns the “old” row of a table having dropped or “missing” columns (Amit Langote, Tom Lane) § §This method of suppressing an update could result in crashes, unexpected
CHECKconstraint failures, or incorrectRETURNINGoutput, because “missing” columns would read as NULLs for those purposes. (A column is “missing” for this purpose if it was added byALTER TABLE ADD COLUMNwith a non-NULL, but constant, default value.) Dropped columns could cause trouble as well.Fix incorrect error message about inconsistent moving-aggregate data types (Jeff Janes) §
Avoid lockup when a parallel worker reports a very long error message (Vignesh C) §
Avoid unnecessary failure when transferring very large payloads through shared memory queues (Markus Wanner) §
Fix incorrect handling of template function attributes in JIT code generation (Andres Freund) § §
This has been shown to cause crashes on
s390x, and very possibly there are other cases on other platforms.Fix relation cache memory leaks with RLS policies (Tom Lane) §
Fix edge-case memory leak in
index_get_partition()(Justin Pryzby) §Fix small memory leak when SIGHUP processing decides that a new GUC variable value cannot be applied without a restart (Tom Lane) §
Fix memory leaks in PL/pgsql's
CALLprocessing (Pavel Stehule, Tom Lane) §Make libpq support arbitrary-length lines in
.pgpassfiles (Tom Lane) § §This is mostly useful to allow using very long security tokens as passwords.
In libpq for Windows, call
WSAStartup()once per process andWSACleanup()not at all (Tom Lane, Alexander Lakhin) §Previously, libpq invoked
WSAStartup()at connection start andWSACleanup()at connection cleanup. However, it appears that callingWSACleanup()can interfere with other program operations; notably, we have observed rare failures to emit expected output to stdout. There appear to be no ill effects from omitting the call, so do that. (This also eliminates a performance issue from repeated DLL loads and unloads when a program performs a series of database connections.)Fix ecpg library's per-thread initialization logic for Windows (Tom Lane, Alexander Lakhin) §
Multi-threaded ecpg applications could suffer rare misbehavior due to incorrect locking.
On Windows, make psql read the output of a backtick command in text mode, not binary mode (Tom Lane) §
This ensures proper handling of newlines.
Ensure that pg_dump collects per-column information about extension configuration tables (Fabrízio de Royes Mello, Tom Lane) § §
Failure to do this led to crashes when specifying
--inserts, or underspecified (though usually correct)COPYcommands when usingCOPYto reload the tables' data.Ensure that parallel pg_restore processes foreign keys referencing partitioned tables in the correct order (Álvaro Herrera) §
Previously, it might try to restore a foreign key constraint before the required indexes were all in place, leading to an error.
Make pg_upgrade check for pre-existence of tablespace directories in the target cluster (Bruce Momjian) § §
Fix potential memory leak in
contrib/pgcrypto(Michael Paquier) §Add check for an unlikely failure case in
contrib/pgcrypto(Daniel Gustafsson) §Fix recently-added
timetztest case so it works when the USA is not observing daylight savings time (Tom Lane) §Update time zone data files to tzdata release 2020d for DST law changes in Fiji, Morocco, Palestine, the Canadian Yukon, Macquarie Island, and Casey Station (Antarctica); plus historical corrections for France, Hungary, Monaco, and Palestine. (Tom Lane) § §
Sync our copy of the timezone library with IANA tzcode release 2020d (Tom Lane) § §
This absorbs upstream's change of zic's default output option from “fat” to “slim”. That's just cosmetic for our purposes, as we continue to select the “fat” mode in pre-v13 branches. This change also ensures that
strftime()does not changeerrnounless it fails.