E.7. Выпуск 17#
E.7. Выпуск 17 #
Дата релиза: 2024-09-26
E.7.1. Обзор #
PostgreSQL 17 содержит много новых функций и улучшений, включая:
Новая система управления памятью для
VACUUM
, которая снижает потребление памяти и может улучшить общую производительность вакуумирования.Новые возможности SQL/JSON, включая конструкторы, функции идентичности и функцию
JSON_TABLE()
, которая преобразует данные JSON в табличное представление.Различные улучшения производительности запросов, включая последовательные чтения с использованием потокового ввода-вывода, пропускную способность записи при высоком уровне параллелизма и поиск по нескольким значениям в индексе btree.
Улучшения логической репликации, включая:
Управление отказом
pg_createsubscriber, утилита, с помощью которой создаются логические реплики из физических резервных копий
pg_upgrade теперь сохраняет слоты логической репликации на издателях и полное состояние подписки на подписчиках. Это позволит обновлениям до будущих основных версий продолжать логическую репликацию без необходимости копирования для повторной синхронизации.
Новая опция подключения на стороне клиента,
sslnegotiation=direct
, которая выполняет прямое TLS рукопожатие, чтобы избежать переговоров с обратной передачей.pg_basebackup теперь поддерживается инкрементное резервное копирование.
COPY
добавлена новая опция,ON_ERROR ignore
, которая позволяет операции копирования продолжаться в случае ошибки.
Вышеуказанные элементы и другие новые функции PostgreSQL 17 объяснены более подробно в разделах ниже.
E.7.2. Миграция на версию 17 #
Для тех, кто желает перенести данные с любой предыдущей версии, требуется выполнить дамп/восстановление с использованием pg_dumpall или использовать pg_upgrade или логическую репликацию. См. Раздел 18.6 для получения общей информации о миграции на новые основные версии.
Версия 17 содержит ряд изменений, которые могут повлиять на совместимость с предыдущими выпусками. Обратите внимание на следующие несовместимости:
Функции изменены для использования безопасного search_path во время операций обслуживания (Джефф Дэвис) § §
Это предотвращает выполнение операций обслуживания (
ANALYZE
,CLUSTER
,CREATE INDEX
,CREATE MATERIALIZED VIEW
,REFRESH MATERIALIZED VIEW
,REINDEX
, илиVACUUM
) от небезопасного доступа. Функции, используемые индексами выражений и материализованными представлениями, которые должны ссылаться на схемы, отличные от схемы по умолчанию, должны указывать путь поиска во время создания функции.Ограничено
ago
только появлением в конце вinterval
значениях (Joseph Koshakow) § §Также предотвращено многократное появление пустых единиц интервала.
Удалена серверная переменная old_snapshot_threshold (Томас Мунро) §
Эта переменная позволяла vacuum удалять строки, которые потенциально могли быть все еще видимыми для выполняющихся транзакций, вызывая ошибки "snapshot too old" позже при доступе. Эта функция может быть добавлена в PostgreSQL позже, если будет найдена улучшенная реализация.
Изменено
SET SESSION AUTHORIZATION
обработка статуса суперпользователя начального пользователя сессии (Joseph Koshakow) §Новое поведение основано на статусе суперпользователя пользователя сессии на момент выполнения команды
SET SESSION AUTHORIZATION
, а не на их статусе суперпользователя на момент подключения.Удалена функция, которая симулировала пользователей для каждой базы данных (Натан Боссарт) §
Функция,
db_user_namespace
, использовалась редко.Удалено расширение contrib adminpack (Даниэль Густафссон) §
Это использовалось теперь устаревшим pgAdmin III.
Удалено значение wal_sync_method
fsync_writethrough
на Windows (Thomas Munro) §Это значение было таким же, как
fsync
на Windows.Изменено обработку границ файлов двух функций имени файла WAL (Киотаро Хоригучи, Андрес Фройнд, Брюс Момиджан) §
Функции
pg_walfile_name()
иpg_walfile_name_offset()
использовались для отчета предыдущего номера сегмента LSN, когда LSN находился на границе сегмента файла; теперь возвращается текущий сегмент LSN.Удалена серверная переменная
trace_recovery_messages
, так как она больше не нужна (Bharath Rupireddy) §Удален столбец информационной схемы
element_types
.domain_default
(Петер Айзентраут) §Изменены метки вывода режима блокировки pgrowlocks (Брюс Момджиан) §
Удалены
buffers_backend
иbuffers_backend_fsync
изpg_stat_bgwriter
(Бхарат Рупиредди) §Эти поля считаются избыточными по отношению к аналогичным столбцам в
pg_stat_io
.Переименованы столбцы статистики времени чтения/записи блоков ввода-вывода pg_stat_statements (Назир Билал Явуз) §
Это переименовывает
blk_read_time
вshared_blk_read_time
, иblk_write_time
вshared_blk_write_time
.Изменены
pg_attribute
.attstattarget
иpg_statistic_ext
.stxstattarget
для представления целевого значения статистики по умолчанию какNULL
(Питер Айзентраут) § §Переименовано
pg_collation
.colliculocale
вcolllocale
иpg_database
.daticulocale
вdatlocale
(Джефф Дэвис) §Переименован
pg_stat_progress_vacuum
столбецmax_dead_tuples
вmax_dead_tuple_bytes
, переименованnum_dead_tuples
вnum_dead_item_ids
, и добавленdead_tuple_bytes
(Масахико Савада) § §Переименованы столбцы SLRU в системном представлении
pg_stat_slru
(Alvaro Herrera) §Названия столбцов, принимаемые
pg_stat_reset_slru()
, также были изменены.
E.7.3. Изменения #
Ниже приведен подробный отчет об изменениях между PostgreSQL 17 и предыдущим основным выпуском.
E.7.3.1. Сервер #
E.7.3.1.1. Оптимизатор #
Разрешено оптимизатору улучшать планы CTE, учитывая статистику и порядок сортировки столбцов, упомянутых в более ранних выходных строках (Jian Guo, Richard Guo, Tom Lane) § §
Улучшена оптимизация ограничений запроса
IS NOT NULL
иIS NULL
(Дэвид Роули, Ричард Гуо, Энди Фан) § §Удалены ограничения
IS NOT NULL
из запросов наNOT NULL
столбцы и устранены сканирования наNOT NULL
столбцы, если указаноIS NULL
.Разрешено обрезание разделов на булевых столбцах с условием
IS [NOT] UNKNOWN
(Дэвид Роули) §Улучшена оптимизация значений диапазона при использовании операторов содержимого <@ и @> (Ким Йохан Андерссон, Джиан Хе) §
Разрешено коррелированные подзапросы
IN
преобразовывать в соединения (Энди Фан, Том Лейн) §Улучшена оптимизация предложения
LIMIT
на секционированных таблицах, родительских таблицах наследования и запросахUNION ALL
(Энди Фан, Дэвид Роули) §Разрешено выполнение узлов запроса параллельно в большем количестве случаев (Tom Lane) §
Разрешено
GROUP BY
столбцам быть внутренне упорядоченными для соответствияORDER BY
(Андрей Лепихов, Теодор Сигаев) §Это может быть отключено с использованием серверной переменной enable_group_by_reordering.
Разрешено
UNION
(безALL
) использовать MergeAppend (Дэвид Роули) §Исправлены планы MergeAppend для более точного вычисления количества строк, которые необходимо отсортировать (Александр Кузьменков) §
Разрешено индексам GiST и SP-GiST быть частью инкрементных сортировок (Мирослав Бендик) §
Это особенно полезно для
ORDER BY
выражений, где первый столбец имеет индекс GiST и SP-GiST, а другие столбцы не имеют.Добавлены столбцы в
pg_stats
для отображения информации о гистограмме диапазонного типа (Егор Рогов, Сумьядип Чакраборти) §
E.7.3.1.2. Индексы #
Позволено btree индексам более эффективно находить набор значений, таких как те, которые предоставлены
IN
выражениями с использованием констант (Питер Геогеган, Маттиас ван де Меент) §Разрешено создание индексов BRIN с использованием параллельных рабочих процессов (Tomas Vondra, Matthias van de Meent) §
E.7.3.1.3. Общая производительность #
Позволено вакууму более эффективно удалять и замораживать кортежи (Мелани Плагеман, Хейки Линкангас) §
WAL трафик, вызванный вакуумом, также стал более компактным.
Позволено vacuum более эффективно хранить ссылки на кортежи (Masahiko Sawada, John Naylor) § § § §
Кроме того, вакуум больше не ограничивается молча одним гигабайтом памяти, когда maintenance_work_mem или autovacuum_work_mem выше.
Оптимизировано вакуумирование отношений без индексов (Мелани Плагеман) §
Увеличено значение по умолчанию vacuum_buffer_usage_limit до 2MB (Томас Манро) §
Улучшена производительность при проверке ролей с множеством членств (Натан Боссарт) §
Улучшена производительность сильно загруженных записей WAL (Бхарат Рупиредди) §
Улучшена производительность при передаче больших блоков данных клиенту (Мелих Мутлу) §
Разрешена группировка чтений файловой системы с помощью новой системной переменной io_combine_limit (Томас Мунро, Андрес Фройнд, Мелани Плэгеман, Назир Билал Явуз) § § §
E.7.3.1.4. Мониторинг #
Создано системное представление
pg_stat_checkpointer
(Бхарат Рупиредди, Антон А. Мельников, Александр Коротков) § § §Соответствующие столбцы были удалены из
pg_stat_bgwriter
и добавлены в этот новый системный вид.Улучшен контроль над сбросом статистики (Ацуши Торикоши, Бхарат Рупиредди) § § §
Разрешено
pg_stat_reset_shared()
(без аргументов) и pg_stat_reset_shared(NULL
) для сброса всех общих статистик. Разрешено pg_stat_reset_shared('slru') иpg_stat_reset_slru()
(без аргументов) для сброса статистики SLRU, что уже было возможно с помощью pg_stat_reset_slru(NULL).Добавлены сообщения журнала, связанные с восстановлением WAL из резервных копий (Андрес Фройнд) §
Добавлена строка журнала log_connections для
trust
соединений (Джейкоб Чемпион) §Добавлено сообщение журнала для отчета о приобретении и освобождении репликационных слотов walsender (Бхарат Рупиредди) §
Это было включено серверной переменной log_replication_commands.
Добавлено системное представление
pg_wait_events
, которое сообщает типы событий ожидания (Бертран Друво) §Это полезно для добавления описаний к событиям ожидания, о которых сообщается в
pg_stat_activity
.Добавлены события ожидания для задержек контрольных точек (Томас Мунро) §
Позволено vacuum сообщать о прогрессе обработки индекса (Сами Имсейх) §
Это отображается в системном представлении
pg_stat_progress_vacuum
в столбцахindexes_total
иindexes_processed
.
E.7.3.1.5. Привилегии #
Разрешено предоставление права на выполнение операций по обслуживанию (Натан Боссарт) §
Разрешение может быть предоставлено на основе каждой таблицы с использованием привилегии
MAINTAIN
и на основе каждой роли через предопределенную рольpg_maintain
. Разрешенные операции:VACUUM
,ANALYZE
,REINDEX
,REFRESH MATERIALIZED VIEW
,CLUSTER
иLOCK TABLE
.Разрешено ролям с
pg_monitor
членством выполнятьpg_current_logfile()
(Павло Голуб, Натан Боссарт) §
E.7.3.1.6. Конфигурация сервера #
Добавлена системная переменная allow_alter_system для запрета
ALTER SYSTEM
(Йелте Феннема-Нио, Габриэле Бартолини) §Разрешено
ALTER SYSTEM
устанавливать нераспознанные пользовательские серверные переменные (Том Лейн) §Это также возможно с помощью
GRANT ON PARAMETER
.Добавлена серверная переменная transaction_timeout для ограничения продолжительности транзакций (Андрей Бородин, Джапин Ли, Джунван Чжао, Александр Коротков) § § §
Добавлен встроенный независимый от платформы провайдер коллаций (Джефф Дэвис) § § § §
Это поддерживает
C
иC.UTF-8
сортировки.Добавлена серверная переменная huge_pages_status для отчета об использовании больших страниц Postgres (Джастин Призби) §
Это полезно, когда huge_pages установлено в
try
.Добавлена серверная переменная для отключения триггеров событий (Даниэль Густафссон) §
Настройка, event_triggers, позволяет временно отключать триггеры событий для отладки.
Разрешено настраивать размеры кеша SLRU (Андрей Бородин, Дилип Кумар, Альваро Эррера) §
Новые серверные переменные: commit_timestamp_buffers, multixact_member_buffers, multixact_offset_buffers, notify_buffers, serializable_buffers, subtransaction_buffers, и transaction_buffers. commit_timestamp_buffers, transaction_buffers, и subtransaction_buffers автоматически масштабируются с shared_buffers.
E.7.3.1.7. Потоковая репликация и восстановление #
Добавлена поддержка инкрементного резервного копирования файловой системы (Роберт Хаас, Якуб Вартак, Томаш Вондра) § §
Инкрементные резервные копии могут быть созданы с использованием pg_basebackup с новым параметром
--incremental
. Новое приложение pg_combinebackup позволяет манипулировать базовыми и инкрементными резервными копиями файловой системы.Разрешено создание файлов суммаризации WAL (Роберт Хаас, Натан Боссарт, Губерт Депеш Любачевски) § § § §
Эти файлы фиксируют номера блоков, которые были изменены в пределах диапазона LSN и полезны для инкрементных резервных копий файловой системы. Это контролируется серверными переменными summarize_wal и wal_summary_keep_time, и исследуется с помощью
pg_available_wal_summaries()
,pg_wal_summary_contents()
иpg_get_wal_summarizer_state()
.Системный идентификатор был добавлен в файлы резервного копирования файловой системы (Amul Sul) §
Это помогает обнаружить недопустимое использование WAL.
Разрешено значение строки подключения
dbname
быть записанным, когда pg_basebackup записывает информацию о подключении вpostgresql.auto.conf
(Vignesh C, Hayato Kuroda) §Добавлен столбец
pg_replication_slots
.invalidation_reason
для отчета о причине недействительных слотов (Швета Малик, Бхарат Рупиредди) § §Добавлен столбец
pg_replication_slots
.inactive_since
для отчета о продолжительности неактивности слота (Бхарат Рупиредди) § § §Добавлена функция
pg_sync_replication_slots()
для синхронизации слотов логической репликации (Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut) § §Добавлено свойство
failover
в протокол репликации (Hou Zhijie, Shveta Malik) §
E.7.3.1.8. Логическая репликация #
Добавлено приложение pg_createsubscriber для создания логической реплики из физического резервного сервера (Эйлер Тавейра) §
Были pg_upgrade мигрированы действительные логические слоты и подписки (Хаято Курода, Хоу Чжицзе, Вигнеш С, Жюльен Роход, Шлок Кьял) § §
Это позволяет логической репликации быстро продолжаться после обновления. Это работает только для старых кластеров PostgreSQL версии 17 или более поздней.
Включено переключение на резервный сервер для логических слотов (Hou Zhijie, Shveta Malik, Ajin Cherian) §
Это контролируется необязательным пятым аргументом для
pg_create_logical_replication_slot()
.Добавлена серверная переменная sync_replication_slots для включения синхронизации логического слота при отказе (Швета Малик, Хоу Чжицзе, Питер Смит) § §
Добавлено управление отказоустойчивостью логической репликации в
CREATE/ALTER SUBSCRIPTION
(Швета Малик, Хоу Чжицзе, Аджин Чериан) § §Разрешено использование хеш-индексов для применения изменений логической репликации на подписчике (Хаято Курода) §
Ранее для этой цели могли быть использованы только btree индексы.
Улучшена производительность логического декодирования в случаях, когда имеется много подтранзакций (Масахико Савада) §
Перезапуск рабочих процессов применения изменений, если привилегии суперпользователя владельца подписки были отозваны (Виньеш С) §
Это заставило повторно пройти аутентификацию.
Добавлена опция
flush
вpg_logical_emit_message()
(Майкл Пакье) §Это делает сообщение долговечным.
Разрешено указание физических резервных копий, которые должны быть синхронизированы перед тем, как они станут видимыми для подписчиков (Hou Zhijie, Shveta Malik) § §
Новая серверная переменная — synchronized_standby_slots.
Добавлен столбец типа рабочего процесса в
pg_stat_subscription
(Питер Смит) §
E.7.3.2. Утилиты #
Добавлена новая опция
COPY
ON_ERROR ignore
для игнорирования строк с ошибками (Дамир Белялов, Ацуши Торикоши, Алекс Шульгин, Джиан Хе, Юго Нагата) § § § §Поведение по умолчанию —
ON_ERROR stop
.Добавлена новая опция
COPY
LOG_VERBOSITY
, которая сообщает о строках ошибок, игнорируемыхCOPY FROM
(Бхарат Рупиредди) §Разрешено
COPY FROM
сообщать количество пропущенных строк во время обработки (Ацуши Торикоши) §Это отображается в системном представлении в столбце
pg_stat_progress_copy
.tuples_skipped
.В
COPY FROM
разрешено легкое указание, что все столбцы должны быть принудительно null или not null (Zhang Mingli) §Разрешено разделённым таблицам иметь столбцы идентичности (Ashutosh Bapat) §
Разрешены исключающие ограничения на секционированных таблицах (Пол А. Юнгвирт) §
Пока ограничения исключения сравнивают столбцы ключа раздела на равенство, другие столбцы могут использовать сравнения, специфичные для ограничения исключения.
Добавлен более понятный метод
ALTER TABLE
для установки столбца на целевое значение статистики по умолчанию (Петер Айзентраут) §Новый синтаксис:
ALTER TABLE ... SET STATISTICS DEFAULT
; использованиеSET STATISTICS -1
по-прежнему поддерживается.Разрешено
ALTER TABLE
изменять выражение генерации столбца (Amul Sul) §Синтаксис:
ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION
.Разрешено указание методов доступа к таблицам для секционированных таблиц (Джастин Призби, Сумьядип Чакраборти, Майкл Пакье) § §
Добавлена настройка
DEFAULT
дляALTER TABLE .. SET ACCESS METHOD
(Майкл Пакье) §Добавлена поддержка триггеров событий, которые срабатывают при подключении (Константин Книжник, Михаил Грибков) §
Добавлена поддержка триггеров событий для
REINDEX
(Гаррет Торнбург, Джиан Хе) §Разрешен синтаксис с круглой скобкой для
CLUSTER
опций, если имя таблицы не указано (Натан Боссарт) §
Позволено
EXPLAIN
сообщать об использовании памяти оптимизатором (Ashutosh Bapat) §Опция называется
MEMORY
.Добавлена опция
EXPLAIN
SERIALIZE
для отчета о стоимости преобразования данных для передачи по сети (Степан Рутц, Маттиас ван де Меент) §Добавлена локальная статистика времени чтения/записи блоков ввода-вывода в вывод
EXPLAIN
сBUFFERS
(Назир Билал Явуз) §Улучшено отображение узлов SubPlan и выходных параметров в
EXPLAIN
(Том Лейн, Дин Рашид) §Добавлены детали JIT
deform_counter
вEXPLAIN
(Дмитрий Долгов) §
E.7.3.3. Типы данных #
Разрешено типу данных
interval
поддерживать значения+/-infinity
(Джозеф Кошаков, Джиан Хе, Ашутош Бапат) §Разрешено использование
ENUM
, добавленного черезALTER TYPE
, если тип был создан в той же транзакции (Tom Lane) §Это было ранее запрещено.
Разрешено
MERGE
изменять обновляемые представления (Дин Рашид) §Добавлено
WHEN NOT MATCHED BY SOURCE
вMERGE
(Дин Рашид) §WHEN NOT MATCHED
для строк цели уже поддерживалось.Разрешено
MERGE
использоватьRETURNING
конструкцию (Дин Рашид) §Новая функция
RETURNING
merge_action()
сообщает о DML, который сгенерировал строку.
E.7.3.5. Функции #
Добавлена функция
JSON_TABLE()
для преобразования данныхJSON
в табличное представление (Никита Глухов, Теодор Сигаев, Олег Бартунов, Александр Коротков, Эндрю Данстан, Амит Ланготе, Джиан Хе) § §Эта функция может быть использована в
FROM
частиSELECT
запросов в качестве источника кортежей.Добавлены функции-конструкторы SQL/JSON
JSON()
,JSON_SCALAR()
иJSON_SERIALIZE()
(Никита Глухов, Теодор Сигаев, Олег Бартунов, Александр Коротков, Эндрю Данстан, Амит Ланготе) §Добавлены функции запроса SQL/JSON
JSON_EXISTS()
,JSON_QUERY()
иJSON_VALUE()
(Никита Глухов, Теодор Сигаев, Олег Бартунов, Александр Коротков, Эндрю Данстан, Амит Ланготе, Петер Айзенштраут, Джиан Хе) § § § § §Добавлены методы jsonpath для преобразования значений
JSON
в другие типы данныхJSON
(Дживан Чалке) §Методы jsonpath:
.bigint()
,.boolean()
,.date()
,.decimal([precision [, scale]])
,.integer()
,.number()
,.string()
,.time()
,.time_tz()
,.timestamp()
, и.timestamp_tz()
.Добавлены
to_timestamp()
спецификаторы формата часового пояса (Том Лейн) §TZ
принимает аббревиатуры часовых поясов или числовые смещения, в то время какOF
принимает только числовые смещения.Разрешено указывать часовой пояс сеанса с помощью
AT LOCAL
(Вик Фиринг) §Это полезно при преобразовании, добавлении и удалении часовых поясов из значений временных меток, а не при указании буквального часового пояса сеанса.
Добавлены функции
uuid_extract_timestamp()
иuuid_extract_version()
для возврата информации UUID (Андрей Бородин) §Добавлены функции для генерации случайных чисел в указанном диапазоне (Дин Рашид) §
Функции
random(min, max)
принимают значения типаinteger
,bigint
иnumeric
.Добавлены функции для преобразования целых чисел в двоичные и восьмеричные строки (Эрик Радман, Натан Боссарт) §
Функции
to_bin()
иto_oct()
.Добавлены информационные функции Unicode (Джефф Дэвис) §
Функция
unicode_version()
возвращает версию Unicode,icu_unicode_version()
возвращает версию ICU, аunicode_assigned()
возвращает, если символам присвоены кодовые точки Unicode.Добавлена функция
xmltext()
для преобразования текста в один текстовый узелXML
(Джим Джонс) §Добавлена функция
to_regtypemod()
для возврата модификатора типа спецификации типа (Дэвид Уилер, Эрик Винхольд) §Добавлена функция
pg_basetype()
для возврата базового типа домена (Стив Чавес) §Добавлена функция
pg_column_toast_chunk_id()
для возврата идентификатора TOAST значения (Юго Нагата) §Это возвращает
NULL
, если значение не было сохранено в TOAST.
Добавлена функция libpq для изменения паролей ролей (Джо Конвей) §
Новая функция,
PQchangePassword()
, хеширует новый пароль перед отправкой на сервер.Добавлены функции libpq для закрытия порталов и подготовленных операторов (Jelte Fennema-Nio) §
Функции
PQclosePrepared()
,PQclosePortal()
,PQsendClosePrepared()
, иPQsendClosePortal()
.Добавлен API libpq, который позволяет выполнять блокирующие и неблокирующие запросы на отмену, с шифрованием, если оно уже используется (Jelte Fennema-Nio) §
Ранее поддерживались только блокирующие, незашифрованные запросы на отмену.
Добавлена функция libpq
PQsocketPoll()
для возможности опроса сетевых сокетов (Тристан Партин, Том Лейн) § §Добавлена функция libpq
PQsendPipelineSync()
для отправки точки синхронизации конвейера (Антон Кирилов) §Это похоже на
PQpipelineSync()
, но не отправляется на сервер, если не достигнут пороговый размер выходного буфера.Добавлена функция libpq
PQsetChunkedRowsMode()
для получения результатов частями (Даниэль Вэрите) §Разрешены соединения TLS без необходимости сетевой переговорной поездки (Грег Старк, Хейки Линнакангас, Петер Айзентраут, Майкл Пакье, Даниэль Густафссон) § § § § § § § §
Это было включено с помощью клиентской опции
sslnegotiation=direct
, требовало ALPN и работало только на серверах PostgreSQL версии 17 и выше.
Улучшено отображение psql значений по умолчанию и пустых привилегий (Эрик Винхольд, Лауренц Альбе) §
Команда
\dp
теперь отображает(none)
для пустых привилегий; по умолчанию все еще отображается как пусто.Командам с обратной косой чертой было предоставлено уважение к
\pset null
(Эрик Винхольд, Лауренц Альбе) §Ранее
\pset null
игнорировалось.Разрешено psql
\watch
останавливаться после минимального количества возвращенных строк (Грег Сабино Муллейн) §Параметр
min_rows
.Разрешены попытки подключения psql быть отмененными с помощью control-C (Тристан Партин) §
Разрешено psql учитывать
FETCH_COUNT
для запросов, не являющихсяSELECT
(Даниэль Вэрите) §Улучшено автодополнение в psql (Дагфинн Илмари Маннсåкер, Жиль Дарольд, Кристоф Хайсс, Стив Чавес, Вигнеш С, Павел Борисов, Джиан Хе) § § § § § § § §
E.7.3.9. Приложения сервера #
Добавлено приложение pg_walsummary для выгрузки файлов сводки WAL (Роберт Хаас) §
Разрешено pg_dump восстанавливать большие объекты пакетами (Tom Lane) §
Это позволяет восстановить многие большие объекты, чтобы избежать ограничений транзакции и чтобы они были восстановлены параллельно.
Добавлена опция pg_dump
--exclude-extension
(Айюш Ватса) §Разрешено pg_dump, pg_dumpall, и pg_restore указывать включаемые/исключаемые объекты в файле (Павел Стехуле, Даниэль Густафссон) §
Опция называется
--filter
.Добавлен параметр
--sync-method
в несколько клиентских приложений (Джастин Призби, Натан Боссарт) §Приложения initdb, pg_basebackup, pg_checksums, pg_dump, pg_rewind, и pg_upgrade.
Добавлена pg_restore опция
--transaction-size
для разрешения восстановления объектов в пакетах транзакций (Tom Lane) §Это позволяет получить преимущества производительности пакетной обработки транзакций без проблем чрезмерно больших блоков транзакций.
Изменен параметр режима отладки pgbench с
-d
на--debug
(Greg Sabino Mullane) §Опция
-d
теперь используется для имени базы данных, и новая опция--dbname
также может быть использована.Добавлена опция pgbench
--exit-on-abort
для выхода после любого прерывания клиента (Юго Нагата) §Добавлена команда pgbench
\syncpipeline
для отправки синхронизирующих сообщений (Anthonin Bonnefoy) §Разрешено pg_archivecleanup удалять файлы истории резервных копий (Ацуши Торикоши) §
Опция
--clean-backup-history
.Добавлены некоторые длинные опции в pg_archivecleanup (Ацуши Торикоши) §
Длинные опции:
--debug
,--dry-run
и--strip-extension
.Разрешено pg_basebackup и pg_receivewal использовать dbname в их спецификации подключения (Jelte Fennema-Nio) §
Это полезно для пулеров подключений, которые чувствительны к имени базы данных.
Добавлена pg_upgrade опция
--copy-file-range
(Томас Мунро) §Это поддерживается на Linux и FreeBSD.
Разрешено reindexdb
--index
обрабатывать индексы из разных таблиц параллельно (Максим Орлов, Светлана Деревянко, Александр Коротков) §Разрешено reindexdb, vacuumdb и clusterdb обрабатывать объекты во всех базах данных, соответствующих шаблону (Натан Боссарт) § § §
Новая опция
--all
контролирует это поведение.
E.7.3.10. Исходный код #
Удалена поддержка OpenSSL 1.0.1 (Майкл Пакье) §
Разрешено прохождение тестов в режиме OpenSSL FIPS (Петер Айзентраут) § §
Использованы инструкции CPU AVX-512 для подсчета битов (Пол Амонсон, Натан Боссарт, Антс Аасма) § §
Требуется LLVM версии 10 или более поздней (Томас Мунро) §
Использованы родные инструкции CRC на 64-битных LoongArch процессорах (Сюдонг Ян) §
Удалена поддержка AIX (Хейкки Линкангас) §
Удалена Microsoft Visual Studio-специфическая опция сборки PostgreSQL (Майкл Пакье) §
Meson теперь является единственным доступным методом для сборок Visual Studio.
Опция конфигурации
--disable-thread-safety
была удалена (Томас Мунро, Хейкки Линкангас) § §Теперь предполагается, что все поддерживаемые платформы имеют достаточную поддержку потоков.
Опция configure
--with-CC
удалена (Хейкки Линкангас) §Установка переменной окружения
CC
теперь является единственным поддерживаемым методом для указания компилятора.Функции получения пользовательских типов данных больше не будут получать свои данные с завершающим нулем (Дэвид Роули) §
Добавлен инкрементный
JSON
парсер для использования с огромнымиJSON
документами (Эндрю Данстан) §Преобразован файл верхнего уровня
README
в Markdown (Натан Боссарт) §Удалён более не нужный файл верхнего уровня
INSTALL
(Tom Lane) §Удалена опция make
distprep
(Петер Айзентраут) §Добавлена поддержка make для общих библиотек Android (Петер Айзентраут) §
Добавлена поддержка серверной части для точек внедрения (Майкл Пакье) § § § §
Это используется для отладки сервера, и они должны быть включены во время компиляции сервера.
Добавлен реестр динамической общей памяти (Натан Боссарт) §
Это позволяет разделяемым библиотекам, которые не были инициализированы при запуске, координировать доступ к динамической разделяемой памяти.
Исправлено
emit_log_hook
для использования того же значения времени, что и другие записи журнала для одного и того же запроса (Камбам Винай, Майкл Пакье) §Улучшена документация по использованию
jsonpath
для проверки предикатов (Дэвид Уилер) §
E.7.3.11. Дополнительные модули #
Разрешены соединения с неквалифицированными соединениями, которые были переданы на удаленные серверы и пользовательские сканирования (Ричард Гуо, Эцуро Фуджита) §
Иностранные обертки данных и пользовательские сканирования должны быть изменены для обработки этих случаев.
Разрешено выполнение
EXISTS
иIN
подзапросов на удалённых серверах postgres_fdw (Александр Пыхалов) §Увеличена стоимость кортежа по умолчанию для обертки данных из внешних источников (Дэвид Роули, Умаир Шахид) § §
Это значение используется оптимизатором.
Разрешены операции базы данных dblink для прерывания (Ноа Миш) §
Разрешено создание хеш-индексов на ltree столбцах (Томми Павличек) §
Это также позволяет хеш-соединение и хеш-агрегацию на ltree столбцах.
Разрешено unaccent содержать правила перевода символов с пробелами и кавычками (Майкл Пакье) §
Синтаксис для файла
unaccent.rules
был изменён.Разрешено amcheck проверять нарушения уникальных ограничений с использованием новой опции
--checkunique
(Анастасия Лубенникова, Павел Борисов, Максим Орлов) §Разрешено тестам citext проходить в режиме OpenSSL FIPS (Питер Айзентраут) §
Разрешено тестам pgcrypto проходить в режиме OpenSSL FIPS (Петер Айзентраут) §
Удалены некоторые неиспользуемые SPI макросы (Бхарат Рупиредди) §
Разрешено
ALTER OPERATOR
устанавливать больше атрибутов оптимизации (Tommy Pavlicek) §Это полезно для расширений.
Пользовательские события ожидания были добавлены в postgres_fdw и dblink.
Добавлена pg_buffercache функция
pg_buffercache_evict()
для разрешения высвобождения разделяемого буфера (Палак Чатурведи, Томас Мунро) §Это полезно для тестирования.
E.7.3.11.1. pg_stat_statements #
Параметры
CALL
в pg_stat_statements были заменены на заполнители (Сами Имсейх) §Заменены имена точек сохранения, хранящиеся в
pg_stat_statements
, на заполнители (Грег Сабино Муллейн) §Это значительно уменьшило количество записей, необходимых для фиксации команд
SAVEPOINT
,RELEASE SAVEPOINT
иROLLBACK TO SAVEPOINT
.Заменены GID двухфазного коммита, хранящиеся в
pg_stat_statements
, на заполнители (Майкл Пакье) §Это значительно уменьшило количество записей, необходимых для фиксации
PREPARE TRANSACTION
,COMMIT PREPARED
иROLLBACK PREPARED
.Отслеживание
DEALLOCATE
вpg_stat_statements
(Дагфинн Илмари Маннсåкер, Майкл Пакье) §DEALLOCATE
имена хранятся вpg_stat_statements
в качестве заполнителей.Добавлены столбцы статистики времени чтения/записи локальных блоков ввода-вывода в
pg_stat_statements
(Назир Билал Явуз) § §Новые столбцы:
local_blk_read_time
иlocal_blk_write_time
.Добавлены детали JIT deform_counter в
pg_stat_statements
(Дмитрий Долгов) §Добавлен необязательный четвертый аргумент (
minmax_only
) вpg_stat_statements_reset()
для возможности сброса только минимальных/максимальных статистик (Андрей Зубков) §Этот аргумент по умолчанию установлен в
false
.Добавлены
pg_stat_statements
столбцыstats_since
иminmax_stats_since
для отслеживания времени создания записи и времени последнего сброса min/max (Андрей Зубков) §
E.7.4. Благодарности #
Следующие лица (в алфавитном порядке) внесли свой вклад в этот релиз в качестве авторов патчей, разработчиков, рецензентов, тестировщиков или сообщили об обнаруженных проблемах.
Abhijit Menon-Sen |
Аднан Даутович |
Айдар Имамов |
Ajin Cherian |
Акаш Шанкаран |
Акшат Джаймини |
Алаа Аттья |
Aleksander Alekseev |
Алексей Орлов |
Алена Рыбакина |
Алекс Хсиех |
Алекс Малек |
Алекс Шульгин |
Алекс Работа |
Alexander Korotkov |
Александр Кожемякин |
Александр Кузьменков |
Alexander Lakhin |
Alexander Pyhalov |
Алексей Палаженко |
Альфонс Кемпер |
Álvaro Herrera |
Амадео Гальярдо |
Amit Kapila |
Amit Langote |
Amul Sul |
Anastasia Lubennikova |
Анатолий Зарецкий |
Андреас Карлссон |
Андреас Ульбрих |
Андрей Лепихов |
Andrei Zubkov |
Andres Freund |
Andrew Alsup |
Эндрю Аткинсон |
Andrew Bille |
Andrew Dunstan |
Эндрю Кейн |
Andrey Borodin |
Андрей Рачицкий |
Andrey Sokolov |
Andy Fan |
Anthonin Bonnefoy |
Энтони Хсу |
Антон Кирилов |
Anton Melnikov |
Anton Voloshin |
Antonin Houska) |
Антс Аасма |
Антти Лямпинен |
Aramaki Zyake |
Артем Анисимов |
Артур Закиров |
Ashutosh Bapat |
Ashutosh Sharma |
Atsushi Torikoshi |
Аттила Гуляш |
Айюш Тивари |
Айюш Ватса |
Бартос Хроль |
Бенуа Райдер |
Бернд Хельмле |
Bertrand Drouvot |
Bharath Rupireddy |
Бо Андерсон |
Boshomi Phenix |
Боуэн Ши |
Бою Ян |
Bruce Momjian |
Кэмерон Вогт |
Cary Huang |
Седрик Вильмен |
Чанхон Фэй |
Шанталь Келлер |
Chapman Flack |
Чэнси Сун |
Крис Трэверс |
Кристиан Маурер |
Кристиан Шторк |
Christoph Berg |
Christoph Heiss |
Кристоф Куртуа |
Кристофер Клайн |
Claudio Freire |
Колин Кейн |
Corey Huinker |
Курт Коловсон |
Dag Lem |
Dagfinn Ilmari Mannsåker |
Дамир Белялов |
Даниэль Фредуй |
Daniel Gustafsson |
Даниэль Шелепанов |
Daniel Vérité |
Daniel Westermann |
Даррен Раш |
Dave Cramer |
Dave Page |
David Christensen |
Дэвид Кук |
David G. Johnston |
Дэвид Гейер |
Дэвид Хиллман |
Дэвид Перес |
David Rowley |
David Steele |
Дэвид Уилер |
David Zhang |
Dean Rasheed |
Денис Ерохин |
Денис Лаксальд |
Деврим Гюндюз |
Dilip Kumar |
Димитриос Апостолу |
Dmitry Dolgov |
Dmitry Koval |
Дмитрий Васильев |
Dominique Devienne |
Донг Ук Ли |
Дунхан Лин |
Дунмин Лю |
Дрю Каллахан |
Дрю Кимбалл |
Дзмитрий Ячник |
Egor Chindyaskin |
Egor Rogov |
Ekaterina Kiryanova |
Elena Indrupskaya |
Элизабет Кристенсен |
Emre Hasegeli |
Эрик Сир |
Eric Mutta |
Эрик Радман |
Эрик Ридж |
Erik Rijkers |
Эрик Винхольд |
Erki Eessaar |
Итан Мерц |
Etsuro Fujita |
Евгений Коньков |
Euler Taveira |
Эван Макбет |
Евгений Морозов |
Fabien Coelho |
Fabrízio de Royes Mello |
Фариас де Оливейра |
Feliphe Pozzer |
Огненный Изумруд |
Флавьен Гедез |
Floris Van Nee |
Франческо Деграсси |
Франк Штрайциг |
Габриэле Бартолини |
Гаррет Торнбург |
Гэвин Флауэр |
Гэвин Панелла |
Gilles Darold |
Жиль Парк |
Грант Грычан |
Greg Nancarrow |
Greg Sabino Mullane |
Greg Stark |
Gurjeet Singh |
Haiying Tang |
Хадзиме Мацунага |
Хал Такахара |
Ханефи Ональди |
Hannu Krosing |
Hans Buschmann |
Хао Ву |
Хао Чжан |
Hayato Kuroda |
Heikki Linnakangas |
Хемант Сандрана |
Himanshu Upadhyaya |
Хиронобу Сузуки |
Хольгер Рейзе |
Хунсю Ма |
Хонгю Сун |
Хорст Рейтерер |
Hubert Lubaczewski |
Хайвел Карвер |
Ian Barwick |
Иан Ильясов |
Илья Ненашев |
Исаак Морланд |
Израиль Барт Рубио |
Иван Картышов |
Иван Коломбет |
Иван Лазарев |
Иван Панченко |
Иван Трофимов |
Jacob Champion |
Джейкоб Шпайдель |
Жак Комбринк |
Jaime Casanova |
Jakub Wartak |
James Coleman |
Джеймс Панг |
Яни Рахкола |
Japin Li |
Дживан Чалке |
Jeff Davis |
Jeff Janes |
Йелте Феннема-Нио |
Jeremy Schneider |
Jian Guo |
Jian He |
Джим Джонс |
Джим Кинер |
Джим Нэсби |
Jingtang Zhang |
Цзинсянь Ли |
Цзинчжоу Фу |
Джо Конвей |
Joel Jacobson |
Джон Экинс |
Джон Хсу |
Джон Моррис |
John Naylor |
Джон Рассел |
Jonathan Katz |
Jordi Gutiérrez |
Joseph Koshakow |
Джош Купершмидт |
Джошуа Д. Дрейк |
Джошуа Уйехара |
Юбилей Янг |
Julien Rouhaud |
Junwang Zhao |
Justin Pryzby |
Кайдо Вайкла |
Камбам Винай |
Карен Таларико |
Карина Лицкевич |
Карл О. Пинк |
Кашиф Зишан |
Ким Йохан Андерссон |
Кирилл Решке |
Кирк Паркер |
Кирк Волак |
Кисун Квон |
Коэн Де Гроот |
Кохей КайГай |
Kong Man |
Konstantin Knizhnik |
Кохэй Суту |
Кришнакумар Р |
Kuntal Ghosh |
Курт Рёкс |
Kyotaro Horiguchi |
Лан Лю |
Lars Kanis |
Laurenz Albe |
Лаури Лаанметс |
Legs Mansion |
Lukas Fittl |
Magnus Hagander |
Махендракар Шринивасарао |
Майкель Грасси |
Маноc Эммануилидис |
Марсель Хофштеттер |
Маркос Пегораро |
Мариан Круцина |
Marina Polyakova |
Mark Dilger |
Марк Гертин |
Марк Слоан |
Markus Winand |
Марлене Рейтерер |
Martín Marqués |
Мартин Нэш |
Мартин Шлоссарек |
Masahiko Sawada |
Masahiro Ikeda |
Масаки Кувамура |
Masao Fujii |
Мейсон Шарп |
Матеус Алкантара |
Матс Киндал |
Маттиас Кун |
Matthias van de Meent |
Максим Богу́к |
Maxim Orlov |
Maxim Yablokov |
Максим Бойер |
Melanie Plageman |
Мелих Мутлу |
Мерлин Монкьюр |
Майка Гейт |
Michael Banck |
Михаил Бондаренко |
Michael Paquier |
Майкл Ван |
Михаил Жилин |
Михаил Николаев |
Михал Бартак |
Михал Клечек |
Михаил Грибков |
Минли Чжан |
Мирослав Бендик |
Мицуру Хината |
Моаз Ассали |
Мураликришна Бандара |
Nathan Bossart |
Nazir Bilal Yavuz |
Нил Тиффин |
Ngigi Waithaka |
Nikhil Benesch |
Нихил Радж |
Nikita Glukhov |
Никита Калинин |
Никита Малахов |
Nikolay Samokhvalov |
Nikolay Shaplov |
Ниша Мунд |
Нишант Шарма |
Nitin Jadhav |
Noah Misch |
Noriyoshi Shinoda |
Оле Педер Брандцэг |
Олег Бартунов |
Олег Сибиряков |
Олег Целебровский |
Олег Самойлов |
Onder Kalaci |
Ондржей Навратил |
Пабло Харо |
Палак Чатурведи |
Пантелис Теодосиу |
Пол Амонсон |
Paul Jungwirth |
Pavel Borisov |
Павел Кулаков |
Pavel Luzanov |
Pavel Stehule |
Павло Голуб |
Педро Галлегос |
Пит Сторер |
Peter Eisentraut |
Peter Geoghegan |
Peter Smith |
Филип Уорнер |
Филипп Сальвисберг |
Пьер Дюкроке |
Пьер Фортен |
Пшемыслав Штох |
Quynh Tran |
Рагхувир Девулапалли |
Ranier Vilela |
Reid Thompson |
Риан МакГуайр |
Richard Guo |
Ричард Весели |
Ридван Коркмаз |
Robert Haas |
Роберт Скотт |
Роберт Трит |
Roberto Mello |
Robins Tharakan |
Роман Лозко |
Ронан Дунклау |
Rui Zhao |
Ryo Matsumura |
Рёога Ёсида |
Самир Кумар |
Sami Imseih |
Самуэль Дюссо |
Санджай Минни |
Сатору Коидзуми |
Себастьян Скалецкий |
Сергей Глухов |
Sergei Kornilov |
Сергей Прохоренко |
Сергей Саргсян |
Sergey Shinderuk |
Шаочжун Ши |
Шон Томас |
Shay Rojansky |
Шихао Чжун |
Shinya Kato |
Шлок Кьял |
Shruthi Gowda |
Шубхам Ханна |
Шулин Чжоу |
Швета Малик |
Simon Riggs |
Soumyadeep Chakraborty |
Сраван Велагандула |
Stan Hu |
Степан Неретин |
Степан Рутц |
Стефан Шильдкнехт |
Стефан Ташуар |
Stephen Frost |
Стив Аткинс |
Steve Chavez |
Suraj Khamkar |
Suraj Kharage |
Сванте Рихтер |
Светлана Деревянко |
Сильвен Франдаз |
Takayuki Tsunakawa |
Tatsuo Ishii |
Tatsuro Yamada |
Тендер Ван |
Федор Сигаев |
Thom Brown |
Томас Манро |
Тим Кэри-Смит |
Тим Нидхэм |
Тим Палмер |
Тобиас Буссманн |
Tom Lane |
Tomas Vondra |
Томми Павличек |
Tomonari Katsumata |
Тристан Партин |
Тристан Рааб |
Тунг Нгуен |
Умаир Шахид |
Уве Биндер |
Валери Вулард |
Валлимахараджан Г |
Вася Бойцов |
Victor Wagner |
Victor Yegorov |
Виктория Шепард |
Видуши Гупта |
Vignesh C |
Vik Fearing |
Виктор Лейс |
Vinayak Pokale |
Vitaly Burovoy |
Войтех Бенеш |
Wei Sun |
Wei Wang |
Вэньцзян Чжан |
Will Mortensen |
Вилли Манн |
Wolfgang Walther |
Сян Лиу |
Сяоран Ван |
Син Го |
Сюйдун Ян |
Ягор Юзефович |
Яцзюнь Ху |
Ярослав Сабуров |
Йонг Ли |
Yongtao Huang |
Yugo Nagata |
Юхан Цю |
Юки Сейно |
Yura Sokolov |
Юрий Рашковский |
Юуки Фудзии |
Юя Ватари |
Ив Колин |
Zhihong Yu |
Чжицзе Хоу |
Цзунлян Цюань |
Зубейр Эрыилмаз |
Цзумин Цзян |