他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

E.6. リリース10

リリース日: 2017-10-05

E.6.1. 概要

PostgreSQL 10の主な強化点には以下のものがあります。

  • パブリッシュ/サブスクライブによる論理レプリケーション

  • 宣言的テーブルパーティショニング

  • 改善された並列問い合わせ

  • 著しい全般の性能改善

  • SCRAM-SHA-256に基づくより強いパスワード認証

  • 改善された監視と制御

上記の項目について以下でより詳細に説明します。

E.6.2. バージョン10への移行

以前のリリースからデータを移行したい時は、どのリリースについても、pg_dumpallを利用したダンプとリストア、あるいはpg_upgradeの使用が必要です。

バージョン10には、以前のバージョンとの互換性に影響する多数の変更点が含まれています。以下の非互換性に注意してください。

  • 以前のPostgreSQLメジャーバージョンからpg_upgradeを行った後に、ハッシュインデックスを再構築しなければなりません。 (Mithun Cy, Robert Haas, Amit Kapila)

    大きなハッシュインデックス改良はこれを必要とします。 pg_upgradeは再構築を助けるスクリプトを生成するでしょう。

  • 先行書き込みログ(WAL)のディレクトリpg_xlogpg_walに改名され、トランザクション状態のディレクトリpg_clogpg_xactに改名されました。 (Michael Paquier)

    時々、ユーザがこれらディレクトリには重要でないログファイルだけが含まれると思って、先行書き込みログ(WAL)ファイルやトランザクション状態ファイルの削除を進めて、復旧不能なデータ損失をひき起こすことがありました。 これら改名は今後にこれらの過ちを思いとどまらせることを意図しています。

  • SQL関数、ツール、および、オプションでxlogと言っているものをwalと言うように改名しました。 (Robert Haas)

    例えば、pg_switch_xlog()pg_switch_wal()になり、pg_receivexlogpg_receivewalになり、--xlogdir--waldirになります。 これはpg_xlogディレクトリ名の変更と一貫性を持たせるためで、全般にxlogという用語はあらゆるユーザの目に触れる場所でもはや使われません。

  • WAL関連の関数とビューでlocationに替えてlsnを使うように改名しました。 (David Rowley)

    これまでは二つの用語が一貫性なく混在していました。

  • 問い合わせのSELECTリストに現れる集合を返す関数の実装を変更しました。 (Andres Freund)

    これからは集合を返す関数は、それらがLATERAL FROM句の要素にあるかのように、SELECTリスト内のスカラ式の評価の前に評価されます。 これは、複数の集合を返す関数がある場合に正常な意味解釈を可能にします。 これらが異なる行数を返す場合、より短い結果はNULLを加えて最も長い結果に一致するように拡張されます。 これまでは、結果はそれらが全て同時に終了するまで回されて、関数の最小公倍数の周期に等しい行数を生み出しました。 加えて、集合を返す関数はこれからはCASECOALESCE構文の中では使えなくなりました。 詳しくは37.4.8を参照してください。

  • 標準の行生成構文をUPDATE ... SET (column_list) = row_constructorで使えるようにしました。 (Tom Lane)

    row_constructorはキーワードROWではじめることができるようになりました。これまでは省略する必要がありました。 また、row_constructor内にtable_name.*が生じた場合は、他でのrow_constructorの使用のように、複数列に展開されるようになります。

  • ALTER TABLE ... ADD PRIMARY KEYが列にNOT NULLを付けるとき、子テーブルにも同様にこの変更が伝播するようにしました。 (Michael Paquier)

  • 文単位のトリガが一つの命令文に対して2回以上駆動されるのを防止しました。 (Tom Lane)

    外側の文あるいは他の書き込み可能CTEにより更新された、同テーブルを更新する書き込み可能CTEを伴う場合、BEFORE STATEMENTまたはAFTER STATEMENTトリガが2回以上駆動されました。 また、外部キーの強制動作(ON DELETE CASCADEなど)の影響を受けるテーブルに文単位トリガがあるとき、外側のSQL文に対して2回以上のトリガ駆動の可能性がありました。 これはSQL標準に反しているため変更しました。

  • シーケンスのメタデータフィールドを新たなpg_sequenceシステムカタログに移動しました。 (Peter Eisentraut)

    シーケンスのリレーションはこれからはnextval()によって変更できるフィールド、すなわち、last_valuelog_cntis_calledだけを格納します。 他の、開始値や増分などのシーケンス属性はpg_sequenceカタログの対応する行に保持されます。 ALTER SEQUENCEの更新はこれからは完全にトランザクションの一部として扱われ、コミットされるまでのシーケンスのロックを伴います。 nextval()setval()関数はトランザクション制御外のままです。

    この変更でもたらされる主な非互換性は、シーケンスリレーションからのSELECTがこれからは上記の3フィールドしか返さないことです。 シーケンスの他の属性を取得するには、アプリケーションはpg_sequenceを調べなければなりません。 既存コードとより互換性のある列名を提供する新たなシステムビューpg_sequencesをこのために使うこともできます。

    シーケンスに対するpsql\dコマンドの出力も改訂されました。

  • pg_basebackupがデフォルトでバックアップをリストアするのに必要とされるWALをストリームするようにしました。 (Magnus Hagander)

    これはpg_basebackup-X/--xlog-methodのデフォルトをstreamに変えます。 従来の振る舞いを再現するオプション値noneが追加されました。 pg_basebackupのオプション-xは取り除かれました(代わりに-X fetchを使ってください)。

  • 論理レプリケーションのpg_hba.confの使い方を変更しました。 (Peter Eisentraut)

    以前のリリースでは論理レプリケーション接続はデータベース列にreplicationキーワードを必要としていました。 本リリースでは、論理レプリケーションは通常のデータベース名やallのようなキーワードにマッチします。 物理レプリケーションは引き続きreplicationキーワードを使用します。 組み込みの論理レプリケーションは本リリースでの新機能なので、この変更はサードパーティの論理レプリケーションプラグインのユーザのみに影響があります。

  • 全てのpg_ctlのアクションがデフォルトで完了を待つようにしました。 (Peter Eisentraut)

    これまでは一部のpg_ctlのアクションは完了を待たず、そうさせるには-wを使う必要がありました。

  • log_directoryサーバパラメータのデフォルト値をpg_logからlog変更しました。 (Andreas Karlsson)

  • カスタムOpenSSL DHパラメータのファイル名を指定する設定オプションssl_dh_params_fileを追加しました。 Heikki Linnakangas)

    これはハードコードされていたドキュメント化されていないファイル名dh1024.pemを置き換えます。 dh1024.pemはもはやデフォルトでは検査されないことに注意してください。 カスタムDHパラメータを使いたい場合にはこのオプションを指定しなければなりません。

  • OpenSSLの短期のDH暗号に使われるデフォルトのDHパラメータのサイズを2048ビットに増やしました。 (Heikki Linnakangas)

    コンパイルされたDHパラメータのサイズが1024ビットから2048ビットに増やされ、DHキー交換がブルートフォースアタックにより耐性を持ちました。 しかしながら、一部の古いSSL実装、特に一部バージョンのJava Runtime Environmentバージョン6は、1024ビットより大きいDHパラメータを受け付けず、そのためSSLで接続ができません。 このような古いクライアントに対応する必要がある場合には、カスタム1024ビットDHパラメータをコンパイルされたデフォルトの代わりに使うことができます。 ssl_dh_params_fileを参照してください。

  • 暗号化されていないパスワードをサーバに格納できなくしました。 (Heikki Linnakangas)

    password_encryptionサーバパラメータでは、もはやoffplainを使用できません。 CREATE/ALTER USER ... PASSSWORDでのUNENCRYPTEDオプションはもはや使用できません。 同様に、--unencryptedオプションはcreateuserから除去されました。 古いバージョンから移行した暗号化されないパスワードは、本リリースでは暗号化されて格納されます。 password_encryptionのデフォルト設定は引き続きmd5です。

  • 並列問い合わせを制御するmin_parallel_table_scan_sizeおよびmin_parallel_index_scan_sizeサーバパラメータを追加しました。

    これらはmin_parallel_relation_sizeを置き換えます。これでは一般的すぎると認識されました。

  • shared_preload_librariesと関連するサーバパラメータでクォートされていない文字列を小文字にしないようにしました。 (QL Zhuo)

    これらの設定は実際のファイル名のリストですが、これまではSQL識別子のリストのように扱っていました。 これらは異なる解析規則を持ちます。

  • sql_inheritanceサーバパラメータを取り除きました。 (Robert Haas)

    この設定をデフォルト値から変えると、親テーブルを参照する問い合わせが子テーブルを含まなくなります。 SQL標準は含まれることを求めています。 とはいえ、PostgreSQL 7.1以来、これはデフォルトでした。

  • 多次元配列をPL/Python関数に渡せるように、また、入れ子のPythonリストとして返せるようにしました。 (Alexey Grishchenko, Dave Cramer, Heikki Linnakangas)

    この機能は記述による複合値配列の扱いに後方非互換な変更を必要とします。 例えば[[col1, col2], [col1, col2]]は今後は2次元配列として解釈されます。 配列中の複合型は曖昧さを解決するため今後はリストではなくPythonタプルとして記述しなければなりません。 すなわち、代替に[(col1, col2), (col1, col2)]と書いてください。

  • PL/Tclのモジュール自動ロード機能を除去しました。 (Tom Lane)

    この機能は、より使いやすく他のPLで利用可能な機能に似た、新たなサーバパラメータpltcl.start_procpltclu.start_procで置き換えられました。

  • pg_dump/pg_dumpallから8.0より前のサーバからのダンプの対応を除去しました。 (Tom Lane)

    8.0より前のサーバからダンプをとる必要のあるユーザは、PostgreSQL 9.6 かそれ以前のダンププログラムを使う必要があります。 結果として生じる出力は、今までどおりより新しいサーバに問題なく読み込みできるはずです。

  • 浮動小数点のタイムスタンプとインターバル(時間)の対応を除去しました。 (Tom Lane)

    configureの--disable-integer-datetimesオプションが除去されます。 浮動小数点のタイムスタンプは僅かしか優位点が無く、PostgreSQL 8.3からデフォルトではなくなっていました。

  • クライアントサーバプロトコルバージョン1.0のサーバの対応が除去されました。 (Tom Lane)

    このプロトコルのクライアントの対応はPostgreSQL 6.3からありませんでした。

  • contrib/tsearch2モジュールを除きました。 (Robert Haas)

    このモジュールは、8.3より前のPostgreSQLリリースで用意されたバージョンの全文検索との互換性を提供していました。

  • コマンドラインアプリケーションのcreatelangdroplangを取り除きました。 (Peter Eisentraut)

    これらはPostgreSQL 9.1.から非推奨となっていました。 代わりに直接CREATE EXTENSIONDROP EXTENSIONを使ってください。

  • バージョン0の関数呼び出し方式の対応を取り除きました。 (Andres Freund)

    C言語関数を提供する拡張は、これからはバージョン1の呼び出し方式を受け入れなければなりません。 バージョン0は2001年から非推奨となっていました。

