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. 
- Новый параметр - ON_ERROR ignoreв- COPY, позволяющий продолжать копирование даже в случае ошибки.
Предыдущие пункты и другие новые возможности 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(Джозеф Кошаков) § §- Кроме того, теперь запрещается многократное использование пустых единиц измерения в значениях типа interval. 
- Удаление серверной переменной - old_snapshot_threshold(Томас Манро) §- Эта переменная позволяла процессу VACUUM удалять строки, которые потенциально были видимыми для выполняющихся транзакций, и если транзакции пытались получить к ним доступ, возникали ошибки типа «snapshot too old» (снимок слишком стар). Если найдётся более удачная реализация, функциональность может быть добавлена обратно в PostgreSQL в будущем. 
- Изменение обработки статуса суперпользователя для начального пользователя сеанса командой - SET SESSION AUTHORIZATION(Джозеф Кошаков) §- Теперь поведение команды зависит от наличия статуса суперпользователя у пользователя в момент выполнения команды - SET SESSION AUTHORIZATION, а не на момент подключения к базе данных.
- Удаление функциональности симуляции поддержки пользователей на уровне отдельных БД (Натан Боссарт) § - Эта функциональность ( - db_user_namespace) использовалась редко.
- Удаление дополнительного модуля adminpack (Даниэль Густафссон) § - Ранее этот модуль использовался инструментом pgAdmin III, поддержка которого закончилась. 
- Удаление значения - fsync_writethroughдля wal_sync_method в Windows (Томас Манро) §- Это значение было эквивалентно - fsyncв Windows.
- Изменение в обработке границ файлов двумя функциями, связанными с именами файлов WAL (Кётаро Хоригути, Андрес Фройнд, Брюс Момджян) § - Раньше функции - pg_walfile_name()и- pg_walfile_name_offset()возвращали номер предыдущего сегмента LSN, когда LSN был на границе сегмента файла; теперь они возвращают текущий сегмент LSN.
- Удаление ставшей ненужной серверной переменной - trace_recovery_messages(Бхарат Рупиредди) §
- Удаление столбца - 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.
- Отображение цели сбора статистики по умолчанию как - NULLв столбцах- pg_attribute.- attstattargetи- pg_statistic_ext.- stxstattarget(Питер Эйзентраут) § §
- Переименование - pg_collation.- colliculocaleв- colllocaleи- pg_database.- daticulocaleв- datlocale(Джефф Девис)§
- Переименование столбцов - max_dead_tuplesв- max_dead_tuple_bytes,- num_dead_tuplesв- num_dead_item_idsи добавление- dead_tuple_bytesв представление- pg_stat_progress_vacuum(Масахико Савада) § §
- Переименование столбцов SLRU в системном представлении - pg_stat_slru(Альваро Эррера) §- Кроме того, изменились и имена столбцов, которые принимает функция - pg_stat_reset_slru().
E.7.3. Изменения #
Ниже вы найдёте подробный список изменений, произошедших между предыдущим основным выпуском и выпуском PostgreSQL 17.
E.7.3.1. Сервер #
E.7.3.1.1. Оптимизатор #
- Возможность для оптимизатора улучшать планы с CTE с учётом статистики и порядка сортировки столбцов, из которых выводятся строки в ранних частях запроса (Цзянь Гуо, Ричард Гуо, Том Лейн) § § 
- Улучшение оптимизации запросов с условиями - IS NOT NULLи- IS NULL(Дэвид Роули, Ричард Гуо, Энди Фан) §- Теперь оптимизатор удаляет ограничение - IS NOT NULLдля запросов по столбцам- NOT NULLи исключает сканирование по столбцам- NOT NULLпри использовании условия- IS NULL.
- Возможность отсекать секции при использовании условий - IS [NOT] UNKNOWNдля логических столбцов (Дэвид Роули) §
- Улучшение оптимизации запросов с использованием операторов включения в диапазон <@ и @> (Ким Йохан Андерссон, Цзянь Хи) § 
- Возможность преобразования коррелирующих подзапросов - INв JOIN (Энди Фан, Том Лейн) §
- Улучшение оптимизации запросов с предложением - LIMITдля секционированных таблиц, таблиц с наследованием и для- UNION ALL(Энди Фан, Дэвид Роули) §
- Увеличение числа случаев, в которых можно запускать узлы запросов в параллельном режиме (Том Лейн) § 
- Возможность упорядочивать столбцы - 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. Индексы #
E.7.3.1.3. Общая производительность #
- Более эффективное удаление и заморозка кортежей в процессе - VACUUM(Мелани Плейгман, Хейкки Линнакангас) §- Теперь в процессе очистки генерируется меньше трафика WAL. 
- Более эффективное хранение ссылок на кортежи процессом очистки (Масахико Савада, Джон Нейлор) § § § § - Кроме того, для процесса очистки удалено скрытое ограничение памяти в 1 ГБ, ранее действовавшее даже при повышенных значениях maintenance_work_mem или autovacuum_work_mem. 
- Оптимизация очистки отношений без индексов (Мелани Плейгман) § 
- Увеличение значения по умолчанию до 2 МБ для vacuum_buffer_usage_limit (Томас Манро) § 
- Улучшение производительности при проверке ролей с членством во множестве ролей (Натан Боссарт) § 
- Улучшение производительности записи в 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.
- Добавление событий ожидания для задержек контрольных точек (Томас Манро) § 
- Возможность отслеживать обработку индексов в процессе очистки (Сами Имсейх) - Эту информацию можно найти в столбцах - indexes_totalи- indexes_processedсистемного представления- pg_stat_progress_vacuum.
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, ограничивающей длительность транзакций (Андрей Бородин, Япинь Ли, Цзюньван Жао, Александр Коротков) § § § 
- Добавление платформонезависимого провайдера правил сортировки builtin (Джефф Девис) § § § § - Он поддерживает правила сортировки - Cи- C.UTF-8.
- Добавление серверной переменной huge_pages_status, выводящей информацию об использовании огромных страниц (Джастин Призби) § - Используется, когда для 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().
- Добавление системного идентификатора в файлы манифестов копий файловой системы (Амул Сул) § - Это полезно для обнаружения попыток использования неверных журналов WAL. 
- Указание значения параметра строки подключения - dbnameпри записи информации о подключении в файл- postgresql.auto.confпрограммой pg_basebackup (Вигнеш Си, Хайато Курода) §
- Добавление столбца - pg_replication_slots.- invalidation_reasonдля отображения причины аннулирования слотов (Швета Малик, Бхарат Рупиредди) § §
- Добавление столбца - pg_replication_slots.- inactive_sinceдля отображения время неактивности слотов (Бхарат Рупиредди) § § §
- Добавление функции - pg_sync_replication_slots()для синхронизации слотов логической репликации (Хоу Чжицзе, Швета Малик, Аджин Чериан, Питер Эйзентраут) § §
- Добавление свойства - failoverв протокол репликации (Хоу Чжицзе, Швета Малик) §
E.7.3.1.8. Логическая репликация #
- Добавление приложения pg_createsubscriber для создания логической реплики из резервного сервера физической репликации (Эйлер Тавейра)§ 
- Возможность миграции рабочих слотов и подписок логической репликации pg_upgrade (Хайато Курода, Хоу Чжицзе, Вигнеш Си, Жюльен Руо, Шлок Кьял) § § - Теперь репликация может продолжаться сразу после миграции; поддерживается для кластеров PostgreSQL, начиная с версии 17. 
- Автоматическое переключение слотов логической репликации при обработке отказа (Хоу Чжицзе, Швета Малик, Аджин Чериан)§ - Для включения функциональности предназначен необязательный пятый аргумент функции - pg_create_logical_replication_slot().
- Добавление серверной переменной sync_replication_slots, включающей синхронизацию слотов логической репликации при автоматическом переключении для отработки отказа (Швета Малик, Хоу Чжицзе, Питер Смит) § § 
- Возможность управления поведением при обработке отказа логической репликации в командах - CREATE/ALTER SUBSCRIPTION(Швета Малик, Хоу Чжицзе, Аджин Чериан) § §
- Возможность использования хеш-индексов на стороне подписчика для применения изменений логической репликации (Хайато Курода) § - Ранее для этой цели могли использоваться только индексы btree. 
- Улучшение производительности логического декодирования для случаев с множеством подтранзакций (Масахико Савада) § 
- Реализация перезапуска рабочих процессов, применяющих изменения логической репликации, если у владельца подписки отозваны права суперпользователя (Вигнеш Си) § - При этом требуется повторная аутентификация. 
- Добавление параметра - flushв функцию- pg_logical_emit_message()(Микаэль Пакье) §- С этим параметром сообщения гарантированно сохраняются. 
- Указание физических резервных серверов, которые должны быть синхронизированы перед тем, как данные станут видимыми для подписчиков (Хоу Чжицзе, Швета Малик) § § - Серверы указываются в новой переменной synchronized_standby_slots. 
- Добавление столбца с типом рабочего процесса в - pg_stat_subscription(Питер Смит) §
E.7.3.2. Служебные команды #
- Добавление нового параметра - ON_ERROR ignoreв- COPY, позволяющего игнорировать строки с ошибками (Дамир Белялов, Атсуши Торикоши, Александр Шульгин, Цзянь Хи, Юго Нагата) § § § §- По умолчанию поведение осталось прежним: - ON_ERROR stop.
- Добавление нового параметра - LOG_VERBOSITYв- COPYдля вывода игнорируемых строк с ошибками- COPY FROM(Бхарат Рупиредди) §
- Вывод количества пропущенных строк при обработке командой - COPY FROM(Атсуши Торикоши) §- Эта информация выводится в столбце системного представления - pg_stat_progress_copy.- tuples_skipped.
- Возможность указывать, что все значения в столбцах в команде - COPY FROMдолжны быть принудительно установлены в NULL или NOT NULL (Чжан Минли) §
- Поддержка столбцов идентификации для секционированных таблиц (Ашутош Бапат) § 
- Поддержка ограничений-исключений для секционированных таблиц (Пол А. Юнгвирт) § - Чтобы ограничения-исключения работали корректно для секционированных таблиц, они должны сравнивать части ключей секционирования на равенство, при этом другие столбцы могут использовать специфичные для ограничений-исключений сравнения. 
- Добавление более понятного метода использования - ALTER TABLEдля указания столбца ориентира статистики по умолчанию (Питер Эйзентраут) §- Добавлен синтаксис - ALTER TABLE ... SET STATISTICS DEFAULT; устаревший синтаксис- SET STATISTICS -1всё ещё поддерживается.
- Возможность изменять выражение для генерируемых столбцов с помощью - ALTER TABLE(Амул Сул) §- Для этого используется команда - ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION.
- Возможность указывать метод доступа для секционированных таблиц (Джастин Призби, Соумйадип Чакраборти, Микаэль Пакье) § § 
- Добавление значения - DEFAULTдля- ALTER TABLE .. SET ACCESS METHOD(Микаэль Пакье) §
- Поддержка событийных триггеров, срабатывающих при установлении соединения с БД (Константин Книжник, Михаил Грибков)§ 
- Поддержка событийных триггеров для - REINDEX(Гаррет Торнбург, Цзянь Хи)§
- Поддержка использования синтаксиса в скобках для параметров - CLUSTER, если имя таблицы не указано (Натан Боссарт) §
- Возможность выводить информацию об использовании памяти оптимизатором в - EXPLAIN(Ашутош Бапат) §- Вывести эту информацию можно при помощи параметра - MEMORY.
- Добавление в - EXPLAINпараметра- SERIALIZEдля вывода стоимости преобразования данных для передачи по сети (Степан Руц, Маттиас ван де Меент) §
- Возможность для - EXPLAINотображать статистику времени чтения и записи локальных блоков в выводе с параметром- BUFFERS(Назир Билал Явуз) §
- Улучшение отображения узлов SubPlan и выходных параметров в - EXPLAIN(Том Лейн, Дин Рашид) §
- Отображение информации - deform_counterпри использовании JIT-компиляции в выводе- EXPLAIN(Дмитрий Долгов) §
E.7.3.3. Типы данных #
- Поддержка значений - +/-infinityв типе данных- interval(Джозеф Кошаков, Цзянь Хи, Ашутош Бапат) §
- Возможность использовать тип - ENUM, добавленный посредством- ALTER TYPE, если тип был создан в той же транзакции (Том Лейн)§- Ранее такой сценарий не допускался. 
- Возможность модифицировать изменяемые представления командой - MERGE(Дин Рашид)§
- Добавление - WHEN NOT MATCHED BY SOURCEв- MERGE(Дин Рашид) §- Условие - WHEN NOT MATCHEDи ранее поддерживалось для целевых строк.
- Возможность использовать предложение - RETURNINGв- MERGE(Дин Рашид) §- Новая функция - merge_action()в- RETURNINGпозволяет получить информацию о 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принимает только числовые смещения.
- Возможность указывать часовой пояс сеанса как - AS 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 для значения (Юго Нагата) §- Если значение хранится не в виде TOAST, функция возвращает - NULL.
- Добавление функции для изменения паролей ролям в libpq (Джо Конвей) § - Добавлена функция - PQchangePassword(), которая хеширует новый пароль перед отправкой на сервер.
- Добавление функций закрытия порталов и подготовленных операторов (Йелте Феннема-Нио) § - Добавлены следующие функции: - PQclosePrepared(),- PQclosePortal(),- PQsendClosePrepared()и- PQsendClosePortal().
- Добавление в libpq API, который позволяет отправлять как блокирующие, так и неблокирующие запросы на отмену с возможностью шифрования, если оно уже используется в соединении (Йелте Феннема-Нио) § - Ранее поддерживались только блокирующие запросы на отмену без шифрования. 
- Добавление в 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 через CTRL+C (Тристан Партин) § 
- Поддержка - FETCH_COUNTдля команд, отличных от- SELECT, в psql (Даниэль Верите) §
- Улучшение дополнения табуляцией в psql (Дагфинн Ильмари Маннсакер, Жиль Даролд, Кристоф Хейсс, Стив Чавес, Вигнеш Си, Павел Борисов, Цзянь Хи) § § § § § § § § 
E.7.3.9. Серверные приложения #
- Добавление приложения pg_walsummary для выгрузки файлов сводок WAL (Роберт Хаас) § 
- Возможность восстанавливать большие объекты pg_dump порциями (Том Лейн) § - Если в базе данных много больших объектов, это нововведение поможет избежать ограничения на размер транзакции. Кроме того, восстановление можно выполнять параллельно. 
- Добавление в 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для восстановления объекта в нескольких транзакциях (Том Лейн) §- Это нововведение позволяет сохранить преимущества работы с порциями транзакций, одновременно предотвращая проблемы, связанные с большими блоками транзакций. 
- Изменение параметра режима отладки в pgbench с - -dна- --debug(Грег Сабино Маллейн) §- Ключ - -dтеперь используется для указания имени базы данных, для этого же предназначен и новый ключ- --dbname.
- Добавление в pgbench ключа - --exit-on-abortдля завершения работы при прерывании работы любого клиента (Юго Нагата) §
- Добавление в pgbench команды - \syncpipeline, позволяющей отправлять сообщения синхронизации (Антонин Боннефой) §
- Поддержка удаления файлов истории резервного копирования для pg_archivecleanup (Атсуши Торикоши)§ - Для этого используется ключ - --clean-backup-history.
- Добавление нескольких длинных ключей в pg_archivecleanup (Атсуши Торикоши) § - Добавлены следующие ключи: - --debug,- --dry-runи- --strip-extension.
- Возможность для pg_basebackup и pg_receivewal использовать имя базы данных в спецификации подключения (Йелте Феннема-Нио) § - Это нововведение особенно полезно для пулов соединений, учитывающих имена баз данных. 
- Добавление в 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 (Хейкки Линнакангас) § 
- Удаление параметра сборки PostgreSQL, специфичного для Microsoft Visual Studio (Микаэль Пакье)§ - Теперь в среде Visual Studio возможна сборка только с Meson. 
- Удаление параметра configure - --disable-thread-safety(Томас Манро, Хейкки Линнакангас) § §- Предполагается, что на всех платформах есть необходимая поддержка потоков. 
- Удаление параметра configure - --with-CC(Хейкки Линнакангас) §- Теперь указать компилятор можно только в переменной среды - CC.
- Исключение получения данных с завершающим нулём функциями для пользовательских типов данных (Дэвид Роули) § 
- Добавление инкрементального анализатора - JSONдля работы с огромными документами- JSON(Эндрю Дунстан) §
- Преобразование верхнеуровневого файла - READMEв формат Markdown (Натан Боссарт) §
- Удаление ставшего ненужным верхнеуровневого файла - INSTALL(Том Лейн) §
- Удаление параметра make - distprep(Питер Эйзентраут) §
- Добавление поддержки make для разделяемых библиотек Android (Питер Эйзентраут) § 
- Добавление внутренней поддержки точек внедрения (Микаэль Пакье) § § § § - Точки внедрения используются для отладки сервера; их поддержка должна быть включена во время компиляции. 
- Добавление реестра сегментов динамической разделяемой памяти (Натан Боссарт) § - Теперь разделяемые библиотеки, не загруженные при запуске сервера, могут координировать использование динамической разделяемой памяти. 
- Исправление - emit_log_hookтак, чтобы этот обработчик использовал то же значение времени, что и другие записи журнала для того же запроса (Камбам Винай, Микаэль Пакье) §
- Улучшение документации по использованию - jsonpathдля проверок предикатов (Дэвид Уилер) §
E.7.3.11. Дополнительные модули #
- Возможность проталкивать запросы JOIN с условиями, не связанными с объединением, на сторонние серверы и на нестандартное сканирование (Ричард Гуо, Эцуро Фудзита) § - Обёртки сторонних данных и методы нестандартного сканирования необходимо адаптировать для поддержки этого изменения. 
- Возможность проталкивать подзапросы - EXISTSи- INна сторонние серверы postgres_fdw (Александр Пыхалов) §
- Увеличение значения по умолчанию для стоимости кортежей от обёрток сторонних данных (Дэвид Роули, Умайр Шахид) § § - Это значение используется оптимизатором. 
- Возможность прерывать операции, выполняемые с помощью dblink (Ной Миш) § 
- Возможность создания хеш-индексов по столбцам ltree (Томми Павличек) § - Теперь также возможно соединение и агрегирование по хешу по столбцам ltree. 
- Возможность включать пробелы и кавычки в правила преобразования символов в unaccent (Микаэль Пакье) - Изменён синтаксис файла - unaccent.rules.
- Возможность для amcheck проверять нарушения уникальных ограничений с помощью нового ключа - --checkunique(Анастасия Лубенникова, Павел Борисов, Максим Орлов) §
- Прохождение тестов citext в режиме OpenSSL FIPS (Питер Эйзентраут) § 
- Прохождение тестов pgcrypto в режиме OpenSSL FIPS (Питер Эйзентраут) § 
- Удаление некоторых неиспользуемых макросов SPI (Бхарат Рупиредди) § 
- Возможность для - ALTER OPERATORизменять дополнительные атрибуты оптимизации (Томми Павличек)§- Это обновление полезно для разработки расширений. 
- Возможность для расширений определять пользовательские события ожидания (Масахиро Икеда) § § § § - Эта возможность была добавлена для 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.
- Добавление информации - deform_counterпри использовании JIT-компиляции в- pg_stat_statements(Дмитрий Долгов) §
- Добавление необязательного четвёртого аргумента ( - minmax_only) в функцию- pg_stat_statements_reset(), который позволяет сбросить только статистику максимальных/минимальных значений (Андрей Зубков) §- По умолчанию значение этого аргумента — - false.
- Добавление в - pg_stat_statementsстолбцов- stats_sinceи- minmax_stats_since, в которых отслеживается время создания записи и время последнего сброса минимальных/максимальных значений (Андрей Зубков) §
E.7.4. Благодарственный список #
Перечисленные ниже (в алфавитном порядке) лица сделали вклад в этот выпуск, разрабатывая, совершенствуя и рецензируя код, принимая правки, проводя тестирование или сообщая о проблемах.
| Абхиджит Менон-Сен (Abhijit Menon-Sen) | 
| Аджин Чериан (Ajin Cherian) | 
| Аднан Даутович (Adnan Dautovic) | 
| Айдар Имамов (Aidar Imamov) | 
| Айзек Морленд (Isaac Morland) | 
| Акаш Шанкаран (Akash Shankaran) | 
| Акшат Джаймини (Akshat Jaimini) | 
| Алаа Аттия (Alaa Attya) | 
| Алекс Ворк (Alex Work) | 
| Алекс Малек (Alex Malek) | 
| Алекс Ше (Alex Hsieh) | 
| Александр Алексеев (Aleksander Alekseev) | 
| Александр Кожемякин (Alexander Kozhemyakin) | 
| Александр Коротков (Alexander Korotkov) | 
| Александр Кузьменков (Alexander Kuzmenkov) | 
| Александр Лахин (Alexander Lakhin) | 
| Александр Пыхалов (Alexander Pyhalov) | 
| Александр Шульгин (Alex Shulgin) | 
| Алексей Орлов (Aleksej Orlov) | 
| Алексей Палажченко (Alexey Palazhchenko) | 
| Альваро Эррера (Álvaro Herrera) | 
| Альфонс Кемпер (Alfons Kemper) | 
| Алёна Рыбакина (Alena Rybakina) | 
| Амадео Гальярдо (Amadeo Gallardo) | 
| Амит Капила (Amit Kapila) | 
| Амит Ланготе (Amit Langote) | 
| Амул Сул (Amul Sul) | 
| Анастасия Лубенникова (Anastasia Lubennikova) | 
| Анатолий Зарецкий (Anatoly Zaretsky) | 
| Андреас Карлссон (Andreas Karlsson) | 
| Андреас Ульбрих (Andreas Ulbrich) | 
| Андрей Билле (Andrew Bille) | 
| Андрей Бородин (Andrey Borodin) | 
| Андрей Зубков (Andrei Zubkov) | 
| Андрей Лепихов (Andrey Lepikhov) | 
| Андрей Рачицкий (Andrey Rachitskiy) | 
| Андрей Соколов (Andrey Sokolov) | 
| Андрес Фройнд (Andres Freund) | 
| Антон Волошин (Anton Voloshin) | 
| Антон Кирилов (Anton Kirilov) | 
| Антон Мельников (Anton Melnikov) | 
| Антонин Боннефой | 
| Антонин Хоуска (Antonin Houska) | 
| Антс Аасма (Ants Aasma) | 
| Антти Лампинен (Antti Lampinen) | 
| Арамаки Зяке (Aramaki Zyake) | 
| Артем Анисимов (Artem Anisimov) | 
| Артур Закиров (Artur Zakirov) | 
| Атсуши Торикоши (Atsushi Torikoshi) | 
| Аттила Гуляш (Attila Gulyás) | 
| Ашутош Бапат (Ashutosh Bapat) | 
| Ашутош Шарма (Ashutosh Sharma) | 
| Аюш Ватса (Ayush Vatsa) | 
| Аюш Тивари (Ayush Tiwari) | 
| Бартош Хрол (Bartosz Chrol) | 
| Бенуа Райдер (Benoît Ryder) | 
| Бернд Хелмле (Bernd Helmle) | 
| Бертран Друво (Bertrand Drouvot) | 
| Бо Андресон (Bo Andreson) | 
| Боуэн Ши (Bowen Shi) | 
| Бошоми Феникс (Boshomi Phenix) | 
| Боюй Ян (Boyu Yang) | 
| Брюс Момджян (Bruce Momjian) | 
| Бхарат Рупиредди (Bharath Rupireddy) | 
| Валери Вулард (Valerie Woolard) | 
| Валлимахараджан Г (Vallimaharajan G) | 
| Вася Бойцов (Vasya Boytsov) | 
| Вигнеш Си (Vignesh C) | 
| Видуши Гупта (Vidushi Gupta) | 
| Вик Фиринг (Vik Fearing) | 
| Виктор Вагнер (Victor Wagner) | 
| Виктор Егоров (Victor Yegorov) | 
| Виктор Лейс (Viktor Leis) | 
| Виктория Шепард (Victoria Shepard) | 
| Вилл Мортенсен (Will Mortensen) | 
| Вилли Манн (Willi Mann) | 
| Винаяк Покале (Vinayak Pokale) | 
| Виталий Буровой (Vitaly Burovoy) | 
| Войтех Бенеш (Vojtech Benes) | 
| Вольфганг Вальтер (Wolfgang Walther) | 
| Вэй Ван (Wei Wang) | 
| Вэй Сунь (Wei Sun) | 
| Вэньцзян Чжан (Wenjiang Zhang) | 
| Габриэль Бартолини (Gabriele Bartolini) | 
| Гаррет Торнбург (Garrett Thornburg) | 
| Грант Гричан (Grant Gryczan) | 
| Грег Нанкарроу (Greg Nancarrow) | 
| Грег Сабино Маллейн (Greg Sabino Mullane) | 
| Грег Старк (Greg Stark) | 
| Гуржит Сингх (Gurjeet Singh) | 
| Гэвин Панелла (Gavin Panella) | 
| Гэвин Флауэр (Gavin Flower) | 
| Давид Гайер (David Geier) | 
| Даг Лем (Dag Lem) | 
| Дагфинн Ильмари Маннсакер (Dagfinn Ilmari Mannsåker) | 
| Дамир Белялов (Damir Belyalov) | 
| Даниель Вестерман (Daniel Westermann) | 
| Даниил Шелепанов (Daniel Shelepanov) | 
| Даниэль Верите (Daniel Vérité) | 
| Даниэль Густафссон (Daniel Gustafsson) | 
| Даниэль Фредуль (Daniel Fredouille) | 
| Даррен Раш (Darren Rush) | 
| Деврим Гюндюз (Devrim Gündüz) | 
| Дейв Крамер (Dave Cramer) | 
| Дейв Пейдж (Dave Page) | 
| Денис Ерохин (Denis Erokhin) | 
| Денис Лаксельд (Denis Laxalde) | 
| Джастин Призби (Justin Pryzby) | 
| Джейкоб Спидел (Jacob Speidel) | 
| Джейкоб Чемпион (Jacob Champion) | 
| Джеймс Коулман (James Coleman) | 
| Джеймс Панг (James Pang) | 
| Джереми Шнайдер (Jeremy Schneider) | 
| Джефф Девис (Jeff Davis) | 
| Джефф Джейнс (Jeff Janes) | 
| Дживан Чок (Jeevan Chalke) | 
| Джим Джонс (Jim Jones) | 
| Джим Кинер (Jim Keener) | 
| Джим Нэсби (Jim Nasby) | 
| Джо Конвей (Joe Conway) | 
| Джозеф Кошаков (Joseph Koshakow) | 
| Джон Моррис (John Morris) | 
| Джон Нейлор (John Naylor) | 
| Джон Рассел (John Russell) | 
| Джон Сюй (John Hsu) | 
| Джон Экинс (John Ekins) | 
| Джонатан С Кац (Jonathan S. Katz) | 
| Джош Купершмидт (Josh Kupershmidt) | 
| Джошуа Д. Дрейк (Joshua D. Drake) | 
| Джошуа Уэхара (Joshua Uyehara) | 
| Джоэл Джейкобсон (Joel Jacobson) | 
| Джубили Янг (Jubilee Young) | 
| Дилип Кумар (Dilip Kumar) | 
| Димитриос Апостолу (Dimitrios Apostolou) | 
| Дин Рашид (Dean Rasheed) | 
| Дмитрий Васильев (Dmitry Vasiliev) | 
| Дмитрий Долгов (Dmitry Dolgov) | 
| Дмитрий Коваль (Dmitry Koval) | 
| Дмитрий Ячник (Dzmitry Jachnik) | 
| Доминик Девьен (Dominique Devienne) | 
| Донмин Лю (Dongming Liu) | 
| Дрю Каллахан (Drew Callahan) | 
| Дрю Кимбалл (Drew Kimball) | 
| Дунхан Линь (Donghang Lin) | 
| Дэвид Дж. Джонстон (David G. Johnston) | 
| Дэвид Кристенсен (David Christensen) | 
| Дэвид Кук (David Cook) | 
| Дэвид Перес (David Perez) | 
| Дэвид Роули (David Rowley) | 
| Дэвид Стил (David Steele) | 
| Дэвид Уилер (David Wheeler) | 
| Дэвид Хиллман (David Hillman) | 
| Дэвид Чжан (David Zhang) | 
| Евгений Коньков (Eugen Konkov) | 
| Евгений Морозов (Evgeny Morozov) | 
| Егор Рогов (Egor Rogov) | 
| Егор Чиндяскин (Egor Chindyaskin) | 
| Егор Юзефович (Yahor Yuzefovich) | 
| Екатерина Кирьянова (Ekaterina Kiryanova) | 
| Елена Индрупская (Elena Indrupskaya) | 
| Ерки Еэссаар (Erki Eessaar) | 
| Жак Комбринк (Jacques Combrink) | 
| Жиль Даролд (Gilles Darold) | 
| Жиль Парк (Gilles Parc) | 
| Жуй Жао (Rui Zhao) | 
| Жюльен Руо (Julien Rouhaud) | 
| Зубейр Эрилмаз (Zubeyr Eryilmaz) | 
| Ив Колен (Yves Colin) | 
| Иван Картышов (Ivan Kartyshov) | 
| Иван Коломбет (Ivan Kolombet) | 
| Иван Лазарев (Ivan Lazarev) | 
| Иван Панченко (Ivan Panchenko) | 
| Иван Трофимов (Ivan Trofimov) | 
| Израэл Барт (Israel Barth Rubio) | 
| Илья Ненашев (Ilya Nenashev) | 
| Итан Мерц (Ethan Mertz) | 
| Иэн Барвик (Ian Barwick) | 
| Йелте Феннема-Нио (Jelte Fennema-Nio) | 
| Кайдо Вайкла (Kaido Vaikla) | 
| Камбам Винай (Kambam Vinay) | 
| Карен Таларико (Karen Talarico) | 
| Карина Лицкевич (Karina Litskevich) | 
| Карл О. Пинц (Karl O. Pinc) | 
| Кашиф Зишан (Kashif Zeeshan) | 
| Квинь Тран (Quynh Tran) | 
| Ким Йохан Андерссон (Kim Johan Andersson) | 
| Кирилл Решке (Kirill Reshke) | 
| Кирк Волак (Kirk Wolak) | 
| Кирк Паркер (Kirk Parker) | 
| Кисун Квон (Kisoon Kwon) | 
| Клаудио Фрейре (Claudio Freire) | 
| Колин Кейн (Colin Caine) | 
| Конг Ман (Kong Man) | 
| Константин Книжник (Konstantin Knizhnik) | 
| Кори Хинкер (Corey Huinker) | 
| Кохэй КайГай (Kohei KaiGai) | 
| Кохэй Суту (Kouhei Sutou) | 
| Коэн Де Груте (Koen De Groote) | 
| Крис Трэверс (Chris Travers) | 
| Кристиан Маурер (Christian Maurer) | 
| Кристиан Сторк (Christian Stork) | 
| Кристоф Берг (Christoph Berg) | 
| Кристоф Куртуа (Christophe Courtois) | 
| Кристоф Хейсс (Christoph Heiss) | 
| Кристофер Клайн (Christopher Kline) | 
| Кришнакумар Р (Krishnakumar R) | 
| Кунтал Гхош (Kuntal Ghosh) | 
| Курт Коловсон (Curt Kolovson) | 
| Курт Реккс (Kurt Roeckx) | 
| Кэмерон Фогт (Cameron Vogt) | 
| Кэри Хуан (Cary Huang) | 
| Кётаро Хоригути (Kyotaro Horiguchi) | 
| Лан Лю (Lang Liu) | 
| Ларс Канис (Lars Kanis) | 
| Лауренц Альбе (Laurenz Albe) | 
| Лаури Лаанметс (Lauri Laanmets) | 
| Легс Мэншн (Legs Mansion) | 
| Ли Дон Ук (Lee Dong Wook) | 
| Лукас Фиттл (Lukas Fittl) | 
| Магнус Хагандер (Magnus Hagander) | 
| Майквел Грасси (Maiquel Grassi) | 
| Майкл Бондаренко (Michael Bondarenko) | 
| Майкл Ван (Michael Wang) | 
| Максим Богук (Maxim Boguk) | 
| Максим Буайе (Maxime Boyer) | 
| Максим Орлов (Maxim Orlov) | 
| Максим Яблоков (Maxim Yablokov) | 
| Манос Эммануилидис (Manos Emmanouilidis) | 
| Мариан Круцина (Marian Krucina) | 
| Марина Полякова (Marina Polyakova) | 
| Марк Гертин (Mark Guertin) | 
| Марк Дилгер (Mark Dilger) | 
| Марк Слоан (Mark Sloan) | 
| Маркос Пегораро (Marcos Pegoraro) | 
| Маркус Винанд (Markus Winand) | 
| Марлин Рейтерер (Marlene Reiterer) | 
| Марсель Хофштеттер (Marcel Hofstetter) | 
| Мартин Маркес (Martín Marqués) | 
| Мартин Нэш (Martin Nash) | 
| Мартин Шлоссарек (Martin Schlossarek) | 
| Масаки Кувамура (Masaki Kuwamura) | 
| Масао Фудзии (Masao Fujii) | 
| Масахико Савада (Masahiko Sawada) | 
| Масахиро Икеда (Masahiro Ikeda) | 
| Матеус Алькантара (Matheus Alcantara) | 
| Матс Киндаль (Mats Kindahl) | 
| Маттиас Кун (Matthias Kuhn) | 
| Маттиас ван де Меент (Matthias van de Meent) | 
| Махендракар Шринивасарао (Mahendrakar Srinivasarao) | 
| Мейсон Шарп (Mason Sharp) | 
| Мелани Плейгман (Melanie Plageman) | 
| Мелих Мутлу (Melih Mutlu) | 
| Мерлин Монкьюр (Merlin Moncure) | 
| Мика Гейт (Micah Gate) | 
| Микаэль Пакье (Michael Paquier) | 
| Мингли Чжан (Mingli Zhang) | 
| Мирослав Бендик (Miroslav Bendik) | 
| Михаил Грибков (Mikhail Gribkov) | 
| Михаил Жилин (Michael Zhilin) | 
| Михаил Николаев (Michail Nikolaev) | 
| Михал Бартак (Michal Bartak) | 
| Михал Клечек (Michal Kleczek) | 
| Михаэль Банк (Michael Banck) | 
| Моааз Ассали (Moaaz Assali) | 
| Мураликришна Бандару (Muralikrishna Bandaru) | 
| Назир Билал Явуз (Nazir Bilal Yavuz) | 
| Натан Боссарт (Nathan Bossart) | 
| Нгиги Вайтака (Ngigi Waithaka) | 
| Никита Глухов (Nikita Glukhov) | 
| Никита Калинин (Nikita Kalinin) | 
| Никита Малахов (Nikita Malakhov) | 
| Николай Самохвалов (Nikolay Samokhvalov) | 
| Николай Шаплов (Nikolay Shaplov) | 
| Никхил Бенеш (Nikhil Benesch) | 
| Нил Тиффин (Neil Tiffin) | 
| Нитин Ядав (Nitin Jadhav) | 
| Нихил Радж (Nikhil Raj) | 
| Ниша Мунд (Nisha Moond) | 
| Нишант Шарма (Nishant Sharma) | 
| Ной Миш (Noah Misch) | 
| Нориёси Синода (Noriyoshi Shinoda) | 
| Оле Педер Брандцег (Ole Peder Brandtzæg) | 
| Олег Бартунов (Oleg Bartunov) | 
| Олег Самойлов (Olleg Samoylov) | 
| Олег Сибиряков (Oleg Sibiryakov) | 
| Олег Целебровский (Oleg Tselebrovskiy) | 
| Ондер Каладжи (Onder Kalaci) | 
| Ондрей Навратил (Ondrej Navratil) | 
| Пабло Харо (Pablo Kharo) | 
| Павел Борисов (Pavel Borisov) | 
| Павел Кулаков (Pavel Kulakov) | 
| Павел Лузанов (Pavel Luzanov) | 
| Павел Стехуле (Pavel Stehule) | 
| Павло Голуб (Pavlo Golub) | 
| Палак Чатурведи (Palak Chaturvedi) | 
| Панделис Теодосиу (Pantelis Theodosiou) | 
| Педро Гальегос (Pedro Gallegos) | 
| Пит Сторер (Pete Storer) | 
| Питер Гейган (Peter Geoghegan) | 
| Питер Смит (Peter Smith) | 
| Питер Эйзентраут (Peter Eisentraut) | 
| Пол Амонсон (Paul Amonson) | 
| Пол Юнгвирт (Paul Jungwirth) | 
| Пшемыслав Штох (Przemyslaw Sztoch) | 
| Пьер Дюкроке (Pierre Ducroquet) | 
| Пьер Фортен (Pierre Fortin) | 
| Рагхувир Девулапалли (Raghuveer Devulapalli) | 
| Райан Макгвайр (Rian McGuire) | 
| Ранье Вилела (Ranier Vilela) | 
| Рид Томпсон (Reid Thompson) | 
| Ридван Коркмаз (Ridvan Korkmaz) | 
| Ричард Весли (Richard Vesely) | 
| Ричард Гуо (Richard Guo) | 
| Роберт Скотт (Robert Scott) | 
| Роберт Трит (Robert Treat) | 
| Роберт Хаас (Robert Haas) | 
| Роберто Мелло (Roberto Mello) | 
| Робинс Таракан (Robins Tharakan) | 
| Роман Лозко (Roman Lozko) | 
| Ронан Данклау (Ronan Dunklau) | 
| Рё Мацумура (Ryo Matsumura) | 
| Рёга Йошида (Ryoga Yoshida) | 
| Саймон Риггс (Simon Riggs) | 
| Сами Имсейх (Sami Imseih) | 
| Самир Кумар (Sameer Kumar) | 
| Самуэль Дюссо (Samuel Dussault) | 
| Санджай Минни (Sanjay Minni) | 
| Сатору Коидзуми (Satoru Koizumi) | 
| Сванте Рихтер (Svante Richter) | 
| Светлана Деревянко (Svetlana Derevyanko) | 
| Себастьян Скалаки (Sebastian Skalacki) | 
| Седрик Вильмен (Cédric Villemain) | 
| Сергей Глухов (Sergei Glukhov) | 
| Сергей Корнилов (Sergei Kornilov) | 
| Сергей Прохоренко (Sergey Prokhorenko) | 
| Сергей Саргсян (Sergey Sargsyan) | 
| Сергей Шиндерук (Sergey Shinderuk) | 
| Сильвен Франдез (Sylvain Frandaz) | 
| Син Го (Xing Guo) | 
| Синъя Като (Shinya Kato) | 
| Соумйадип Чакраборти (Soumyadeep Chakraborty) | 
| Степан Неретин (Stepan Neretin) | 
| Степан Руц (Stepan Rutz) | 
| Стефан Ташуар (Stephane Tachoires) | 
| Стефан Шильдкнехт (Stéphane Schildknecht) | 
| Стив Аткинс (Steve Atkins) | 
| Стив Чавес (Steve Chavez) | 
| Стивен Фрост (Stephen Frost) | 
| Стэн Ху (Stan Hu) | 
| Сурадж Хамкар (Suraj Khamkar) | 
| Сурадж Хараге (Suraj Kharage) | 
| Сюйдун Ян (Xudong Yang) | 
| Сян Лю (Xiang Liu) | 
| Сяожань Ван (Xiaoran Wang) | 
| Такаюки Цунакава (Takayuki Tsunakawa) | 
| Тацуо Исии (Tatsuo Ishii) | 
| Тацуро Ямада (Tatsuro Yamada) | 
| Тендер Ван (Tender Wang) | 
| Тим Кэри-Смит (Tim Carey-Smith) | 
| Тим Нидэм (Tim Needham) | 
| Тим Палмер (Tim Palmer) | 
| Тобиас Бусман (Tobias Bussmann) | 
| Том Браун (Thom Brown) | 
| Том Лейн (Tom Lane) | 
| Томас Манро (Thomas Munro) | 
| Томаш Вондра (Tomas Vondra) | 
| Томми Павличек (Tommy Pavlicek) | 
| Томонари Кацумата (Tomonari Katsumata) | 
| Тристан Партин (Tristan Partin) | 
| Тристан Рааб (Tristen Raab) | 
| Тунг Нгуен (Tung Nguyen) | 
| Уве Биндер (Uwe Binder) | 
| Умайр Шахид (Umair Shahid) | 
| Фабрицио де Ройес Мелло (Fabrízio de Royes Mello) | 
| Фабьен Коэльо (Fabien Coelho) | 
| Фаер Эмералд (Fire Emerald) | 
| Фариас де Оливейра (Farias de Oliveira) | 
| Фелипе Поззер (Feliphe Pozzer) | 
| Филип Уорнер (Philip Warner) | 
| Филипп Сальвисберг (Philipp Salvisberg) | 
| Флавьен Гюдез (Flavien Guedez) | 
| Флорис Ван Ни (Floris Van Nee) | 
| Франк Штрайциг (Frank Streitzig) | 
| Франческо Деграсси (Francesco Degrassi) | 
| Фёдор Сигаев (Teodor Sigaev) | 
| Хаджиме Мацунага (Hajime Matsunaga) | 
| Хайато Курода (Hayato Kuroda) | 
| Хайвел Карвер (Hywel Carver) | 
| Хайин Тан (Haiying Tang) | 
| Хайме Казанова (Jaime Casanova) | 
| Хал Такахара (Hal Takahara) | 
| Ханефи Ональди (Hanefi Onaldi) | 
| Ханну Кросинг (Hannu Krosing) | 
| Ханс Бушман (Hans Buschmann) | 
| Хао Ву (Hao Wu) | 
| Хао Чжан (Hao Zhang) | 
| Хейкки Линнакангас (Heikki Linnakangas) | 
| Хемант Сандрана (Hemanth Sandrana) | 
| Химаншу Упадхьяя (Himanshu Upadhyaya) | 
| Хината Мицуру (Mitsuru Hinata) | 
| Хиронобу Судзуки (Hironobu Suzuki) | 
| Хольгер Райзе (Holger Reise) | 
| Хорди Гутьеррес (Jordi Gutiérrez) | 
| Хорст Рейтерер (Horst Reiterer) | 
| Хоу Чжицзе (Hou Zhijie) | 
| Хуберт Любачевски (Hubert Lubaczewski) | 
| Хунсюй Ма (Hongxu Ma) | 
| Хунъюй Сонг (Hongyu Song) | 
| Цзинсянь Ли (Jingxian Li) | 
| Цзинтан Чжан (Jingtang Zhang) | 
| Цзинчжоу Фу (Jingzhou Fu) | 
| Цзумин Цзян (Zuming Jiang) | 
| Цзюньван Жао (Junwang Zhao) | 
| Цзянь Гуо (Jian Guo) | 
| Цзянь Хи (Jian He) | 
| Цюань Цзунлян (Quan Zongliang) | 
| Чанхун Фей (Changhong Fei) | 
| Чепмен Флэк (Chapman Flack) | 
| Чжихун Юй (Zhihong Yu) | 
| Чэнси Сунь (Chengxi Sun) | 
| Шанталь Келлер (Chantal Keller) | 
| Шаочжун Ши (Shaozhong Shi) | 
| Швета Малик (Shveta Malik) | 
| Шихао Чжун (Shihao Zhong) | 
| Шлок Кьял (Shlok Kyal) | 
| Шон Томас (Shaun Thomas) | 
| Шраван Велагандула (Sravan Velagandula) | 
| Шрути Говда (Shruthi Gowda) | 
| Шубхам Ханна (Shubham Khanna) | 
| Шулинь Чжоу (Shulin Zhou) | 
| Шэй Роджански (Shay Rojansky) | 
| Эван Макбет (Evan Macbeth) | 
| Эйлер Тавейра (Euler Taveira) | 
| Элизабет Кристенсен (Elizabeth Christensen) | 
| Эмре Хасегели (Emre Hasegeli) | 
| Энди Фан (Andy Fan) | 
| Эндрю Алсуп (Andrew Alsup) | 
| Эндрю Аткинсон (Andrew Atkinson) | 
| Эндрю Дунстан (Andrew Dunstan) | 
| Эндрю Кейн (Andrew Kane) | 
| Энтони Сюй (Anthony Hsu) | 
| Эрик Винхольд (Erik Wienhold) | 
| Эрик Кир (Eric Cyr) | 
| Эрик Мутта (Eric Mutta) | 
| Эрик Радман (Eric Radman) | 
| Эрик Ридж (Eric Ridge) | 
| Эрик Рижкерс (Erik Rijkers) | 
| Эцуро Фудзита (Etsuro Fujita) | 
| Юго Нагата (Yugo Nagata) | 
| Юйхан Цю (Yuhang Qiu) | 
| Юки Сэйно (Yuki Seino) | 
| Юки Фудзи (Yuuki Fujii) | 
| Юн Ли (Yong Li) | 
| Юнтао Хуан (Yongtao Huang) | 
| Юрий Рашковский (Yurii Rashkovskii) | 
| Юрий Соколов (Yura Sokolov) | 
| Юя Ватари (Yuya Watari) | 
| Якуб Вартак (Jakub Wartak) | 
| Ян Ильясов (Ian Ilyasov) | 
| Яни Рахкола (Jani Rahkola) | 
| Япинь Ли (Japin Li) | 
| Ярослав Сабуров (Yaroslav Saburov) | 
| Яцзюнь Ху (Yajun Hu) |