Дата выпуска: 2024-09-26
PostgreSQL 17 содержит много новых возможностей и улучшений, в том числе:
Новая система управления памятью для VACUUM, потребляющая меньше памяти и повышающая производительность очистки.
Расширение синтаксиса SQL/JSON, в том числе добавление функций-конструкторов, предикатов и функции JSON_TABLE() для преобразования данных типа JSON в табличное представление.
Различные улучшения производительности запросов, в том числе для последовательного чтения с использованием потокового ввода-вывода, записи при большой параллельной активности и поиска по нескольким значениям в индексах btree.
Улучшения логической репликации, в том числе:
Управление отработкой отказа
Утилита pg_createsubscriber для создания логических реплик из резервных серверов физической репликации
pg_upgrade теперь сохраняет слоты логической репликации на публикующих серверах и полное состояние подписки на подписчиках. Теперь после обновления на будущие основные версии логическая репликация будет продолжаться без запроса копирования для повторной синхронизации.
Новый параметр подключения sslnegotiation=direct на стороне клиента, который устанавливает TLS-соединение напрямую без предварительного согласования.
Поддержка инкрементального резервного копирования в pg_basebackup.
Новый параметр ON_ERROR ignore в COPY, позволяющий продолжать копирование даже в случае ошибки.
Предыдущие пункты и другие новые возможности PostgreSQL 17 более подробно описаны в следующих разделах.
Тем, кто хочет перенести данные из любой предыдущей версии, необходимо выполнить выгрузку/восстановление данных с помощью pg_dumpall либо использовать pg_upgrade или логическую репликацию. Общую информацию о переходе на более новую основную версию можно найти в Разделе 17.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().
Ниже вы найдёте подробный список изменений, произошедших между предыдущим основным выпуском и выпуском PostgreSQL 17.
Возможность для оптимизатора улучшать планы с 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 для вывода информации о гистограммах для диапазонных типов данных (Егор Рогов, Соумйадип Чакраборти) §
Более эффективное удаление и заморозка кортежей в процессе VACUUM (Мелани Плейгман, Хейкки Линнакангас) §
Теперь в процессе очистки генерируется меньше трафика WAL.
Более эффективное хранение ссылок на кортежи процессом очистки (Масахико Савада, Джон Нейлор) § § § §
Кроме того, для процесса очистки удалено скрытое ограничение памяти в 1 ГБ, ранее действовавшее даже при повышенных значениях maintenance_work_mem или autovacuum_work_mem.
Оптимизация очистки отношений без индексов (Мелани Плейгман) §
Увеличение значения по умолчанию до 2 МБ для vacuum_buffer_usage_limit (Томас Манро) §
Улучшение производительности при проверке ролей с членством во множестве ролей (Натан Боссарт) §
Улучшение производительности записи в WAL в условиях высокой конкуренции за ресурсы (Бхарат Рупиредди) §
Улучшение производительности при передаче клиенту больших блоков данных (Мелих Мутлу) §
Возможность объединять операции чтения данных файловой системы с помощью io_combine_limit (Томас Манро, Андрес Фройнд, Мелани Плейгман, Назир Билал Явуз) § § §
Новое системное представление 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.
Предоставление права на выполнение операций по обслуживанию БД (Натан Боссарт) §
Для этого можно выдать право MAINTAIN на уровне таблицы или предоставить членство в предопределённой роли pg_maintain, в результате чего будут доступны следующие операции: VACUUM, ANALYZE, REINDEX, REFRESH MATERIALIZED VIEW, CLUSTER и LOCK TABLE.
Возможность для ролей с членством в роли pg_monitor выполнять pg_current_logfile() (Павло Голуб, Натан Боссарт) §
Добавление системной переменной 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.
Поддержка инкрементального резервного копирования файловой системы (Роберт Хаас, Якуб Вартак, Томаш Вондра) § §
Для создания инкрементальных резервных копий используется новый ключ 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 в протокол репликации (Хоу Чжицзе, Швета Малик) §
Добавление приложения 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 (Питер Смит) §
Добавление нового параметра 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 (Дмитрий Долгов) §
Поддержка значений +/-infinity в типе данных interval (Джозеф Кошаков, Цзянь Хи, Ашутош Бапат) §
Возможность использовать тип ENUM, добавленный посредством ALTER TYPE, если тип был создан в той же транзакции (Том Лейн)§
Ранее такой сценарий не допускался.
Возможность модифицировать изменяемые представления командой MERGE (Дин Рашид)§
Добавление WHEN NOT MATCHED BY SOURCE в MERGE (Дин Рашид) §
Условие WHEN NOT MATCHED и ранее поддерживалось для целевых строк.
Возможность использовать предложение RETURNING в MERGE (Дин Рашид) §
Новая функция merge_action() в RETURNING позволяет получить информацию о DML-операции для каждой строки.
Добавление функции 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 (Дагфинн Ильмари Маннсакер, Жиль Даролд, Кристоф Хейсс, Стив Чавес, Вигнеш Си, Павел Борисов, Цзянь Хи) § § § § § § § §
Добавление приложения 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.
Прекращение поддержки 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 для проверок предикатов (Дэвид Уилер) §
Возможность проталкивать запросы 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(), позволяющей вытеснять страницы из общих буферов (Палак Чатурведи, Томас Манро) §
Это полезно при тестировании.
Замена параметров 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, в которых отслеживается время создания записи и время последнего сброса минимальных/максимальных значений (Андрей Зубков) §
Перечисленные ниже (в алфавитном порядке) лица сделали вклад в этот выпуск, разрабатывая, совершенствуя и рецензируя код, принимая правки, проводя тестирование или сообщая о проблемах.
| Абхиджит Менон-Сен (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) |
| Антонин Боннефой (Anthonin Bonnefoy) |
| Антонин Хоуска (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) |