E.6.3. 変更点

以下にPostgreSQL 10と前のメジャーリリースとの詳細な変更点を記載します。

E.6.3.1. サーバ

E.6.3.1.1. 並列問い合わせ
  • 並列のB-treeインデックススキャンに対応しました。 (Rahila Syed, Amit Kapila, Robert Haas, Rafia Sabih)

    この変更でB-treeインデックスページを各パラレルワーカから検索できるようになりました。

  • 並列のビットマップヒープスキャンに対応しました。 (Dilip Kumar)

    これにより一つのインデックススキャンを各パラレルワーカにヒープの異なる部分を処理するように割り当てできるようになりました。

  • マージ結合を並列に実行できるようにしました。 (Dilip Kumar)

  • 関連しない副問い合わせを並列に実行できるようにしました。 (Amit Kapila)

  • あらかじめソートされたデータを返せるようにパラレルワーカを改良しました。 (Rushabh Lathia)

  • 手続き言語関数において並列問い合わせの使用を増やしました。 (Robert Haas, Rafia Sabih)

  • 並列問い合わせに使うことができるワーカプロセス数を制限するmax_parallel_workersサーバパラメータを追加しました。 (Julien Rouhaud)

    並列問い合わせ以外にワーカプロセスを確保するために、このパラメータをmax_worker_processesよりも小さく設定できます。

  • max_parallel_workers_per_gatherのデフォルト値を2に変更することでデフォルトでパラレルクエリを使えるようにしました。

E.6.3.1.2. インデックス
  • ログ先行書き込み(WAL)にハッシュインデックス対応を加えました。 (Amit Kapila)

    これはハッシュインデックスをクラッシュセーフかつレプリケーション可能にします。 これまでのこれらの使用に関する警告は取り除かれました。

  • ハッシュインデックスの性能を改善しました。 (Amit Kapila, Mithun Cy, Ashutosh Sharma)

  • INETCIDRデータ型に対してSP-GiSTインデックス対応を追加しました。 (Emre Hasegeli)

  • BRINインデックスの要約をより積極的に行うオプションを追加しました。 (Álvaro Herrera)

    新たなCREATE INDEXのオプションは新たなページ範囲が作られたときに以前のBRINページ範囲の自動要約を可能にします。

  • BRINインデックス範囲のBRIN要約を削除し、再び加える関数を追加しました。 (Álvaro Herrera)

    新たなSQL関数brin_summarize_range()は指定された範囲のBRINインデックス要約を更新し、brin_desummarize_range()はそれを削除します。 これはUPDATEDELETEのために今やより小さくなった範囲の要約を更新するのに役立ちます。

  • BRINインデックススキャンが有益かどうかの判断の精度を改善しました。 (David Rowley, Emre Hasegeli)

  • インデックス空間をより効率的に再利用することで、より速いGiSTの挿入と更新を可能にしました。 (Andrey Borodin)

  • GINインデックスのバキュームの間のページロック取得を減らしました。 (Andrey Borodin)

