E.22. Выпуск 16#
E.22. Выпуск 16 #
Дата релиза: 2023-09-14
E.22.1. Обзор #
PostgreSQL 16 содержит много новых функций и улучшений, включая:
Разрешена параллелизация
FULLи внутреннего правогоOUTERхеш-соединенияРазрешена логическая репликация с резервных серверов
Разрешено подписчикам логической репликации применять большие транзакции параллельно
Разрешено мониторинг статистики I/O с использованием нового представления
pg_stat_ioДобавлены SQL/JSON конструкторы и функции идентичности
Улучшена производительность замораживания vacuum
Добавлена поддержка сопоставления регулярных выражений для имен пользователей и баз данных в
pg_hba.conf, и имен пользователей вpg_ident.conf
Вышеперечисленные элементы и другие новые функции PostgreSQL 16 объяснены более подробно в разделах ниже.
E.22.2. Миграция на версию 16 #
Для тех, кто желает перенести данные с любой предыдущей версии, требуется выполнить дамп/восстановление с использованием pg_dumpall или использовать pg_upgrade или логическую репликацию. См. Раздел 17.6 для получения общей информации о миграции на новые основные версии.
Версия 16 содержит ряд изменений, которые могут повлиять на совместимость с предыдущими выпусками. Следующие несовместимости должны быть учтены:
Изменены правила присвоения для PL/pgSQL связанных переменных курсора (Tom Lane) §
Ранее строковое значение таких переменных устанавливалось в соответствии с именем переменной при присвоении курсора; теперь оно будет присваиваться во время
OPEN, и не будет совпадать с именем переменной. Чтобы восстановить прежнее поведение, присвойте желаемое имя портала переменной курсора передOPEN.Запрещены индексы
NULLS NOT DISTINCTдля первичных ключей (Даниэль Густафссон) §Изменено
REINDEX DATABASEи reindexdb, чтобы не обрабатывать индексы в системных каталогах (Саймон Риггс) § §Обработка таких индексов все еще возможна с использованием
REINDEX SYSTEMиreindexdb --system.Ужесточены ограничения выражений
GENERATEDна унаследованных и секционированных таблицах (Амит Ланготе, Том Лейн) §Столбцы родительских/секционированных и дочерних/секционированных таблиц должны иметь одинаковый статус генерирования, хотя теперь фактические генерирующего выражения могут быть разными.
Удалены функции pg_walinspect
pg_get_wal_records_info_till_end_of_wal()иpg_get_wal_stats_till_end_of_wal()(Bharath Rupireddy) §Переименована серверная переменная
force_parallel_modeвdebug_parallel_query(Дэвид Роули) § §Удалена возможность создавать представления вручную с помощью правил
ON SELECT(Tom Lane) §Удалена серверная переменная
vacuum_defer_cleanup_age(Андрес Фройнд) §Это было ненужно с тех пор, как
hot_standby_feedbackи слоты репликации были добавлены.Переменная сервера
promote_trigger_fileудалена (Саймон Риггс) §Это использовалось для повышения резервного сервера до основного, но теперь это легче выполняется с помощью
pg_ctl promoteилиpg_promote().Удалены серверные переменные только для чтения
lc_collateиlc_ctype(Петер Айзентраут) §Сопоставления и локали могут различаться между базами данных, поэтому их наличие в качестве серверных переменных только для чтения было бесполезным.
Наследование ролей теперь контролирует статус наследования по умолчанию для добавленных ролей-участников во время
GRANT(Роберт Хаас) §Поведение наследования по умолчанию для роли может быть переопределено с помощью нового предложения
GRANT ... WITH INHERIT. Это позволяет наследовать некоторые роли, а не другие, потому что статус наследования участников устанавливается во времяGRANT. Ранее статус наследования ролей-участников контролировался только статусом наследования роли, и изменения в статусе наследования роли влияли на все предыдущие и будущие роли-участники.Ограничены привилегии
CREATEROLEи его способность изменять другие роли (Роберт Хаас) § §Ранее роли с привилегиями
CREATEROLEмогли изменять многие аспекты любой роли, не являющейся суперпользователем. Такие изменения, включая добавление участников, теперь требуют, чтобы роль, запрашивающая изменение, имела разрешениеADMIN OPTION. Например, теперь они могут изменять свойстваCREATEDB,REPLICATIONиBYPASSRLSтолько в том случае, если у них также есть эти разрешения.Символические ссылки для бинарного файла postmaster были удалены (Петер Айзенраут) §
E.22.3. Изменения #
Ниже приведен подробный отчет об изменениях между PostgreSQL 16 и предыдущим основным выпуском.
E.22.3.1. Сервер #
E.22.3.1.1. Оптимизатор #
Разрешены инкрементные сортировки в большем числе случаев, включая
DISTINCT(Дэвид Роули) § §Добавлена возможность для агрегатов с
ORDER BYилиDISTINCTиспользовать предварительно отсортированные данные (Дэвид Роули) § § §Новая серверная переменная
enable_presorted_aggregateможет быть использована для отключения этого.Разрешено использование мемоизации поверх
UNION ALL(Ричард Гуо) §Разрешено выполнение анти-соединений с ненулевым вводом в качестве внутреннего отношения (Ричард Гуо) §
Разрешена параллелизация
FULLи внутренних правыхOUTERхеш-соединений (Мелани Плагеман, Томас Мунро) §Улучшена точность оценок стоимости доступа к индексу
GINоптимизатором (Ronan Dunklau) §
E.22.3.1.2. Общая производительность #
Разрешено более эффективное добавление страниц кучи и индекса (Андрес Фройнд) § §
Во время операций, не связанных с заморозкой, выполняется заморозка страниц, где это уместно (Питер Геогеган) § § §
Это делает полные вакуумы заморозки таблиц менее необходимыми.
Разрешено оконным функциям использовать более быстрый
ROWSрежим внутренне, когда активен, но не требуется режимRANGE(Дэвид Роули) §Разрешена оптимизация всегда увеличивающихся оконных функций
ntile(),cume_dist()иpercent_rank()(David Rowley) §Разрешено агрегатным функциям
string_agg()иarray_agg()быть распараллелены (David Rowley) §Улучшена производительность за счет кеширования
RANGEиLISTпоиска разделов (Amit Langote, Hou Zhijie, David Rowley) §Разрешено управление использованием разделяемого буфера вакуумом и анализом (Мелани Плагеман) § § §
Опция
VACUUM/ANALYZE- этоBUFFER_USAGE_LIMIT, а опция vacuumdb - это--buffer-usage-limit. Значение по умолчанию задается серверной переменнойvacuum_buffer_usage_limit, которая также контролирует autovacuum.Разрешены обновления с HOT, если обновлены только колонки, индексированные с помощью
BRIN(Маттиас ван де Меент, Йозеф Симанек, Томаш Вондра) §Улучшена скорость обновления заголовка процесса (Дэвид Роули) §
Разрешены поиски
xid/subxidи обнаружение строк в ASCII с использованием векторных операций (Натан Боссарт, Джон Нейлор) § § § §ASCII обнаружение особенно полезно для
COPY FROM. Векторные операции также использованы для некоторых поисков в массивах C.Снижена нагрузка на выделение памяти (Андрес Фройнд, Дэвид Роули) §
E.22.3.1.3. Мониторинг #
Добавлено системное представление
pg_stat_ioдля отслеживания статистики I/O (Мелани Плагеман) § § § § §Запись статистики о последних последовательных и индексных сканированиях таблиц (Дэйв Пейдж) §
Эта информация отображается в
pg_stat_*_tablesиpg_stat_*_indexes.Запись статистики о случаях перемещения обновленных строк на новые страницы (Кори Хуинкер) §
Колонка
pg_stat_*_tablesn_tup_newpage_upd.Добавлена информация о спекулятивных блокировках в системное представление
pg_locks(Масахико Савада, Норийоши Шинода) §Идентификатор транзакции отображается в
transactionidстолбце, а токен спекулятивной вставки отображается вobjidстолбце.Добавлено отображение типов результатов подготовленных операторов в представление
pg_prepared_statements(Дагфинн Илмари Маннсокер) § §Созданы записи статистики подписки во время создания подписки, чтобы
stats_resetбыл точным (Андрес Фройнд) §Ранее записи создавались только при первом сообщении о статистике.
Исправлен учет I/O для записей временных отношений, показанных в
pg_stat_database(Мелани Плагеман) §Добавлена функция
pg_stat_get_backend_subxact()для отчета о кеше подтранзакций сессии (Дилип Кумар) §Были использованы
pg_stat_get_backend_idset(),pg_stat_get_backend_activity()и связанные функции с использованием неизменяемого идентификатора бэкенда (Натан Боссарт) §Ранее значения индекса могли изменяться в течение сессии.
Отдельные серверные процессы были отмечены специальным типом серверного процесса (Мелани Плагеман) §
Добавлено событие ожидания
SpinDelayдля отчета о задержках сна спинлока (Андрес Фройнд) §Создано новое событие ожидания
DSMAllocateдля указания ожидания выделения динамической общей памяти (Томас Мунро) §Ранее этот тип ожидания был сообщен как
DSMFillZeroWrite, который также использовался для выделенийmmap().Добавлено имя базы данных в заголовок процесса логических отправителей WAL (Tatsuhiro Nakamori) §
Физические отправители WAL не отображают имя базы данных.
Добавлена информация о контрольной точке и
REDO LSNв сообщенияlog_checkpoints(Бхарат Рупиредди, Кётаро Хоригучи) §Предоставлены дополнительные детали при сбоях клиентского сертификата (Джейкоб Чемпион) §
E.22.3.1.4. Привилегии #
Добавлена предопределенная роль
pg_create_subscriptionс разрешением на создание подписок (Роберт Хаас) §Разрешено подпискам не требовать пароли (Роберт Хаас) § § §
Это было достигнуто с опцией
password_required=false.Упрощены разрешения для
LOCK TABLE(Джефф Дэвис) §Ранее возможность пользователя выполнять
LOCK TABLEна различных уровнях блокировки была ограничена уровнями блокировки, требуемыми командами, которые они имели разрешение выполнять на таблице. Например, кто-то с разрешениемUPDATEмог выполнять все уровни блокировки, кромеACCESS SHARE, даже если это был более низкий уровень блокировки. Теперь пользователи могут выдавать более низкие уровни блокировки, если у них уже есть разрешение на более высокие уровни блокировки.Разрешено
ALTER GROUP group_name ADD USER user_nameвыполняться сADMIN OPTION(Роберт Хаас) §Ранее требовалось разрешение
CREATEROLE.Разрешено
GRANTиспользовать синтаксисWITH ADMIN TRUE/FALSE(Роберт Хаас) §Ранее поддерживался только синтаксис
WITH ADMIN OPTION.Разрешено ролям, которые создают другие роли, автоматически наследовать права новой роли или возможность
SET ROLEдля новой роли (Роберт Хаас, Ши Ю) § §Это контролируется серверной переменной
createrole_self_grant.Предотвращено изменение пользователями привилегий по умолчанию для неунаследованных ролей (Роберт Хаас) §
Это теперь разрешено только для унаследованных ролей.
При предоставлении членства в роли требуется, чтобы роль, предоставляющая права, была ролью, имеющей соответствующие разрешения (Роберт Хаас) §
Это требование даже в случае, когда членство в роли предоставляется не суперпользователем начальной загрузки.
Разрешено несуперпользователям предоставлять разрешения, используя пользователя, предоставившего права, который не является текущим пользователем (Роберт Хаас) §
Текущий пользователь все еще должен иметь достаточные разрешения, предоставленные указанным пользователем, который предоставил.
Добавлена
GRANTдля управления разрешением на использованиеSET ROLE(Роберт Хаас) §Это контролируется новой опцией
GRANT ... SET.Добавлено отслеживание зависимостей для ролей, которым предоставлены привилегии (Роберт Хаас) §
Например, удаление
ADMIN OPTIONзавершится неудачей, если существуют привилегии, использующие эту опцию; необходимо использоватьCASCADEдля отзыва зависимых разрешений.Добавлено отслеживание зависимостей грантодателей для записей
GRANT(Роберт Хаас) §Это гарантирует, что
pg_auth_members.grantorзначения всегда действительны.Разрешено наличие нескольких записей членства в роли (Роберт Хаас) § §
Ранее новое предоставление членства удаляло бы предыдущее соответствующее предоставление членства, даже если другие аспекты предоставления не совпадали.
Предотвращено удаление привилегий суперпользователя для пользователя начальной загрузки (Роберт Хаас) §
Восстановление таких пользователей могло привести к ошибкам.
Разрешено
makeaclitem()принимать несколько имен привилегий (Робинс Тхаракан) §Ранее принималось только одно имя привилегии, например,
SELECT.
E.22.3.1.5. Конфигурация сервера #
Добавлена поддержка делегирования учетных данных Kerberos (Stephen Frost) § § § §
Это было включено с помощью серверной переменной
gss_accept_delegationи параметра подключения libpqgssdelegation.Позволено установить количество итераций SCRAM с помощью серверной переменной
scram_iterations(Даниэль Густафссон) §Улучшена производительность управления переменными сервера (Tom Lane) § §
Ужесточены ограничения на то, какие серверные переменные могут быть сброшены (Масахико Савада) §
Ранее, хотя некоторые переменные, такие как
transaction_isolation, не затрагивалисьRESET ALL, они могли быть индивидуально сброшены в неподходящих ситуациях.Перемещены различные элементы
postgresql.confв новые категории (Shinya Kato) §Это также влияет на категории, отображаемые в представлении
pg_settings.Предотвращена рекурсия конфигурационного файла более чем на 10 уровней (Жюльен Рухауд) §
Разрешено автовакууму более часто учитывать изменения настроек задержки (Мелани Плагеман) § §
Вместо того чтобы учитывать изменения только в начале каждой связи, они учитываются в начале каждого блока.
Убраны ограничения на то, чтобы архивные файлы были надежно переименованы (Натан Боссарт) § §
Команда
archive_commandтеперь с большей вероятностью будет вызвана с уже архивированными файлами после сбоя.Предотвращено одновременное задание
archive_libraryиarchive_command(Натан Боссарт) §Ранее
archive_libraryпереопределялarchive_command.Разрешено завершение дочерних процессов постмастером с помощью сигнала прерывания (Tom Lane) §
Позволяет собирать дамп памяти для зависшего дочернего процесса. Это контролируется
send_abort_for_crashиsend_abort_for_kill. Переключатель-Tпостмастера теперь эквивалентен установкеsend_abort_for_crash.Удалена нефункциональная опция postmaster
-n(Tom Lane) §Разрешено серверу резервировать слоты для ролей с
pg_use_reserved_connectionsчленством (Натан Боссарт) §Количество зарезервированных слотов устанавливается серверной переменной
reserved_connections.Добавлена настройка
debug_io_directдля использования разработчиками (Томас Мунро, Андрес Фройнд, Бхарат Рупиредди) § §Хотя в первую очередь для разработчиков,
wal_sync_method=open_sync/open_datasyncбыл изменен, чтобы не использовать прямой I/O сwal_level=minimal; теперь это включено сdebug_io_direct=wal.Добавлена функция
pg_split_walfile_name()для отчета о значениях сегмента и временной шкалы имен файлов WAL (Бхарат Рупиредди) § §
E.22.3.1.6. pg_hba.conf #
Добавлена поддержка сопоставления с регулярными выражениями для записей базы данных и ролей в
pg_hba.conf(Бертран Друво) §Шаблоны регулярных выражений начинаются с косой черты. Имена баз данных и ролей, которые начинаются с косых черт, должны быть заключены в двойные кавычки, если они упоминаются в
pg_hba.conf.Улучшена обработка пользовательских колонок в
pg_ident.confдля соответствияpg_hba.conf(Jelte Fennema) §В частности, добавлена поддержка
all, членства в роли с+, и регулярных выражений с ведущей косой чертой. Любое имя пользователя, соответствующее этим шаблонам, должно быть заключено в двойные кавычки.Разрешено включение файлов в
pg_hba.confиpg_ident.conf(Жюльен Рухауд) §Эти параметры контролируются
include,include_if_existsиinclude_dir. Системные представленияpg_hba_file_rulesиpg_ident_file_mappingsтеперь отображают имя файла.Разрешено токенам в
pg_hba.confиметь неограниченную длину (Tom Lane) §Добавлены номера правил и карт в системное представление
pg_hba_file_rules(Жюльен Рухауд) §
E.22.3.1.7. Локализация #
Определение кодировки по умолчанию из локали при использовании ICU (Джефф Дэвис) §
Ранее по умолчанию всегда использовался
UTF-8.Опции
CREATE DATABASEиCREATE COLLATIONLOCALE, а также опции initdb и createdb--locale, контролируют поставщиков правил сортировки, не относящихся к libc (Джефф Дэвис)Ранее они контролировались только провайдерами libc.
Добавлены предопределенные сортировки
unicodeиucs_basic(Петер Айзентраут) §Это работает только если поддержка ICU включена.
Разрешено создание пользовательских правил сортировки ICU (Питер Айзентраут) §
Это было сделано с использованием нового предложения
RULESвCREATE COLLATION, а также новых опций дляCREATE DATABASE, createdb, и initdb.
E.22.3.2. Логическая репликация #
Разрешено логическое декодирование на резервных серверах (Бертран Друво, Андрес Фройнд, Амит Хандекар) § § §
Снимки записей WAL требуются для создания логических слотов, но не могут быть созданы на резервных серверах. Чтобы избежать задержек, новая функция
pg_log_standby_snapshot()позволяет создавать такие записи.Добавлена серверная переменная для управления тем, как издатели логического декодирования передают изменения и как подписчики их применяют (Shi Yu) § § §
Переменная
debug_logical_replication_streaming.Разрешена начальная синхронизация таблицы логической репликации для копирования строк в бинарном формате (Мелих Мутлу) §
Это возможно только для подписок, отмеченных как двоичные.
Разрешено параллельное применение логической репликации (Hou Zhijie, Wang Wei, Amit Kapila) § § §
Опция
CREATE SUBSCRIPTIONSTREAMINGтеперь поддерживаетparallelдля включения применения больших транзакций параллельными рабочими процессами. Количество параллельных рабочих процессов контролируется новой серверной переменнойmax_parallel_apply_workers_per_subscription. События ожиданияLogicalParallelApplyMain,LogicalParallelApplyStateChangeиLogicalApplySendDataтакже были добавлены. Колонкаleader_pidбыла добавлена в системное представлениеpg_stat_subscriptionдля отслеживания параллельной активности.Улучшена производительность для применения логической репликации без первичного ключа (Onder Kalaci, Amit Kapila) §
В частности,
REPLICA IDENTITY FULLтеперь может использовать btree индексы вместо последовательного сканирования таблицы для поиска совпадений.Разрешено подписчикам логической репликации обрабатывать только изменения, которые не имеют происхождения (Виньеш С, Амит Капила) § §
Это может быть использовано для предотвращения циклов репликации. Это контролируется новой опцией
CREATE SUBSCRIPTION ... ORIGIN.Выполнение логической репликации
SELECTи DML действий как владельца таблицы (Роберт Хаас) § §Это улучшает безопасность и теперь требует, чтобы владельцы подписок были либо суперпользователями, либо имели
SET ROLEразрешение на все роли, владеющие таблицами в наборе репликации. Предыдущее поведение выполнения всех операций от имени владельца подписки может быть включено с помощью опции подпискиrun_as_owner.wal_retrieve_retry_intervalнастроен на работу на основе каждой подписки (Натан Боссарт) §Ранее время повторной попытки применялось глобально. Это также добавляет события ожидания >
LogicalRepLauncherDSAиLogicalRepLauncherHash.
E.22.3.3. Утилиты #
Добавлена опция
EXPLAINGENERIC_PLANдля отображения общего плана для параметризованного запроса (Лауренц Альбе) §Разрешено значению
COPY FROMотображаться наDEFAULTстолбца (Исраэль Барт Рубио) §Разрешено
COPYв иностранные таблицы добавлять строки пакетами (Андрей Лепихов, Эцуро Фуджита) §Это контролируется опцией postgres_fdw
batch_size.Разрешено указание типа
STORAGEс помощьюCREATE TABLE(Теодор Сигаев, Александр Алексеев) § §Ранее только
ALTER TABLEмогло это контролировать.Разрешены триггеры усечения на внешних таблицах (Юго Нагата) §
Разрешено
VACUUMи vacuumdb обрабатывать только таблицыTOAST(Натан Боссарт) §Это было достигнуто путем отключения
VACUUMпараметраPROCESS_MAINили с помощью vacuumdb с использованием опции--no-process-main.Добавлены
VACUUMопции для пропуска или обновления всех замороженных статистик (Том Лейн, Натан Боссарт) §Опции
SKIP_DATABASE_STATSиONLY_DATABASE_STATS.Изменены
REINDEX DATABASEиREINDEX SYSTEMтак, чтобы больше не требовался аргумент (Саймон Риггс) § §Ранее имя базы данных должно было быть указано.
Разрешено
CREATE STATISTICSгенерировать имя статистики, если оно не указано (Саймон Риггс) §
E.22.3.4. Типы данных #
Разрешены недесятичные целочисленные литералы (Питер Айзентраут) §
Например,
0x42F,0o273, и0b100101.Разрешено
NUMERICобрабатывать шестнадцатеричные, восьмеричные и двоичные целые числа любого размера (Дин Рашид) §Ранее поддерживались только некавыченные восьмибайтовые целые числа с этими недесятичными основаниями.
Разрешены символы подчеркивания в целочисленных и числовых константах (Питер Айзентраут, Дин Рашид) §
Это может улучшить читаемость для длинных строк цифр.
Было принято написание
+infinityв вводе даты и времени (Вик Фиринг) §Предотвращено указание
epochиinfinityвместе с другими полями в строках даты и времени (Joseph Koshakow) §Удалена недокументированная поддержка ввода даты в форме
Y(Джозеф Кошаков) §yearMmonthDdayДобавлены функции
pg_input_is_valid()иpg_input_error_info()для проверки ошибок преобразования типов (Tom Lane) § §
E.22.3.5. Общие запросы #
E.22.3.6. Функции #
Добавлены конструкторы SQL/JSON (Никита Глухов, Теодор Сигаев, Олег Бартунов, Александр Коротков, Амит Ланготе) §
Новые функции
JSON_ARRAY(),JSON_ARRAYAGG(),JSON_OBJECT()иJSON_OBJECTAGG()являются частью стандарта SQL.Добавлены проверки объектов SQL/JSON (Никита Глухов, Теодор Сигаев, Олег Бартунов, Александр Коротков, Амит Ланготе, Эндрю Данстан) §
Проверки
IS JSONвключают проверки значений, массивов, объектов, скаляров и уникальных ключей.Разрешен разбор строк JSON с использованием векторных операций (Джон Нейлор) §
Улучшена обработка функции выделения полного текста
ts_headline()для выраженийORиNOT(Tom Lane) §Добавлены функции для сложения, вычитания и генерации значений
timestamptzв указанной временной зоне (Przemyslaw Sztoch, Gurjeet Singh) §Функции
date_add(),date_subtract(), иgenerate_series().Изменение
date_trunc(unit, timestamptz, time_zone)на неизменяемую функцию (Przemyslaw Sztoch) §Это позволяет создавать индексы выражений с использованием этой функции.
Добавлена серверная переменная
SYSTEM_USER(Бертран Друво) §Этот метод аутентификации и его аутентифицированный пользователь были сообщены.
Добавлены функции
array_sample()иarray_shuffle()(Мартин Кальхер) §Добавлена агрегатная функция
ANY_VALUE(), которая возвращает любое значение из набора (Вик Фиринг) §Добавлена функция
random_normal()для предоставления нормально распределённых случайных чисел (Пол Рэмси) §Добавлена функция ошибки
erf()и её дополнениеerfc()(Дин Рашид) §Улучшена точность числовой
power()для целых показателей степени (Дин Рашид) §Добавлена опция
XMLSERIALIZE()INDENTдля форматирования вывода (Jim Jones) §Изменено
pg_collation_actual_version()для возврата разумного значения для коллации по умолчанию (Джефф Дэвис) §Ранее возвращалось
NULL.Разрешено
pg_read_file()иpg_read_binary_file()игнорировать отсутствующие файлы (Киотаро Хоригучи) §Добавлена спецификация байтов (
B) вpg_size_bytes()(Петер Айзентраут) §Разрешено
to_reg* функциям принимать числовые OID в качестве ввода (Tom Lane) §
Добавлена возможность получения OID текущей функции в PL/pgSQL (Pavel Stehule) §
Это было выполнено с помощью
GET DIAGNOSTICS variable = PG_ROUTINE_OID.
Добавлена опция подключения libpq
require_authдля указания списка допустимых методов аутентификации (Джейкоб Чемпион) §Это также может быть использовано для запрета определенных методов аутентификации.
Разрешено случайное выбор нескольких узлов, указанных libpq (Йелте Феннема) § §
Это было включено с
load_balance_hosts=randomи может быть использовано для балансировки нагрузки.Добавлена опция libpq
sslcertmodeдля управления передачей клиентского сертификата (Джейкоб Чемпион) §Значения параметра:
disable,allowиrequire.Разрешено libpq использовать системный пул сертификатов для проверки сертификатов (Джейкоб Чемпион, Томас Хабетс) §
Это было включено с
sslrootcert=system, что также включаетsslmode=verify-full.
E.22.3.9. Клиентские приложения #
Разрешено
ECPGобъявления переменных использовать имена, определенные с помощью typedef, которые совпадают с незарезервированными SQL ключевыми словами (Tom Lane) §Это изменение предотвращает обработку ключевых слов, которые совпадают с именами typedef в C, как ключевых слов в последующих блоках
EXEC SQL.
Позволено psql управлять максимальной шириной строк заголовка в расширенном формате (Платон Пронко) §
Это контролируется
xheader_width.Добавлена команда psql
\drgдля отображения деталей членства в роли (Павел Лузанов) § §Столбец вывода
Member ofбыл удалён из\duи\dg, потому что эта новая команда отображает эту информацию более подробно.Разрешено командам управления привилегиями доступа psql показывать системные объекты (Nathan Bossart) § §
Добавлено обозначение
FOREIGNв psql\d+для дочерних внешних таблиц и партиций (Ian Lawrence Barwick) §Предотвращено отображение исходного кода функции в
\df+(Айзек Морланд) §Тела функций легче просматриваются с помощью
\sf.Разрешено psql отправлять запросы, используя расширенный протокол запросов (Петер Айзенштраут) §
Передача аргументов в такие запросы осуществлялась с использованием новой команды psql
\bind.Разрешено psql
\watchограничивать количество выполнений (Андрей Бородин) §Опции
\watchтеперь могут быть названы при указании.Обнаружены недопустимые значения для psql
\watch, и разрешено использование нуля для указания отсутствия задержки (Андрей Бородин) §Разрешено сценариям psql получать статус выхода команд оболочки и запросов (Кори Хуинкер, Том Лейн) § §
Новые переменные управления psql - это
SHELL_ERRORиSHELL_EXIT_CODE.Различные улучшения автодополнения в psql (Виньеш С, Александр Алексеев, Дагфинн Илмари Маннсокер, Ши Ю, Майкл Пакье, Кен Като, Питер Смит) § § § § § § § § § § § §
Добавлен контроль pg_dump для дампа дочерних таблиц и разделов (Gilles Darold) §
Новые параметры:
--table-and-children,--exclude-table-and-childrenи--exclude-table-data-and-children.Добавлены LZ4 и Zstandard сжатие в pg_dump (Georgios Kokolatos, Justin Pryzby)
Разрешено pg_dump и pg_basebackup использовать
длинныйрежим для сжатия (Джастин Призби) § § § §Улучшено pg_dump для принятия более согласованного синтаксиса сжатия (Georgios Kokolatos) §
Опции, такие как
--compress=gzip:5.
E.22.3.10. Приложения сервера #
Добавлена initdb опция для установки серверных переменных на время выполнения initdb и всех будущих запусков сервера (Tom Lane) §
Опция
-c name=value.Добавлены опции в createuser для управления дополнительными параметрами пользователя (Shinya Kato) § §
В частности, новые параметры управляют датой окончания действия, обходом безопасности на уровне строк и членством в роли.
Устаревший createuser параметр
--role(Натан Боссарт) § §Эта опция могла бы быть легко перепутана с новыми createuser параметрами членства в роли, поэтому опция
--member-ofбыла добавлена с той же функциональностью. Опция--roleвсе еще может быть использована.Разрешено управление обработкой схем в vacuumdb (Жиль Дарольд) §
Эти параметры контролируются опциями
--schemaи--exclude-schema.Использованы новые
VACUUMопции для улучшения производительности vacuumdb (Tom Lane, Nathan Bossart) §Были pg_upgrade установлены локаль и кодировка нового кластера (Джефф Дэвис) §
Это устраняет требование, чтобы новый кластер был создан с теми же настройками локали и кодировки.
Добавлена pg_upgrade опция для указания режима передачи по умолчанию (Петер Айзентраут) §
Опция
--copy.Улучшено pg_basebackup для принятия числовых параметров сжатия (Георгиос Коколатос, Майкл Пакье) §
Опции, такие как
--compress=server-5, теперь поддерживаются.Исправлено pg_basebackup для обработки таблиц, хранящихся в каталоге
PGDATA(Роберт Хаас) §Добавлена pg_waldump опция
--save-fullpageдля дампа полных изображений страниц (Дэвид Кристенсен) §Разрешены pg_waldump опции
-t/--timelineдля принятия шестнадцатеричных значений (Петер Айзентраут) §Добавлена поддержка отчета о прогрессе в pg_verifybackup (Масахико Савада) §
Разрешено pg_rewind правильно отслеживать изменения временной шкалы (Хейкки Линнакангас) § §
Ранее, если pg_rewind запускался после переключения временной шкалы, но до выдачи контрольной точки, он мог неправильно определить, что перемотка была не нужна.
pg_receivewal и pg_recvlogical завершены корректно при получении
SIGTERM(Christoph Berg) §Этот сигнал часто используется systemd.
E.22.3.11. Исходный код #
Поддержка ICU была включена по умолчанию (Джефф Дэвис) §
Добавлена поддержка SSE2 (Streaming SIMD Extensions 2) векторных операций на архитектурах x86-64 (Джон Нейлор) §
Добавлена поддержка расширенных инструкций SIMD (Single Instruction Multiple Data) (NEON) на архитектурах ARM (Nathan Bossart) §
Предотвращено экспортирование символов библиотек расширений по умолчанию (Андрес Фройнд, Том Лейн) § §
Функции, которые необходимо вызывать из основного бэкенда или других расширений, теперь должны быть явно помечены
PGDLLEXPORT.Требуется Perl версии 5.14 или более поздней (Джон Нейлор) §
Требуется Bison версии 2.3 или более поздней (Джон Нейлор) §
Требуется версия Flex 2.5.35 или более поздняя (Джон Нейлор) §
Требуется MIT Kerberos для поддержки GSSAPI (Стивен Фрост) §
Поддержка Visual Studio 2013 была удалена (Майкл Пакье) §
Поддержка HP-UX удалена (Томас Мунро) §
Поддержка HP/Intel Itanium была удалена (Thomas Munro) §
Поддержка архитектур M68K, M88K, M32R, и SuperH CPU была удалена (Thomas Munro) § §
Удалена поддержка libpq аутентификации с использованием учетных данных SCM (Майкл Пакье) §
Поддержка этого метода аутентификации на стороне сервера была удалена в PostgresSQL 9.1.
Разрешено управление местоположением openssl бинарного файла, используемого системой сборки (Петер Айзентраут) §
Сделано нахождение программы openssl опцией configure или meson
Добавлена опция сборки для тестирования небольших размеров сегментов таблиц (Андрес Фройнд) §
Добавлены опции для pgindent (Эндрю Данстан) § § § § § § §
Новые параметры:
--show-diff,--silent-diff,--commit, и--help, и разрешено использование нескольких параметров--exclude. Также требуется явное указание файла typedef. Параметры--code-baseи--buildтакже были удалены.Добавлен исходный код pg_bsd_indent в основное дерево (Tom Lane) §
Улучшены make_ctags и make_etags (Юго Нагата) §
Настроены
pg_attributeстолбцы для повышения эффективности (Петер Айзентраут) §
E.22.3.12. Дополнительные модули #
Улучшено использование индексов на основе расширений на булевых столбцах (Zongliang Quan, Tom Lane) §
Добавлена поддержка Daitch-Mokotoff Soundex в fuzzystrmatch (Dag Lem) §
Разрешено auto_explain записывать значения, переданные параметризованным операторам (Дагфинн Илмари Маннсокер) §
Это влияет на запросы, использующие серверные
PREPARE/EXECUTEи клиентскую разборку/привязку. Логирование контролируется параметромauto_explain.log_parameter_max_length; по умолчанию параметры запроса будут записываться в журнал без ограничения длины.Был auto_explain режим
log_verboseучтен в значенииcompute_query_id(Ацуши Торикоши) §Ранее, даже если
compute_query_idбыл включен,log_verboseне показывал идентификатор запроса.Изменена максимальная длина меток ltree с 256 до 1000 и разрешены дефисы (Гарен Торикиан) §
Были
pg_stat_statementsнормализованы константы, используемые в утилитных командах (Майкл Пакье) §Ранее вместо заполнителей появлялись константы, например,
$1.Добавлена pg_walinspect функция
pg_get_wal_block_info()для отчета информации о блоках WAL (Майкл Пакье, Мелани Плагеман, Бхарат Рупиредди) § § § §Изменено, как pg_walinspect функции
pg_get_wal_records_info()иpg_get_wal_stats()интерпретируют конечные LSN (Бхарат Рупиредди) §Ранее заканчивающиеся LSN, которые представляют несуществующие местоположения WAL, вызывали ошибку, в то время как теперь они будут интерпретироваться как конец WAL.
Подробные описания записей WAL были добавлены в pg_walinspect и pg_waldump (Мелани Плагеман, Питер Геогеган) § § § §
Добавлена pageinspect функция
bt_multi_page_stats()для отчета статистики по нескольким страницам (Хамид Ахтар) §Это похоже на
bt_page_stats(), за исключением того, что оно может сообщать о диапазоне страниц.Добавлен пустой столбец диапазона в pageinspect функцию
brin_page_items()(Томаш Вондра) §Модули архива были переработаны для большей гибкости (Натан Боссарт) §
Изменения инициализации потребуют обновления модулей, написанных для более старых версий Postgres.
Исправлено неточное отслеживание строк pg_stat_statements для операторов расширенного протокола запросов (Сами Имсейх) §
Добавлена pg_buffercache функция
pg_buffercache_usage_counts()для отчета об общем использовании (Nathan Bossart) §Добавлена pg_buffercache функция
pg_buffercache_summary()для отчета обобщенной статистики буферов (Мелих Мутлу) §Разрешено, чтобы схемы требуемых расширений ссылались в скриптах расширений, используя новый синтаксис
@extschema:referenced_extension_name@(Регина Оби) §Разрешено обязательным расширениям быть помеченными как не перемещаемые с использованием
no_relocate(Регина Оби) §Это позволило
@extschema:referenced_extension_name@рассматриваться как константа на протяжении всего времени существования расширения.
E.22.3.12.1. postgres_fdw #
Разрешено postgres_fdw выполнять прерывания параллельно (Etsuro Fujita) §
Это было включено с postgres_fdw опцией
parallel_abort.Сделан
ANALYZEна внешних таблицах postgres_fdw более эффективным (Tomas Vondra) §Опция postgres_fdw
analyze_samplingконтролирует метод выборки.Ограничена отправка констант типа
reg* в postgres_fdw только теми, которые ссылаются на встроенные объекты или расширения, отмеченные как отправляемые (Tom Lane) §postgres_fdw и dblink обработали прерывания во время установления соединения (Andres Freund) §
E.22.4. Благодарности #
Следующие лица (в алфавитном порядке) внесли свой вклад в этот релиз в качестве авторов патчей, разработчиков, рецензентов, тестировщиков или сообщили об обнаруженных проблемах.
| Abhijit Menon-Sen |
| Adam Mackler |
| Адриан Клейвер |
| Ahsan Hadi |
| Ajin Cherian |
| Аджит Авекар |
| Алан Ходжсон |
| Aleksander Alekseev |
| Алекс Денман |
| Alex Kozhemyakin |
| Александр Королев |
| Alexander Korotkov |
| Alexander Lakhin |
| Alexander Pyhalov |
| Alexey Borzov |
| Alexey Ermakov |
| Алексей Махмутов |
| Álvaro Herrera |
| Amit Kapila |
| Amit Khandekar |
| Amit Langote |
| Amul Sul |
| Anastasia Lubennikova |
| Компания Anban |
| Andreas Dijkman |
| Андреас Карлссон |
| Андреас Шербаум |
| Andrei Zubkov |
| Andres Freund |
| Andrew Alsup |
| Andrew Bille |
| Andrew Dunstan |
| Andrew Gierth |
| Andrew Kesper |
| Andrey Borodin |
| Andrey Lepikhov |
| Andrey Sokolov |
| Анкит Кумар Пандей |
| Анте Крещич |
| Anton Melnikov |
| Антон Сидякин |
| Anton Voloshin |
| Antonin Houska) |
| Arne Roland |
| Артем Анисимов |
| Arthur Zakirov |
| Ashutosh Bapat |
| Ashutosh Sharma |
| Asim Praveen |
| Atsushi Torikoshi |
| Аяки Тачикэке |
| Балаж Сзилфаи |
| Benoit Lobréau |
| Бернд Хельмле |
| Bertrand Drouvot |
| Bharath Rupireddy |
| Билва Санаба |
| Боб Криер |
| Борис Центнер |
| Brad Nicholson |
| Brar Piening |
| Bruce Momjian |
| Bruno da Silva |
| Carl Sopchak |
| Cary Huang |
| Чанхон Фэй |
| Крис Трэверс |
| Christoph Berg |
| Christophe Pettus |
| Corey Huinker |
| Крейг Рингер |
| Курт Коловсон |
| Dag Lem |
| Dagfinn Ilmari Mannsåker |
| Daniel Gustafsson |
| Daniel Vérité |
| Даниэль Ватцингер |
| Daniel Westermann |
| Daniele Varrazzo |
| Daniil Anisimov |
| Danny Shemesh |
| Dave Page |
| David Christensen |
| David G. Johnston |
| Дэвид Гейер |
| Дэвид Гилман |
| Дэвид Кимура |
| David Rowley |
| David Steele |
| Дэвид Турон |
| David Zhang |
| Давиндер Сингх |
| Dean Rasheed |
| Денис Лаксальд |
| Dilip Kumar |
| Димос Стаматакес |
| Дмитрий Кузьмин |
| Дмитрий Астапов |
| Dmitry Dolgov |
| Dmitry Koval |
| Донг Ук Ли |
| Дунмин Лю |
| Drew DeVault |
| Дункан Сандс |
| Эд Масте |
| Egor Chindyaskin |
| Ekaterina Kiryanova |
| Elena Indrupskaya |
| Emmanuel Quincerot |
| Eric Mutta |
| Erik Rijkers |
| Erki Eessaar |
| Эрвин Брандштеттер |
| Etsuro Fujita |
| Евгений Жужнев |
| Euler Taveira |
| Эван Джонс |
| Евгений Морозов |
| Fabrízio de Royes Mello |
| Фариас де Оливейра |
| Florin Irion |
| Франц-Йозеф Фэрбер |
| Гарен Торикиан |
| Georgios Kokolatos |
| Gilles Darold |
| Greg Stark |
| Guillaume Lelarge |
| Gunnar Bluth |
| Гуннар Морлинг |
| Gurjeet Singh |
| Haiyang Wang |
| Haiying Tang |
| Хамид Ахтар |
| Hans Buschmann |
| Хао Ву |
| Hayato Kuroda |
| Heath Lord |
| Heikki Linnakangas |
| Himanshu Upadhyaya |
| Хисахиро Каути |
| Хонгю Сун |
| Hubert Lubaczewski |
| Хунг Нгуен |
| Ian Barwick |
| Ibrar Ahmed |
| Илья Гладышев |
| Илья Ненашев |
| Исаак Морланд |
| Израиль Барт Рубио |
| Jacob Champion |
| Джейкоб Шпайдель |
| Jaime Casanova |
| Jakub Wartak |
| James Coleman |
| James Inform |
| Джеймс Ваннс |
| Ян Вик |
| Japin Li |
| Jeevan Ladhe |
| Jeff Davis |
| Jeff Janes |
| Jehan-Guillaume de Rorthais |
| Jelte Fennema |
| Jian He |
| Джим Джонс |
| Цзиньбао Чэнь |
| Джо Конвей |
| Joel Jacobson |
| John Naylor |
| Jonathan Katz |
| Josef Simanek |
| Joseph Koshakow |
| Juan José Santamaría Flecha |
| Julien Rouhaud |
| Julien Roze |
| Junwang Zhao |
| Justin Pryzby |
| Джастин Чжан |
| Карина Лицкевич |
| Карл О. Пинк |
| Кейсуке Курода |
| Ken Kato |
| Kevin McKibbin |
| Киран МакКаскер |
| Кирк Волак |
| Konstantin Knizhnik |
| Коши Шибагаки |
| Kotaro Kawamoto |
| Куй Лю |
| Kyotaro Horiguchi |
| Лакшми Нараянан Сритхар |
| Лоуренс Парри |
| Laurenz Albe |
| Лука Феррари |
| Lukas Fittl |
| Maciek Sakrejda |
| Magnus Hagander |
| Майя Заложник |
| Марсель Хофштеттер |
| Marina Polyakova |
| Mark Dilger |
| Маркo Тииккая |
| Markus Winand |
| Martijn van Oosterhout |
| Martin Jurca |
| Martin Kalcher |
| Мэри Сюй |
| Masahiko Sawada |
| Masahiro Ikeda |
| Masao Fujii |
| Мейсон Шарп |
| Матеус Алкантара |
| Матс Киндал |
| Matthias van de Meent |
| Matthijs van der Vleuten |
| Maxim Orlov |
| Maxim Yablokov |
| Мехмет Эмин Каракас |
| Melanie Plageman |
| Мелих Мутлу |
| Майка Гейтса |
| Michael Banck |
| Michael Paquier |
| Михаил Николаев |
| Мишель Пельтье |
| Mike Oh |
| Михаил Грибков |
| Минли Чжан |
| Мирослав Бендик |
| Мицуру Хината |
| Мьо Вай Тант |
| Наим Ахтер |
| Naoki Okano |
| Nathan Bossart |
| Nazir Bilal Yavuz |
| Neha Sharma |
| Ник Бабаджанян |
| Nicola Contu |
| Nikhil Shetty |
| Nikita Glukhov |
| Nikolay Samokhvalov |
| Nikolay Shaplov |
| Нишант Шарма |
| Nitin Jadhav |
| Noah Misch |
| Noboru Saito |
| Noriyoshi Shinoda |
| Нуко Йокогама |
| Олег Бартунов |
| Олег Целебровский |
| Olly Betts |
| Onder Kalaci |
| Онур Тиртир |
| Пабло Федерико |
| Палле Гиргенсон |
| Paul Guo |
| Paul Jungwirth |
| Пол Рэмси |
| Pavel Borisov |
| Павел Кулаков |
| Pavel Luzanov |
| Pavel Stehule |
| Пейфэн Цю |
| Peter Eisentraut |
| Peter Geoghegan |
| Peter Smith |
| Phil Florent |
| Филипп Годфрен |
| Платон Пронко |
| Пшемыслав Штох |
| Rachel Heaton |
| Ranier Vilela |
| Регина Оби |
| Reid Thompson |
| Райнер Петерке |
| Richard Guo |
| Рииво Колка |
| Ришу Багга |
| Robert Haas |
| Роберт Шёблом |
| Роберт Трит |
| Roberto Mello |
| Robins Tharakan |
| Roman Zharkov |
| Ронан Дунклау |
| Рушаб Латия |
| Ryo Matsumura |
| Самай Шарма |
| Sami Imseih |
| Sandeep Thakkar |
| Сандро Сантилли |
| Себастьен Флеш |
| Себастьен Лардьер |
| Sehrope Sarkuni |
| Сергей Беляшов |
| Сергей Панков |
| Sergey Shinderuk |
| Shi Yu |
| Shinya Kato |
| Шо Като |
| Shruthi Gowda |
| Швета Маллик |
| Simon Riggs |
| Синди Сеньорита |
| Sirisha Chamarthi |
| Шраван Кумар |
| Стефан Ташуар |
| Stephen Frost |
| Steve Chavez |
| Стоун Тикл |
| Sven Klemm |
| Takamichi Osumi |
| Takeshi Ideriha |
| Tatsuhiro Nakamori |
| Tatsuo Ishii |
| Teja Mupparti |
| Тендер Ван |
| Федор Сигаев |
| Тиаго Нунес |
| Thom Brown |
| Томас Хабетс |
| Томас Мак Кей |
| Томас Манро |
| Тим Кэри-Смит |
| Тим Филд |
| Timo Stolz |
| Tom Lane |
| Tomas Vondra |
| Тор Эрик Линнеруд |
| Торстен Фёрч |
| Тристан Партин |
| Troy Frericks |
| Tushar Ahuja |
| Валери Вулард |
| Вибхор Кумар |
| Виктор Спирин |
| Виктория Шепард |
| Vignesh C |
| Vik Fearing |
| Vitaly Burovoy |
| Виталий Давыдов |
| Ван Вэй |
| Вэньцзинь Цзэн |
| Whale Song |
| Will Mortensen |
| Wolfgang Walther |
| Син Вэнь |
| Син Го |
| Синван Сюй |
| СюэЦзин Чжао |
| Yanliang Lei |
| Юмиу Мо |
| Yugo Nagata |
| Yura Sokolov |
| Юта Кацураги |
| Чжэнь Минъян |
| Чжэн Ли |
| Zhihong Yu |
| Чжицзе Хоу |
| Цзунлян Цюань |
| Цзумин Цзян |