E.6. Выпуск 18#
E.6. Выпуск 18 #
Дата выпуска: 2025-09-25
E.6.1. Обзор #
Tantor BE 18 содержит множество новых возможностей и улучшений, в том числе:
подсистему асинхронного ввода-вывода (AIO), которая может повысить производительность последовательного сканирования, операций сканирования кучи по битовой карте, очистки (vacuum) и других операций.
pg_upgrade теперь сохраняет статистику оптимизатора.
поддержку "skip scan", позволяющую использовать составные B-tree индексы в большем числе случаев.
функцию
uuidv7()для генерации упорядоченных по времени UUID.виртуальные генерируемые столбцы, значения которых вычисляются во время операций чтения. Теперь это значение по умолчанию для генерируемых столбцов.
поддержку
OLDиNEWв выраженииRETURNINGкоманд INSERT, UPDATE, DELETE и MERGE.временные ограничения или ограничения на диапазоны для ограничений целостности PRIMARY KEY, UNIQUE и FOREIGN KEY.
Вышеуказанные и другие новые возможности Tantor BE 18 подробно описываются дальше, в следующих разделах.
E.6.2. Миграция на версию 18 #
Для тех, кто желает перенести данные с любой предыдущей версии, требуется выполнить дамп/восстановление с использованием pg_dumpall или использовать pg_upgrade или логическую репликацию. См. Раздел 17.6 для получения общей информации о миграции на новые основные версии.
В версии 18 содержится ряд изменений, которые могли повлиять на совместимость с предыдущими версиями. Обратите внимание на следующие несовместимости:
В initdb теперь по умолчанию включен подсчет контрольных сумм (Грег Сабино Маллейн) §
Новый параметр initdb
--no-data-checksumsотключает подсчет контрольных сумм. Утилита pg_upgrade требует, чтобы параметр подсчета контрольных сумм у обновляемого и созданного кластера совпадали, поэтому опция--no-data-checksumsможет быть полезна для обновления старых кластеров, на которых подсчет контрольных сумм не включен.Изменена обработка аббревиатур часовых поясов (Том Лейн) §
Теперь приоритет отдается аббревиатурам часовых поясов текущей сессии перед проверкой серверной переменной timezone_abbreviations. В предыдущих версиях сначала проверялась
timezone_abbreviations.Аутентификация по паролю MD5 объявлена устаревшей (Натан Боссарт) §
Поддержка паролей MD5 будет удалена в следующей мажорной версии. CREATE ROLE и ALTER ROLE теперь выводят предупреждения об устаревании при установке паролей MD5. Эти предупреждения могут быть отключены путем установки параметра md5_password_warnings в значение
off.Изменено поведение команд VACUUM и ANALYZE при обработке потомков родительской таблицы (Майкл Харрис) §
Предыдущее поведение можно включить с помощью новой опции нового параметра
ONLY.Запрет команде
COPY FROMобрабатывать\.как маркер конца файла при чтении файлов CSV (Даниэль Верите, Том Лейн) § §psql по-прежнему будет обрабатывать
\.как маркер конца файла при чтении файлов CSV изSTDIN. Более старые клиенты psql, подключающиеся к серверам Tantor BE 18, могут столкнуться с проблемами\copy. В этом выпуске проверяется, что\.должен появляться на отдельной строке.Запрещено использование нежурналируемых секционированных таблиц (Микаэль Пакье) §
Ранее команда
ALTER TABLE SET [UN]LOGGEDничего не выполняла, и создание нежурналируемой секционированной таблицы не приводило к тому, что её дочерние таблицы становились нежурналируемыми.Выполнение триггеров
AFTERот имени роли, которая была активна в момент постановки событий триггера в очередь (Лауренц Альбе) §Ранее такие триггеры выполнялись от имени роли, которая была активна во время выполнения триггера (например, при COMMIT). Это было важно в случаях, когда роль изменялась между моментом постановки в очередь и фиксацией транзакции.
Была удалена поддержка неработающих прав RULE в GRANT/REVOKE (Фудзии Масао) §
Они были неработоспособными начиная с PostgreSQL 8.2.
Удалён столбец
pg_backend_memory_contexts.parent(Мелих Мутлу) §Этот столбец стал не нужен после добавления столбца
pg_backend_memory_contexts.path.Нумерация в
pg_backend_memory_contexts.levelиpg_log_backend_memory_contexts()теперь начинается с единицы (Мелих Мутлу, Атсуши Торикоши, Дэвид Роули, Фудзии Масао) § § §Раньше нумерация начиналась с нуля.
Изменён полнотекстовый поиск для использования провайдера правил сортировки по умолчанию при чтении файлов конфигурации и словарей, вместо безусловного использования libc (Питер Эйзентраут) §
Кластеры, в которых по умолчанию используются провайдеры сортировки, отличные от libc (например, ICU, builtin), и которые ведут себя иначе, чем libc для символов, обрабатываемых LC_CTYPE, могут столкнуться с изменениями в поведении некоторых функций полнотекстового поиска, а также расширения pg_trgm. При обновлении таких кластеров с помощью pg_upgrade рекомендуется перестроить все индексы, связанные с полнотекстовым поиском и pg_trgm, после обновления.
E.6.3. Изменения #
Ниже приведён подробный отчёт об изменениях между PostgreSQL 18 и PostgreSQL 17.
E.6.3.1. Сервер #
E.6.3.1.1. Оптимизатор #
Автоматическое удаление лишних соединений таблиц самих с собой (Андрей Лепихов, Александр Кузьменков, Александр Коротков, Алена Рыбакина) §
Эту оптимизацию можно отключить с помощью серверной переменной enable_self_join_elimination.
Некоторые выражения
IN (VALUES ...)преобразуются вx = ANY ...для улучшения работы оптимизатора со статистикой (Алена Рыбакина, Андрей Лепихов) §Разрешается преобразование
OR-выражений в массивы для более быстрой обработки индексов (Александр Коротков, Андрей Лепихов) §Ускорена обработка
INTERSECT,EXCEPT, оконных функций и псевдонимов столбцов представлений (Том Лейн, Дэвид Роули) § § § §Разрешена возможность внутреннего упорядочивания ключей команды
SELECT DISTINCTдля избежания сортировки (Ричард Гуо) §Эту оптимизацию можно отключить с помощью параметра кофнигурации enable_distinct_reordering.
Игнорирование столбцов
GROUP BY, которые функционально зависят от других столбцов (Чжан Минли, Цзянь Хи, Дэвид Роули) §Если выражение
GROUP BYвключает все столбцы уникального индекса, а также другие столбцы той же таблицы, эти другие столбцы считаются избыточными и исключаются из группировки. Такое поведение уже использовалось для первичных ключей без отложенной проверки.Разрешено перемещать некоторые выражения
HAVINGдляGROUPING SETSв выраженияWHERE(Ричард Гуо) § § § §Это позволяет фильтровать строки заранее, до группировки. В этой версии также были исправлены некоторые запросы с
GROUPING SETS, которые возвращали некорректные результаты.Улучшены оценки числа строк, возвращаемых функцией
generate_series()для типовnumericиtimestamp(Дэвид Роули, Сон Цзиньчжоу) § §Оптимизатор теперь может использовать правые полусоединения
Right Semi Join(Ричард Гуо) §Полусоединения используются , когда требуется определить, существует ли хотя бы одно совпадение.
Разрешено использовать инкрементальные сортировки в merge-join (Ричард Гуо) §
Повышена эффективность планирования запросов, обращающихся к большому количеству секций (Ашутуш Бапат, Юя Ватари, Дэвид Роули) § §
Разрешены соединения с учетом секционирования в большем числе случаев, и умньшение использования памяти такими соединениями (Ричард Гуо, Том Лейн, Ашутош Бапат) § §
Улучшены оценки стоимости запросов к секционированным таблицам (Никита Малахов, Андрей Лепихов) §
Улучшено кэширование планов функций на языке SQL (Александр Пыхалов, Том Лейн) § §
Улучшена работа с опциями, отключающими функционал оптимизатора (Роберт Хаас) §
E.6.3.1.2. Индексы #
Поддержка Skip Scans для btree индексов (Питер Геогеган) § §
Позволяет чаще использовать составные btree-индексы, например, когда в предикатах не используются (или используются неравенства) ведущие столбцы индекса, но есть предикаты на другие столбцы индекса, которыми можно воспользоваться.
Теперь можно использовать уникальные индексы типов, отличных от btree, в качестве ключей секционирования и в материализованных представлениях (Марк Дилгер) § §
Тип индекса должен поддерживать сравнение на равенство.
Индексы
GINмогут создаваться в параллельном режиме (Томаш Вондра, Маттиас ван де Меент) §Для ускорения создания индексов GiST и btree по диапазонным типам значения сортируются (Бернд Хелмле) §
E.6.3.1.3. Общая производительность #
Добавлена подсистема асинхронного ввода-вывода (Андрес Фройнд, Томас Манро, Назир Билал Явуз, Мелани Плейгман) § § § § § § § § § § §
Эта функция позволяет серверным процессам ставить в очередь несколько запросов на чтение, что повышает производительность последовательного сканирования, сканирования по битовой карте, очистки (vacuum) и других методов доступа. Функциональность включается параметром конфигурации io_method, а для управления функциональностью добавлены параметры конфигурации io_combine_limit и io_max_combine_limit. Также функциональность позволяет использовать значения параметров конфигурации effective_io_concurrency и maintenance_io_concurrency больше нуля для систем без поддержки
fadvise(). Новое представлениеpg_aiosотображает файловые дескрипторы, используемые с асинхронным вводом-выводом.Улучшена производительность работы с блокировками запросов, которые обращаются к большому числу отношений (Томаш Вондра) §
Улучшена производительность и уменьшено использование памяти для хеш-соединений и
GROUP BY(Дэвид Роули, Джефф Дэвис) § § § § §Это также улучшило операции с набором хешей, используемых выражениями
EXCEPT, и поиска по хешу в подпланах.Обычная очистка (vacuum) теперь может замораживать страницы, в том числе те, в которых все версии строк видимы (Мелани Плейгман) § §
Это позволяет уменьшить трудоемкость операции полной заморозки. Активность заморозки при обычной очистке можно настроить параметром конфигурации vacuum_max_eager_freeze_failure_rate, который также доступен на уровне таблицы. В предыдущих версиях обычный vacuum никогда не обрабатывал страницы, в которых все версии строк видимы (all-visible pages) до тех пор, пока не потребуется заморозка.
Добавлен параметр конфигурации vacuum_truncate для отключения фазы усечения файлов при выполнении очистки VACUUM (Натан Боссарт, Гуржит Сингх) §
Параметр на уровне таблицы с тем же именем и поведением уже существовал.
Увеличены до 16 значения по умолчанию параметров конфигурации effective_io_concurrency и maintenance_io_concurrency (Мелани Плейгман) § §
Новые значения более точно соответствуют современному оборудованию.
E.6.3.1.4. Мониторинг #
Улучшена детализация логирования для параметра конфигурации log_connections (Мелани Плейгман) §
Этот парметр конфигурации ранее принимал только булевые значения, что до сих пор поддерживается.
Добавлена опция
log_connectionsдля логирования длительности этапов подключения (Мелани Плейгман) §Добавлен символ
%Lдля параметра log_line_prefix, который позволяет выводить IP-адрес клиента (Грег Сабино Маллейн) §Добавлен параметр конфигурации log_lock_failures для логирования неудачных попыток получения блокировок (Юки Сэйно, Фудзии Масао) § §
В частности, логируются ошибки получения блокировки командой
SELECT ... NOWAIT.В представлении
pg_stat_all_tablesи его вариантах теперь отображается время, затраченное на VACUUM, ANALYZE и их автоматически выполняемых вариациях (Сами Имсейх) §В представления были добавлены столбцы:
total_vacuum_time,total_autovacuum_time,total_analyze_timeиtotal_autoanalyze_time.Добавлено отображение времени задержки при выполненнии VACUUM и ANALYZE (Бертран Друво, Натан Боссарт) § §
Эта информация отображается в диагностическом журнале, в системных представлениях
pg_stat_progress_vacuumиpg_stat_progress_analyze, а также в выводе команд VACUUM и ANALYZE в режимеVERBOSE; отслеживание должно было быть включено с помощью параметра конфигурации track_cost_delay_timing.Добавлены статистические данные по WAL, CPU и среднему времени чтения в вывод
ANALYZE VERBOSE(Антонин Боннефой) § §Добавлено количество переполненных буферов WAL в вывод логов команд
VACUUM/ANALYZE (VERBOSE)и автоочистки (Бертран Друво) §Добавлена отчетность по статистике ввода-вывода для каждого backend-процесса (Бертран Друво) § §
Статистика была получена через
pg_stat_get_backend_io(). Статистика ввода-вывода по отдельным серверным процессам может быть сброшена черезpg_stat_reset_backend_stats().Добавлены столбцы
pg_stat_ioдля отображения активности ввода-вывода в байтах (Назир Билал Явуз) §Новые столбцы:
read_bytes,write_bytesиextend_bytes. Столбецop_bytes, который всегда был равенBLCKSZ, был удалён.Добавлены строки активности ввода-вывода WAL в
pg_stat_io(Назир Билал Явуз, Бертран Друво, Микаэль Пакье) § § §Теперь представление показывает активность и события ожидания для процесса-приёмника WAL.
Переменная сервера track_wal_io_timing была изменена для управления отслеживанием времени WAL в
pg_stat_ioвместоpg_stat_wal(Бертран Друво) §Столбцы read/sync были удалены из
pg_stat_wal(Бертран Друво) § §Из представления удалены столбцы
wal_write,wal_sync,wal_write_timeиwal_sync_time.Функция
pg_stat_get_backend_wal()была добавлена для возврата статистики WAL по каждому серверному процессу (Бертран Друво) §Статистика WAL для каждого бэкенда сбрасывается функцией
pg_stat_reset_backend_stats().Добавлена функция
pg_ls_summariesdir()для выдачи списка файлов директорииPGDATA/pg_wal/summaries(Юси Огивара) §Добавлен столбец
pg_stat_checkpointer.num_doneдля отображения количества завершённых контрольных точек (Антон А. Мельников) §Столбцы
num_timedиnum_requestedучитывали как завершённые, так и пропущенные контрольные точки.Был добавлен столбец
pg_stat_checkpointer.slru_writtenдля отображения количества записанных буферов SLRU (Нитин Ядав) §Также было изменено сообщение в журнале сервера о контрольных точках для отображения отдельных значений общих буферов и буферов SLRU.
Добавлены столбцы в
pg_stat_databaseдля отображения активности параллельных рабочих процессов (Бенуа Лобро) §Новые столбцы —
parallel_workers_to_launchиparallel_workers_launched.Вычисление идентификатора запроса для списков констант на основе только первой и последней константы (Дмитрий Долгов, Сами Имсейх) § § §
Jumbling теперь используется расширением pg_stat_statements.
Были скорректированы вычисления идентификатора запроса для группировки запросов, использующих одно и то же имя отношения (Микаэль Пакье, Сами Имсейх) §
Это верно даже в том случае, если таблицы в разных схемах имели разные имена столбцов.
Добавлен столбец
pg_backend_memory_contexts.typeдля отображения типа контекста памяти (Дэвид Роули) §Добавлен столбец
pg_backend_memory_contexts.pathдля отображения родительских контекстов памяти (Мелих Мутлу) §
E.6.3.1.5. Привилегии #
Добавлена функция
pg_get_acl()для получения сведений о правах доступа к объектам баз данных (Джоэл Джейкобсон) § §Добавлена функция
has_largeobject_privilege()для проверки прав на большие объекты (Юго Нагата) §ALTER DEFAULT PRIVILEGES разрешено определять привилегии для больших объектов (Харука Такацука, Юго Нагата, Лауренц Альбе) §
Была добавлена предопределённая роль
pg_signal_autovacuum_worker(Кирилл Решке) §Роль позволяет отправлять сигналы рабочим процессам autovacuum.
E.6.3.1.6. Конфигурация сервера #
Добавлена поддержка метода аутентификации OAuth (Джейкоб Чемпион, Даниэль Густафссон, Томас Манро) §
Добавлен новый метод аутентификации
oauthвpg_hba.conf,Добавлена серверная переменная ssl_tls13_ciphers для указания нескольких наборов шифров TLSv1.3, разделённых двоеточием (Эрика Чжан, Даниэль Густафссон) §
Значение серверной переменной ssl_groups's по умолчанию было изменено для включения эллиптической кривой X25519 (Даниэль Густафссон, Джейкоб Чемпион) §
Переименована серверная переменная
ssl_ecdh_curveв ssl_groups и разрешено указывать несколько ECDH-кривых, разделённых двоеточием (Эрика Чжан, Даниэль Густафссон) §Предыдущее имя переменной всё ещё работает.
Ключи отмены запроса могут иметь длину до 256 бит (Хейкки Линнакангас, Йелте Феннема-Нио) § §
Это изменение работает только в случае, когда и сервером, и клиентом используется версия 3.2 протокола передачи данных, которая появилась в этом выпуске.
Добавлен параметр конфигурации autovacuum_worker_slots для указания максимального числа фоновых рабочих процессов (Натан Боссарт) §
Если параметр конфигурации установлен, то значение autovacuum_max_workers можно менять без перезапуска экземпляра в пределах, заданных новым параметром конфигурации.
Добавлена возможность указания фиксированного числа "мертвых" версий строк, которое будет вызывать автоматическую очистку (autovacuum) (Натан Боссарт, Фредерик Юэль) §
Переменная сервера — autovacuum_vacuum_max_threshold. В качестве порогового значения всё ещё можно использовать проценты.
Параметр кофнигурации max_files_per_process теперь ограничивает только файлы, открытые серверным процессом (Андрес Фройнд) §
Файлы, открытые процессом postmaster, ранее учитывались в этом параметре.
Добавлена переменная сервера num_os_semaphores, которая показывает требуемое число семафоров (Натан Боссарт) §
Это полезно для настройки параметров операционной системы.
Добавлен параметр конфигурации extension_control_path, который позволяет задать расположение управляющих файлов расширений (Питер Эйзентраут, Матеус Алькантара) § §
E.6.3.1.7. Потоковая репликация и восстановление #
Разрешено автоматически инвалидировать неактивные слоты репликации с помощью нового параметра конфигурации idle_replication_slot_timeout (Ниша Мунд, Бхарата Рупиредди) §
Добавлен параметр конфигурации max_active_replication_origins для управления максимальным числом активных источников репликации (Эйлер Тавейра) §
В предыдущих версиях контроль осуществлялся с помощью параметра max_replication_slots, но новый параметр позволяет использовать больше источников в случаях, когда требуется меньше слотов.
E.6.3.1.8. Логическая репликация #
Добавлена возможность логической репликации значений автоматически генерируемых столбцов (Шубхам Ханна, Вигнеш Си, Хоу Чжицзе, Шлок Кьял, Питер Смит) § § § §
Если в публикации указан список столбцов, то публикуются все эти столбцы, автоматически генерируемые и не генерируемые. Без указанного списка столбцов опция публикации
publish_generated_columnsуправляет публикацией автоматически генерируемых столбцов. Ранее значения автоматически генерируемых столбцов не реплицировались, и подписчик должен был вычислять значения, если это возможно; новшество особенно полезно для подписчиков, не использующих Tantor BE, у которых отсутствует такая возможность.Изменён параметр потоковой передачи по умолчанию в CREATE SUBSCRIPTION с
offнаparallel(Вигнеш Си) §ALTER SUBSCRIPTION теперь может изменять поведение репликационного слота в отношении двухфазной фиксации (Хайато Курода, Аджин Чериан, Амит Капила, Хоу Чжицзе) § §
Логируются конфликты, возникающие при применении изменений логической репликации (Хоу Чжицзе, Ниша Мунд) § § § § §
Также конфликты отображаются в новых столбцах представления
pg_stat_subscription_stats.
E.6.3.2. Утилиты #
Добавлены виртуальные генерируемые столбцы, которые теперь используются по умолчанию (Питер Эйзентраут, Цзянь Хи, Ричард Гуо, Дин Рашид) § § §
Виртуальные вычисляемые столбцы генерируют свои значения при чтении столбцов, а не при записи. Поведение при записи всё ещё может быть задано с помощью опции
STORED.Добавлена поддержка
OLD/NEWдляRETURNINGв запросах DML (Дин Рашид) §Ранее
RETURNINGвозвращал только новые значения для INSERT и UPDATE, и старые значения для DELETE; для MERGE возвращалось соответствующее значение для выполненного внутреннего запроса. Этот новый синтаксис позволил спискуRETURNINGвINSERT/UPDATE/DELETE/MERGEявно возвращать старые и новые значения с помощью специальных псевдонимовoldиnew. Эти псевдонимы могли быть переименованы для избежания конфликтов идентификаторов.Разрешено создавать внешние таблицы по образцу существующих локальных таблиц (Чжан Минли) §
Синтаксис выглядит следующим образом:
CREATE FOREIGN TABLE ... LIKE.Разрешено использовать
LIKEс недетерминированными правилами сортировки (Питер Айзентраут) §Разрешено использование функций поиска позиции текста с недетерминированными сортировками (Питер Айзентраут) §
Ранее это приводило к ошибке.
Добавлен встроенный провайдер сортировки
PG_UNICODE_FAST(Джефф Дэвис) §Эта локаль поддерживалась сопоставлением регистра, но сортировала в порядке кодовых точек, а не в естественном языковом порядке.
Разрешено командам VACUUM и ANALYZE обрабатывать секционированные таблицы без обработки их дочерних таблиц (Майкл Харрис) §
Это стало возможным с помощью новой опции
ONLY. Функция полезна, поскольку autovacuum не обрабатывал секционированные таблицы, а только их дочерние элементы.Добавлены функции для изменения статистики оптимизатора на уровне отношений и столбцов (Кори Хинкер) § § §
Добавлены следующие функции
pg_restore_relation_stats(),pg_restore_attribute_stats(),pg_clear_relation_stats()иpg_clear_attribute_stats().Добавлена серверная переменная file_copy_method для управления методом копирования файлов (Назир Билал Явуз) §
Она позволяет указать, использовалась ли при
CREATE DATABASE ... STRATEGY=FILE_COPYиALTER DATABASE ... SET TABLESPACEкопия файлов или клон.
E.6.3.2.1. Ограничения #
Добавлена возможность указывать неперекрывающиеся ограничения
PRIMARY KEY,UNIQUEи внешнего ключа (Пол А. Юнгвирт) § §Это можно сделать с помощью
WITHOUT OVERLAPSдляPRIMARY KEYиUNIQUE, а также с помощьюPERIODдля внешних ключей, все ограничения применяются к последнему указанному столбцу.Разрешено указывать ограничения
CHECKи внешнего ключа какNOT ENFORCED(Амул Сул) § §Это также было добавлено в столбец
pg_constraint.conenforced.Требование, чтобы связи первичный/внешний ключ использовали либо детерминированные правила сортировки, либо одинаковые недетерминированные правила сортировки (Питер Айзентраут) §
Переход на новую версию путём восстановления из дампа, созданного утилитой pg_dump или с использованием pg_upgrade, завершится с ошибкой, если эти требования будут нарушены; при возникновении такой ошибки, для успешного обновления на новую версию, придётся вручную внести изменения в определения объектов.
Ограничения целостности
NOT NULLтеперь хранятся, как и другие ограничения вpg_constraint(Альваро Эррера, Бернд Хелмле) § §Это позволило указывать имена для ограничений типа
NOT NULL. Также были добавлены ограниченияNOT NULLдля внешних таблиц и возможность наследованияNOT NULLдля дочерних таблиц.Командой ALTER TABLE теперь можно устанавливать атрибут
NOT VALIDдля ограничений целостностиNOT NULL(Рушаб Латия, Цзянь Хи) §Возможность включить или отключить наследование ограничений
NOT NULL(Сурадж Хараге, Альваро Эррера) § §Используется синтаксис:
ALTER TABLE ... ALTER CONSTRAINT ... [NO] INHERIT.Возможность использовать внешние ключи без проверки
NOT VALIDна секционированных таблицах (Амул Сул) §Разрешено удаление ограничений с опцией
ONLYна секционированных таблицах (Альваро Эррера) §В предыдущих версиях эта возможность была по ошибке запрещена.
Добавлена возможность указать
REJECT_LIMITдля установки максимального числа строк с неверными значениями, которыеCOPY FROMсможет игнорировать при загрузке (Атсуши Торикоши) §Параметр работает, когда
ON_ERROR = 'ignore'.Команде
COPY TOразрешено выгружать строки из заполненных материализованных представлений (Цзянь Хи) §Добавлен уровень
silentдляCOPYLOG_VERBOSITYдля того, чтобы не логировать в диагностический журнал кластера строки, которые были отвергнуты при загрузке (Атсуши Торикоши) §Новый уровень важности подавляет вывод сообщений о незагруженных строках, когда установлен
on_error = 'ignore'.На внешних таблицах был запрещён
COPY FREEZE(Натан Боссарт) §Ранее
COPYработал, но опцияFREEZEигнорировалась, чтобы не вводить в заблуждение, команде с этой опцией запретили выполняться на внешних таблицах.
Теперь в
EXPLAIN ANALYZEопцияBUFFERSвключена по умолчанию (Гийом Леларж, Дэвид Роули) §В вывод
EXPLAIN (WAL)добавлено количество полностью заполненных WAL-буферов (Бертран Друво) §В
EXPLAIN ANALYZEбыло добавлено отображение количества обращений к индексу, использованных на каждый узел сканирования индекса (Питер Геогеган) §Теперь команда
EXPLAINвыводит число строк с точностью до двух знаков после десятичной точки (Ибрар Ахмед, Илья Евдокимов, Роберт Хаас) § §В вывод
EXPLAINдобавлены детали об использования памяти и диска узламиMaterial,Window Aggregate, а также узлами CTE (Дэвид Роули, Тацуро Исии) § § § §В вывод
EXPLAINдобавлены детали об аргументах оконных функций (Том Лейн) §В вывод
EXPLAIN ANALYZEдобавлены статистики по кэшу рабочих процессов дляParallel Bitmap Heap Scan(Дэвид Гейер, Хейкки Линнакангас, Дунхан Лин, Алена Рыбакина, Дэвид Роули) §В вывод
EXPLAIN ANALYZEдобавлено отображение числа отключенных узлов (Роберт Хаас, Дэвид Роули, Лауренц Альбе) § § §
E.6.3.3. Типы данных #
Улучшен full case mapping для Unicode (Джефф Дэвис) § §
Добавлена возможность выполнять преобразование регистра к заглавному по условию, для всех символов в слове и только первого символа, а также преобразовывать отдельные символы регистра в несколько символов.
Возможность приводить значение
nullизjsonbк скалярным типам какNULL(Том Лейн) §Ранее такие приведения типов вызывали ошибку.
Добавлен необязательный параметр в функцию
json{b}_strip_nullsдля удаления элементов массива со значением null (Флоренц Целай) §Добавлена функция
array_sort(), которая сортирует первое измерение массива (Цзюньван Жао, Цзянь Хи) §Добавлена функция
array_reverse(), которая обращает (переставляет в обратном порядке) первое измерение массива (Александр Алексеев) §Добавлена функция
reverse(), которая переставляет байты в обратном порядке в bytea (Александр Алексеев) §Приведение типов между целочисленными типами и
bytea(Александр Алексеев) §Целочисленные значения сохраняются как значения
byteaв дополнительном коде.Улучшены коды ошибок
XMLдля более точного соответствия стандарту SQL (Том Лейн) §Эти ошибки можно получить через
SQLSTATE.
E.6.3.4. Функции #
Добавлена функция
casefold()для более сложного регистронезависимого сопоставления (Джефф Дэвис) §Она позволяет выполнять более точные сравнения, то есть в случаях, когда символ может иметь несколько эквивалентов в верхнем или нижнем регистре, или когда при изменении регистра меняется количество символов.
Появилась возможность использования функций
MIN()/MAX()с массивами и составными типами данных (Александр Алексеев, Марат Бухаров) § §Улучшен вывод
EXTRACT(QUARTER ...)для отрицательных значений (Том Лейн) §Добавлена поддержка римских цифр в функции
to_number()(Хунаид Сохаил) §Для этого используется шаблон
RN.Добавлена функция
uuidv7()генерацииUUIDверсии 7 (Андрей Бородин) §Значения
UUIDверсии 7 отсортированы по времени. Добавлена функцияuuidv4()для генерации UUID версии 4.Добавлены функции
crc32()иcrc32c()для вычисления значений CRC (Александр Алексеев) §Добавлены математические функции
gamma()иlgamma()(Дин Рашид) §Разрешён синтаксис
=>для поименованных параметров курсора в PL/pgSQL (Павел Стехуле) §Ранее принимался только синтаксис
:=.Добавлена поддержка именованных аргументов в функциях
regexp_match[es]()/regexp_like()/regexp_replace()/regexp_count()/regexp_instr()/regexp_substr()/regexp_split_to_table()/regexp_split_to_array()(Цзянь Хи) §
Добавлена функция
PQfullProtocolVersion(), которая используется для отображения полной версии протокола взаимодействия клиента и сервера, включая минорный номер версии (Джейкоб Чемпион, Йелте Феннема-Нио) §Добавлены параметры подключения libpq и переменные окружения для указания минимальной и максимальной допустимой версии протокола (Йелте Феннема-Нио) § §
Вывод изменений search_path клиенту (Александр Кукушкин, Йелте Феннема-Нио, Томаш Вондра) § §
Добавлен вывод функции
PQtrace()для всех типов сообщений, включая сообщения об аутентификации (Йелте Феннема-Нио) § § § § §Добавлен параметр подключения libpq
sslkeylogfile, позволяющий логировать SSL-ключи (Абхишек Чанда, Даниэль Густафссон) §Полезно для отладки.
Поменялись сигнатуры части функций libpq, в них стал использоваться тип данных
int64_t(Томас Манро) §Ранее использовался тип
pg_int64, который теперь считается устаревшим.
Добавлена возможность psql разбирать, связывать и закрывать именованные подготовленные запросы (Антонин Боннефой, Микаэль Пакье) § §
Для этого используются новые команды
\parse,\bind_namedи\close_prepared.В psql добавлены команды, начинающиеся с
\для выполнения конвейерных запросов (Антонин Боннефой) § § §Добавлены команды:
\startpipeline,\syncpipeline,\sendpipeline,\endpipeline,\flushrequest,\flush,\getresults.Появилась возможность добавить статус конвейера в промпт psql, и добавлены переменные psql, описывающие состояние конвейера (Антонин Боннефой) §
Новый символ промпта —
%P, новые переменные psql —PIPELINE_SYNC_COUNT,PIPELINE_COMMAND_COUNTиPIPELINE_RESULT_COUNT.Возможность добавить название службы подключения в промпт psql -
%sновая перменная psql -SERVICE(Михаэль Банк) §Добавлен параметр psql для использования расширенного режима в командах выведения данных
\d*,\l,\z,\lo_list, кроме\dx(Дин Рашид) §Для этого в конец команды добавляется символ
x.Команда psql
\conninfoтеперь использует табличный формат и выводит больше дополнительной информации (Альваро Эррера, Майквел Грасси, Хунаид Сохаил) §В вывод команд
\df+,\do+,\dAo+,\dC+psql добавлен индикаторLeakproof?защищённости функции от утечек (Юго Нагата) §Добавлены подробные данные о методе доступа к секционированным таблицам и индексам в вывод команды
\dP+(Джастин Призби) §В вывод команды psql
\dxдобавлена версия расширения по умолчаниюdefault_version(Магнус Хагандер) §Добавлена переменная psql
WATCH_INTERVAL, которая задает время ожидания по умолчанию для команды\watch(Даниэль Густафссон) §
E.6.3.7. Приложения сервера #
В initdb по умолчанию включен подсчет контрольных сумм (Грег Сабино Маллейн) § §
Новый параметр initdb
--no-data-checksumsотключает расчет контрольных сумм.Добавлен параметр initdb
--no-sync-data-filesдля пропуска фазы синхронизации файлов данных (Натан Боссарт) §Опция initdb
--no-syncвсё ещё доступна для отключения синхронизации любых файлов.Добавлена функция vacuumdb
--missing-stats-onlyдля сбора статистики только по тем объектам, на которых она отсутствует (Кори Хинкер, Натан Боссарт) § §Парметр доступен только суперпользователям и может использоваться только с параметрами
--analyze-onlyили--analyze-in-stages.Добавлен параметр pg_combinebackup
-k/--link, чтобы использовать жесткие ссылки (Израэль Барт Рубио, Роберт Хаас) §Жёсткие ссылки можно использовать не для всех файлов. Параметр не стоит использовать, если резервные копии планируется использоваться независимо друг от друга.
Утилита pg_verifybackup теперь может проверять резервные копии, созданные в формате tar (Амул Сул) §
Если в параметре pg_rewind
--source-serverуказывается имя базы данных, то оно теперь добавляется в параметрprimary_conninfo, который формируется параметром--write-recovery-conf(Масахико Савада) §В утилиту pg_resetwal добавлен параметр
--char-signedness, который обновляет в управляющем файле флаг знаковости типаchar(Масахико Савада) §
E.6.3.7.1. pg_dump/pg_dumpall/pg_restore #
В утилиту pg_dump добавлен параметр
--statistics(Джефф Дэвис) § §В pg_dump и pg_dumpall добавлен параметр
--sequence-data, чтобы выгружать данные последовательностей при использовании параметров--no-data,--schema-only,--statistics-only(Натан Боссарт) § §В утилиты pg_dump, pg_dumpall и pg_restore добавлены параметры
--statistics-only,--no-statistics,--no-dataи--no-schema(Кори Хинкер, Джефф Дэвис) §В утилиты pg_dump, pg_dumpall и pg_restore добавлен параметр
--no-policies, отключающий выгрузку и восстановление из дампа политики защиты на уровне строк (Николай Самохвалов) §Может быть полезно при миграции на системы с другими политиками.
E.6.3.7.2. pg_upgrade #
pg_upgrade теперь, по умолчанию, сохраняет статистику оптимизатора (Кори Хинкер, Джефф Дэвис, Натан Боссарт) § § § §
Расширенная статистика не сохраняется. Для отключения сохранения статистики добавлен параметр pg_upgrade
--no-statistics.В утилиту pg_upgrade добавлена возможность выполнять проверки баз данных в параллельном режиме (Натан Боссарт) § § § § § § § § § § §
Функциональность включается существующим параметром
--jobs.Добавлена параметр pg_upgrade
--swapдля переноса каталогов вместо копирования, клонирования или связывания файлов (Натан Боссарт) §Этот режим потенциально является самым быстрым.
Добавлен параметр pg_upgrade
--set-char-signednessдля задания знаковости по умолчанию дляcharв новом кластере (Масахико Савада) § §Это было сделано для случаев, когда знаковость CPU по умолчанию в кластере версии ниже 18 не совпадает со знаковостью в новом кластере.
E.6.3.7.3. Приложения логической репликации #
Добавлен параметр
--allдля pg_createsubscriber, позволяющий создавать логические реплики для всех баз данных (Шубхам Ханна) §Добавлен параметр pg_createsubscriber
--cleanдля удаления публикаций на подписчике (Шубхам Ханна) § §Добавлен параметр pg_createsubscriber
--enable-two-phase, позволяющий включать подготовленные транзакции (Шубхам Ханна) §Добавлен параметр pg_recvlogical
--enable-failoverдля задания свойстваfailoverпри создании логического слота репликации (Хайато Курода) §Также был добавлен параметр
--enable-two-phaseв качестве синонима параметра--two-phase, который объявлен устаревшим.Параметр pg_recvlogical
--drop-slotтеперь может работать без--dbname(Хайато Курода) §
E.6.3.8. Исходный код #
Добавлена поддержка аргументов, задаваемых во время выполнения в точках внедрения (Микаэль Пакье) §
Улучшена производительность обработки длинных строк
JSONс использованием инструкций SIMD (Single Instruction Multiple Data) (Дэвид Роули) §Ускорены вычисления CRC32C с использованием инструкций x86 AVX-512 (Рагхувир Девулапалли, Пол Амонсон) §
Добавлены встроенные функции ARM Neon и SVE CPU для popcount (подсчёта количества бит в целых числах) (Чиранмой Бхаттачарья, Деванга Сусмита, Рама Маллади) § §
Ускорено умножение и деление значений типа numeric (Джоэл Джейкобсон, Дин Рашид) § § § §
Добавлена TOAST-таблица к
pg_indexдля поддержки очень больших выражений в индексах, основанных на выражении (Натан Боссарт) §Удалён столбец
pg_attribute.attcacheoff(Дэвид Роули) §Добавлены процедуры
amgettreeheight, а также свойстваamconsistentequalityиamconsistentorderingв API индексных методов доступа (Марк Дилгер) § §Добавлена опорная функция GiST
stratnum()(Пол А. Юнгвирт) §Регистрация знаковости типа
char, которое используется по умолчанию для CPU в файле pg_controldata (Масахико Савада) §Добавлена поддержка Python Limited API (ограниченного API Python) в PL/Python (Питер Эйзентраут) § §
Это предотвращает проблемы, вызванные несоответствием версий Python 3.x.
Минимально поддерживаемая версия Python теперь 3.6.8 (Джейкоб Чемпион) §
Прекращена поддержка версий OpenSSL старше 1.1.1 (Даниэль Густафссон) § §
Для LLVM (при наличии) теперь требуется версия 14 или новее (Томас Манро) §
Добавлен макрос
PG_MODULE_MAGIC_EXT, позволяющий расширениям сообщать своё имя и версию (Андрей Лепихов) §Эту информацию можно получить с помощью новой функции
pg_get_loaded_modules().Задокументировано, что функции
SPI_connect()/SPI_connect_ext()всегда возвращают успешный результат (SPI_OK_CONNECT) (Степан Неретин) §Сообщения об ошибках всегда генерируются через
ereport().В PostgreSQL удалены параметры скрипта конфигурирования при установке из исходных кодов configure
--disable-spinlocksи--disable-atomics(Томас Манро) § §32-битные атомарные операции теперь обязательны.
В PostgreSQL перестали поддерживать архитектуру HPPA/PA-RISC (Том Лейн) §
E.6.3.9. Дополнительные модули #
Добавлено расширение pg_logicalinspect для проверки снимков, полученных при логическом декодировании (Бертран Друво) §
Добавлено расширение pg_overexplain, которое добавляет отладочную информацию в вывод команды
EXPLAIN(Роберт Хаас) §Добавлены выходные столбцы в функцию
postgres_fdw_get_connections()(Хайато Курода, Сагар Дилип Шедж) § § § §Новые выходные столбцы показывают следующее:
used_in_xact- используется ли обёртка сторонних данных текущей транзакцией,closed- закрыто ли соединение,user_name- имя пользователя, аremote_backend_pid- идентификатор удалённого бэкэнд-процесса.Разрешена сквозная аутентификация SCRAM между клиентом и серверами postgres_fdw (Матеус Алькантара, Питер Эйзентраут) §
Это позволяет избежать хранения информации для аутентификации postgres_fdw в базе данных postgres_fdw, и включается параметром
use_scram_passthrough. libpq использует новые параметры подключения scram_client_key и scram_server_key.Разрешена сквозная аутентификация SCRAM между клиентом и серверами dblink (Матеус Алькантара) §
В file_fdw добавлены параметры
on_errorиlog_verbosity(Атсуши Торикоши) §Эти параметры управляют тем, как file_fdw обрабатывает и сообщает об ошибочных строках в файлах.
Добавлен параметр
reject_limitдля задания максимального числа ошибочных строк, которые file_fdw может игнорировать (Атсуши Торикоши) §Активируется при условии
ON_ERROR = 'ignore'.В passwordcheck добавлен параметр конфигурации
min_password_length(Эмануэле Музелла, Маурицио Бориани) §Параметр позволяет задавать минимальную длину пароля.
В отчёты pgbench добавлено отображение количества неуспешных, повторно выполненных или пропущенных транзакций по каждому скрипту (Юго Нагата) §
Добавлен параметр конфигурации isn
weakдля возможности принимать значения ISN c неверными контрольными цифрами (Виктор Хольмберг) §В предыдущих версиях, это можно было реализовать только функцией
isn_weak().Добавлена возможность сортировки значений для ускорения создания индексов btree_gist (Бернд Хелмле, Андрей Бородин) §
Добавлена функция amcheck
gin_index_check()для верификации индексовGIN(Григорий Крячко, Хейкки Линнакангас, Андрей Бородин) §Добавлены функции
pg_buffercache_evict_relation()иpg_buffercache_evict_all(), с помощью которых, из буферного кэша можно вытеснить незакреплённые буфера (Назир Билал Явуз) §Существовавшая ранее функция
pg_buffercache_evict()теперь возвращает статус вытеснения буфера.Расширениям разрешено устанавливать пользовательские параметры EXPLAIN (Роберт Хаас, Сами Имсейх) § § §
Расширениям разрешено использовать API накопительной статистики (Микаэль Пакье) § §
E.6.3.9.1. pg_stat_statements #
С помощью pg_stat_statements можно отслеживать запросы CREATE TABLE AS и DECLARE (Антонин Боннефой) §
Этим командам теперь назначаются идентификаторы запросов.
В pg_stat_statements добавлена возможность параметризации значений SET (Грег Сабино Маллейн, Микаэль Пакье) §
Это позволяет уменьшить раздувание, вызываемое командами
SETс различающимися значениями.В
pg_stat_statementsдобавлены столбцы для отображения параллельной активности (Гийом Леларж) §Новые столбцы —
parallel_workers_to_launchиparallel_workers_launched.Добавлен столбец
pg_stat_statements.wal_buffers_fullдля отображения количества полностью заполненных WAL-буферов (Бертран Друво) §
В функцию
crypt()добавлены алгоритмы pgcryptosha256cryptиsha512crypt(Бернд Хелмле) §Добавлен режим CFB для защитного преобразования и обратного защитного преобразования (Умар Хайат) §
Добавлена функция
fips_mode(), возвращающаяtrue, если OpenSSL работает в соответствии с FIPS (Даниэль Густафссон) §Добавлен параметр конфигурации pgcrypto
builtin_crypto_enabledдля отключения встроенных функций шифрования, не соответствующих FIPS (Даниэль Густафссон, Джо Конвей) §Полезно для гарантирования того, что работа расширения соответствует FIPS.
E.6.4. Благодарности #
Следующие лица (в алфавитном порядке) внесли свой вклад в этот выпуск в качестве авторов патчей, разработчиков, рецензентов, тестировщиков или сообщили об обнаруженных проблемах.
| Абхишек Чанда |
| Адам Гуо |
| Адам Раух |
| Айдар Имамов |
| Ajin Cherian |
| Аластер Тёрнер |
| Алек Козенс |
| Aleksander Alekseev |
| Алена Рыбакина |
| Алекс Фридман |
| Алекс Ричман |
| Александр Алёхин |
| Александр Борисов |
| Alexander Korotkov |
| Александр Кожемякин |
| Alexander Kukushkin |
| Александр Кузьменков |
| Александр Кузнецов |
| Alexander Lakhin |
| Alexander Pyhalov |
| Александра Ван |
| Алексей Двойченков |
| Алексей Махмутов |
| Алексей Шишкин |
| Али Акбар |
| Álvaro Herrera |
| Альваро Монхиль |
| Amit Kapila |
| Amit Langote |
| Amul Sul |
| Андреас Карлссон |
| Андреас Шербаум |
| Андреас Ульбрих |
| Андрей Лепихов |
| Andres Freund |
| Эндрю |
| Andrew Bille |
| Andrew Dunstan |
| Эндрю Джексон |
| Эндрю Кейн |
| Эндрю Уоткинс |
| Andrey Borodin |
| Андрей Чудновский |
| Андрей Рачицкий |
| Андрей Рудометов |
| Энди Алсуп |
| Andy Fan |
| Anthonin Bonnefoy |
| Энтони Хсу |
| Энтони Люн |
| Anton Melnikov |
| Anton Voloshin |
| Antonin Houska) |
| Антти Лямпинен |
| Арсений Мухин |
| Артур Закиров |
| Арун Тхирупати |
| Ashutosh Bapat |
| Асфатор |
| Atsushi Torikoshi |
| Ави Вайнберг |
| Aya Iwata |
| Айюш Тивари |
| Айюш Ватса |
| Бастьен Рукарье |
| Бен Пичи Хигдон |
| Benoit Lobréau |
| Бернд Хельмле |
| Бернд Райс |
| Бернхард Видеманн |
| Bertrand Drouvot |
| Бертран Мамасам |
| Bharath Rupireddy |
| Богдан Григоренко |
| Бою Ян |
| Браулио Фернандо Гонсалес |
| Bruce Momjian |
| Иван Быков |
| Кэмерон Вогт |
| Cary Huang |
| Седрик Вильмен |
| Кис ван Зеланд |
| ЧанАо Чэнь |
| Чао Ли |
| Chapman Flack |
| Чарльз Самборски |
| Чэнвэнь Ву |
| Чэнси Сун |
| Чиранмой Бхаттачарья |
| Крис Гуч |
| Кристиан Харукевич |
| Christoph Berg |
| Кристоф Куртуа |
| Кристофер Инокути |
| Клеменс Рук |
| Corey Huinker |
| Крейг Милхайзер |
| Крисп Ли |
| Dagfinn Ilmari Mannsåker |
| Даниил Элишаков |
| Daniel Gustafsson |
| Daniel Vérité |
| Daniel Westermann |
| Daniele Varrazzo |
| Даниил Давыдов |
| Дарья Шанина |
| Dave Cramer |
| Dave Page |
| Дэвид Бенджамин |
| David Christensen |
| Дэвид Фидлер |
| David G. Johnston |
| Дэвид Гейер |
| David Rowley |
| David Steele |
| Дэвид Уилер |
| David Zhang |
| Давиндер Сингх |
| Dean Rasheed |
| Деванга Сусмита |
| Деврим Гюндюз |
| Dian Fay |
| Dilip Kumar |
| Димитриос Апостолу |
| Дипеш Дхамелия |
| Дмитрий Бондарь |
| Dmitry Dolgov |
| Dmitry Koval |
| Дмитрий Коваленко |
| Дмитрий Юричев |
| Dominique Devienne |
| Дунхан Лин |
| Доржпалам Батбаатар |
| Дрю Каллахан |
| Дункан Сандс |
| Дуэйн Тоуэлл |
| Дзмитрий Ячник |
| Egor Chindyaskin |
| Egor Rogov |
| Эмануэль Ионеску |
| Эмануэле Музелла |
| Emre Hasegeli |
| Эрик Сир |
| Erica Zhang |
| Эрик Нордстрём |
| Erik Rijkers |
| Эрик Винхольд |
| Erki Eessaar |
| Итан Мерц |
| Этьен Лафарж |
| Etsuro Fujita |
| Euler Taveira |
| Эван Си |
| Евгений Горбанёв |
| Фабио Р. Слузала |
| Fabrízio de Royes Mello |
| Фейке Стенберген |
| Feliphe Pozzer |
| Феликс |
| Огненный Изумруд |
| Флоренц Целай |
| Франческо Деграсси |
| Франк Штрайциг |
| Frédéric Yhuel |
| Фредрик Видлерт |
| Габриэле Бартолини |
| Гэвин Панелла |
| Geoff Winkless |
| Джордж МакКэррон |
| Gilles Darold |
| Грант Грычан |
| Грег Бёрд |
| Greg Sabino Mullane |
| Greg Stark |
| Григорий Крячко |
| Guillaume Lelarge |
| Гуннар Морлинг |
| Гуннар Вагнер |
| Gurjeet Singh |
| Хайфан Ван |
| Хадзиме Мацунага |
| Хамид Ахтар |
| Hannu Krosing |
| Хари Кришна Сундер |
| Харука Такацука |
| Hayato Kuroda |
| Heikki Linnakangas |
| Хиронобу Сузуки |
| Якобс Хольгер |
| Hubert Lubaczewski |
| Гюго Дюбуа |
| Хьюго Чжан |
| Хунаид Сохаил |
| Хайвел Карвер |
| Ian Barwick |
| Ibrar Ahmed |
| Игорь Гнатюк |
| Игорь Корот |
| Илья Евдокимов |
| Илья Гладышев |
| Ян Ильясов |
| Имран Захир |
| Исаак Морланд |
| Израиль Барт Рубио |
| Иван Куш |
| Джейкоб Брейзил |
| Jacob Champion |
| Jaime Casanova |
| Якоб Еггер |
| Jakub Wartak |
| James Coleman |
| Джеймс Хантер |
| Ян Беренс |
| Japin Li |
| Джейсон Смит |
| Джаеш Деханкар |
| Дживан Чалке |
| Jeff Davis |
| Jehan-Guillaume de Rorthais |
| Йелте Феннема-Нио |
| Jian He |
| Цзянхуа Ян |
| Цзяо Шуньтянь |
| Джим Джонс |
| Джим Нэсби |
| Jingtang Zhang |
| Цзинчжоу Фу |
| Джо Конвей |
| Joel Jacobson |
| Джон Хатчинс |
| John Naylor |
| Jonathan Katz |
| Хорхе Солорсано |
| Хосе Вилланова |
| Josef Šimánek |
| Joseph Koshakow |
| Julien Rouhaud |
| Junwang Zhao |
| Justin Pryzby |
| Кайдо Вайкла |
| Кайме |
| Карина Лицкевич |
| Картик С |
| Иван Картышов |
| Кашиф Зишан |
| Кейсуке Курода |
| Кевин Хейл Бойс |
| Кевин К Биджу |
| Кирилл Решке |
| Кирилл Здорный |
| Коэн Де Гроот |
| Коичи Судзуки |
| Коки Накамура |
| Konstantin Knizhnik |
| Кохэй Суту |
| Kuntal Ghosh |
| Kyotaro Horiguchi |
| Лакшми Нараяна Велаюдам |
| Lars Kanis |
| Лоуренс Парри |
| Laurenz Albe |
| Леле Гайфакс |
| Ли Юн |
| Лилиан Онтоуи |
| Линбинь Мэн |
| Любослав Шпилак |
| Лука Валлиза |
| Lukas Fittl |
| Maciek Sakrejda |
| Magnus Hagander |
| Mahendra Singh Thalor |
| Махендракар Шринивасарао |
| Майкель Грасси |
| Максим Коротков |
| Максим Мельников |
| Ман Цзэн |
| Марат Бухаров |
| Марк Балмер |
| Марко Ненчарини |
| Маркос Пегораро |
| Marina Polyakova |
| Марк Каллахан |
| Mark Dilger |
| Марлин Брандштеттер |
| Марлене Рейтерер |
| Мартин Рахманов |
| Masahiko Sawada |
| Masahiro Ikeda |
| Masao Fujii |
| Мейсон Маккаман |
| Мэт Арье |
| Матеус Алкантара |
| Матс Киндал |
| Мэтью Гейблер-Ли |
| Мэтью Ким |
| Мэтью Стерретт |
| Мэтью Вудкрафт |
| Matthias van de Meent |
| Матье Денэ |
| Маурицио Бориани |
| Макс Джонсон |
| Макс Мэдден |
| Максим Богу́к |
| Maxim Orlov |
| Максимилиан Хшан |
| Melanie Plageman |
| Мелих Мутлу |
| Мерт Алев |
| Michael Banck |
| Михаил Бондаренко |
| Майкл Христофидес |
| Майкл Гиссин |
| Michael Harris |
| Микаэль Пакье |
| Михаил Николаев |
| Михал Клечек |
| Мишель Пельтье |
| Микаэль Гурлауэн |
| Михаил Грибков |
| Михаил Кот |
| Милош Хмура |
| Мураликришна Бандара |
| Мурат Эфендиоглу |
| Мутаамба Мааша |
| Наим Ахтер |
| Нат Макаревич |
| Nathan Bossart |
| Навнит Кумар |
| Nazir Bilal Yavuz |
| Нейл Конвей |
| Никколо Фей |
| Ник Дэвис |
| Николас Маус |
| Ник Браса |
| Нихил Радж |
| Никита |
| Никита Калинин |
| Никита Малахов |
| Nikolay Samokhvalov |
| Nikolay Shaplov |
| Ниша Мунд |
| Nitin Jadhav |
| Нитин Мотиани |
| Noah Misch |
| Noboru Saito |
| Noriyoshi Shinoda |
| Оле Педер Брандцэг |
| Олег Сибиряков |
| Олег Целебровский |
| Олег Самойлов |
| Onder Kalaci |
| Ондржей Навратил |
| Патрик Штэлин |
| Пол Амонсон |
| Paul Jungwirth |
| Пол Рэмси |
| Pavel Borisov |
| Pavel Luzanov |
| Павел Некрасов |
| Pavel Stehule |
| Peter Eisentraut |
| Peter Geoghegan |
| Питер Миттере |
| Peter Smith |
| Фил Итон |
| Филипп Сальвисберг |
| Филипп Бодоэн |
| Пьер Жиро |
| Пиксянь Ши |
| Полина Бунгина |
| Пшемыслав Штох |
| Quynh Tran |
| Рафия Сабих |
| Рагхувир Девулапалли |
| Rahila Syed |
| Рама Маллади |
| Ран Бенита |
| Ranier Vilela |
| Ренан Алвес Фонсека |
| Richard Guo |
| Ричард Нилл |
| Ринтаро Икеда |
| Robert Haas |
| Роберт Трит |
| Robins Tharakan |
| Roman Zharkov |
| Рональд Круз |
| Ронан Дунклау |
| Rui Zhao |
| Рушаб Латия |
| Рустам Аллаков |
| Рё Канбаяши |
| Ryohei Takahashi |
| РётаК |
| Сагар Дилип Шедж |
| Сальваторе Дипьетро |
| Сэм Габриэльссон |
| Сэм Джеймс |
| Самир Кумар |
| Sami Imseih |
| Самуэль Тибо |
| Сатьянараяна Нарлапурам |
| Себастьян Скалецкий |
| Сенли Чхве |
| Sergei Kornilov |
| Сергей Беляшов |
| Сергей Дудоладов |
| Сергей Прохоренко |
| Сергей Саргсян |
| Сергей Соловьёв |
| Сергей Татаринцев |
| Шейк Мохаммад Муджиб |
| Шон Маккой |
| Shenhao Wang |
| Шихао Чжун |
| Shinya Kato |
| Шлок Кьял |
| Шубхам Ханна |
| Швета Малик |
| Simon Riggs |
| Григорий Смолкин |
| Софья Копикова |
| Сонг Хунъюй |
| Сун Цзиньчжоу |
| Soumyadeep Chakraborty |
| Шраван Кумар |
| Шринатх Редди |
| Stan Hu |
| Степан Неретин |
| Стивен Фьюэр |
| Stephen Frost |
| Steve Chavez |
| Стивен Ню |
| Suraj Kharage |
| Sven Klemm |
| Takamichi Osumi |
| Takeshi Ideriha |
| Tatsuo Ishii |
| Тед Юй |
| Телс |
| Тендер Ван |
| Федор Сигаев |
| Thom Brown |
| Томас Бэлер |
| Томас Креннвалльнер |
| Томас Манро |
| Тим Вуд |
| Тимур Магомедов |
| Тобиас Вендорфф |
| Тодд Кук |
| Тофиг Алиев |
| Tom Lane |
| Tomas Vondra |
| Томаш Рыбак |
| Томаш Шиповский |
| Торстен Фёрч |
| Тоши Харада |
| Тристан Партин |
| Тривени Н |
| Умар Хайат |
| Валлимахараджан Г |
| Вася Бойцов |
| Victor Yegorov |
| Vignesh C |
| Виктор Хольмберг |
| Винисиус Абраан |
| Винод Шридхаран |
| Вирендер Сингла |
| Виталий Давыдов |
| Владлен Пополитов |
| Владислав Небожин |
| Валид Ибрагим |
| Веббо Хан |
| Вэньхуэй Цю |
| Will Mortensen |
| Уилл Стори |
| Wolfgang Walther |
| Синь Чжан |
| Син Го |
| Сюнэн Чжоу |
| Янь Чэнпэнь |
| Ян Лэй |
| Ярослав Сабуров |
| Ярослав Сырыця |
| Ясир Хуссейн |
| Ясуо Хонда |
| Йогеш Шарма |
| Юнхао Ли |
| Йоран Хелинг |
| Юй Лян |
| Yugo Nagata |
| Юхан Цю |
| Юки Сейно |
| Yura Sokolov |
| Юрий Рашковский |
| Юси Огивара |
| Юсукэ Сугиэ |
| Юта Кацураги |
| Юто Сасаки |
| Юуки Фудзии |
| Юя Ватари |
| Зейн Даффилд |
| Цзэюань Ху |
| Zhang Mingli |
| Zhihong Yu |
| Чжицзе Хоу |
| Жолт Парраги |