E.6.3.1.3. ロック
  • テーブルパラメータを変更するのに求められるロック取得を減らしました。 (Simon Riggs, Fabrízio Mello)

    例えば、テーブルのeffective_io_concurrency設定の変更がより軽量なロックで可能になりました。

  • 述語ロックの昇格閾値を調整できるようにしました。 (Dagfinn Ilmari Mannsåker)

    ロック昇格が二つの新たなサーバパラメータmax_pred_locks_per_relationmax_pred_locks_per_pageを通して制御できるようになりました。

E.6.3.1.4. オプティマイザ
  • 相関率と、異なる値の数を計算するための複数列オプティマイザ統計を追加しました。 (Tomas Vondra, David Rowley, Álvaro Herrera)

    新たなコマンドはcreate statisticsalter statisticsDROP STATISTICSです。 この機能は問い合わせのメモリ使用を見積りするのと、別々の列の統計を結びつけるときに役立ちます。

  • 行単位セキュリティの影響を受ける問い合わせの性能を改善しました。 (Tom Lane)

    オプティマイザはRLSフィルタ条件を置けるところでより多くの知識をもつようになり、RLS条件を強制しても安全なとき、より良いプラン生成が可能になりました。

E.6.3.1.5. 性能全般
  • numeric型の計算を使った合計を計算する集約関数を高速化しました。 SUM()AVG()、およびSTDDEV()のいくつかの別形が含まれます。 (Heikki Linnakangas)

  • 基数木を使うことにより文字エンコーディング変換の性能を改善しました。 (Kyotaro Horiguchi, Heikki Linnakangas)

  • プランノード呼び出しオーバーヘッドと同様に、問い合わせ実行時の式評価のオーバーヘッドを削減しました。 (Andres Freund)

    これは特に多数の行を処理する問い合わせに役立ちます。

  • グループ化セットでハッシュ集約を使えるようにしました。 (Andrew Gierth)

  • いくつかの結合タイプの最適化でユニーク保証を使うようにしました。 (David Rowley)

  • macaddrデータ型のソート性能を改善しました。 (Brandur Leach)

  • 何千ものリレーションを参照するセッションでの統計観測のオーバヘッドを軽減しました。 (Aleksander Alekseev)

E.6.3.1.6. 監視
  • プラン作成と実行の時間のEXPLAINにおける表示について明示的な制御を可能にしました。 (Ashutosh Bapat)

    デフォルトではプラン作成と実行の時間はEXPLAIN ANALYZEでは表示され、他の場合には表示されません。 新たなEXPLAINオプションのSUMMARYはこれについて明示的な制御ができます。

  • デフォルト監視ロールを追加しました。 (Dave Page)

    新たなロールpg_monitorpg_read_all_settingspg_read_all_stats、および、pg_stat_scan_tablesで権限設定を単純化できます。

  • REFRESH MATERIALIZED VIEWの際に統計コレクタを適切に更新するようにしました。 (Jim Mlodgenski)

E.6.3.1.6.1. ログ
  • log_line_prefixのデフォルト値をpostmasterログ出力の各行に現在タイムスタンプ(ミリ秒を含む)とプロセスIDを含むように変更しました。 (Christoph Berg)

    以前のデフォルトは空のプレフィックスでした。

  • ログおよびWALのディレクトリ内容を返す関数を追加しました。 (Dave Page)

    新たな関数pg_ls_logdir()およびpg_ls_waldir()は適切な権限があれば非スーパーユーザで実行できます。

  • ログコレクタの現在のstderrとcsvlog出力のファイル名を読み取る関数pg_current_logfile()を追加しました。 (Gilles Darold)

  • postmaster起動時のサーバログで各待ち受けソケットについてアドレスとポート番号を報告するようにしました。 (Tom Lane)

    また、待ち受けソケットのバインド失敗がログ出力されるとき、バインドを試みた特定アドレスがログに含まれるようになります。

  • ランチャーサブプロセスの開始と停止についてログのおしゃべりを削減しました。 (Tom Lane)

    これらはDEBUG1レベルのメッセージになりました。

  • log_min_messagesで制御される小さい数のデバッグレベルでのメッセージの冗長度を減らしました。 (Robert Haas)

    client_min_messagesのデバッグレベルにおいても冗長度を変更しました。

E.6.3.1.6.2. pg_stat_activity
  • pg_stat_activityに低レベル待機状態の報告を加えました。 (Michael Paquier, Robert Haas, Rushabh Lathia)

    この変更で、多数の低レベル待機状態の報告が可能になりました。 ラッチ待機、ファイルの読み/書き/同期、クライアントの読み/書き、および、同期レプリケーションが含まれます。

  • pg_stat_activityで補助プロセス、バックグラウンドワーカ、およびwalsenderプロセスを表示するようにしました。 (Kuntal Ghosh, Michael Paquier)

    これは監視を簡単にします。 新たな列backend_typeがプロセスタイプを識別します。

  • pg_stat_activityでパラレルワーカで実行されているSQL問い合わせを見ることができるようにしました。 (Rafia Sabih)

  • pg_stat_activity.wait_event_typeの値のLWLockTrancheLWLockNamedLWLockに改名しました。 (Robert Haas)

    これは出力をより一貫したものにします。

E.6.3.1.7. 認証
  • パスワードの折衝と格納にSCRAM-SHA-256の対応を追加しました。 (Michael Paquier, Heikki Linnakangas)

    これは既存のmd5による折衝と格納の方式よりも良いセキュリティを提供します。

  • password_encryptionサーバパラメータをbooleanからenumに変更しました。 (Michael Paquier)

    これは追加的なパスワードハッシュオプションに対応するのに必要でした。

  • pg_hba.confの内容を表示するビューpg_hba_file_rulesを追加しました。 (Haribabu Kommi)

    これは現在の動的な設定ではなくファイル内容を表示します。

  • 複数RADIUSサーバに対応しました。 (Magnus Hagander)

    全てのRADIUS関連のパラメータは今や複数であり、サーバのカンマ区切りリストに対応しています。

