E.3. Выпуск 17 #
Дата выпуска: 2024-09-26
E.3.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.3.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.3.3. Изменения #
Ниже вы найдёте подробный список изменений, произошедших между предыдущим основным выпуском и выпуском PostgreSQL 17.
E.3.3.1. Сервер #
E.3.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.3.3.1.2. Индексы #
E.3.3.1.3. Общая производительность #
Более эффективное удаление и заморозка кортежей в процессе
VACUUM
(Мелани Плейгман, Хейкки Линнакангас) §Теперь в процессе очистки генерируется меньше трафика WAL.
Более эффективное хранение ссылок на кортежи процессом очистки (Масахико Савада, Джон Нейлор) § § § §
Кроме того, для процесса очистки удалено скрытое ограничение памяти в 1 ГБ, ранее действовавшее даже при повышенных значениях maintenance_work_mem или autovacuum_work_mem.
Оптимизация очистки отношений без индексов (Мелани Плейгман) §
Увеличение значения по умолчанию до 2 МБ для vacuum_buffer_usage_limit (Томас Манро) §
Улучшение производительности при проверке ролей с членством во множестве ролей (Натан Боссарт) §
Улучшение производительности записи в WAL в условиях высокой конкуренции за ресурсы (Бхарат Рупиредди) §
Улучшение производительности при передаче клиенту больших блоков данных (Мелих Мутлу) §
Возможность объединять операции чтения данных файловой системы с помощью io_combine_limit (Томас Манро, Андрес Фройнд, Мелани Плейгман, Назир Билал Явуз) § § §
E.3.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.3.3.1.5. Права #
Предоставление права на выполнение операций по обслуживанию БД (Натан Боссарт) §
Для этого можно выдать право
MAINTAIN
на уровне таблицы или предоставить членство в предопределённой ролиpg_maintain
, в результате чего будут доступны следующие операции:VACUUM
,ANALYZE
,REINDEX
,REFRESH MATERIALIZED VIEW
,CLUSTER
иLOCK TABLE
.Возможность для ролей с членством в роли
pg_monitor
выполнятьpg_current_logfile()
(Павло Голуб, Натан Боссарт) §
E.3.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.3.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.3.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.3.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.3.3.3. Типы данных #
Поддержка значений
+/-infinity
в типе данныхinterval
(Джозеф Кошаков, Цзянь Хи, Ашутош Бапат) §Возможность использовать тип
ENUM
, добавленный посредствомALTER TYPE
, если тип был создан в той же транзакции (Том Лейн)§Ранее такой сценарий не допускался.
Возможность модифицировать изменяемые представления командой
MERGE
(Дин Рашид)§Добавление
WHEN NOT MATCHED BY SOURCE
вMERGE
(Дин Рашид) §Условие
WHEN NOT MATCHED
и ранее поддерживалось для целевых строк.Возможность использовать предложение
RETURNING
вMERGE
(Дин Рашид) §Новая функция
merge_action()
вRETURNING
позволяет получить информацию о DML-операции для каждой строки.
E.3.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.3.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.3.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.3.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.3.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.3.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) |