E.25. Выпуск 16 #
Дата выпуска: 2023-09-14
E.25.1. Обзор #
PostgreSQL 16 содержит много новых возможностей и улучшений, в том числе:
- Возможность параллельного выполнения полных ( - FULL) и правых внешних (- OUTER) соединений по хешу
- Логическая репликация с резервных серверов 
- Предоставление возможности подписчикам логической репликации применять большие транзакции параллельно 
- Сбор статистики ввода-вывода с использованием нового представления - pg_stat_io
- Добавление функций-конструкторов и предикатов SQL/JSON 
- Улучшение производительности операций очистки с заморозкой 
- Поддержка регулярных выражений для имён пользователей и баз данных в - pg_hba.confи имён пользователей в- pg_ident.conf
Предыдущие пункты и другие новые возможности PostgreSQL 16 более подробно описаны в следующих разделах.
E.25.2. Миграция на версию 16 #
Тем, кто хочет перенести данные из любой предыдущей версии, необходимо выполнить выгрузку/загрузку данных с помощью pg_dumpall либо использовать pg_upgrade или логическую репликацию. Общую информацию о переходе на более новую основную версию можно найти в Разделе 18.6.
В версии 16 реализован ряд изменений, которые могут повлиять на совместимость с предыдущими выпусками. Рассмотрите следующие несовместимые аспекты:
- Изменение правил определения связанных курсорных переменных PL/pgSQL (Том Лейн) § - Ранее строковое значение такой переменной должно было совпадать с именем переменной во время назначения курсора. Теперь имя назначается во время открытия курсора ( - OPEN) и не совпадает с именем переменной. Чтобы восстановить прежнее поведение, назначьте требуемое имя портала курсорной переменной до выполнения- OPEN.
- Запрет индексов - NULLS NOT DISTINCTдля первичных ключей (Даниэль Густафссон) §
- Отключение перестроения индексов в системных каталогах командами - REINDEX DATABASEи reindexdb (Саймон Риггс) § §- Перестроить такие индексы всё же можно, используя - REINDEX SYSTEMи- reindexdb --system.
- Усиление ограничений выражений - GENERATEDдля таблиц с наследованием и секционированных таблиц (Амит Ланготе, Том Лейн) §- У столбцов родительской секционированной таблицы и дочерних секций должен быть один и тот же статус генерирования, хотя теперь фактические генерирующие выражения могут различаться. 
- Удаление функций - pg_get_wal_records_info_till_end_of_wal()и- pg_get_wal_stats_till_end_of_wal()из pg_walinspect (Бхарат Рупиредди) §
- Переименование серверной переменной - force_parallel_modeв- debug_parallel_query(Дэвид Роули) § §
- Удаление возможности создавать представления вручную, используя правила - ON SELECT(Том Лейн) §
- Удаление серверной переменной - vacuum_defer_cleanup_age(Андрес Фройнд) §- Эта переменная больше не нужна, поскольку добавлен параметр - hot_standby_feedbackи слоты репликации.
- Удаление серверной переменной - promote_trigger_file(Саймон Риггс) §- Она была нужна для повышения ведомого сервера до ведущего, что сейчас можно сделать при помощи - pg_ctl promoteили- pg_promote().
- Возможность управлять статусом наследования по умолчанию при назначении членства в ролях с помощью - GRANT(Роберт Хаас) §- Новое предложение - GRANT ... WITH INHERITпозволяет переопределить правила наследования по умолчанию. При этом допускается наследование одних ролей, но не других, поскольку статус наследования задаётся в команде- GRANT. Ранее статус наследования членов определялся только атрибутом роли, а изменения статуса наследования роли влияло на всех прежних и будущих членов этой роли.
- Ограничение прав ролей с атрибутом - CREATEROLEи их возможности изменять другие роли (Роберт Хаас) § §- Ранее роли с правом - CREATEROLEмогли изменять разные свойства обычных ролей (не суперпользователей). Теперь для изменения некоторых свойств других ролей, включая назначение членства, требуется наличие права- ADMIN OPTION. Например, теперь роли с правом- CREATEROLEмогут изменять атрибуты- CREATEDB,- REPLICATIONи- BYPASSRLS, только если у них есть соответствующие права.
- Удаление символических ссылок на файлы postmaster (Питер Эйзентраут) § 
E.25.3. Изменения #
Ниже вы найдёте подробный список изменений, произошедших между предыдущим основным выпуском и выпуском PostgreSQL 16.
E.25.3.1. Сервер #
E.25.3.1.1. Оптимизатор #
- Возможность выполнения инкрементальной сортировки в различных случаях, в том числе с - DISTINCT(Дэвид Роули) § §
- Возможность использования предварительно отсортированных данных в агрегатных функциях с - ORDER BYили- DISTINCT(Дэвид Роули) § § §- Отключить данную функциональность можно с помощью новой серверной переменной - enable_presorted_aggregate.
- Возможности мемоизации поверх - UNION ALL(Ричард Гуо) §
- Выполнение антисоединений с не NULL в качестве внутреннего отношения (Ричард Гуо) § 
- Возможность параллельного выполнения полных ( - FULL) и правых внешних (- OUTER) соединений по хешу (Мелани Плейгман, Томас Манро) §
- Повышение точности оценки стоимости планировщиком для индексов - GIN(Ронан Данклау) §
E.25.3.1.2. Общая производительность #
- Оптимизация добавления страниц кучи и страниц индекса (Андрес Фройнд) § 
- Выполнение заморозки страницы, что может быть необходимо во время операций, не связанных с заморозкой (Питер Гейган) § § § - В результате снижается необходимость полной очистки таблиц. 
- Возможность выполнения запросов с оконными функциями в более быстром внутреннем режиме - ROWS, когда активен режим- RANGE, но он не требуется (Дэвид Роули)
- Возможность оптимизации запросов с оконными функциями - ntile(),- cume_dist()и- percent_rank()(Дэвид Роули) §
- Возможность параллельного выполнения агрегатных функций - string_agg()и- array_agg()(Дэвид Роули) §
- Улучшение производительности путём кеширования поиска секций - RANGEи- LIST(Амит Ланготе, Хоу Чжицзе, Дэвид Роули) §
- Возможность управления использованием общего буфера при анализе и очистке (Мелани Плейгман) § § § - Управлять этой функциональностью позволяет параметр команд - VACUUM/- ANALYZEпод названием- BUFFER_USAGE_LIMITи параметр vacuumdb- --buffer-usage-limit. Значение по умолчанию задаётся в серверной переменной- vacuum_buffer_usage_limit, которая также управляет автоматической очисткой.
- Поддержка - wal_sync_method=fdatasyncв Windows (Томас Манро) §
- Возможность изменений HOT только при изменении столбцов с индексами - BRIN(Маттиас ван де Меент, Йозеф Шиманек, Томаш Вондра) §
- Использование более быстрого метода изменения заголовка процесса (Дэвид Роули) § 
- Возможность использования векторных операций для поиска - xid/- subxidи определения строк ASCII (Натан Боссарт, Джон Нейлор) § § § §- В частности, определение строк ASCII полезно для команды - COPY FROM. Векторные операции также используются при поиске в массивах C.
- Уменьшение издержек выделения памяти (Андрес Фройнд, Дэвид Роули) § 
E.25.3.1.3. Мониторинг #
- Добавление системного представления - pg_stat_ioдля отслеживания статистики ввода-вывода (Мелани Плейгман) § § § § §
- Запись статистики о последнем последовательном сканировании таблицы и сканировании только индекса (Дейв Пейдж) § - Эту информацию можно получить в представлениях - pg_stat_*_tablesи- pg_stat_*_indexes.
- Запись статистики о количестве изменений строк, перенесённых на новую страницу (Кори Хинкер) § - Для этого добавлен столбец - n_tup_newpage_updв представления- pg_stat_*_tables.
- Добавление информации о блокировке спекулятивного добавления в системное представление - pg_locks(Масахико Савада, Нориёси Синода) §- Идентификатор транзакции отображается в столбце - transactionid, а маркер спекулятивного добавления в столбце- objid.
- Добавление вывода типов результатов подготовленных операторов в представление - pg_prepared_statements(Дагфинн Ильмари Маннсакер) § §
- Создание статистических записей о подписке в момент её создания, чтобы обеспечить точность - stats_reset(Андрес Фройнд) §- Ранее записи создавались только при первом сборе статистики. 
- Корректировка учёта операций ввода-вывода с временными отношениями в представлении - pg_stat_database(Мелани Плейгман)
- Добавление функции - pg_stat_get_backend_subxact()для вывода информации о подтранзакциях из кеша сеанса (Dilip Kumar) §
- Использование неизменяемого идентификатора обслуживающего процесса функциями - pg_stat_get_backend_idset(),- pg_stat_get_backend_activity()и связанными функциями (Натан Боссарт) §- Ранее значения в индексе могли меняться в течение сеанса. 
- Получение информации о самостоятельных обслуживающих процессах по специальному типу процессов (Мелани Плейгман) 
- Добавление события ожидания - SpinDelay, представляющего задержку циклических блокировок (Андрес Фройнд) §
- Создание нового события ожидания - DSMAllocate, представляющего ожидание выделения динамической общей памяти (Томас Манро) §- Ранее этот тип ожидания обозначался как - DSMFillZeroWriteи использовался также при выделении памяти при помощи- mmap().
- Добавление имени базы данных в заголовок процесса логической трансляции передатчиками WAL (Тацухиро Накамори) § - При физической репликации передатчики WAL не выводят имя базы данных. 
- Добавление LSN контрольной точки и - REDO LSNв сообщения- log_checkpoints(Бхарат Рупиредди, Кётаро Хоригути) §
- Вывод дополнительной информации об ошибках, связанных с клиентским сертификатом (Джейкоб Чемпион) § 
E.25.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.
- Возможность использовать синтаксис - WITH ADMIN TRUE/- FALSEв- GRANT(Роберт Хаас) §- Ранее поддерживался только синтаксис - WITH ADMIN OPTION.
- Возможность ролям, создающим другие роли, автоматически наследовать новые права ролей или выполнять - SET ROLEдля новой роли (Роберт Хаас, Ши Юй) § §- Этим механизмом управляет серверная переменная - createrole_self_grant.
- Запрет изменения прав по умолчанию для ролей без наследования (Роберт Хаас) § - Теперь изменять права можно только для ролей с наследованием. 
- Требование наличия соответствующих прав у роли-праводателя при назначении членства в ролях (Роберт Хаас) § - Это требуется, даже когда членство в ролях назначает начальный суперпользователь. 
- Возможность не суперпользователям выдавать права от имени праводателя, не являющегося текущим пользователем (Роберт Хаас) § - При этом у текущего пользователя должны быть необходимые права, выданные указываемым праводателем. 
- Возможность использовать - SET ROLEв- GRANT(Роберт Хаас) §- Для этого предназначен новый параметр - GRANT ... SET.
- Добавление отслеживания зависимостей для ролей с назначенными правами (Роберт Хаас) § - Например, удалить - ADMIN OPTIONне получится, если этот атрибут связан с правами, — для отзыва зависимых прав потребуется воспользоваться- CASCADE.
- Добавление отслеживания зависимостей праводателей для записей - GRANT(Роберт Хаас) §- Это гарантирует актуальность значений в - pg_auth_members.- grantor.
- Возможность многократного назначения членства в роли (Роберт Хаас) § § - Ранее при новом назначении членства в роли предыдущая запись о назначении удалялась, даже если остальные параметры при назначении отличались. 
- Недопущение удаления прав суперпользователя для начального пользователя (Роберт Хаас) § - Восстановление статуса могло бы приводить к ошибкам. 
- Возможность передать функции - makeaclitem()несколько прав (Робинс Таракан) §- Ранее принималось только одно имя права, например - SELECT.
E.25.3.1.5. Конфигурация сервера #
- Добавление поддержки делегирования учётных данных Kerberos (Стивен Фрост) § § § § - Для этого предназначены серверная переменная - gss_accept_delegationи параметр подключения libpq- gssdelegation.
- Возможность задать число итераций SCRAM при помощи серверной переменной - scram_iterations(Даниэль Густафссон) §
- Улучшение производительности при управлении серверными переменными (Том Лейн) § § 
- Усиление ограничений на то, какие серверные переменные можно сбросить (Масахико Савада) § - Ранее выполнение - RESET ALLне затрагивало определённые переменные, например- transaction_isolation, но их можно было сбросить по отдельности в неподходящих случаях.
- Добавление различных пунктов в новые категории - postgresql.conf(Синъя Като) §- Это изменение также отразилось на категориях, выводимых в представлении - pg_settings.
- Запрет рекурсивного включения файла конфигурации более 10 раз (Жюльен Руо) 
- Возможность чаще учитывать изменения параметров задержки в процессе автоочистки (Мелани Плейгман) § § - Теперь при автоочистке изменения учитываются в начале каждого блока, а не отношения. 
- Удаление ограничений, связанных с переименованием архивных файлов (Натан Боссарт) § - Теперь команда - archive_commandбудет чаще вызываться после сбоя для уже архивированных файлов.
- Недопущение одновременной установки параметров - archive_libraryт- archive_command(Натан Боссарт) §- Ранее параметр - archive_libraryимел приоритет над- archive_command.
- Возможность прерывать дочерние процессы по сигналу для процесса postmaster (Том Лейн) - Эта функциональность позволяет собирать дампы памяти «зависших» дочерних процессов и управляется параметрами - send_abort_for_crashи- send_abort_for_kill. Ключ postmaster- -Tтеперь работает так же, как параметр- send_abort_for_crash.
- Удаление нефункционального ключа postmaster - -n(Том Лейн)
- Возможность резервировать слоты подключений для членов роли - pg_use_reserved_connections(Натан Боссарт) §- Количество зарезервированных слотов задаётся в серверной переменной - reserved_connections.
- Поддержка огромных страниц для новых версий Windows 10 (Томас Манро) § - В связи с этим добавлена специальная возможность включить огромные страницы в новых версиях Windows 10. 
- Добавление параметра - debug_io_direct, полезного для разработчиков (Томас Манро, Андрес Фройнд, Бхарат Рупиредди) § §- Ранее существовала возможность для разработчиков тестировать прямой ввод-вывод WAL с указанием - wal_sync_method=open_sync/- open_datasyncпри- wal_level=minimal, теперь для этого предназначен- debug_io_direct=wal.
- Добавление функции - pg_split_walfile_name(), выводящей значения сегмента и линии времени из имени файла WAL (Бхарат Рупиредди) § §
E.25.3.1.6. pg_hba.conf #
- Добавление поддержки регулярных выражений для имён баз данных и ролей в - pg_hba.conf(Бертран Друво) §- Шаблоны регулярных выражений начинаются с косой черты, поэтому имена баз данных и ролей, начинающиеся с косой черты, требуется заключать в двойные кавычки в - pg_hba.conf.
- Улучшение обработки пользовательских столбцов - pg_ident.confв соответствии с- pg_hba.conf(Йелте Феннема) §- В частности, добавлена поддержка специального значения - all, проверки членства в ролях с использованием- +и регулярных выражений, начинающихся с косой черты. Таким образом, теперь имя пользователя, соответствующее одному из этих форматов, должно заключаться в двойные кавычки.
- Возможность включать файлы в - pg_hba.confи- pg_ident.conf(Жюльен Руо) §- Для этого используются директивы - include,- include_if_existsи- include_dir. Системные представления- pg_hba_file_rulesи- pg_ident_file_mappingsтеперь выводят имя включаемого файла.
- Снятие ограничения на длину маркера в - pg_hba.conf(Том Лейн) §
- Добавление вывода количества правил и сопоставлений в системное представление - pg_hba_file_rules(Жюльен Руо) §
E.25.3.1.7. Локализация #
- Определение кодировки по умолчанию из локали при использовании ICU (Джефф Дэвис) § - Ранее по умолчанию всегда использовалась кодировка - UTF-8.
- Использование параметра - LOCALEв- CREATE DATABASEи- CREATE COLLATIONи ключа- --localeв initdb и createdb для управления провайдерами локалей, не связанными с libc (Джефф Девис)- Ранее эти параметры позволяли управлять только провайдерами локалей libc. 
- Добавление предопределённых правил сортировки - unicodeи- ucs_basic(Питер Эйзентраут) §- Они работают, только если включена поддержка ICU. 
- Возможность создания пользовательских правил сортировки ICU (Питер Эйзентраут) § - Правила можно создать, указав новое предложение - RULESв- CREATE COLLATION, а также воспользовавшись новыми параметрами в- CREATE DATABASE, createdb и initdb.
- Возможность автоматического импорта системных локалей Windows (Хуан Хосе Сантамария Флеча) § - Ранее в Windows можно было импортировать только локали ICU. 
E.25.3.2. Логическая репликация #
- Поддержка логического декодирования на резервных серверах (Бертран Друво, Андрес Фройнд, Амит Хандекар) § § § - Для создания слота логической репликации требуется запись WAL со снимком, которую нельзя создать на резервном сервере. Во избежание задержек создать такую запись можно, воспользовавшись функцией - pg_log_standby_snapshot().
- Добавление серверной переменной для управления тем, как при логическом декодировании публикующие сервера передают изменения, а подписчики их применяют (Ши Юй) § § § - Эта переменная называется - debug_logical_replication_streaming.
- Возможность копировать строки в двоичном формате при начальной синхронизации таблиц для логической репликации (Мелих Мутлу) § - Это возможно только для подписок, принимающих данные в двоичном формате. 
- Возможность параллельного применения логической репликации (Хоу Чжицзе, Ван Вэй, Амит Капила) § § § - Для параметра - STREAMINGв- CREATE SUBSCRIPTIONтеперь можно задать значение- parallel, что позволяет передавать большие транзакции с использованием параллельных рабочих процессов. Количество параллельных процессов задаётся в новой серверной переменной- max_parallel_apply_workers_per_subscription. Также были добавлены соответствующие события ожидания:- LogicalParallelApplyMain,- LogicalParallelApplyStateChangeи- LogicalApplySendData. Кроме того, в системное представление- pg_stat_subscriptionбыл добавлен столбец- leader_pid, указывающий на параллельность передачи.
- Улучшение производительности применения логической репликации без первичного ключа (Ондер Каладжи, Амит Капила) § - В частности, с указанием - REPLICA IDENTITY FULLтеперь вместо последовательного сканирования таблицы в поисках совпадений можно использовать индексы B-деревья.
- Предоставление возможности подписчикам логической репликации обрабатывать только изменения без указания источника (Вигнеш Си, Амит Капила) § § - Это позволяет избежать зацикливания репликации. Для включения этой функциональности предназначен параметр - CREATE SUBSCRIPTION ... ORIGIN.
- Выполнение операций - SELECTи команд DML от имени владельца таблицы при логической репликации (Роберт Хаас) § §- Это изменение повышает безопасность, поскольку теперь владельцем подписки может быть либо суперпользователь, либо роль с правом - SET ROLEдля всех ролей, владеющих таблицами в наборе репликации. Ранее можно было включить выполнение всех операций от имени владельца подписки, задав для подписки параметр- run_as_owner.
- Возможность включать - wal_retrieve_retry_intervalна уровне подписки (Натан Боссарт) §- Ранее этот параметр применялся глобально. Также добавлены соответствующие события ожидания: > - LogicalRepLauncherDSAи- LogicalRepLauncherHash.
E.25.3.3. Служебные команды #
- Добавление параметра - GENERIC_PLANдля- EXPLAIN, позволяющего выводить общий план для параметризованного запроса (Лауренц Альбе) §
- Возможность при копировании с использованием - COPY FROMиспользовать значение столбца по умолчанию (- DEFAULT) (Израэл Барт)
- Возможность использовать - COPYдля добавления строк порциями в сторонние таблицы (Андрей Лепихов, Эцуро Фудзита)- Для этого предназначен параметр - batch_sizepostgres_fdw.
- Возможность задавать тип хранения ( - STORAGE) в команде- CREATE TABLE(Фёдор Сигаев, Александр Алексеев) § §- Ранее тип можно было задавать только в команде - ALTER TABLE.
- Возможность использовать триггеры TRUNCATE для сторонних таблиц (Юго Нагата) § 
- Возможность очистки только - TOAST-таблиц с использованием- VACUUMи vacuumdb (Натан Боссарт) §- Это можно реализовать, отключив - PROCESS_MAINпри- VACUUMили задав параметр- --no-process-mainв vacuumdb.
- Добавление в - VACUUMпараметров для пропуска или обновления всех статистик по заморозке (Том Лейн, Натан Боссарт) §- Параметры называются - SKIP_DATABASE_STATSи- ONLY_DATABASE_STATS.
- Отключение требования аргумента в - REINDEX DATABASEи- REINDEX SYSTEM(Саймон Риггс) § §- Ранее требовалось указать имя базы данных. 
- Возможность генерировать имя статистики при выполнении - CREATE STATISTICS, если оно не было указано (Саймон Риггс) §
E.25.3.4. Типы данных #
- Поддержка недесятичных целочисленных констант (Питер Эйзентраут) § - Примеры: - 0x42F,- 0o273и- 0b100101.
- Поддержка шестнадцатеричных, восьмеричных и двоичных целых чисел для - NUMERIC(Дин Рашид)- Ранее с недесятичными основаниями поддерживались только восьмибайтовые целые без кавычек. 
- Поддержка символов подчёркивания в целочисленных и любых числовых константах (Питер Эйзентраут, Дин Рашид) § - Благодаря этому удобнее читать длинные строки цифр. 
- Поддержка - +infinityпри вводе даты и времени (Вик Фиринг) §
- Запрет указывать - epochи- infinityодновременно с другими полями в строках даты и времени (Джозеф Кошаков) §
- Удаление недокументированной поддержки ввода даты в формате - Y(Джозеф Кошаков)- годM- месяцD- день
- Добавление функций - pg_input_is_valid()и- pg_input_error_info()для проверки на наличие ошибок преобразования типов (Том Лейн) § §
E.25.3.5. Общие запросы #
E.25.3.6. Функции #
- Добавление функций-конструкторов SQL/JSON (Никита Глухов, Фёдор Сигаев, Олег Бартунов, Александр Коротков, Амит Ланготе) § - Новые функции - JSON_ARRAY(),- JSON_ARRAYAGG(),- JSON_OBJECT()и- JSON_OBJECTAGG()являются частью стандарта SQL.
- Добавление проверок для объектов SQL/JSON (Никита Глухов, Фёдор Сигаев, Олег Бартунов, Александр Коротков, Амит Ланготе, Эндрю Дунстан) - Проверки - IS JSONраспространяются на значения, массивы, объекты, скалярные значения и уникальные ключи.
- Возможность использования векторных операций для разбора строк JSON (Джон Нейлор) § 
- Улучшение обработки выражений - ORи- NOTфункцией выделения текста- ts_headline()(Tom Lane) §
- Реализация функций для добавления, вычитания и генерирования значений - timestamptzв указанном часовом поясе (Пшемыслав Штох, Гуржит Сингх) §- Эти функции называются - date_add(),- date_subtract()и- generate_series()соответственно.
- Изменение функции - date_trunc(unit, timestamptz, time_zone)на постоянную (Пшемыслав Штох) §- Теперь с использованием этой функции можно создавать индексы выражений. 
- Добавление серверной переменной - SYSTEM_USER(Бертран Друво) §- Она выводит метод аутентификация и имя аутентифицированного пользователя. 
- Добавление функций - array_sample()и- array_shuffle()(Мартин Калхер) §
- Добавление агрегатной функции - ANY_VALUE(), возвращающей любое значение из набора (Вик Фиринг) §
- Добавление функции - random_normal(), выдающей случайные значения с нормальным распределением (Пол Рамсей) §
- Добавление функции ошибок - erf()и дополняющей её- erfc()(Дин Рашид) §
- Увеличение точности функции - power()для типа numeric с целыми показателями степеней (Дин Рашид) §
- Добавление аргумента - INDENTдля функции- XMLSERIALIZE(), позволяющего вывести визуально улучшенный результат (Джим Джонс) §
- Внесение изменений в функцию - pg_collation_actual_version(), чтобы она возвращала подходящее значение, если используется правило сортировки по умолчанию (Джефф Девис) §- Ранее возвращалось значение - NULL.
- Возможность игнорировать отсутствующие файлы функциями - pg_read_file()и- pg_read_binary_file()(Кётаро Хоригути) §
- Возможность задать формат в байтах ( - B) для- pg_size_bytes()(Питер Эйзентраут) §
- Поддержка в функциях - to_reg* ввода числовых значений OID (Том Лейн) §
- Возможность получить OID функции в PL/pgSQL (Павел Стехуле) § - Это позволяет сделать команда - GET DIAGNOSTICS variable = PG_ROUTINE_OID.
- Добавление параметра подключения - require_authв libpq для указания списка допустимых методов аутентификации (Джейкоб Чемпион) §- Кроме того, в этом параметре можно запретить определённые методы аутентификации. 
- Возможность случайного выбора узлов в libpq (Йелте Феннема) § § - Эта возможность включается параметром - load_balance_hosts=randomи может использоваться для балансировки нагрузки.
- Добавление параметра - sslcertmodeв libpq, позволяющего управлять передачей клиентского сертификата (Джейкоб Чемпион) §- Допустимые значения: - disable,- allowи- require.
- Возможность использовать пул сертификатов ОС в libpq для проверки сертификата (Джейкоб Чемпион, Томас Хабетс) § - Эту возможность включает значение - sslrootcert=system, и в результате устанавливается значение- sslmode=verify-full.
E.25.3.9. Клиентские приложения #
- Реализация управления максимальной шириной строк заголовка psql в расширенном формате (Платон Пронко) § - Этой возможностью управляет параметр - xheader_width.
- Добавление команды - \drgв psql, показывающей информацию о членстве в ролях (Павел Лузанов) § §- Поскольку новая команда выводит более подробную информацию, для - \duи- \dgвыходной столбец- Member ofтеперь удалён.
- Возможность выводить системные объекты командами psql, показывающими права доступа (Натан Боссарт) § § 
- Возможность добавления признака - FOREIGNдля дочерних таблиц и секций сторонних таблиц командой- \d+в psql (Иэн Барвик) §
- Исключение вывода исходного кода функции командой - \df+(Айзек Морленд) §- Тело функции удобнее просматриваться командой - \sf.
- Возможность psql отправлять запросы по расширенному протоколу (Питер Эйзентраут) § - Аргументы для таких запросов передаются с использованием новой команды psql - \bind.
- Возможность ограничивать количество выполнений команды - \watchв psql (Андрей Бородин) §- Теперь в - \watchможно передавать именованные параметры.
- Выявление недействительных значений, передаваемых для - \watchв psql, и возможность передать ноль для выполнения повторов без задержек (Андрей Бородин) §
- Возможность в psql получать коды завершения команд оболочки и запросов (Кори Хинкер, Том Лейн) § § - Для этого предназначены новые переменные psql: - SHELL_ERRORи- SHELL_EXIT_CODE.
- Разнообразные улучшения дополнения табуляцией в psql (Вигнеш Си, Александр Алексеев, Дагфинн Ильмари Маннсакер, Ши Юй, Микаэль Пакье, Кен Като, Питер Смит) § § § § § § § § § § § § 
- Добавление управления выгрузкой дочерних таблиц и секций в pg_dump (Жиль Даролд) § - Для этого предназначены параметры - --table-and-children,- --exclude-table-and-childrenи- --exclude-table-data-and-children.
- Поддержка сжатия LZ4 и Zstandard в pg_dump (Георгиос Коколатос, Джастин Призби) 
- Поддержка режима сжатия - longв pg_dump и pg_basebackup (Джастин Призби) § § § §
- Улучшение синтаксиса pg_dump в части определения сжатия (Георгиос Коколатос) § - Теперь принимаются такие параметры, как - --compress=gzip:5.
E.25.3.10. Серверные приложения #
- Добавление параметра initdb для указания серверных переменных на время выполнения initdb и для последующих запусков сервера (Том Лейн) § - Параметр устанавливается так: - -c имя=значение.
- Добавление параметров в createuser для управления поведением пользователей (Синъя Като) § § - В частности, эти параметры позволяют управлять сроком действия роли, пропуском проверок политик защиты на уровне строк и членством в ролях. 
- Объявление ключа - --roleв createuser устаревшим (Натан Боссарт) § §- Этот ключ можно перепутать с новыми параметрами createuser для членства в ролях, поэтому добавлен новый параметр - --member-ofс той же функциональностью. Ключ- --roleпока можно использовать.
- Добавление управления обработкой схемы в vacuumdb (Жиль Даролд) § - Для этого предназначены ключи - --schemaи- --exclude-schema.
- Использование новых параметров - VACUUMдля улучшения производительности vacuumdb (Том Лейн, Натан Боссарт) §
- Назначение локали и кодировки для нового кластера во время pg_upgrade (Джефф Девис) § - В результате отменяется требование сохранения локали и кодировки старого кластера. 
- Добавление ключа для pg_upgrade, задающего режим передачи по умолчанию (Питер Эйзентраут) - Это ключ - --copy.
- Поддержка числовых параметров при определении сжатия в pg_basebackup (Георгиос Коколатос, Микаэль Пакье) § - Теперь поддерживаются параметры, заданные как - --compress=server-5.
- Исправление логики pg_basebackup в части обработки табличных пространств в каталоге - PGDATA(Роберт Хаас) §
- Добавление ключа - --save-fullpageдля выгрузки образов полных страниц в pg_waldump (Дэвид Кристенсен) §
- Поддержка передачи шестнадцатеричных значений в параметры - -t/- --timelineв pg_waldump (Питер Эйзентраут) §
- Поддержка отслеживания выполнения в pg_verifybackup (Масахико Савада) § 
- Возможность корректного отслеживания смены линии времени в pg_rewind (Хейкки Линнакангас) § § - Ранее утилита pg_rewind могла некорректно выявлять отсутствие необходимости синхронизации в случаях запуска после смены линии времени, но до начала контрольной точки. 
- Обеспечение штатного завершения работы pg_receivewal и pg_recvlogical по сигналу - SIGTERM(Кристоф Берг) §- Этот сигнал часто используется systemd. 
E.25.3.11. Исходный код #
- Поддержка сборки с ICU по умолчанию (Джефф Девис) § - В результате удалён флаг сборки - --with-icuи добавлен- --without-icu.
- Поддержка векторных операций SSE2 (Streaming SIMD Extensions 2, Потоковые расширения SIMD) для архитектур x86-64 (Джон Нейлор) § 
- Поддержка расширенных SIMD-инструкций (Single Instruction Multiple Data, Одиночный поток команд, множественный поток данных) (NEON) для архитектур ARM (Натан Боссарт) § 
- Требование использования - RandomizedBaseAddress(ASLR) для всех двоичных файлов, собираемых для Windows с MSVC (Микаэль Пакье) §- Ранее это требование уже было включено для сборок с MinGW. 
- Отключение экспорта символов библиотеками расширений по умолчанию (Андрес Фройнд, Том Лейн) § § - Теперь функции, вызываемые из кода ядра или других расширений, должны быть явно помечены - PGDLLEXPORT.
- Требование Windows 10 или выше (Микаэль Пакье, Хуан Хосе Сантамария Флеча) § - Ранее также поддерживались Windows Vista и Windows XP. 
- Требование Perl версии 5.14 или выше (Джон Нейлор) § 
- Требование Bison версии 2.3 или выше (Джон Нейлор) § 
- Требование Flex версии 2.5.35 или выше (Джон Нейлор) § 
- Требование MIT Kerberos для поддержки GSSAPI (Стивен Фрост) § 
- Прекращение поддержки Visual Studio 2013 (Микаэль Пакье) § 
- Прекращение поддержки HP-UX (Томас Манро) § 
- Прекращение поддержки HP/Intel Itanium (Томас Манро) § 
- Прекращение поддержки архитектур M68K, M88K, M32R и SuperH (Томас Манро) § § 
- Прекращение поддержки аутентификации по учётным данным SCM в libpq (Микаэль Пакье) § - Внутренняя поддержка этого метода аутентификации была прекращена в PostgreSQL 9.1. 
- Поддержка системы сборки meson (Андрес Фройнд, Назир Билал Явуз, Питер Эйзентраут) § - Впоследствии эта система сборки заменит Autoconf и MSVC для Windows. 
- Возможность задать расположение исполняемого файла openssl, используемого системой сборки (Питер Эйзентраут) § - Теперь можно указать программу openssl для configure или meson. 
- Добавление параметра сборки для тестирования сегментов WAL небольшого размера (Андрес Фройнд) § - Параметры сборки называются - --with-segsize-blocksи- -Dsegsize_blocks.
- Добавление параметров pgindent (Эндрю Дунстан) § § § § § § § - Добавлены параметры - --show-diff,- --silent-diff,- --commitи- --help, и теперь допускается задавать- --excludeмногократно. Кроме того, требуется явно указать файл определения типа. Параметры- --code-baseи- --buildбыли удалены.
- Добавление исходного кода pg_bsd_indent в основное дерево кода (Том Лейн) § 
- Улучшения make_ctags и make_etags (Юго Нагата) § 
- Изменение - pg_attributeдля повышения эффективности (Питер Эйзентраут) §
E.25.3.12. Дополнительные модули #
- Улучшение работы индексов из расширений по логическим столбцам (Цюань Цзунлян, Том Лейн) § 
- Поддержка Daitch-Mokotoff Soundex в fuzzystrmatch (Даг Лем) § 
- Возможность auto_explain протоколировать значения, передаваемые для параметризованных операторов (Дагфинн Ильмари Маннсакер) § - Это распространяется на запросы с - PREPARE/- EXECUTEна стороне сервера и разбором/привязкой параметров на стороне клиента. Протоколированием управляет параметр- auto_explain.log_parameter_max_length. По умолчанию параметры запросов записываются без ограничения длины.
- Использование значения - compute_query_idв режиме- log_verboseмодуля auto_explain (Атсуши Торикоши) §- Ранее в режиме - log_verboseне выводился идентификатор запроса даже при включённом параметре- compute_query_id.
- Изменение максимальной длины меток ltree с 256 до 1000 символов и возможность использовать в них дефисы (Гарен Торикян) § 
- Нормализация констант, используемых в служебных командах, в - pg_stat_statements(Микаэль Пакье) §- Ранее вместо местозаполнителей отображались константы, например - $1.
- Добавление функции - pg_get_wal_block_info()в pg_walinspect, возвращающей информацию о блоке WAL (Микаэль Пакье, Мелани Плейгман, Бхарат Рупиредди) § § § §
- Изменение интерпретации завершающих LSN функциями - pg_get_wal_records_info()и- pg_get_wal_stats()в pg_walinspect (Бхарат Рупиредди) §- Ранее при обработке завершающих LSN для несуществующих позиций WAL выдавались ошибки, тогда как теперь они интерпретируются как конец файла WAL. 
- Добавление подробного описания записей WAL в pg_walinspect и pg_waldump (Мелани Плейгман, Питер Гейган) § § § § 
- Добавление функции - bt_multi_page_stats()в pageinspect, возвращающей статистику по нескольким страницам (Хамид Ахтар) §- Эта функция подобна - bt_page_stats(), но работает для нескольких страниц.
- Добавление выходного столбца для пустых зон в функцию - brin_page_items()pageinspect (Томаш Вондра)
- Переработка модулей архивирования для увеличения гибкости (Натан Боссарт) § - Изменения инициализации требуют обновления модулей, написанных для предыдущих версий PostgreSQL. 
- Корректировка отслеживания строк pg_stat_statements запросов, передаваемых по расширенному протоколу (Сами Имсейх) § 
- Добавление функции - pg_buffercache_usage_counts()в pg_buffercache, возвращающей сводную информацию по счётчикам использования (Натан Боссарт) §
- Добавление функции - pg_buffercache_summary()в pg_buffercache, возвращающей сводную информацию о буферном кеше (Мелих Мутлу) §
- Возможность ссылаться на схемы требуемых расширений из скриптов расширений с использованием нового синтаксиса - @extschema:referenced_extension_name@(Регина Обе) §
- Возможность помечать требуемые расширения как неперемещаемые при помощи - no_relocate(Регина Обе) §- В результате - @extschema:referenced_extension_name@будет обрабатываться как константа на протяжении жизни расширения.
E.25.3.12.1. postgres_fdw #
- Возможность параллельного прерывания транзакций в postgres_fdw (Эцуро Фудзита) § - Для такого прерывания транзакций предназначен параметр postgres_fdw - parallel_abort.
- Повышение эффективности - ANALYZEдля сторонних таблиц postgres_fdw (Томаш Вондра) §- Метод выборки указывается в параметре postgres_fdw - analyze_sampling.
- Ограничение передачи констант типов - reg* в postgres_fdw только константами, ссылающимися на встроенные объекты или поставляемые расширения (Том Лейн)
- Обработка прерываний во время установки подключений модулями postgres_fdw и dblink (Андрес Фройнд) § 
E.25.4. Благодарственный список #
Перечисленные ниже (в алфавитном порядке) лица сделали вклад в этот выпуск, разрабатывая, совершенствуя и рецензируя код, принимая правки, проводя тестирование или сообщая о проблемах.
| Абхиджит Менон-Сен (Abhijit Menon-Sen) | 
| Адам Маклер (Adam Mackler) | 
| Аджин Чериан (Ajin Cherian) | 
| Аджит Авекар (Ajit Awekar) | 
| Адриан Клавер (Adrian Klaver) | 
| Айзек Морленд (Isaac Morland) | 
| Алан Ходжсон (Alan Hodgson) | 
| Алекс Денман (Alex Denman) | 
| Александр Алексеев (Aleksander Alekseev) | 
| Александр Кожемякин (Alex Kozhemyakin) | 
| Александр Королев (Alexander Korolev) | 
| Александр Коротков (Alexander Korotkov) | 
| Александр Лахин (Alexander Lakhin) | 
| Александр Пыхалов (Alexander Pyhalov) | 
| Алексей Борзов (Alexey Borzov) | 
| Алексей Ермаков (Alexey Ermakov) | 
| Алексей Махмутов (Alexey Makhmutov) | 
| Альваро Эррера (Álvaro Herrera) | 
| Амит Капила (Amit Kapila) | 
| Амит Ланготе (Amit Langote) | 
| Амит Хандекар (Amit Khandekar) | 
| Амул Сул (Amul Sul) | 
| Анастасия Лубенникова (Anastasia Lubennikova) | 
| Анбан Компани (Anban Company) | 
| Андреас Диджкмен (Andreas Dijkman) | 
| Андреас Карлссон (Andreas Karlsson) | 
| Андреас Шербаум (Andreas Scherbaum) | 
| Андрей Билле (Andrew Bille) | 
| Андрей Бородин (Andrey Borodin) | 
| Андрей Зубков (Andrei Zubkov) | 
| Андрей Лепихов (Andrey Lepikhov) | 
| Андрей Соколов (Andrey Sokolov) | 
| Андрес Фройнд (Andres Freund) | 
| Анкит Кумар Пандей (Ankit Kumar Pandey) | 
| Анте Крешич (Ante Kresic) | 
| Антон Волошин (Anton Voloshin) | 
| Антон Мельников (Anton Melnikov) | 
| Антон Сидякин (Anton Sidyakin) | 
| Антонин Хоуска (Antonin Houska) | 
| Арне Роланд (Arne Roland) | 
| Артем Анисимов (Artem Anisimov) | 
| Артур Закиров (Artur Zakirov) | 
| Асим Правин (Asim Praveen) | 
| Атсуши Торикоши (Atsushi Torikoshi) | 
| Ахсан Хади (Ahsan Hadi) | 
| Ашутош Бапат (Ashutosh Bapat) | 
| Ашутош Шарма (Ashutosh Sharma) | 
| Аяки Тачикаке (Ayaki Tachikake) | 
| Балаж Силфаи (Balazs Szilfai) | 
| Бенуа Лобро (Benoit Lobréau) | 
| Бернд Хелмле (Bernd Helmle) | 
| Бертран Друво (Bertrand Drouvot) | 
| Билва Санба (Bilva Sanaba) | 
| Боб Криер (Bob Krier) | 
| Борис Зентнер (Boris Zentner) | 
| Брар Пининг (Brar Piening) | 
| Бруно да Силва (Bruno da Silva) | 
| Брэд Николсон (Brad Nicholson) | 
| Брюс Момджян (Bruce Momjian) | 
| Бхарат Рупиредди (Bharath Rupireddy) | 
| Валери Вулард (Valerie Woolard) | 
| Ван Вэй (Wang Wei) | 
| Вейл Сонг (Whale Song) | 
| Вибхор Кумар (Vibhor Kumar) | 
| Вигнеш Си (Vignesh C) | 
| Вик Фиринг (Vik Fearing) | 
| Виктор Спирин (Victor Spirin) | 
| Виктория Шепард (Victoria Shepard) | 
| Вилл Мортенсен (Will Mortensen) | 
| Виталий Буровой (Vitaly Burovoy) | 
| Виталий Давыдов (Vitaly Davydov) | 
| Вольфганг Вальтер (Wolfgang Walther) | 
| Вэньцзин Цзэн (Wenjing Zeng) | 
| Гарен Торикян (Garen Torikian) | 
| Георгиос Коколатос (Georgios Kokolatos) | 
| Гийом Леларж (Guillaume Lelarge) | 
| Грег Старк (Greg Stark) | 
| Гуннар Блут (Gunnar Bluth) | 
| Гуннар Морлинг (Gunnar Morling) | 
| Гуржит Сингх (Gurjeet Singh) | 
| Давид Гайер (David Geier) | 
| Давид Туронь (David Turon) | 
| Давиндер Сингх (Davinder Singh) | 
| Даг Лем (Dag Lem) | 
| Дагфинн Ильмари Маннсакер (Dagfinn Ilmari Mannsåker) | 
| Даниель Вестерман (Daniel Westermann) | 
| Даниил Анисимов (Daniil Anisimov) | 
| Даниэле Вараццо (Daniele Varrazzo) | 
| Даниэль Ватцингер (Daniel Watzinger) | 
| Даниэль Верите (Daniel Vérité) | 
| Даниэль Густафссон (Daniel Gustafsson) | 
| Данкан Сэндс (Duncan Sands) | 
| Дейв Пейдж (Dave Page) | 
| Денис Лаксельд (Denis Laxalde) | 
| Джастин Призби (Justin Pryzby) | 
| Джастин Чжан (Justin Zhang) | 
| Джейкоб Спидел (Jacob Speidel) | 
| Джейкоб Чемпион (Jacob Champion) | 
| Джеймс Ваннс (James Vanns) | 
| Джеймс Информ (James Inform) | 
| Джеймс Коулман (James Coleman) | 
| Джефф Девис (Jeff Davis) | 
| Джефф Джейнс (Jeff Janes) | 
| Дживан Ладхе (Jeevan Ladhe) | 
| Джим Джонс (Jim Jones) | 
| Джо Конвей (Joe Conway) | 
| Джозеф Кошаков (Joseph Koshakow) | 
| Джон Нейлор (John Naylor) | 
| Джонатан С Кац (Jonathan S. Katz) | 
| Джоэл Джейкобсон (Joel Jacobson) | 
| Дилип Кумар (Dilip Kumar) | 
| Димос Стаматакис (Dimos Stamatakis) | 
| Дин Рашид (Dean Rasheed) | 
| Дмитрий Астапов (Dmitry Astapov) | 
| Дмитрий Долгов (Dmitry Dolgov) | 
| Дмитрий Коваль (Dmitry Koval) | 
| Дмитрий Кузьмин (Dmitriy Kuzmin) | 
| Донмин Лю (Dongming Liu) | 
| Дрю ДеВолт (Drew DeVault) | 
| Дэвид Гилман (David Gilman) | 
| Дэвид Дж. Джонстон (David G. Johnston) | 
| Дэвид Кимура (David Kimura) | 
| Дэвид Кристенсен (David Christensen) | 
| Дэвид Роули (David Rowley) | 
| Дэвид Стил (David Steele) | 
| Дэвид Чжан (David Zhang) | 
| Дэнни Шемеш (Danny Shemesh) | 
| Евгений Жужнев (Eugeny Zhuzhnev) | 
| Евгений Морозов (Evgeny Morozov) | 
| Егор Чиндяскин (Egor Chindyaskin) | 
| Екатерина Кирьянова (Ekaterina Kiryanova) | 
| Елена Индрупская (Elena Indrupskaya) | 
| Ерки Еэссаар (Erki Eessaar) | 
| Жеан-Гийом де Рорте (Jehan-Guillaume de Rorthais) | 
| Жиль Даролд (Gilles Darold) | 
| Жюльен Розе (Julien Roze) | 
| Жюльен Руо (Julien Rouhaud) | 
| Ибрар Ахмед (Ibrar Ahmed) | 
| Израэл Барт (Israel Barth Rubio) | 
| Илья Гладышев (Ilya Gladyshev) | 
| Илья Ненашев (Ilya Nenashev) | 
| Иэн Барвик (Ian Barwick) | 
| Йелте Феннема (Jelte Fennema) | 
| Йозеф Шиманек (Josef Šimánek) | 
| Карина Лицкевич (Karina Litskevich) | 
| Карл О. Пинц (Karl O. Pinc) | 
| Карл Сопчак (Carl Sopchak) | 
| Кевин Маккиббин (Kevin McKibbin) | 
| Кен Като (Ken Kato) | 
| Киран Маккаскер (Kieran McCusker) | 
| Кирк Волак (Kirk Wolak) | 
| Константин Книжник (Konstantin Knizhnik) | 
| Кори Хинкер (Corey Huinker) | 
| Котаро Кавамото (Kotaro Kawamoto) | 
| Коши Шибагаки (Koshi Shibagaki) | 
| Крейг Рингер (Craig Ringer) | 
| Крис Трэверс (Chris Travers) | 
| Кристоф Берг (Christoph Berg) | 
| Кристоф Петтус (Christophe Pettus) | 
| Куй Лю (Kui Liu) | 
| Курт Коловсон (Curt Kolovson) | 
| Кэйсукэ Курода (Keisuke Kuroda) | 
| Кэри Хуан (Cary Huang) | 
| Кётаро Хоригути (Kyotaro Horiguchi) | 
| Лакшми Нараян Шритар (Lakshmi Narayanan Sreethar) | 
| Лауренц Альбе (Laurenz Albe) | 
| Ли Дон Ук (Lee Dong Wook) | 
| Лоуренс Пэрри (Laurence Parry) | 
| Лука Феррари (Luca Ferrari) | 
| Лукас Фиттл (Lukas Fittl) | 
| Магнус Хагандер (Magnus Hagander) | 
| Майк Ох (Mike Oh) | 
| Майя Заложник (Maja Zaloznik) | 
| Максим Орлов (Maxim Orlov) | 
| Максим Яблоков (Maxim Yablokov) | 
| Марина Полякова (Marina Polyakova) | 
| Марк Дилгер (Mark Dilger) | 
| Марко Тииккая (Marko Tiikkaja) | 
| Маркус Винанд (Markus Winand) | 
| Марсель Хофштеттер (Marcel Hofstetter) | 
| Мартейн Ван Остерхаут (Martijn van Oosterhout) | 
| Мартин Калхер (Martin Kalcher) | 
| Мартин Юрча (Martin Jurca) | 
| Масао Фудзии (Masao Fujii) | 
| Масахико Савада (Masahiko Sawada) | 
| Масахиро Икеда (Masahiro Ikeda) | 
| Матеус Алькантара (Matheus Alcantara) | 
| Матс Киндаль (Mats Kindahl) | 
| Маттейс ван дер Влётен (Matthijs van der Vleuten) | 
| Маттиас ван де Меент (Matthias van de Meent) | 
| Мачик Сакрейда (Maciek Sakrejda) | 
| Мейсон Шарп (Mason Sharp) | 
| Мелани Плейгман (Melanie Plageman) | 
| Мелих Мутлу (Melih Mutlu) | 
| Мехмет Эмин Каракас (Mehmet Emin Karakas) | 
| Мика Гейтс (Micah Gates) | 
| Микаэль Пакье (Michael Paquier) | 
| Мингли Чжан (Mingli Zhang) | 
| Мирослав Бендик (Miroslav Bendik) | 
| Михаил Грибков (Mikhail Gribkov) | 
| Михаил Николаев (Michail Nikolaev) | 
| Михаэль Банк (Michael Banck) | 
| Мишель Пельтье (Michel Pelletier) | 
| Мэри Сюй (Mary Xu) | 
| Мё Вай Тан (Myo Wai Thant) | 
| Назир Билал Явуз (Nazir Bilal Yavuz) | 
| Наим Ахтер (Naeem Akhter) | 
| Наоки Окано (Naoki Okano) | 
| Натан Боссарт (Nathan Bossart) | 
| Неха Шарма (Neha Sharma) | 
| Ник Бабаджанян (Nick Babadzhanian) | 
| Никита Глухов (Nikita Glukhov) | 
| Никола Конту (Nicola Contu) | 
| Николай Самохвалов (Nikolay Samokhvalov) | 
| Николай Шаплов (Nikolay Shaplov) | 
| Никхил Шетти (Nikhil Shetty) | 
| Нитин Ядав (Nitin Jadhav) | 
| Нишант Шарма (Nishant Sharma) | 
| Нобору Сайто (Noboru Saito) | 
| Ной Миш (Noah Misch) | 
| Нориёси Синода (Noriyoshi Shinoda) | 
| Нуко Иокогама (Nuko Yokohama) | 
| Олег Бартунов (Oleg Bartunov) | 
| Олег Целебровский (Oleg Tselebrovskiy) | 
| Олли Беттс (Olly Betts) | 
| Ондер Каладжи (Onder Kalaci) | 
| Онур Тиртир (Onur Tirtir) | 
| Пабло Федерико (Pablo Federico) | 
| Павел Борисов (Pavel Borisov) | 
| Павел Кулаков (Pavel Kulakov) | 
| Павел Лузанов (Pavel Luzanov) | 
| Павел Стехуле (Pavel Stehule) | 
| Палле Гиргензон (Palle Girgensohn) | 
| Питер Гейган (Peter Geoghegan) | 
| Питер Смит (Peter Smith) | 
| Питер Эйзентраут (Peter Eisentraut) | 
| Платон Пронко (Platon Pronko) | 
| Пол Гуо (Paul Guo) | 
| Пол Рамсей (Paul Ramsey) | 
| Пол Юнгвирт (Paul Jungwirth) | 
| Пшемыслав Штох (Przemyslaw Sztoch) | 
| Пэйфэн Цю (Peifeng Qiu) | 
| Райнер Петерке (Reiner Peterke) | 
| Ранье Вилела (Ranier Vilela) | 
| Регина Обе (Regina Obe) | 
| Рид Томпсон (Reid Thompson) | 
| Рииво Колка (Riivo Kolka) | 
| Ричард Гуо (Richard Guo) | 
| Ришу Багга (Rishu Bagga) | 
| Роберт Трит (Robert Treat) | 
| Роберт Хаас (Robert Haas) | 
| Роберт Шёблом (Robert Sjöblom) | 
| Роберто Мелло (Roberto Mello) | 
| Робинс Таракан (Robins Tharakan) | 
| Роман Жарков (Roman Zharkov) | 
| Ронан Данклау (Ronan Dunklau) | 
| Рушаб Латиа (Rushabh Lathia) | 
| Рэйчел Хитон (Rachel Heaton) | 
| Рё Мацумура (Ryo Matsumura) | 
| Саймон Риггс (Simon Riggs) | 
| Сами Имсейх (Sami Imseih) | 
| Сандип Таккар (Sandeep Thakkar) | 
| Сандро Сантилли (Sandro Santilli) | 
| Свен Клемм (Sven Klemm) | 
| Себастьян Лардье (Sébastien Lardière) | 
| Себастьян Флеш (Sebastien Flaesch) | 
| Сергей Беляшов (Sergey Belyashov) | 
| Сергей Панков (Sergey Pankov) | 
| Сергей Шиндерук (Sergey Shinderuk) | 
| Сероп Саркуни (Sehrope Sarkuni) | 
| Син Вэнь (Xin Wen) | 
| Син Го (Xing Guo) | 
| Синван Сюй (Xingwang Xu) | 
| Синди Сенорита (Sindy Senorita) | 
| Синъя Като (Shinya Kato) | 
| Сириша Чамарти (Sirisha Chamarthi) | 
| Стефан Ташуар (Stéphane Tachoires) | 
| Стив Чавес (Steve Chavez) | 
| Стивен Фрост (Stephen Frost) | 
| Стоун Тикл (Stone Tickle) | 
| Сюэцзин Чжао (XueJing Zhao) | 
| Такамити Осуми (Takamichi Osumi) | 
| Такэси Идэриха (Takeshi Ideriha) | 
| Тацуо Исии (Tatsuo Ishii) | 
| Тацухиро Накамори (Tatsuhiro Nakamori) | 
| Теджа Муппарти (Teja Mupparti) | 
| Тендер Ван (Tender Wang) | 
| Тим Кэри-Смит (Tim Carey-Smith) | 
| Тим Филд (Tim Field) | 
| Тимо Штольц (Timo Stolz) | 
| Том Браун (Thom Brown) | 
| Том Лейн (Tom Lane) | 
| Томас Маккей (Thomas Mc Kay) | 
| Томас Манро (Thomas Munro) | 
| Томас Хабетс (Thomas Habets) | 
| Томаш Вондра (Tomas Vondra) | 
| Тор Эрик Линнеруд (Tor Erik Linnerud) | 
| Торстен Фёрч (Torsten Förtsch) | 
| Тристан Партин (Tristan Partin) | 
| Трой Фрерикс (Troy Frericks) | 
| Тушар Ахуджа (Tushar Ahuja) | 
| Тьягу Нунес (Thiago Nunes) | 
| Фабрицио де Ройес Мелло (Fabrízio de Royes Mello) | 
| Фариас де Оливейра (Farias de Oliveira) | 
| Фил Флорент (Phil Florent) | 
| Филипп Годфрин (Philippe Godfrin) | 
| Флорин Ирион (Florin Irion) | 
| Франц-Йозеф Фербер (Franz-Josef Färber) | 
| Фёдор Сигаев (Teodor Sigaev) | 
| Хайато Курода (Hayato Kuroda) | 
| Хайин Тан (Haiying Tang) | 
| Хайме Казанова (Jaime Casanova) | 
| Хайян Ван (Haiyang Wang) | 
| Хамид Ахтар (Hamid Akhtar) | 
| Ханс Бушман (Hans Buschmann) | 
| Хао Ву (Hao Wu) | 
| Хейкки Линнакангас (Heikki Linnakangas) | 
| Химаншу Упадхьяя (Himanshu Upadhyaya) | 
| Хината Мицуру (Mitsuru Hinata) | 
| Хисахиро Каучи (Hisahiro Kauchi) | 
| Хит Лорд (Heath Lord) | 
| Хоу Чжицзе (Hou Zhijie) | 
| Хуан Хосе Сантамария Флеча (Juan José Santamaría Flecha) | 
| Хуберт Любачевски (Hubert Lubaczewski) | 
| Хунъюй Сонг (Hongyu Song) | 
| Хунь Нгуен (Hung Nguyen) | 
| Цзиньбао Чен (Jinbao Chen) | 
| Цзумин Цзян (Zuming Jiang) | 
| Цзюньван Жао (Junwang Zhao) | 
| Цзянь Хи (Jian He) | 
| Цюань Цзунлян (Quan Zongliang) | 
| Чанхун Фей (Changhong Fei) | 
| Чжихун Юй (Zhihong Yu) | 
| Чжэнь Ли (Zheng Li) | 
| Чжэнь Мин Ян (Zhen Ming Yang) | 
| Шамай Шарма (Samay Sharma) | 
| Швета Маллик (Shveta Mallik) | 
| Ши Юй (Shi Yu) | 
| Шо Като (Sho Kato) | 
| Шраван Кумар (Sravan Kumar) | 
| Шрути Говда (Shruthi Gowda) | 
| Эван Джонс (Evan Jones) | 
| Эд Маст (Ed Maste) | 
| Эйлер Тавейра (Euler Taveira) | 
| Эммануэль Кенсро (Emmanuel Quincerot) | 
| Эндрю Алсуп (Andrew Alsup) | 
| Эндрю Гирт (Andrew Gierth) | 
| Эндрю Дунстан (Andrew Dunstan) | 
| Эндрю Кеспер (Andrew Kesper) | 
| Эрвин Брандштеттер (Erwin Brandstetter) | 
| Эрик Мутта (Eric Mutta) | 
| Эрик Рижкерс (Erik Rijkers) | 
| Эцуро Фудзита (Etsuro Fujita) | 
| Юго Нагата (Yugo Nagata) | 
| Юмю Мо (Youmiu Mo) | 
| Юрий Соколов (Yura Sokolov) | 
| Юта Кацураги (Yuta Katsuragi) | 
| Якуб Вартак (Jakub Wartak) | 
| Ян Вик (Jan Wieck) | 
| Яньлян Лэй (Yanliang Lei) | 
| Япинь Ли (Japin Li) |