E.6.3.1.8. サーバ設定
  • SSL設定を設定リロード時に更新できるようにしました。 (Andreas Karlsson, Tom Lane)

    これによりSSLの再設定が、pg_ctl reloadSELECT pg_reload_conf()SIGHUPシグナルの送信を行うことで、サーバ再起動なしに可能となります。 しかしながら、SSL設定のリロードは、サーバのSSLキーがパスフレーズを必要とする場合、パスフレーズのプロンプトを再度出す手段が無いので、動作しません。 この場合、postmasterが生きている間、元の設定が適用されます。

  • bgwriter_lru_maxpagesの最大値を事実上無制限にしました。 (Jim Nasby)

E.6.3.1.9. 信頼性
  • ファイルを作成または削除(unlink)した後に、その親ディレクトリにfsyncを実行するようにしました。 (Michael Paquier)

    これは電源障害後のデータ損失のリスクを削減します。

E.6.3.1.9.1. 先行書き込みログ (WAL)
  • 不要なチェックポイントとWALアーカイブを、これら処理がなければアイドル状態のシステムにおいて防止しました。 (Michael Paquier)

  • WALに詳細情報を追加するwal_consistency_checkingサーバパラメータを追加しました。 これはスタンバイサーバで正常性チェックを可能にします。 (Kuntal Ghosh, Robert Haas)

    あらゆる正常性チェック失敗はスタンバイ上で致命的エラーをひき起こします。

  • 設定可能な最大WALセグメントサイズを1GBに増やしました。 (Beena Emerson)

    より大きいWALセグメントサイズはより少ないarchive_commandの起動とより少ないWALファイル制御を可能にします。

E.6.3.2. レプリケーションとリカバリ

  • スタンバイサーバにテーブルを論理レプリケートする機能を追加しました。 (Petr Jelinek)

    論理レプリケーションは、異なるPostgreSQLメジャーバージョン間でのレプリケーションや選択的レプリケーションを含め、物理レプリケーションよりも柔軟に構成できます。

  • synchronous_standby_namesでの出現順序にかかわりなくスタンバイサーバからのコミット承認を待てるようになりました。 (Masahiko Sawada)

    これまではサーバは常にsynchronous_standby_namesの先頭に現れるアクティブなスタンバイを待機しました。 新たなsynchronous_standby_namesキーワードANYは、順序にかかわりなく任意の数のスタンバイを待つことを可能にします。 これはクォーラムコミットとして知られています。

  • ストリーミングでのバックアップとレプリケーションに必要な設定変更を削減しました。 (Magnus Hagander, Dang Minh Huong)

    具体的には、wal_levelmax_wal_sendersmax_replication_slots、および、hot_standbyについてデフォルトがこれらを即座に使うのに適するように変更されました。

  • pg_hba.confのデフォルトでローカルホスト接続からのレプリケーションを利用可能にしました。 (Michael Paquier)

    これまではpg_hba.confのレプリケーション接続の行はデフォルトではコメントアウトされていました。 これは特にpg_basebackupに有益です。

  • レプリケーション遅延時間を報告するようにpg_stat_replicationに列を追加しました。 (Thomas Munro)

    新たな列はwrite_lagflush_lag、および、replay_lagです。

  • recovery.confでリカバリ停止点をログシーケンス番号(LSN)で指定できるようにしました。 (Michael Paquier)

    これまでは停止点はタイムスタンプかXIDでしか選択できませんでした。

  • pg_stop_backup()が全てのWALがアーカイブされるのを待機するのを無効にできるようにしました。 (David Steele)

    pg_stop_backup()のオプションの第2引数でこの振る舞いを制御します。

  • 一時レプリケーションスロットを作成できるようにしました。 (Petr Jelinek)

    一時スロットはセッション終了またはエラーで自動的に削除されます。

  • Access Exclusiveロックのより良い追跡で、ホットスタンバイのリプレイの性能を改善しました。 (Simon Riggs, David Rowley)

  • 2相コミットのリカバリ性能を高速化しました。 (Stas Kelvich, Nikhil Sontakke, Michael Paquier)

E.6.3.3. 問い合わせ

  • XML整形されたデータを行の集合に変換するXMLTABLE関数を追加しました。 (Pavel Stehule, Álvaro Herrera)

  • 正規表現の大きい文字コード、特にU+7FF以上のユニコード文字を扱う文字クラスを修正しました。 (Tom Lane)

    これまでは、このような文字は[[:alpha:]]などのロケール依存文字クラスに属するものとして決して認識されませんでした。

E.6.3.4. ユーティリティコマンド

  • 自動的にパーティション制約を作り、タプルの挿入と更新の振り分けを行う、テーブルパーティショニング構文を追加しました。 (Amit Langote)

    この構文は範囲パーティショニングとリストパーティショニングに対応します。

  • AFTERトリガに行の変更を記録する遷移テーブルを追加しました。 (Kevin Grittner, Thomas Munro)

    遷移テーブルはサーバサイド言語で書かれたトリガからアクセスできます。

  • 制限的な行単位セキュリティポリシーを可能にしました。 (Stephen Frost)

    これまでは全てのセキュリティポリシーは許容的で、マッチする任意のポリシーはアクセスを許すことを意味しました。 制限的ポリシーは許可されたアクセスにマッチしなければなりません。 これらのポリシータイプを組み合わせることができます。

  • 外部キー制約を作るとき、REFERENCES権限のチェックを被参照テーブルだけ行うようにしました。 (Tom Lane)

    これまでは参照するテーブルのREFERENCES権限も必要でした。 これはSQL標準の誤読から生じました。 外部キー(あるいは何らか他のタイプの)制約を作るには、制約されるテーブルに所有権が必要で、加えてREFERENCES権限が必要というのはあまり意味がありません。

  • スキーマのデフォルトのアクセス権限を設定可能にしました。 (Matheus Oliveira)

    これはALTER DEFAULT PRIVILEGESコマンドを使って行われます。

  • ある整数データ型に一致するシーケンスを作るCREATE SEQUENCE ASコマンドを追加しました。 (Peter Eisentraut)

    これは基となる列の範囲に一致するシーケンスの作成を簡単にします。

  • INSTEAD INSERTトリガを持つビューに対するCOPY view FROM sourceをできるようにしました。 (Haribabu Kommi)

    このトリガにはCOPYで読み取られたデータ行が与えられます。

  • 唯一であるならDDLコマンドで引数無しに関数名の指定を可能にしました。 (Peter Eisentraut)

    例えば、その名前をもつ関数が一つだけしかないなら、引数なしで関数名だけのDROP FUNCTIONが可能です。 この振る舞いはSQL標準で必要とされています。

  • 複数の関数、演算子、および集約を一つのDROPコマンドで削除できるようにしました。 (Peter Eisentraut)

  • create servercreate user mapping、および、CREATE COLLATIONで、IF NOT EXISTSに対応しました。 (Anastasia Lubennikova, Peter Eisentraut)

  • VACUUM VERBOSEがスキップした凍結されたページの数と最も古いxminを報告するようにしました。 (Masahiko Sawada, Simon Riggs)

    この情報はlog_autovacuum_min_durationの出力にも含まれます。

  • VACUUMが末尾の空ヒープページを除去する速度を改善しました。 (Claudio Freire, Álvaro Herrera)

