リリース日: 2021-09-30
PostgreSQL 14には以下をはじめとする多数の新機能と拡張が含まれます。
ストアドプロシージャがOUTパラメータを通してデータを返せるようになりました。
SQL標準の共通テーブル式のSEARCHとCYCLEオプションが実装されました。
配列のみならず、これが有益な表記法となる任意のデータ型に添え字を適用できるようになりました。
本リリースでは、jsonbおよびhstore型で添え字の演算子が使えるようになりました。
多重範囲型が加わって範囲型が拡張され、非連続なデータ範囲の表現が可能になりました。
パラレルクエリ、同時実行数の多いワークロード、パーティションテーブル、論理レプリケーション、および、バキューム処理に対して、多数の性能改善が行われました。
Bツリーインデックスの更新がより効率的に処理されるようになり、インデックスの膨張が減少しました。
データベースがトランザクションIDの周回状態に近づき始めた場合、VACUUMが自動的により積極的になり、また、不必要なクリーンアップを省略するようになりました。
式について拡張統計を収集できるようになり、複雑な問い合わせに対してより良いプラン作成が可能になりました。
libpqで複数の問い合わせのパイプライン処理ができるようになりました。これにより遅延の大きい接続上でスループットを向上させることができます。
PostgreSQL 14の上記の項目とその他の新機能は次節でより詳しく説明されます。
以前のリリースからデータを移行したい時は、どのリリースについても、pg_dumpallを利用したダンプとリストア、あるいはpg_upgradeやロジカルレプリケーションの使用が必要です。 新たなメジャーバージョンへの移行に関する一般的な情報については19.6を参照してください。
バージョン14には、以前のバージョンとの互換性に影響するかもしれない多数の変更点が含まれています。以下の非互換性に注意してください。
引数型を伴う特定の組み込み配列関数を参照するユーザ定義オブジェクトは、再作成しなければなりません。 (Tom Lane)
特に、array_append()、array_prepend()、array_cat()、array_position()、array_positions()、array_remove()、array_replace()、width_bucket()は、anyarrayの引数を取っていましたが、これからはanycompatiblearrayの引数になります。
そのため、集約や演算子のようなこれらの配列関数のシグネチャを参照するユーザ定義オブジェクトはアップグレード前に削除して、アップグレード後に再作成しなければなりません。
組み込みの幾何データ型とcontribモジュールのcube、hstore、intarray、segに対する、非推奨の包含演算子@および~を廃止しました。
(Justin Pryzby)
より一貫性のある<@と@>が多年にわたり推奨されてきました。
破棄されたトークンを含む問い合わせテキストをより適切にパースするようにto_tsquery()とwebsearch_to_tsquery()を修正しました。
(Alexander Korotkov)
アンダースコアなど特定の破棄トークンは、これらの関数に誤ったtsquery出力を生成させていました。例えば、websearch_to_tsquery('"pg_class pg"')とto_tsquery('pg_class <-> pg')は( 'pg' & 'class' ) <-> 'pg'を出力していましたが、これからはいずれも'pg' <-> 'class' <-> 'pg'を出力するようになります。
引用符内にある複数の隣接する破棄されたトークンを適切にパースするようにwebsearch_to_tsquery()を修正しました。
(Alexander Korotkov)
これまでは、複数の隣接する破棄されたトークンを含む引用符内のテキストは複数のトークンとして扱われていて、誤ったtsquery出力を引き起こしていました。例えば、websearch_to_tsquery('"aaa: bbb"')は'aaa' <2> 'bbb'を出力していましたが、これからは'aaa' <-> 'bbb'を出力するようになります。
float8型に替えてnumeric型を返すようにEXTRACT()を変更しました。
(Peter Eisentraut)
これにより一部の使い方における精度の損失の問題を回避します。
以前の基となる関数date_part()を使うことで旧来の振る舞いは引き続き利用可能です。
また、dateデータ型の要素でない単位に対して、EXTRACT(date)がエラーを投げるようになりました。
numeric引数のvar_samp()とstddev_samp()を、入力が単独のNaN値であるときにNULLを返すように変更しました。
(Tom Lane)
これまではNaNが返されました。
has_column_privilege()が、属性番号を使ったときに存在しないか削除された列の検査についてfalseを返すようになりました。
(Joe Conway)
これまではこのような属性番号には不正な列というエラーが返りました。
ウィンドウ関数の無限範囲の処理を修正しました。 (Tom Lane)
これまでは、'inf' PRECEDING AND 'inf' FOLLOWINGのようなウィンドウフレーム句は誤った結果を返しました。
階乗演算子の!と!!を廃止しました。関数numeric_fac()も同様に廃止されます。
(Mark Dilger)
factorial()関数は引き続きサポートされます。
負数のfactorial()を禁止しました。
(Peter Eisentraut)
これまでは、このような場合に1を返しました。
後置(右単項)演算子のサポートを廃止しました。 (Mark Dilger)
後置演算子がダンプされている場合、pg_dumpとpg_upgradeは警告を出します。
正規表現の改行を区別するモードで、略記法の\Dと\Wが改行にマッチできるようにしました。
(Tom Lane)
これまではこのモードで改行にマッチしませんでしたが、これは他の一般的な正規表現エンジンの振る舞いと異なるものです。
従来の振る舞いは[^[:digit:]]や[^[:word:]]を使うことで得られます。
正規表現の後方参照にマッチするときに制約を無視するようにしました。 (Tom Lane)
例えば、(^\d+).*\1で、^の制約は文字列の始まりでは適用されるべきですが、\1にマッチするときにはその限りではありません。
正規表現の文字クラスで範囲の先頭または末尾における\wを禁止しました。
(Tom Lane)
これまでは許容されていましたが予期せぬ結果をもたらしました。
カスタムサーバパラメータ名にクォートされていないSQL識別子で有効な文字だけを使うことを要求するようにしました。 (Tom Lane)
password_encryptionサーバパラメータのデフォルトをscram-sha-256に変更しました。
(Peter Eisentraut)
これまではmd5でした。
サーバ設定を変えるかパスワードがMD5形式で指定されていない限り、新しいパスワードは全てSHA256として格納されます。
また、以前はmd5の別名であった旧式の(そして文書化されていない)ブーリアン風の値は受け入れられなくなりました。
サーバパラメータvacuum_cleanup_index_scale_factorを廃止しました。
(Peter Geoghegan)
この設定はPostgreSQLバージョン13.3から無視されていました。
サーバパラメータoperator_precedence_warningを廃止しました。
(Tom Lane)
この設定はPostgreSQL 9.5の変更についてアプリケーションに警告するために使われていました。
pg_hba.confでのclientcertの仕様を大幅に改定しました。
(Kyotaro Horiguchi)
値1/0/no-verifyはサポートされなくなりました。
文字列のverify-caとverify-fullだけが使用できます。
また、cert認証が有効な場合にはcertがverify-fullの検査を必要とするため、verify-caは許されません。
SSL圧縮のサポートを廃止しました。 (Daniel Gustafsson, Michael Paquier)
これは、以前のPostgreSQLリリースでデフォルトでは既に無効化されており、また、最新バージョンのOpenSSLとTLSでは最早サポートされません。
サーバとlibpqでバージョン2ワイヤプロトコルのサポートを廃止しました。 (Heikki Linnakangas)
これはPostgreSQL7.3(2002年にリリース)で最後にデフォルトとして使われました。
CREATE/DROP LANGUAGEコマンドで言語名のシングルクォートを禁止しました。
(Peter Eisentraut)
以前はシーケンスとTOASTテーブルに対して作られていた複合型を廃止しました。 (Tom Lane)
ecpgでSQLコマンド文字列でのダブルクォート記号を正しく処理するようにしました。 (Tom Lane)
以前は、'abc''def'が'abc'def'として、"abc""def"が"abc"def"としてサーバに渡されて、構文エラーを引き起こしていました。
intarrayに対する包含の演算子(<@と@>)にGiSTインデックスが使用されなくなりました。
(Tom Lane)
これまでフルGiSTインデックススキャンが必要であったため、単にこれを避けてヒープスキャンをするようにしました。その方が高速です。 この用途で作られたインデックスは削除すべきです。
contribプログラムのpg_standbyを廃止しました。 (Justin Pryzby)
tablefuncの関数normal_rand()が負の値を受け付けなくしました。
(Ashutosh Bapat)
負の値は望ましくない結果を生成していました。
以下にPostgreSQL 14と前メジャーリリースとの詳細な変更点を記載します。
定義済ロールpg_read_all_dataおよびpg_write_all_dataを追加しました。
(Stephen Frost)
これらの非ログインロールを使って、全てのテーブル、ビュー、シーケンスへの読み込みや書き込みの権限を与えることができます。
現在のデータベースの所有者のみが含まれる定義済ロールpg_database_ownerを追加しました。
(Noah Misch)
これは特にテンプレートデータベースにおいて有用です。
バックエンドのクラッシュ後に一時ファイルを削除するようにしました。 (Euler Taveira)
これまでは、このようなファイルはデバッグ目的のために残されていました。 必要に応じて新たなサーバパラメータremove_temp_files_after_crashを使って削除を無効化できます。
長期実行の問い合わせをクライアントが切断した場合に中断できるようにしました。 (Sergey Cherkashin, Thomas Munro)
サーバパラメータclient_connection_check_intervalで問い合わせ内で接続喪失を検査するかどうかを制御できます。 (これはLinuxと他の僅かなオペレーティングシステムでサポートされます。)
Add an optional timeout parameter to pg_terminate_backend()
(Magnus Hagander)
常に幅の広いタプルをほとんど空のヒープページに追加できるようにしました。 (John Naylor, Floris van Nee)
これまでは挿入でページのフィルファクタを超えるであろうタプルは、代わりに新たなページに追加されていました。
SSLの接続パケットでサーバ名表示(SNI)を追加しました。 (Peter Eisentraut)
これはクライアント接続オプションsslsniをオフにすることで無効化できます。
バキュームが除去可能なインデックスエントリ数が些少であるときにインデックスのバキューム処理を省略できるようにしました。 (Masahiko Sawada, Peter Geoghegan)
バキュームのパラメータINDEX_CLEANUPに、この最適化を行う新たなデフォルトのautoが加わります。
バキュームがより積極的に削除されたBツリーページをフリースペースマップに加えることができるようにしました。 (Peter Geoghegan)
これまでは以前のバキュームで削除済みと印付けされたページしかフリースペースマップに追加できませんでした。
バキュームが、未使用の末尾ヒープラインポインタが使用している空間を回収できるようにしました。 (Matthias van de Meent, Peter Geoghegan)
バキュームが最小ロックのインデックス操作中により積極的に無効行を除去できるようにしました。 (Álvaro Herrera)
具体的には、CREATE INDEX CONCURRENTLYとREINDEX CONCURRENTLYが、他のリレーションにおける無効行の除去を制限しないようになりました。
多数のリレーションを持つデータベースのバキューム処理を高速化しました。 (Tatsuhito Kasahara)
現在のハードウェア能力をよりよく反映するため、vacuum_cost_page_missのデフォルト値を減らしました。 (Peter Geoghegan)
TOASTテーブルのバキューム処理を省略できるようにしました。 (Nathan Bossart)
VACUUMに、falseに設定することでTOASTの処理を無効化できるPROCESS_TOASTオプションが加わりました。
また、vacuumdbには、--no-process-toastオプションが加わりました。
COPY FREEZEが適切にページ可視性ビットを更新するようにしました。
(Anastasia Lubennikova, Pavan Deolasee, Jeff Janes)
テーブルのXIDあるいはマルチXIDの周回が近い場合に、バキューム操作がより積極的に行われるようにしました。 (Masahiko Sawada, Peter Geoghegan)
これはvacuum_failsafe_ageとvacuum_multixact_failsafe_ageで制御されます。
トランザクションIDとマルチトランザクションの周回の前に警告を出す時点とハードリミットを増やしました。 (Noah Misch)
これにより周回の警告を受け取らずに障害が発生する可能性を減らせると考えられます。
自動バキュームのログ出力にインデックス毎の情報を追加しました。 (Masahiko Sawada)
多数のパーティションを持ったパーティションテーブルの更新と削除の性能を改善しました。 (Amit Langote, Tom Lane)
この変更は、このような場合のプランナのオーバーヘッドを大幅に減少させるともに、パーティションテーブルでの更新/削除が実行時にパーティション除去を使用できるようにします。
ブロックしない方法でパーティションを切り離しできるようにしました。 (Álvaro Herrera)
その構文は、ALTER TABLE ... DETACH PARTITION ... CONCURRENTLYとFINALIZEです。
パーティション境界値ではCOLLATE句を無視するようにしました。
(Tom Lane)
これまで、このような句はパーティションキーの照合順序と一致しなければなりませんでした。しかし、自動的にパーティションキーの照合順序を強制されていると考える方が一貫性があります。
Bツリーインデックスの追加の際に、ページ分割を防ぐように無効になったインデックスエントリの除去を行えるようにしました。 (Peter Geoghegan)
これは特に、インデックス列が頻繁に更新されるテーブルにおけるインデックス肥大化を減らすのに役立ちます。
BRINインデックスが範囲ごとに複数の最小値と最大値を記録できるようにしました。 (Tomas Vondra)
各ページ範囲にいくつかの値のグループがある場合に役立ちます。
BRINインデックスがブルームフィルタ使えるようにしました。 (Tomas Vondra)
これは、ヒープ内で十分に局所化されていないデータでBRINインデックスを効果的に使えるようにします。
一部のGiSTインデックスをデータの事前ソートにより構築できるようにしました。 (Andrey Borodin)
事前ソートは自動的に行われ、インデックス作成を高速にして、インデックスを小さくする効果があります。
SP-GiSTインデックスがINCLUDE指定された列を含められるようにしました。
(Pavel Borisov)
多数の定数を含むIN句に対するハッシュ検索を可能にしました。
(James Coleman, David Rowley)
これまでは常に値のリストを順スキャンしていました。
OR句の推定に拡張統計が使える箇所を増やしました。
(Tomas Vondra, Dean Rasheed)
式の拡張統計を可能にしました。 (Tomas Vondra)
これまでのように列のみではなく、式と列の集まりに対する統計が可能になります。
システムビューpg_stats_ext_exprsがこのような統計を報告します。
TIDの範囲を効率的にヒープスキャンできるようにしました。
(Edmund Horner, David Rowley)
これまでは等価条件以外のTID指定ではシーケンシャルスキャンが必要でした。
IF NOT EXISTSを尊重するように、EXPLAIN CREATE TABLE ASとEXPLAIN CREATE MATERIALIZED VIEWを修正しました。
(Bharath Rupireddy)
これまで、そのオブジェクトが既に存在していた場合、EXPLAINは失敗していました。
多数のCPUと多くのセッション数があるシステムにおけるMVCCの可視性スナップショットの計算速度を改善しました。 (Andres Freund)
これは多数のアイドルセッションがあるときの性能も改善します。
入れ子ループ結合の内側の結果をメモ化するエグゼキュータ方式を追加しました。 (David Rowley)
これは内側で小さな割合の行のみが検査される場合に有用です。 サーバパラメータenable_memoizeで無効化できます。
ウィンドウ関数がインクリメンタルソートを実行できるようにしました。 (David Rowley)
パラレルシーケンシャルスキャンのI/O性能を改善しました。 (Thomas Munro, David Rowley)
これはパラレルワーカに固まりで複数ブロックを割り当てることで実現されました。
複数の外部テーブルを参照する問い合わせが、外部テーブルスキャンを並行に実行できるようにしました。 (Robert Haas, Kyotaro Horiguchi, Thomas Munro, Etsuro Fujita)
postgres_fdwはasync_capableであれば、このタイプのスキャンをサポートします。
analyzeでページのプリフェッチを可能にしました。 (Stephen Frost)
これはmaintenance_io_concurrencyで制御されます。
正規表現検索の性能を改善しました。 (Tom Lane)
Dramatically improve Unicode normalization performance (John Naylor)
これはnormalize()とIS NORMALIZEDを高速化します。
TOASTデータにLZ4圧縮を使えるようにしました。 (Dilip Kumar)
これは列単位で設定するか、サーバパラメータdefault_toast_compressionによってデフォルトとして設定することができます。
この機能に対応するにはサーバが--with-lz4でコンパイルされている必要があります。
サーバパラメータcompute_query_idが有効の場合、pg_stat_activity、EXPLAIN VERBOSE、csvlog、および、指定に応じてlog_line_prefixで、クエリIDを出力するようにしました。
(Julien Rouhaud)
拡張で計算されたクエリIDも出力されます。
自動バキュームと自動アナライズのログ出力を改善しました。 (Stephen Frost, Jakub Wartak)
これは、track_io_timingが有効の場合に自動バキュームと自動アナライズについてI/O時間を報告します。 また、自動アナライズについてバッファ読み込みとダーティ比率も報告します。
log_connectionsの出力にクライアントから供給された元のユーザ名に関する情報を追加しました。 (Jacob Champion)
COPYの進行を報告するシステムビューpg_stat_progress_copyを追加しました。
(Josef Šimánek, Matthias van de Meent)
WALの処理を報告するシステムビューpg_stat_walを追加しました。
(Masahiro Ikeda)
レプリケーションスロットの処理を報告するシステムビューpg_stat_replication_slotsを追加しました。
(Sawada Masahiko, Amit Kapila, Vignesh C)
関数pg_stat_reset_replication_slot()はスロットの統計をリセットします。
セッションのメモリ使用を報告するシステムビューpg_backend_memory_contextsを追加しました。
(Atsushi Torikoshi, Fujii Masao)
任意のバックエンドのメモリコンテキストを出力する関数pg_log_backend_memory_contexts()を追加しました。
(Atsushi Torikoshi)
pg_stat_databaseシステムビューにセッションの統計を追加しました。
(Laurenz Albe)
pg_prepared_statementsに汎用プランとカスタムプランの件数を報告する列を追加しました。
(Atsushi Torikoshi, Kyotaro Horiguchi)
pg_locksにロック待ち開始時刻を追加しました。
(Atsushi Torikoshi)
アーカイバプロセスがpg_stat_activityで見えるようにしました。
(Kyotaro Horiguchi)
WALレシーバの終了待機時間を報告する待機イベントWalReceiverExitを追加しました。
(Fujii Masao)
関数とプロシージャのデフォルト式により参照されている列を追跡する情報スキーマビューroutine_column_usageを実装しました。
(Peter Eisentraut)
SSL証明書の識別名(DN)をクライアント証明書による認証で照合できるようにしました。 (Andrew Dunstan)
新たなpg_hba.confのオプションclientname=DNにより、CNだけでない証明書属性で比較して、identマップと結びつけることができます。
pg_hba.confとpg_ident.confを複数行にわたって書けるようにしました。
(Fabien Coelho)
行末のバックスラッシュでレコード内容を次の行に続けることができます。
証明書失効リスト(CRL)ディレクトリを指定できるようにしました。 (Kyotaro Horiguchi)
これはサーバパラメータssl_crl_dirとlibpqの接続オプションsslcrldirで制御されます。 これまでは単一のCRLファイルのみ指定可能でした。
任意の長さのパスワードが使用可能になりました。 (Tom Lane, Nathan Bossart)
待機セッションを閉じるサーバパラメータidle_session_timeoutを追加しました。 (Li Japin)
これはidle_in_transaction_session_timeoutと似たものです。
checkpoint_completion_targetのデフォルトを0.9に変更しました。 (Stephen Frost)
以前のデフォルトは0.5でした。
log_line_prefixの%Pがパラレルワーカに対してパラレルグループリーダのPIDを報告できるようにしました。
(Justin Pryzby)
unix_socket_directoriesで、パスをカンマ区切りのクォートされた文字列で個々に指定できるようにしました。 (Ian Lawrence Barwick)
これまでは単一のクォートされた文字列に全てのパスを置く必要がありました。
動的共有メモリの起動時の割り当てが可能になりました。 (Thomas Munro)
これはmin_dynamic_shared_memoryで制御されます。 これにより、より多くhuge pagesを使用できるようになります。
Linuxで使用されるhuge pagesのサイズを制御するサーバパラメータhuge_page_sizeを追加しました。 (Odin Ugedal)
pg_rewindでスタンバイサーバに巻き戻しできるようにしました。 (Heikki Linnakangas)
restore_command設定をサーバのリロードで変更できるようにしました。 (Sergei Kornilov)
restore_commandに空文字列を設定してリロードすることで、リカバリでpg_walディレクトリだけ読むようにさせることもできます。
長時間のリカバリコンフリクト待機を報告するサーバパラメータlog_recovery_conflict_waitsを追加しました。 (Bertrand Drouvot, Masahiko Sawada)
プライマリがスタンバイでのリプレイを妨げるようにパラメータを変更した場合、ホットスタンバイサーバでリカバリを停止するようにしました。 (Peter Eisentraut)
これまではスタンバイが直ちにシャットダウンしていました。
リカバリ状態を報告する関数pg_get_wal_replay_pause_state()を追加しました。
(Dilip Kumar)
これは、従来からあって本バージョンでも存続するpg_is_wal_replay_paused()よりも詳しい情報を提供します。
新たな読み込み専用パラメータin_hot_standbyを追加しました。 (Haribabu Kommi, Greg Nancarrow, Tom Lane)
これによりクライアントはホットスタンバイサーバに接続しているかどうかを容易に検出できます。
多数の共有バッファを持つクラスタにおけるリカバリ中の小さなテーブルの切り捨てを高速化しました。 (Kirk Jamison)
Linuxでクラッシュリカバリの開始時にファイルシステムを同期できるようにしました。 (Thomas Munro)
デフォルトではPostgreSQLはクラッシュリカバリの開始時にデータベースクラスタの各データファイルをopenして、fsyncします。
新たな設定recovery_init_sync_method=syncfsは、その代わりにクラスタで使われている各ファイルシステムに同期を行います。
これにより多数のデータベースファイルを伴うシステムのリカバリを高速化できます。
指定されたトランザクションのコミットタイムスタンプとレプリケーションオリジンを返す関数pg_xact_commit_timestamp_origin()を追加しました。
(Movead Li)
pg_last_committed_xact()で返されるレコードにレプリケーションオリジンを追加しました。
(Movead Li)
レプリケーションオリジン関数を標準の関数の権限管理を用いて制御できるようにしました。 (Martín Marqués)
これまではこれらの関数はスーパーユーザからしか実行できませんでした。なお、引き続きこれがデフォルトです。
ロジカルレプリケーションが長い進行中のトランザクションをサブスクライバにストリームとして渡せるようにしました。 (Dilip Kumar, Amit Kapila, Ajin Cherian, Tomas Vondra, Nikhil Sontakke, Stas Kelvich)
これまではlogical_decoding_work_memを超えたトランザクションはトランザクションが完了するまでの間、ディスクに書かれました。
大きい進行中のトランザクションをストリーミングできるようにロジカルレプリケーションのAPIを拡張しました。 (Tomas Vondra, Dilip Kumar, Amit Kapila)
出力関数はstreamで始まります。
test_decodingもこれらをサポートします。
ロジカルレプリケーションでテーブル同期中に複数のトランザクションを許容するようにしました。 (Peter Smith, Amit Kapila, Takamichi Osumi)
サブトランザクションとトップレベルXID関連について即座にWAL書き込みするようにしました。
(Tomas Vondra, Dilip Kumar, Amit Kapila)
これはロジカルデコーディングに役立ちます。
二相コミットを扱えるようにロジカルデコーディングAPIを拡張しました。 (Ajin Cherian, Amit Kapila, Nikhil Sontakke, Stas Kelvich)
これはpg_create_logical_replication_slot()で制御されます。
ロジカルレプリケーションを使用している場合、コマンド完了時にWALにキャッシュ無効化メッセージを追加するようになりました。 (Dilip Kumar, Tomas Vondra, Amit Kapila)
これにより、進行中のトランザクションのロジカルストリーミングが可能になります。 ロジカルレプリケーションが無効であるときには、トランザクション完了時にのみ無効化メッセージが生成されます。
ロジカルデコーディングがより効率的にキャッシュ無効化メッセージを処理できるようにしました。 (Dilip Kumar)
これにより、多数のDDLがある場合にロジカルデコーディングが効率よく動作します。
ロジカルデコーディングのメッセージをレプリケーションストリームに送るかどうかを制御できるようにしました。 (David Pirotte, Euler Taveira)
ロジカルレプリケーションのサブスクリプションでバイナリ転送モードを使えるようにしました。 (Dave Cramer)
これはテキストモードよりも高速ですが、頑健性おいて少し劣ります。
ロジカルデコーディングをXIDでフィルタできるようにしました。 (Markus Wanner)
AS無しに列ラベルとして使用できないキーワードの数を減らしました。
(Mark Dilger)
制限されたキーワードは90%少なくなりました。
JOINのUSING句に別名を指定できるようにしました。
(Peter Eisentraut)
別名はUSINGの後にASを書くことで作られます。
これは併合されたUSINGの列に対するテーブル修飾として使うことができます。
GROUPING SETの組み合わせの重複を除くためにGROUP BYにDISTINCTを追加できるようにしました。
(Vik Fearing)
例えば、GROUP BY CUBE (a,b), CUBE (b,c)はDISTINCTが無いと重複したグルーピングの組み合わせを生成します。
INSERTにおける複数列のVALUESリストでDEFAULTのエントリを適切に処理するようにしました。
(Dean Rasheed)
このような場合にエラーが出ていました。
共通テーブル式のためのSQL標準のSEARCHおよびCYCLE句を追加しました。
(Peter Eisentraut)
同等の結果は既存の構文を用いても実現可能ですが、利便性で大きく劣ります。
ON CONFLICTのWHERE句の列名をテーブル修飾できるようにしました。
(Tom Lane)
しかしながら、参照できるのは対象テーブルのみです。
REFRESH MATERIALIZED VIEWが並列処理を使用できるようにしました。
(Bharath Rupireddy)
REINDEXが新たなインデックスのテーブルスペースを変更できるようにしました。
(Alexey Kondratov, Michael Paquier, Justin Pryzby)
これはTABLESPACE句を指定することで行われます。
また、reindexdbに、これを制御する--tablespaceオプションが追加されました。
REINDEXがパーティションリレーションの全ての子テーブルや子インデックスを処理できるようにしました。
(Justin Pryzby, Michael Paquier)
CONCURRENTLYを使うインデックスのコマンドが、他のCONCURRENTLYを使った操作の完了を待機しないようにしました。
(Álvaro Herrera)
COPY FROMのバイナリモードでの性能を改善しました。
(Bharath Rupireddy, Amit Langote)
ビュー定義でSQLで定義された関数についてのSQL標準構文を維持するようにしました。 (Tom Lane)
これまでは、EXTRACT()のようなSQL標準の関数の呼び出しは、通常の関数呼び出し構文で表示されました。
これからはビューやルールを表示するときに元の構文が維持されます。
CREATE TRIGGERにOR REPLACEオプションを追加しました。
(Takamichi Osumi)
これにより場合に応じて既存のトリガーを置き換えできます。
TRUNCATEで外部テーブルを操作できるようにしました。
(Kazutaka Onishi, Kohei KaiGai)
postgres_fdwモジュールもこれに対応しました。
パブリケーションにサブスクリプションをより簡単に追加削除できるようにしました。 (Japin Li)
新たな構文はALTER SUBSCRIPTION ... ADD/DROP PUBLICATIONです。
これにより、エントリを追加/削除するために全てのパブリケーションを指定する必要がなくなります。
システムカタログに主キー、一意性制約、および、外部キーを追加しました。 (Peter Eisentraut)
この変更はGUIツールがシステムカタログを解析するのに役立ちます。
存在するカタログの一意性インデックスはUNIQUEまたはPRIMARY KEY制約に関連付けられるようになります。
外部キーの関係は実際には制約としての格納や実装はされませんが、関数pg_get_catalog_foreign_keys()で表示を得ることができます。
CURRENT_USERが受け入れられるすべての場所でCURRENT_ROLEを使用可能にしました。
(Peter Eisentraut)
拡張と組み込みデータ型が添字を実装できるようにしました。 (Dmitry Dolgov)
これまでは添字処理はサーバにハードコードされていて、添字は配列型にのみ適用できました。 この変更により、そうすることが理に適うような任意の型について、値の一部を取り出したり、割り当てたりするのに添字表記が利用できるようになります。
JSONBの添字を利用可能にしました。
(Dmitry Dolgov)
JSONBの添字はJSONB文書の一部を取り出したり、割り当てたりするのに利用できます。
多重範囲データ型のサポートを追加しました。 (Paul Jungwirth, Alexander Korotkov)
これは範囲データ型と似ていますが、順序付けされて重なり合わない複数の範囲の指定が可能です。 全ての範囲型に対して関連する多重範囲型が自動的に作られます。
アルメニア語、バスク語、カタロニア語、ヒンディー語、セルビア語、イディッシュ語の語幹処理のサポートを追加しました。 (Peter Eisentraut)
tsearchデータファイルの行の長さ制限を無くしました。 (Tom Lane)
これまでの上限は4Kバイトでした。
また、関数t_readline()を廃止しました。
数値データ型でInfinity値と-Infinity値のサポートを追加しました。
(Tom Lane)
これらは浮動小数点データ型では以前からサポートされていました。
厳密に上下の検査を行うpointの演算子の<<|と|>>を追加しました。
(Emre Hasegeli)
これまでは>^と<^が呼ばれていましたが、このネーミングは他の幾何データ型との一貫性に欠けています。
古い名前は利用可能のままですが、おそらく後日に廃止されるでしょう。
LSNと数値(バイト)の加算と減算をする演算子を追加しました。
(Fujii Masao)
配列とレコードのOID不一致についてより寛容になるバイナリデータ転送を可能にしました。
(Tom Lane)
システムカタログに対して複合配列型を作成するようにしました。 (Wenjing Zeng)
これまでユーザ定義のリレーションには、それに関連付けられた複合型があり、また、その複合型の配列もありました。 これからはシステムカタログも同様になります。 この変更は、シングルユーザモードでユーザ定義テーブルを作ると複合配列型の作成に失敗するという不整合も修正します。
SQL言語の関数とプロシージャがSQL標準の関数本体を使えるようにしました。 (Peter Eisentraut)
これまでは文字列リテラルの関数本体のみがサポートされていました。 SQL標準構文で関数やプロシージャを書くと、本体は即座にパースされて、パースツリーとして格納されます。 これはより優れた関数の依存性の追跡を可能にし、セキュリティ上の利点を得られます。
プロシージャがOUT引数を持てるようにしました。
(Peter Eisentraut)
いくつかの配列関数が互換データ型が混在したものを処理できるようにしました。 (Tom Lane)
関数array_append()、array_prepend()、array_cat()、array_position()、array_positions()、array_remove()、array_replace()、および、width_bucket()は、anyarray引数に替えてanycompatiblearrayを取ります。
これはこれら関数の引数型の厳密な一致について、より寛容にします。
SQL標準のtrim_array()関数を追加しました。
(Vik Fearing)
これは配列のスライスを使って既にできましたが、簡便性に劣りました。
ltrim()とrtrim()のbytea版を追加しました。
(Joel Jacobson)
split_part()で負のインデックスに対応しました。
(Nikhil Benesch)
負の値では最後のフィールドから後ろ向きに数えます。
文字列を区切り文字で分割するstring_to_table()関数を追加しました。
(Pavel Stehule)
これはregexp_split_to_table()関数と似ています。
バックスラッシュ-16進数のエスケープの文字列でユニコード文字を指定できるunistr()関数を追加しました。
(Pavel Stehule)
これはユニコードを文字列リテラルで指定する方法と似ています。
XORの集約関数bit_xor()を追加しました。
(Alexey Bashtanov)
ビットまたはバイト列でセットされたビットの数を返す関数bit_count()を追加しました。
(David Fetter)
date_bin()関数を追加しました。
(John Naylor)
関数「bins」はタイムスタンプを入力として、指定された起点からの一定長の周期でグループ分けします。
make_timestamp()/make_timestamptz()が負の年を受け付けられるようにしました。
(Peter Eisentraut)
負の値はBC年と解釈されます。
より新しいsubstring()の正規表現構文を追加しました。
(Peter Eisentraut)
新しいSQL標準の構文は、SUBSTRING(text SIMILAR pattern ESCAPE escapechar)です。
これまでの標準構文はSUBSTRING(text FROM pattern FOR escapechar)で、これも引き続きPostgreSQLに受け付けられます。
正規表現のブラケット内の補完文字クラスのエスケープ\D、\S、および、\Wを利用可能にしました。
(Tom Lane)
正規表現の文字クラスとして[[:word:]]を追加しました。\wと同等のものです。
(Tom Lane)
ウィンドウ関数のlead()とlag()のデフォルト値について、より柔軟なデータ型を許容するようにしました。
(Vik Fearing)
非ゼロの浮動小数点の値を無限で割った場合にゼロを返すようにしました。 (Kyotaro Horiguchi)
これまでは、このような操作ではアンダーフローエラーが生じました。
浮動小数点のNaNをゼロで割ったとき、NaNを返すようにしました。 (Tom Lane)
これまでこれはエラーを返しました。
マイナス無限大のべき乗に対するexp()とpower()がゼロを返すようにしました。
(Tom Lane)
これまでは、しばしばアンダーフローエラーを返していました。
無限を伴う幾何計算の精度を改善しました。 (Tom Lane)
組み込みの型強制関数を可能なものは漏洩防止(leakproof)と印付けしました。 (Tom Lane)
これによりセキュリティが重視される場合で型強制を必要とする関数をより多く使用できます。
存在しないオブジェクトに対して常に有用なエラーメッセージを報告するように、pg_describe_object()とpg_identify_object()、pg_identify_object_as_address()を変更しました。
(Michael Paquier)
PL/pgSQLの式と代入の解析を改善しました。 (Tom Lane)
この変更により、配列スライスと入れ子になったレコードフィールドへの代入が可能になります。
plpgsqlのRETURN QUERYが問い合わせを並列処理で実行できるようにしました。
(Tom Lane)
plpgsqlプロシージャ内で繰り返されるCALLの性能を改善しました。 (Pavel Stehule, Tom Lane)
libpqにパイプラインモードを追加しました。 (Craig Ringer, Matthieu Garrigues, Álvaro Herrera)
これにより複数の問い合わせを送出することができて、特定の同期メッセージを送ったときだけ完了を待ちます。
libpqのtarget_session_attrsパラメータのオプションを拡張しました。
(Haribabu Kommi, Greg Nancarrow, Vignesh C, Tom Lane)
新たなオプションはread-only、primary、standby、および、prefer-standbyです。
libpqのPQtrace()の出力書式を改善しました。
(Aya Iwata, Álvaro Herrera)
ECPGのSQL識別子を特定の接続に結びつけられるようにしました。 (Hayato Kuroda)
これはDECLARE ... STATEMENTによって行われます。
vacuumdbがインデックスのクリーンアップと切り詰めを省略できるようになりました。 (Nathan Bossart)
オプションは--no-index-cleanupと--no-truncateです。
pg_dumpが特定の拡張のみをダンプできるようにしました。 (Guillaume Lelarge)
オプション--extensionで制御されます。
値をランダムに並び替えするpgbenchのpermute()関数を追加しました。
(Fabien Coelho, Hironobu Suzuki, Dean Rasheed)
-Cを指定したpgbenchで計測される再接続のオーバーヘッドに切断時間を含めました。
(Yugo Nagata)
ログ出力の冗長度を増す冗長オプション(-v)の複数指定を可能にしました。
(Tom Lane)
この動作はpg_dumpとpg_dumpall、pg_restoreでサポートされます。
psqlの\dfおよび\doコマンドが関数と演算子の引数型を指定できるようにしました。
(Greg Sabino Mullane, Tom Lane)
オーバーロードされた名前に対して表示される該当件数を減らすのに役立ちます。
psqlの\d[i|m|t]+の出力にアクセスメソッド列を追加しました。
(Georgios Kokolatos)
psqlの\dtと\diがTOASTテーブルとそのインデックスを表示できるようにしました。
(Justin Pryzby)
拡張統計情報オブジェクトを一覧表示するpsqlのコマンド\dXを追加しました。
(Tatsuro Yamada)
psqlの\dTが配列構文と、integerに対するintのようなバックエンド文法の別名を理解するように修正しました。
(Greg Sabino Mullane, Tom Lane)
psqlの\e、あるいは、\efと\evを使って、前の問い合わせやファイルを編集するとき、保存せずにエディタを終了した場合の結果を無視するようにしました。
(Laurenz Albe)
これまではこのような編集では、以前の問い合わせがクエリバッファにロードされて、典型的には即座にそれが実行されました。 おそらくこれはユーザが望むものではないと思われます。
タブ補完を改善しました。 (Vignesh C, Michael Paquier, Justin Pryzby, Georgios Kokolatos, Julien Rouhaud)
簡単に多数のリレーションにcontrib/amcheckのテストを実行できる、コマンドラインユーティリティpg_amcheckを追加しました。
(Mark Dilger)
initdbに--no-instructionsオプションを追加しました。
(Magnus Hagander)
これは通常表示されるサーバ開始の手順説明を抑制します。
pg_upgradeがanalyze_new_clusterスクリプトを生成するのを止めました。
(Magnus Hagander)
代わりに同等のvacuumdbの説明を出力するようにしました。
postmasterの-oオプションのサポートを廃止しました。
(Magnus Hagander)
既に渡されたオプションは全て直接指定できるため、このオプションは不要でした。
「デフォルトルール」を「定義済みルール」に名称変更しました。 (Bruce Momjian, Stephen Frost)
factorial()関数について文書を追加しました。
(Peter Eisentraut)
本リリースでの!演算子の廃止に伴い、factorial()が階乗を計算する組み込みの唯一の方法です。
使用するSSLライブラリの将来の選択を可能にするconfigureオプション--with-ssl={openssl}を追加しました。
(Daniel Gustafsson, Michael Paquier)
--with-opensslという書き方も互換性のため維持されます。
抽象Unixドメインソケットのサポートを追加しました。 (Peter Eisentraut)
これは今のところLinuxとWindowsでサポートされます。
Windowsで4ギガバイトより大きいファイルを適切に扱えるようにしました。 (Juan José Santamaría Flecha)
テスト目的でキャッシュのフラッシュを制御するサーバパラメータdebug_discard_cachesを追加しました。 (Craig Ringer)
これまではこの振る舞いをコンパイル時にのみ設定できました。
initdb時にこれを有効化するには、新たなオプション--discard-cachesを使用してください。
valgrindのエラー検出能力について様々な改良をしました。 (Álvaro Herrera, Peter Geoghegan)
正規表現パッケージに対するテストモジュールを追加しました。 (Tom Lane)
LLVMバージョン12をサポートしました。 (Andres Freund)
SHA1、SHA2、および、MD5のハッシュ計算をOpenSSLのEVP APIを使うように変更しました。 (Michael Paquier)
これはより現代的で、FIPSモードをサポートします。
乱数生成器の選択についてビルド時の別々の制御を廃止しました。 (Daniel Gustafsson)
これからは常にSSLライブラリの選択により決定されます。
EUC_TWエンコーディングとBig5エンコーディングの間の直接変換ルーチンを追加しました。 (Heikki Linnakangas)
FreeBSDについて照合順序バージョンをサポートしました。 (Thomas Munro)
インデックスアクセスメソッドAPIにamadjustmembersを追加しました。
(Tom Lane)
これによりインデックスアクセスメソッドが、新たな演算子クラスや演算子族を作る際の正当性の検査を提供できます。
最近に追加されたlibpqの機能に対して、libpq-fe.hに機能テストのマクロを提供しました。
(Tom Lane, Álvaro Herrera)
歴史的には、アプリケーションはある機能が有効かどうかを検査するのに通常コンパイル時のPG_VERSION_NUMのチェックを使用してきました。
しかし、それは通常サーババージョンであって、libpqのバージョンの良いガイドではなかったようです。
libpq-fe.hはv14で追加されたアプリケーションから見える機能を示す#defineシンボルを提供するようになりました。
将来バージョンでこのような機能に対するシンボルを追加していく狙いがあります。
hstore値の添え字を利用可能にしました。 (Tom Lane, Dmitry Dolgov)
GiST/GINのpg_trgmインデックスが等価の検索を行えるようにしました。 (Julien Rouhaud)
これはワイルドカードが処理されない点を別にすれば、LIKEと似ています。
cubeデータ型をバイナリモードで転送できるようにしました。 (KaiGai Kohei)
pgstattuple_approx()がTOASTテーブルについて報告できるようにしました。
(Peter Eisentraut)
行の可視性を変更できるcontribモジュールpg_surgeryを追加しました。 (Ashutosh Sharma)
これはデータベース破損を修復するのに役立ちます。
アーカイブのold_snapshot_thresholdから使われるXID/timeの対応付けを報告するcontribモジュールold_snapshotを追加しました。
(Robert Haas)
amcheckがヒープページも検査できるようにしました。 (Mark Dilger)
これまではBツリーインデックスぺ―ジのみを検査していました。
pageinspectがGiSTインデックスを解析できるようにしました。 (Andrey Borodin, Heikki Linnakangas)
pageinspectのブロック数をbigintsに変更しました。
(Peter Eisentraut)
btree_gist関数をパラレル安全と印付けしました。 (Steven Winfield)
問い合わせのハッシュ計算をpg_stat_statementsからコアサーバに移動しました。 (Julien Rouhaud)
新たなサーバパラメータcompute_query_idのデフォルトのautoは、この拡張がロードされたときに自動的に問い合わせIDの計算を有効化します。
pg_stat_statementsが最上位と入れ子の文を別に記録するようにしました。 (Julien Rohaud)
これまでは、全ての文を記録するとき、最上位と入れ子の文は単一のエントリとして記録されました。しかし、これは分離した方がより有用とみられます。
pg_stat_statementsにユーティリティコマンドの行カウントを追加しました。 (Fujii Masao, Katsuragi Yuta, Seino Yuki)
pg_stat_statementsの動作を表示するpg_stat_statements_infoシステムビューを追加しました。
(Katsuragi Yuta, Yuki Seino, Naoki Nakamichi)
postgres_fdwが行を一括でINSERTできるようにしました。
(Takayuki Tsunakawa, Tomas Vondra, Amit Langote)
postgres_fdwがIMPORT FOREIGN SCHEMA ... LIMIT TOで指定されている場合にテーブルのパーティションを取り込みできるようにしました。
(Matthias van de Meent)
デフォルトではパーティションテーブルのルートのみがインポートされます。
オープン中の外部サーバ接続を報告するpostgres_fdwの関数postgres_fdw_get_connections()を追加しました。
(Bharath Rupireddy)
外部サーバがトランザクション完了後に接続をオープンしたままにするかどうかを制御できるようにしました。 (Bharath Rupireddy)
これはkeep_connectionsによって制御され、デフォルトはonです。
postgres_fdwが外部サーバ接続を必要に応じて再確立できるようにしました。 (Bharath Rupireddy)
これまでは外部サーバの再起動で外部テーブルアクセスのエラーが生じる可能性がありました。
キャッシュされた接続を破棄するpostgres_fdwの関数を追加しました。 (Bharath Rupireddy)
以下の人々(アルファベット順)はパッチ作者、コミッター、レビューア、テスターあるいは問題の報告者として本リリースに貢献しました。
| Abhijit Menon-Sen |
| Ádám Balogh |
| Adrian Ho |
| Ahsan Hadi |
| Ajin Cherian |
| Aleksander Alekseev |
| Alessandro Gherardi |
| Alex Kozhemyakin |
| Alexander Korotkov |
| Alexander Lakhin |
| Alexander Nawratil |
| Alexander Pyhalov |
| Alexandra Wang |
| Alexey Bashtanov |
| Alexey Bulgakov |
| Alexey Kondratov |
| Álvaro Herrera |
| Amit Kapila |
| Amit Khandekar |
| Amit Langote |
| Amul Sul |
| Anastasia Lubennikova |
| Andreas Grob |
| Andreas Kretschmer |
| Andreas Seltenreich |
| Andreas Wicht |
| Andres Freund |
| Andrew Bille |
| Andrew Dunstan |
| Andrew Gierth |
| Andrey Borodin |
| Andrey Lepikhov |
| Andy Fan |
| Anton Voloshin |
| Antonin Houska |
| Arne Roland |
| Arseny Sher |
| Arthur Nascimento |
| Arthur Zakirov |
| Ashutosh Bapat |
| Ashutosh Sharma |
| Ashwin Agrawal |
| Asif Rehman |
| Asim Praveen |
| Atsushi Torikoshi |
| Aya Iwata |
| Barry Pederson |
| Bas Poot |
| Bauyrzhan Sakhariyev |
| Beena Emerson |
| Benoît Lobréau |
| Bernd Helmle |
| Bernhard M. Wiedemann |
| Bertrand Drouvot |
| Bharath Rupireddy |
| Boris Kolpackov |
| Brar Piening |
| Brian Ye |
| Bruce Momjian |
| Bryn Llewellyn |
| Cameron Daniel |
| Chapman Flack |
| Charles Samborski |
| Charlie Hornsby |
| Chen Jiaoqian |
| Chris Wilson |
| Christian Quest |
| Christoph Berg |
| Christophe Courtois |
| Corey Huinker |
| Craig Ringer |
| Dagfinn Ilmari Mannsåker |
| Dana Burd |
| Daniel Cherniy |
| Daniel Gustafsson |
| Daniel Vérité |
| Daniel Westermann |
| Daniele Varrazzo |
| Dar Alathar-Yemen |
| Darafei Praliaskouski |
| Dave Cramer |
| David Christensen |
| David Fetter |
| David G. Johnston |
| David Geier |
| David Gilman |
| David Pirotte |
| David Rowley |
| David Steele |
| David Turon |
| David Zhang |
| Dean Rasheed |
| Denis Patron |
| Dian Fay |
| Dilip Kumar |
| Dimitri Nüscheler |
| Dmitriy Kuzmin |
| Dmitry Dolgov |
| Dmitry Marakasov |
| Domagoj Smoljanovic |
| Dong Wook |
| Douglas Doole |
| Duncan Sands |
| Edmund Horner |
| Edson Richter |
| Egor Rogov |
| Ekaterina Kiryanova |
| Elena Indrupskaya |
| Emil Iggland |
| Emre Hasegeli |
| Eric Thinnes |
| Erik Rijkers |
| Erwin Brandstetter |
| Etienne Stalmans |
| Etsuro Fujita |
| Eugen Konkov |
| Euler Taveira |
| Fabien Coelho |
| Fabrízio de Royes Mello |
| Federico Caselli |
| Felix Lechner |
| Filip Gospodinov |
| Floris Van Nee |
| Frank Gagnepain |
| Frits Jalvingh |
| Georgios Kokolatos |
| Greg Nancarrow |
| Greg Rychlewski |
| Greg Sabino Mullane |
| Gregory Smith |
| Grigory Smolkin |
| Guillaume Lelarge |
| Guy Burgess |
| Guyren Howe |
| Haiying Tang |
| Hamid Akhtar |
| Hans Buschmann |
| Hao Wu |
| Haribabu Kommi |
| Harisai Hari |
| Hayato Kuroda |
| Heath Lord |
| Heikki Linnakangas |
| Henry Hinze |
| Herwig Goemans |
| Himanshu Upadhyaya |
| Hironobu Suzuki |
| Hiroshi Inoue |
| Hisanori Kobayashi |
| Honza Horak |
| Hou Zhijie |
| Hubert Lubaczewski |
| Hubert Zhang |
| Ian Barwick |
| Ibrar Ahmed |
| Ildus Kurbangaliev |
| Isaac Morland |
| Israel Barth |
| Itamar Gafni |
| Jacob Champion |
| Jaime Casanova |
| Jaime Soler |
| Jakub Wartak |
| James Coleman |
| James Hilliard |
| James Hunter |
| James Inform |
| Jan Mussler |
| Japin Li |
| Jasen Betts |
| Jason Harvey |
| Jason Kim |
| Jeevan Ladhe |
| Jeff Davis |
| Jeff Janes |
| Jelte Fennema |
| Jeremy Evans |
| Jeremy Finzel |
| Jeremy Smith |
| Jesse Kinkead |
| Jesse Zhang |
| Jie Zhang |
| Jim Doty |
| Jim Nasby |
| Jimmy Angelakos |
| Jimmy Yih |
| Jiri Fejfar |
| Joe Conway |
| Joel Jacobson |
| John Naylor |
| John Thompson |
| Jonathan Katz |
| Josef Šimánek |
| Joseph Nahmias |
| Josh Berkus |
| Juan José Santamaría Flecha |
| Julien Rouhaud |
| Junfeng Yang |
| Jürgen Purtz |
| Justin Pryzby |
| Kazutaka Onishi |
| Keisuke Kuroda |
| Kelly Min |
| Kensuke Okamura |
| Kevin Sweet |
| Kevin Yeap |
| Kirk Jamison |
| Kohei KaiGai |
| Konstantin Knizhnik |
| Kota Miyake |
| Krzysztof Gradek |
| Kuntal Ghosh |
| Kyle Kingsbury |
| Kyotaro Horiguchi |
| Laurent Hasson |
| Laurenz Albe |
| Lee Dong Wook |
| Li Japin |
| Liu Huailing |
| Luc Vlaming |
| Ludovic Kuty |
| Luis Roberto |
| Lukas Eder |
| Ma Liangzhu |
| Maciek Sakrejda |
| Madan Kumar |
| Magnus Hagander |
| Mahendra Singh Thalor |
| Maksim Milyutin |
| Marc Boeren |
| Marcin Krupowicz |
| Marco Atzeri |
| Marek Szuba |
| Marina Polyakova |
| Mario Emmenlauer |
| Mark Dilger |
| Mark Wong |
| Mark Zhao |
| Markus Wanner |
| Martín Marqués |
| Martin Visser |
| Masahiko Sawada |
| Masahiro Ikeda |
| Masao Fujii |
| Mathis Rudolf |
| Matthias van de Meent |
| Matthieu Garrigues |
| Matthijs van der Vleuten |
| Maxim Orlov |
| Melanie Plageman |
| Merlin Moncure |
| Michael Banck |
| Michael Brown |
| Michael Meskes |
| Michael Paquier |
| Michael Paul Killian |
| Michael Powers |
| Michael Vastola |
| Michail Nikolaev |
| Michal Albrycht |
| Mikael Gustavsson |
| Movead Li |
| Muhammad Usama |
| Nagaraj Raj |
| Naoki Nakamichi |
| Nathan Bossart |
| Nathan Long |
| Nazli Ugur Koyluoglu |
| Neha Sharma |
| Neil Chen |
| Nick Cleaton |
| Nico Williams |
| Nikhil Benesch |
| Nikhil Sontakke |
| Nikita Glukhov |
| Nikita Konev |
| Nikolai Berkoff |
| Nikolay Samokhvalov |
| Nikolay Shaplov |
| Nitin Jadhav |
| Noah Misch |
| Noriyoshi Shinoda |
| Odin Ugedal |
| Oleg Bartunov |
| Oleg Samoilov |
| Önder Kalaci |
| Pascal Legrand |
| Paul Förster |
| Paul Guo |
| Paul Jungwirth |
| Paul Martinez |
| Paul Sivash |
| Pavan Deolasee |
| Pavel Boev |
| Pavel Borisov |
| Pavel Luzanov |
| Pavel Stehule |
| Pengcheng Liu |
| Peter Eisentraut |
| Peter Geoghegan |
| Peter Smith |
| Peter Vandivier |
| Petr Fedorov |
| Petr Jelínek |
| Phil Krylov |
| Philipp Gramzow |
| Philippe Beaudoin |
| Phillip Menke |
| Pierre Giraud |
| Prabhat Sahu |
| Quan Zongliang |
| Rafi Shamim |
| Rahila Syed |
| Rajkumar Raghuwanshi |
| Ranier Vilela |
| Regina Obe |
| Rémi Lapeyre |
| Robert Foggia |
| Robert Grange |
| Robert Haas |
| Robert Kahlert |
| Robert Sosinski |
| Robert Treat |
| Robin Abbi |
| Robins Tharakan |
| Roger Mason |
| Rohit Bhogate |
| Roman Zharkov |
| Ron L. Johnson |
| Ronan Dunklau |
| Ryan Lambert |
| Ryo Matsumura |
| Saeed Hubaishan |
| Sait Talha Nisanci |
| Sandro Mani |
| Santosh Udupi |
| Scott Ribe |
| Sehrope Sarkuni |
| Sergei Kornilov |
| Sergey Bernikov |
| Sergey Cherkashin |
| Sergey Koposov |
| Sergey Shinderuk |
| Sergey Zubkovsky |
| Shawn Wang |
| Shay Rojansky |
| Shi Yu |
| Shinya Kato |
| Shinya Okano |
| Sigrid Ehrenreich |
| Simon Norris |
| Simon Riggs |
| Sofoklis Papasofokli |
| Soumyadeep Chakraborty |
| Stas Kelvich |
| Stephan Springl |
| Stéphane Lorek |
| Stephen Frost |
| Steven Winfield |
| Surafel Temesgen |
| Suraj Kharage |
| Sven Klemm |
| Takamichi Osumi |
| Takashi Menjo |
| Takayuki Tsunakawa |
| Tang Haiying |
| Tatsuhito Kasahara |
| Tatsuo Ishii |
| Tatsuro Yamada |
| Theodor Arsenij Larionov-Trichkin |
| Thomas Kellerer |
| Thomas Munro |
| Thomas Trenz |
| Tijs van Dam |
| Tom Ellis |
| Tom Gottfried |
| Tom Lane |
| Tom Vijlbrief |
| Tomas Barton |
| Tomas Vondra |
| Tomohiro Hiramitsu |
| Tony Reix |
| Vaishnavi Prabakaran |
| Valentin Gatien-Baron |
| Victor Wagner |
| Victor Yegorov |
| Vignesh C |
| Vik Fearing |
| Vitaly Ustinov |
| Vladimir Sitnikov |
| Vyacheslav Shablistyy |
| Wang Shenhao |
| Wei Wang |
| Wells Oliver |
| Wenjing Zeng |
| Wolfgang Walther |
| Yang Lin |
| Yanliang Lei |
| Yaoguang Chen |
| Yaroslav Pashinsky |
| Yaroslav Schekin |
| Yasushi Yamashita |
| Yoran Heling |
| YoungHwan Joo |
| Yugo Nagata |
| Yuki Seino |
| Yukun Wang |
| Yulin Pei |
| Yura Sokolov |
| Yuta Katsuragi |
| Yuta Kondo |
| Yuzuko Hosoya |
| Zhihong Yu |
| Zhiyong Wu |
| Zsolt Ero |