E.6.3.5. データ型

  • テキスト検索のJSONJSONBへの対応を追加しました。 (Dmitry Dolgov)

    関数ts_headline()to_tsvector()がこれらのデータ型に対して使用できるようになりました。

  • 新たなデータ型macaddr8として EUI-64 MACアドレスの対応が追加されました。 (Haribabu Kommi)

    これは既存のEUI-48 MACアドレス対応(macaddr型)を補完します。

  • 挿入する列に数値を割り当てるための識別列を追加しました。

    これはSERIAL列と似ていますが、SQL標準準拠です。

  • ENUMの値を改名できるようにしました。 (Dagfinn Ilmari Mannsåker)

    これは構文ALTER TYPE ... RENAME VALUEを使用します。

  • 配列の擬似型(anyarray)をto_json()to_jsonb()で配列として適切に扱うようにしました。 (Andrew Dunstan)

    これまではanyarrayとして宣言された列(特にpg_statsビューの内のもの)が配列でなくJSON文字列に変換されていました。

  • money値とint8値の積と除算の演算子を追加しました。 (Peter Eisentraut)

    これまではこのような場合、結果としてint8の値がfloat8に変換されて、moneyfloat8の演算子が使われていました。 新たな振る舞いは起こりうる精度損失を回避します。 しかし、moneyint8での除算は、他の整数除算の場合のように商を切り捨てするようになったことに注意してください。 一方、従来の振る舞いでは丸めていました。

  • money型の入力関数でオーバーフローの検査をするようにしました。 (Peter Eisentraut)

E.6.3.6. 関数

  • 簡易化したregexp_match()関数を追加しました。 (Emre Hasegeli)

    これはregexp_matches()と似ていますが、最初のマッチからの結果だけを返すので集合を返す必要がなく、単純な場合により簡単に使えるようになりました。

  • jsonb削除演算子の、削除するキー配列を取る版を追加しました。 (Magnus Hagander)

  • json_populate_record()と関連する関数がJSONの配列とオブジェクトを再帰的に処理するようにしました。 (Nikita Glukhov)

    この変更で、あて先のSQL型の配列型フィールドが適切にJSON配列から変換され、複合型フィールドは適切にJSONオブジェクトから変換されます。 これまでこのような場合は、JSON値のテキスト表現がarray_in()またはrecord_in()に与えられて、その構文が入力関数の期待と一致しないために、失敗していました。

  • 現在のトランザクションIDを、トランザクションIDが割り当てされていないときにはNULLを返す関数txid_current_if_assigned()を追加しました。 (Craig Ringer)

    txid_current()は、必要なら一つを割り当てて、常にトランザクションIDを返す点が本関数と異なります。 本関数は、txid_current()と違い、スタンバイサーバでも実行できます。

  • あるトランザクションがコミットされたかどうかチェックする関数txid_status()を追加しました。 (Craig Ringer)

    これは突発切断後の、前トランザクションはコミット済で応答を受け取れなかっただけであるかどうかの検査に有益です。

  • make_date()がマイナス年をBC年と解釈できるようにしました。 (Álvaro Herrera)

  • to_timestamp()to_date()が範囲外の入力フィールドを拒否するようにしました。 (Artur Zakirov)

    例えば、これまではto_date('2009-06-40','YYYY-MM-DD')は受け入れられて2009-07-10を返しました。 これからはエラーが生じます。

E.6.3.7. サーバサイド言語

  • PL/Pythonのcursor()関数とexecute()関数をそれらのプランオブジェクト引数のメソッドとして呼べるようにしました。 (Peter Eisentraut)

    よりオブジェクト指向プログラミング的なスタイルが可能になります。

  • PL/pgSQLのGET DIAGNOSTICS文が配列要素に値を取り込めるようにしました。 (Tom Lane)

    これまでは、構文上の制限であて先の変数を配列要素にすることが妨げられていました。

E.6.3.7.1. PL/Tcl
  • PL/Tcl関数が複合型と集合を返せるようにしました。 (Karl Lehenbauer)

  • PL/Tclにサブトランザクションコマンドを追加しました。 (Victor Wagner)

    これによりPL/Tclの問い合わせが関数全体の中断なしに失敗できるようになります。

  • サーバパラメータpltcl.start_procpltclu.start_procを追加しました。 PL/Tcl開始に際して初期化関数が呼ばれるようにできます。 (Tom Lane)

E.6.3.8. クライアントインタフェース

  • libpqの接続文字列とURIで複数のホスト名またはアドレスの指定を可能にしました。 (Robert Haas, Heikki Linnakangas)

    libpqはリスト中の最初の応答するサーバに接続します。

  • libpq接続文字列とURIが読み/書きホストを要求できるようにしました。 これはスタンバイサーバでなくマスタサーバです。 (Victor Wagner, Mithun Cy)

    これは複数ホスト名が指定されたときに便利です。 これはlibpqの接続パラメータtarget_session_attrsで制御します。

  • パスワードファイル名をlibpqの接続パラメータとして指定できるようにしました。 (Julian Markwort)

    これまでは環境変数を通してのみ指定できました。

  • クライアント側でより多くの暗号化パスワードタイプを作ることができる、関数PQencryptPasswordConn()を追加しました。 (Michael Paquier, Heikki Linnakangas)

    これまではMD5で暗号化されたパスワードのみがPQencryptPassword()を使って作成できました。 新たな関数はSCRAM-SHA-256で暗号化されたパスワードも作成できます。

  • ecpgプリプロセッサバージョンを4.12から10に変更しました。 (Tom Lane)

    今後はecpgバージョンをPostgreSQL配布バージョン番号と一致させます。

E.6.3.9. クライアントアプリケーション

E.6.3.9.1. psql
  • psqlが条件分岐に対応しました。 (Corey Huinker)

    この機能はpsqlにメタコマンド\if\elif\else\endifを加えます。 主としてスクリプト作成に役立ちます。

  • psql\gxメタコマンドを追加しました。 これは拡張モード(\x)で問い合わせを実行(\g)します。 (Christoph Berg)

  • psqlの変数参照をバッククォート実行の文字列で拡張しました。 (Tom Lane)

    これは特に新たなpsqlの条件分岐コマンドにおいて役立ちます。

  • psqlの特別変数が不正な値に設定されるのを防止しました。 (Daniel Vérité, Tom Lane)

    これまでは、psql特別変数を不正な値に設定すると、何も言われず結果としてデフォルトの振る舞いになりました。 特別変数に対する\setは、これからは指定された新たな値が無効であったときエラーになります。 特例として、真偽値を持つ特別変数に対する空または省略された新たな値での\setは、まだ値をonに設定した効果を持ちますが、これからは空文字でなくその値を実際に得ます。 特別変数に対する\unsetは、これからは明示的に値をそのデフォルト値に設定します。 このデフォルト値は起動時に得る値でもあります。 要するに、制御変数は常にpsqlが実際にどうであるかを示す表示できる値を持つようになります。

  • サーババージョンとpsqlバージョンを表示する変数を追加しました。 (Fabien Coelho)

  • psql\d(リレーションを表示)と\dD(ドメインを表示)コマンドを照合順序、NULL可能か、および、個々の列のデフォルト属性を表示するように改良しました。 (Peter Eisentraut)

    これまではこれらは一つのModifiers列の中に示されていました。

  • \dコマンドをマッチするオブジェクトが無い場合により一貫性のある処理をするようにしました。 (Daniel Gustafsson)

    これからは全てのメッセージをstdoutでなくstderrに出力するようになり、メッセージの文言がより一貫性をもったものになります。

  • psqlのタブ補完を改良しました。 (Jeff Janes, Ian Barwick, Andreas Karlsson, Sehrope Sarkuni, Thomas Munro, Kevin Grittner, Dagfinn Ilmari Mannsåker)

E.6.3.9.2. pgbench
  • pgbenchにログファイルのプレフィックスを制御するオプション--log-prefixを追加しました。 (Masahiko Sawada)

  • pgbenchのメタコマンドが複数行にわたることを可能にしました。 (Fabien Coelho)

    メタコマンドはこれからはバックスラッシュと改行で次行に継続できます。

  • -Mオプションの、他のコマンドラインオプションと関連する位置の制限を取り除きました。 (Tom Lane)

E.6.3.10. サーバアプリケーション

  • pg_receivewalの圧縮を指定するオプション-Z/--compressを追加しました。 (Michael Paquier)

  • pg_recvlogicalに終了点を指定するオプション--endposを追加しました。

    元々--startposオプションだけ在ったものを補完します。

  • initdbのオプション--noclean--nosync--no-clean--no-syncと綴るように改名しました。 (Vik Fearing, Peter Eisentraut)

    従来の綴りにも未だ対応します。

  • pg_restoreがスキーマを除外できるようにしました。 (Michael Banck)

    新たに-N/--exclude-schemaオプションが追加されます。

  • pg_dump--no-blobsオプションを追加しました。 (Guillaume Lelarge)

    これはラージオブジェクトのダンプを抑止します。

  • pg_dumpallに、ロールのパスワードを無視するオプション--no-role-passwordsを追加しました。 (Robins Tharakan, Simon Riggs)

    これにより非スーパーユーザからpg_dumpallが使用できます。 本オプションが無いとパスワードが読めないためにエラーになります。

  • スタンバイサーバからのダンプでの同期スナップショットの使用に対応しました。 (Petr Jelinek)

  • pg_dumppg_dumpallで生成された出力ファイルに対してfsync()を発行するようにしました。 (Michael Paquier)

    これは、プログラム終了前に出力が安全にディスク上に格納されるという、より良い安全性を提供します。 この動作は新たな--no-syncオプションで無効にできます。

E.6.3.10.2. pg_basebackup
  • pg_basebackupをtarモードで先行書き込みログ(WAL)のストリーミングができるようにしました。 (Magnus Hagander)

    WALはベースバックアップとは別のtarファイルに格納されます。

  • pg_basebackupが一時レプリケーションスロットを使うようにしました。 (Magnus Hagander)

    pg_basebackupがデフォルトオプションでWALストリーミングを使うとき、一時レプリケーションスロットはデフォルトで使われます。

  • pg_basebackuppg_receivewalで必要とされる場所でのfsync実行についてより注意深くしました。 (Michael Paquier)

  • pg_basebackupにfsyncを無効にするオプション--no-syncを追加しました。 (Michael Paquier)

  • pg_basebackupのどのディレクトリを飛ばすかの制御を改良しました。 (David Steele)

E.6.3.10.3. pg_ctl
  • pg_ctlの昇格操作むけ待機オプションを追加しました。 (Peter Eisentraut)

  • pg_ctlの待機(--wait)、待機無し(--no-wait)のロングオプションを追加しました。 (Vik Fearing)

  • pg_ctlサーバオプションのロングオプション(--options)を追加しました。 (Peter Eisentraut)

  • pg_ctl start --waitが接続を試みるのではなく、postmaster.pidを監視してサーバの準備完了を検出するようにしました。 (Tom Lane)

    postmasterはその接続受付状態をpostmaster.pidで報告するように変更されています。 そして、pg_ctlはそのファイルを調べて起動が完了したかを検出します。 これは従来の方法よりも効率的で信頼でき、postmasterログから起動中の拒否された接続試行のログ項目を除去できます。

  • postmasterの起動/停止を待機するときのpg_ctlの応答時間を削減しました。 (Tom Lane)

    pg_ctlはpostmasterの状態変更を待つときに、これからは1秒に1回ではなく1秒あたり10回検査します。

  • 待たされている操作がタイムアウト内に完了しなかった場合、pg_ctlが非ゼロステータスで終了することを保証しました。 (Peter Eisentraut)

    startpromote操作は、このような場合に終了ステータスに0でなく1を返すようになりました。 stop操作は常にそのようになっていました。

E.6.3.11. ソースコード

  • 二要素のリリースバージョン番号に変更しました。 (Peter Eisentraut, Tom Lane)

    リリース番号はこれからは三要素(例えば9.6.3)でなく二要素になります(例えば、10.1)。 メジャーバージョンは一番目の数だけが増え、マイナーリリースは二番目に数だけが増えます。 リリースブランチは単一の数で参照されます(例えば9.6でなく10)。 この変更は何がPostgreSQLのメジャーリリースあるいはマイナーリリースなのかについてのユーザの混乱を減らすことを意図しています。

  • pgindentの振る舞いを改良しました。 (Piotr Stefaniak, Tom Lane)

    私たちはFreeBSDプロジェクトによる最近の改良に基づくpg_bsd_indentの新バージョンに切り替えました。 これはおかしなCコード整形の判断をする多数の小さなバグを修正します。 最も特記すべきは、たとえ結果としてコードが右端を超えて延びても、(複数行の関数呼び出しのような)括弧内の複数行が開き丸括弧でインデントが揃えられるようになったことです。

  • ICUライブラリが照合順序の対応にオプションで使用できるようにしました。 (Peter Eisentraut)

    ICUライブラリはバージョン間での照合順序の変更がわかるバージョン付けをしています。 これはconfigureオプション--with-icuで有効にできます。 デフォルトでは未だオペレーティングシステム固有の照合順序ライブラリを使います。

  • Windows上で自動的に全てのPG_FUNCTION_INFO_V1関数をDLLEXPORTされたものと印付けするようにしました。 (Laurenz Albe)

    サードパーティコードでextern関数宣言を使っている場合、 DLLEXPORTマーカーをそれらの宣言に加える必要があります。

  • SPI関数のSPI_push()SPI_pop()SPI_push_conditional()SPI_pop_conditional()SPI_restore_connection()は必要ないので除去しました。 (Tom Lane)

    これら関数の機能はこれからは自動的に行われます。 外部モジュールが直ちにアップデートを必要としないように、これら関数はその名前の何もしないマクロとなりますが、最終的にはこれらの呼び出しは取り除かれます。

    本変更の副作用は、SPI_palloc()と付随する関数がこれからはアクティブなSPI接続を必要とすることです。接続が無い場合、これからは単純なpalloc()に縮退しません。 従来の振る舞いは必ずしも便利ではなく予期せぬメモリリークの危険性が生じました。

  • 共有メモリを動的に割り当てできるようにしました。 (Thomas Munro, Robert Haas)

  • 効果的な固定サイズ割り当てのためにスラブのようなメモリアロケータを追加しました。 (Tomas Vondra)

  • LinuxFreeBSDにおいてSysVセマフォではなくPOSIXセマフォを使用するようにしました。 (Tom Lane)

    これはプラットフォームで指定するSysVセマフォ使用量の制限を回避します。

  • 64ビットでの原子性の対応を改善しました。 (Andres Freund)

  • ARM64上での64ビットの原子的操作を有効にしました。 (Roman Shaposhnik)

  • 可能であれば遅延の計測にclock_gettime()を使うように切り替えました。 (Tom Lane)

    clock_gettime()が使えないときにgettimeofday()もまだ使われます。

  • 暗号による保護の用途で使われるより頑健な乱数生成器を加えました。 (Magnus Hagander, Michael Paquier, Heikki Linnakangas)

    強くない乱数生成器が見つかると、configure--disable-strong-randomが指定されていない限り、失敗します。 しかしながら、このオプション付きですと強いランダム生成器を必要とするpgcrypto関数は使用できません。

  • WaitLatchOrSocket()がWindowsでソケット接続を待つことができるようにしました。 (Andres Freund)

  • tupconvert.cの関数はもはやタプルを単にそれらの中に異なる複合型のOIDを組み込むようには変換しません。 (Ashutosh Bapat, Tom Lane)

    多数派の呼び出し元は複合型OIDについて考慮しませんが、結果タプルが複合Datumとして使われる場合、正しいIDがその中に挿入されるのを確かめる手順であるべきです。

  • SCOUnixwareの移植を除きました。 (Tom Lane)

  • 文書のビルド手順を全面的に書き換えしました。 (Alexander Lakhin)

  • PostgreSQL文書をビルドするのにXSLTを使用するようにしました。 (Peter Eisentraut)

    これまではJadeDSSSLおよびJadeTexが使われていました。

  • デフォルトでXSLTのスタイルシートを使ってHTML文書をビルドするようにしました。 (Peter Eisentraut)

E.6.3.12. 追加モジュール

  • file_fdwがファイル同様にプログラム出力から読み取りできるようにしました。 (Corey Huinker, Adam Gomaa)

  • postgres_fdwで、可能であれば集約関数をリモートサーバにプッシュするようにしました。 (Jeevan Chalke, Ashutosh Bapat)

    これはリモートサーバから渡されなければならないデータ量を減らし、集約計算の負担を要求元サーバから取り除きます。

  • postgres_fdwで、より多くの場合に結合をリモートサーバにプッシュするようにしました。 (David Rowley, Ashutosh Bapat, Etsuro Fujita)

  • postgres_fdwテーブルのOID列に適切に対応しました。 (Etsuro Fujita)

    これまではOID列は常にゼロを返しました。

  • btree_gistbtree_ginでenum型のインデックスを可能にしました。 (Andrew Dunstan)

    これによりenumが排他制約に使用可能になります。

  • UUIDデータ型に対するbtree_gistインデックスの対応を追加しました。 (Paul Jungwirth)

  • B-treeインデックスの妥当性を検査できるamcheckを追加しました。 (Peter Geoghegan)

  • pg_stat_statementsで無視された内容を?ではなく$Nと表示するようにしました。 (Lukas Fittl)

  • cubeのゼロ次元キューブの扱いを改善しました。 (Tom Lane)

    また、infinite値とNaN値の扱いも改善しました。

  • pg_buffercacheをより少ないロックで実行可能にしました。 (Ivan Kartyshov)

    これにより実稼動システムで実行するときの混乱を減らします。

  • pgstattupleにハッシュインデックスの統計情報を参照する関数pgstathashindex()を追加しました。 (Ashutosh Sharma)

  • pgstattuple関数の使用を制御するのにGRANTで権限を与えるようにしました。(Stephen Frost)

    データベース管理者がこれらの関数を非スーパーユーザで実行可能にできるようにしました。

  • pgstattupleがハッシュインデックスを調べるときのロック取得を軽減しました。 (Amit Kapila)

  • pageinspectにページのチェックサムを表示する関数page_checksum()を追加しました。 (Tomas Vondra)

  • pageinspectにページイメージからページ要素を出力する関数bt_page_items()を追加しました。 (Tomas Vondra)

  • pageinspectにハッシュインデックス対応を追加しました。 (Jesper Pedersen, Ashutosh Sharma)

E.6.4. 謝辞

以下の人々(アルファベット順)はパッチ作者、コミッター、レビューア、テスターあるいは問題の報告者として本リリースに貢献しました。

Adam Brightwell
Adam Brusselback
Adam Gomaa
Adam Sah
Adrian Klaver
Aidan Van Dyk
Aleksander Alekseev
Alexander Korotkov
Alexander Lakhin
Alexander Sosna
Alexey Bashtanov
Alexey Grishchenko
Alexey Isayko
Álvaro Hernández Tortosa
Álvaro Herrera
Amit Kapila
Amit Khandekar
Amit Langote
Amul Sul
Anastasia Lubennikova
Andreas Joseph Krogh
Andreas Karlsson
Andreas Scherbaum
Andreas Seltenreich
Andres Freund
Andrew Dunstan
Andrew Gierth
Andrew Wheelwright
Andrey Borodin
Andrey Lizenko
Andy Abelisto
Antonin Houska
Ants Aasma
Arjen Nienhuis
Arseny Sher
Artur Zakirov
Ashutosh Bapat
Ashutosh Sharma
Ashwin Agrawal
Atsushi Torikoshi
Ayumi Ishii
Basil Bourque
Beena Emerson
Ben de Graaff
Benedikt Grundmann
Bernd Helmle
Brad DeJong
Brandur Leach
Breen Hagan
Bruce Momjian
Bruno Wolff III
Catalin Iacob
Chapman Flack
Chen Huajun
Choi Doo-Won
Chris Bandy
Chris Richards
Chris Ruprecht
Christian Ullrich
Christoph Berg
Chuanting Wang
Claudio Freire
Clinton Adams
Const Zhang
Constantin Pan
Corey Huinker
Craig Ringer
Cynthia Shang
Dagfinn Ilmari Mannsåker
Daisuke Higuchi
Damian Quiroga
Dan Wood
Dang Minh Huong
Daniel Gustafsson
Daniel Vérité
Daniel Westermann
Daniele Varrazzo
Danylo Hlynskyi
Darko Prelec
Dave Cramer
Dave Page
David Christensen
David Fetter
David Johnston
David Rader
David Rowley
David Steele
Dean Rasheed
Denis Smirnov
Denish Patel
Dennis Björklund
Devrim Gündüz
Dilip Kumar
Dilyan Palauzov
Dima Pavlov
Dimitry Ivanov
Dmitriy Sarafannikov
Dmitry Dolgov
Dmitry Fedin
Don Morrison
Egor Rogov
Eiji Seki
Emil Iggland
Emre Hasegeli
Enrique Meneses
Erik Nordström
Erik Rijkers
Erwin Brandstetter
Etsuro Fujita
Eugen Konkov
Eugene Kazakov
Euler Taveira
Fabien Coelho
Fabrízio de Royes Mello
Feike Steenbergen
Felix Gerzaguet
Filip Jirsák
Fujii Masao
Gabriele Bartolini
Gabrielle Roth
Gao Zengqi
Gerdan Santos
Gianni Ciolli
Gilles Darold
Giuseppe Broccolo
Graham Dutton
Greg Atkins
Greg Burek
Grigory Smolkin
Guillaume Lelarge
Hans Buschmann
Haribabu Kommi
Heikki Linnakangas
Henry Boehlert
Huan Ruan
Ian Barwick
Igor Korot
Ildus Kurbangaliev
Ivan Kartyshov
Jaime Casanova
Jakob Egger
James Parks
Jarred Ward
Jason Li
Jason O'Donnell
Jason Petersen
Jeevan Chalke
Jeevan Ladhe
Jeff Dafoe
Jeff Davis
Jeff Janes
Jelte Fennema
Jeremy Finzel
Jeremy Schneider
Jeroen van der Ham
Jesper Pedersen
Jim Mlodgenski
Jim Nasby
Jinyu Zhang
Joe Conway
Joel Jacobson
John Harvey
Jon Nelson
Jordan Gigov
Josh Berkus
Josh Soref
Julian Markwort
Julien Rouhaud
Junseok Yang
Justin Muise
Justin Pryzby
Kacper Zuk
KaiGai Kohei
Karen Huddleston
Karl Lehenbauer
Karl O. Pinc
Keith Fiske
Kevin Grittner
Kim Rose Carlsen
Konstantin Evteev
Konstantin Knizhnik
Kuntal Ghosh
Kurt Kartaltepe
Kyle Conroy
Kyotaro Horiguchi
Laurenz Albe
Leonardo Cecchi
Ludovic Vaugeois-Pepin
Lukas Fittl
Magnus Hagander
Maksim Milyutin
Maksym Sobolyev
Marc Rassbach
Marc-Olaf Jaschke
Marcos Castedo
Marek Cvoren
Mark Dilger
Mark Kirkwood
Mark Pether
Marko Tiikkaja
Markus Winand
Marllius Ribeiro
Marti Raudsepp
Martín Marqués
Masahiko Sawada
Matheus Oliveira
Mathieu Fenniak
Merlin Moncure
Michael Banck
Michael Day
Michael Meskes
Michael Overmeyer
Michael Paquier
Mike Palmiotto
Milos Urbanek
Mithun Cy
Moshe Jacobson
Murtuza Zabuawala
Naoki Okano
Nathan Bossart
Nathan Wagner
Neha Khatri
Neha Sharma
Neil Anderson
Nicolas Baccelli
Nicolas Guini
Nicolas Thauvin
Nikhil Sontakke
Nikita Glukhov
Nikolaus Thiel
Nikolay Nikitin
Nikolay Shaplov
Noah Misch
Noriyoshi Shinoda
Olaf Gawenda
Oleg Bartunov
Oskari Saarenmaa
Otar Shavadze
Paresh More
Paul Jungwirth
Paul Ramsey
Pavan Deolasee
Pavel Golub
Pavel Hanák
Pavel Raiskup
Pavel Stehule
Peng Sun
Peter Eisentraut
Peter Geoghegan
Petr Jelínek
Philippe Beaudoin
Pierre-Emmanuel André
Piotr Stefaniak
Prabhat Sahu
QL Zhuo
Radek Slupik
Rafa de la Torre
Rafia Sabih
Ragnar Ouchterlony
Rahila Syed
Rajkumar Raghuwanshi
Regina Obe
Richard Pistole
Robert Haas
Robins Tharakan
Rod Taylor
Roman Shaposhnik
Rushabh Lathia
Ryan Murphy
Sandeep Thakkar
Scott Milliken
Sean Farrell
Sebastian Luque
Sehrope Sarkuni
Sergey Burladyan
Sergey Koposov
Shay Rojansky
Shinichi Matsuda
Sho Kato
Simon Riggs
Simone Gotti
Spencer Thomason
Stas Kelvich
Stepan Pesternikov
Stephen Frost
Steve Randall
Steve Singer
Steven Fackler
Steven Winfield
Suraj Kharage
Sveinn Sveinsson
Sven R. Kunze
Tahir Fakhroutdinov
Taiki Kondo
Takayuki Tsunakawa
Takeshi Ideriha
Tatsuo Ishii
Tatsuro Yamada
Teodor Sigaev
Thom Brown
Thomas Kellerer
Thomas Munro
Tim Goodaire
Tobias Bussmann
Tom Dunstan
Tom Lane
Tom van Tilburg
Tomas Vondra
Tomonari Katsumata
Tushar Ahuja
Vaishnavi Prabakaran
Venkata Balaji Nagothi
Vicky Vergara
Victor Wagner
Vik Fearing
Vinayak Pokale
Viren Negi
Vitaly Burovoy
Vladimir Kunshchikov
Vladimir Rusinov
Yi Wen Wong
Yugo Nagata
Zhen Ming Yang
Zhou Digoal