他のバージョンの文書 16 | 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.5. リリース12

リリース日: 2019-10-03

E.5.1. 概要

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

  • 各種のパフォーマンス改善:

    • B-treeインデックスにおける空間利用と読み書き性能の最適化。

    • パーティショニングのパフォーマンス向上。ここには、数千パーティションを伴うテーブルの問い合わせ性能の改善、改善されたINSERTCOPYでの挿入性能、問い合わせをブロックせずにALTER TABLE ATTACH PARTITIONを実行できることが含まれます。

    • 共通テーブル式の自動インライン化(無効化も可能)。

    • GiSTGIN、および、SP-GiSTインデックスの作成でのWALオーバーヘッド削減。

    • INCLUDE句によるカバーリングGiSTインデックスの対応。

    • CREATE STATISTICSで複数列の最頻値(Most-Common-Value,MCV)統計情報を定義できるようになりました。いくつかの一様でない分布の列を分析する問い合わせに対するより良いプラン作成を助けます。

  • 以下の管理機能の拡張:

  • SQL/JSON path言語に対応

  • 格納された生成列

  • 大文字小文字やアクセント記号の有無を同一視したグループ化や並び替えを可能にする、非決定的ICU照合順序

  • 以下の新たな認証機能:

    • GSSAPI認証を使用するときのTCP/IP接続の暗号化

    • DNS SRVレコードを用いたLDAPサーバの検出

    • clientcert=verify-fullオプションをpg_hba.confでの追加的な認証方式と組み合わせることによる、多要素認証

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

E.5.2. バージョン12への移行

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

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

  • oid列の特別な振る舞いを廃止しました。 (Andres Freund, John Naylor)

    これまでテーブル作成時にWITH OIDSを用いて通常は見えないoid列を設定できましたが、この機能は廃止されました。 なお引き続き明示的にoid型として列を宣言することは可能です。 WITH OIDSを用いて作られた列を持つテーブルの操作には補正が必要です。

    これまで隠しoid列を持っていたシステムカタログは、通常のoid列を持つようになります。 ゆえに、これまでは明示的に選択した場合に限って表示されていましたが、SELECT *がこれらの列を出力するようになります。

  • データ型abstimereltimetintervalを廃止しました。 (Andres Freund)

    これらはSQL標準のtimestampなどの型により置き換えられています。

  • timetravel拡張を廃止しました。 (Andres Freund)

  • recovery.confの設定をpostgresql.confに移動しました。 (Masao Fujii, Simon Riggs, Abhijit Menon-Sen, Sergei Kornilov)

    recovery.confはもはや使われず、このファイルがあるとサーバは起動しなくなります。 非プライマリモードに切り替えするのに、これからはrecovery.signalstandby.signalファイルが使われます。 trigger_file設定はpromote_trigger_fileに改名されました。 standby_mode設定は廃止されました。

  • 複数の衝突するrecovery_target*の指定を禁止しました。 (Peter Eisentraut)

    具体的には、recovery_targetrecovery_target_lsnrecovery_target_namerecovery_target_time、および、recovery_target_xidの中で一つだけの指定が許されます。 これまではこれらパラメータの複数の異なる指定が可能で、最後の一つが適用されました。 これからは一つだけが指定できます。しかし、同じ項目を複数回指定することは可能で、最後の一つが適用されます。

  • リカバリがデフォルトで最新タイムラインに進むようにしました。 (Peter Eisentraut)

    具体的には、recovery_target_timelineのデフォルトがlatestになりました。 これまではcurrentがデフォルトでした。

  • 幾何関数・演算子のコードをリファクタリングしました。 (Emre Hasegeli)

    これにより、以前のリリースと比べて、より正確ですが僅かに異なる結果をもたらす可能性があります。 特にNaN、アンダーフロー、オーバーフロー、および、ゼロ除算に関する場合が以前より整合的に扱われます。

  • realdouble precisionの値の出力について、新たなアルゴリズムを使うことで性能を改善しました。 (Andrew Gierth)

    これまでは表示される浮動小数点の値はデフォルトで6桁(realの場合)または15桁(double precisionの場合)に丸められて、extra_float_digitsの値により調整されていました。 これからは、extra_float_digitsがゼロより大きいとき(これからはデフォルトです)にはいつでも、正確なバイナリ値を保持するのに必要とされる最小桁数だけ出力します。 extra_float_digitsをゼロ以下に設定したときの動作は以前と同じです。

    また、浮動小数点の指数部の書式がプラットフォーム間で統一されました。 3桁が必要でない限り2桁が使われます。 これまでのリリースでは、Windowsビルドは常に3桁を出力していました。

  • random()setseed()がプラットフォーム間で統一された動作をするようになります。 (Tom Lane)

    特定のシード値を伴ったsetseed()呼び出しに従って生成される一連のrandom()値が、これまでと異なるかもしれません。 しかしながら、再現性を持つようになります。サーバ内での他ユーザの乱数使用の干渉のため、以前は再現性が保証されませんでした。 これを防止するため、SQLのrandom()関数は固有のセッション毎の状態を持つようになります。

  • SQLスタイルのsubstring()を標準に従った欲張り動作をするように変更しました。 (Tom Lane)

    複数方法でのマッチが可能なパターンの場合に、最初の副パターンが最大ではなく最小テキスト長でマッチするようになります。 例えば、%#"aa*#"%のようなパターンは入力からaの、最後のグループではなく、最初のグループを選択するようになります。

  • xpath()XMLTABLEによる生成の結果を整形をしなくしました。 (Tom Lane)

    一部の場合にこれら関数がノードセット値に追加の空白文字(改行やスペース)を挿入することがありました。 空白文字も意味的に重要とされるかもしれず、用途によってはこれは望ましくありません。

  • コマンドラインツールpg_verify_checksumspg_checksumsに改名しました。 (Michaël Paquier)

  • pg_restoreでダンプ内容を標準出力に送るのに-f -指定を必須としました。 (Euler Taveira)

    これまではこれは出力先が指定されない場合のデフォルト動作でしたが、これは不親切と考えられました。

  • psql\pset formatコマンドで一意でない省略形を禁止しました。 (Daniel Vérit)

    これまでは、例えば\pset format aalignedを選択しました。 今後これは、asciidocを意味する可能性も等しくあるので、失敗するようになります。

  • 新たなBツリーインデックスでは、重複エントリの処理を改善するため、インデックスエントリの最大長が8バイト減りました。 (Peter Geoghegan)

    このことは、以前のリリースからpg_upgradeされたインデックスに対するREINDEX操作が潜在的に失敗する可能性あることを意味します。

  • 引数リストが無く、該当するオブジェクトが複数ある場合にDROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINEがエラーを生成するようにしました。 (David Rowley)

    また、このような場合のエラーメッセージが改善されました。

  • pg_statistic_extカタログをふたつのカタログに分割して、そのpg_stats_extビューを追加しました。 (Dean Rasheed, Tomas Vondra)

    この変更は潜在的に機微な統計データを権限のないユーザから隠すのに役立ちます。

  • もはや用いられないpg_constraint.consrc列を廃止しました。 (Peter Eisentraut)

    This column has been deprecated for a long time, because it did not update in response to other catalog changes (such as column renamings). The recommended way to get a text version of a check constraint's expression from pg_constraint is pg_get_expr(conbin, conrelid). pg_get_constraintdef() is also a useful alternative.

  • もはや用いられないpg_attrdef.adsrc列を廃止しました。 (Peter Eisentraut)

    This column has been deprecated for a long time, because it did not update in response to other catalog changes (such as column renamings). The recommended way to get a text version of a default-value expression from pg_attrdef is pg_get_expr(adbin, adrelid).

  • テーブルのname型の列をデフォルトでC照合順序を持つものと印付けしました。

    nameデータ型に対する比較演算子は、常にC照合順序を使うのではなく、任意の照合順序を使えるようになりました。 これまでの問い合わせの意味合いを維持するために、name型の列は明示的にC照合順序を持つものと印付けされるようになりました。 この副作用は、(\wなど)ロケール依存の正規表現パターンの動作を決めるにあたり、name列の正規表現演算子がデフォルトでデータベースの照合順序ではなくC照合順序を使うようになることです。 name列の正規表現に対してCでない動作を望むなら、明示的なCOLLATE句を付けてください。 (ユーザ定義のname列に対して他に可能なことはテーブル作成時に異なる照合順序を指定することですが、これは後方非互換性を比較演算子に移したにすぎません。)

  • information_schemaのビューでのオブジェクト名の列をvarchar型ではなくname型であるものとみなすようにしました。 (Tom Lane)

    SQL標準では、information_schemaのビューでのオブジェクト名の列はドメイン型sql_identifierであるものとして宣言されています。 PostgreSQLでは、元となる実際のカタログ列はname型です。 この変更はsql_identifierをこれまでのvarcharではなくname上のドメインにします。 これにより比較およびソートの動作での意味の不一致を取り除きます。新たな動作はinformation_schemaビューへのオブジェクト名の列を限定する問い合わせの性能を大幅に改善できます。 しかしながら、例えば以下の不等式の限定ではデフォルトで、これまでのデータベースのデフォルト照合ではなく、Cロケールでの照合が使われることに注意してください。

    SELECT ... FROM information_schema.tables WHERE table_name < 'foo';
    

    これらの列のソートもCの順序規則に従うようになります。 これまでの動作(および非効率性)はCOLLATE "default"句を加えることで強制できます。

  • 動的共有メモリを無効にする機能を廃止しました。 (Kyotaro Horiguchi)

    具体的には、dynamic_shared_memory_typeはもはやnoneに設定できません。

  • Parse libpq integer connection parameters more strictly (Fabien Coelho)

    In previous releases, using an incorrect integer value for connection parameters connect_timeout, keepalives, keepalives_count, keepalives_idle, keepalives_interval and port resulted in libpq either ignoring those values or failing with incorrect error messages.

E.5.3. 変更点

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

E.5.3.1. サーバ

  • パーティションテーブルに対する各種の操作の性能を改善しました。 (Amit Langote, David Rowley, Tom Lane, Álvaro Herrera)

    数千の子パーティションを持つテーブルに対する少数のパーティションにだけ影響する操作を効率的に処理できるようにしました。

  • 外部キーがパーティションテーブルを参照できるようにしました。 (Álvaro Herrera)

  • パーティションテーブルへのCOPYの速度を改善しました。 (David Rowley)

  • パーティション境界を任意の式で指定可能にしました。 (Kyotaro Horiguchi, Tom Lane, Amit Langote)

    この式はパーティションテーブル作成時に評価されます。 これまではパーティション境界として単なる定数のみが許されていました。

  • パーティションテーブルのCREATE TABLEでのテーブル空間指定が子に反映されるようにしました。 (David Rowley, Álvaro Herrera)

  • パーティションが既に必要とされる順序でスキャンされているときにソートを避けるようにしました。 (David Rowley)

  • ALTER TABLE ATTACH PARTITIONの実行で必要なロックが減りました。 (Robert Haas)

  • パーティションの内部観察の関数を追加しました。 (Michaël Paquier, Álvaro Herrera, Amit Langote)

    新たな関数のpg_partition_root()はパーティションツリーの最上位の親を返し、pg_partition_ancestors()は全ての先祖パーティションを報告し、また、pg_partition_tree()はパーティションに関する情報を出力します。

  • システムビューpg_indexesにパーティションインデックスを含めるようにしました。 (Suraj Kharage)

  • パーティションテーブルとパーティションインデックスを一覧表示するpsqlのコマンド\dPを追加しました。 (Pavel Stehule)

  • psql\dおよび\zのパーティションテーブルの表示を改善しました。 (Pavel Stehule, Michaël Paquier, Álvaro Herrera)

  • ALTER TABLE DETACH PARTITIONが誤った依存状態を取り残し、例えばテーブルを削除したとき以前のパーティション子インデックスを削除しないことで、続く操作で誤動作をひき起こすおそれのあるバグを修正しました。 (Tom Lane)

E.5.3.1.2. インデックス
  • 重複を多く持つBツリーインデックスの性能と空間利用を改善しました。 (Peter Geoghegan, Heikki Linnakangas)

    これまでは重複したインデックス項目は重複グループ内で順序付けされずに格納されていました。 これによりインデックス挿入でオーバーヘッド、過度なページ分割による空間の浪費、 および、VACUUMのページ全体を再利用する能力の縮減をひき起こしました。 重複したインデックスエントリはこれからはヒープ格納順にソートされます

    以前のリリースからpg_upgradeされたインデックスは、この恩恵がありません。

  • 複数列のBツリーインデックスを小さくできるようにしました。 (Peter Geoghegan, Heikki Linnakangas)

    内部ページと最大/最小リーフページのインジケータに、全てのインデックスキーではなく、変化するキーまでのインデックスキーのみが格納されるようになります。 これはインデックスアクセスの局所性も改善します。

    以前のリリースからpg_upgradeされたインデックスは、この恩恵がありません。

  • ロックのオーバーヘッド軽減によりBツリーインデックスの挿入速度を改善しました。 (Alexander Korotkov)

  • GiSTインデックスがINCLUDE列に対応しました。 (Andrey Borodin)

  • SP-GiSTインデックスの最近傍(KNN)探索の対応を追加しました。 (Nikita Glukhov, Alexander Korotkov, Vlad Sterzhanov)

  • GiSTGIN、および、SP-GiSTインデックス作成のWAL書き込みのオーバーヘッドを削減しました。 (Anastasia Lubennikova, Andrey V. Lepikhov)

  • 多数の列を持つインデックスに対するインデックスオンリースキャンをより効率的にしました。 (Konstantin Knizhnik)

  • GiSTインデックスのバキューム走査の性能を改善しました。 (Andrey Borodin, Konstantin Kuznetsov, Heikki Linnakangas)

  • GiSTVACUUM時に、空リーフページを削除するようにしました。

  • インデックス改名で必要なロック取得を削減しました。 (Peter Eisentraut)

E.5.3.1.3. オプティマイザ
  • CREATE STATISTICSが複数列に対する最頻値統計を作成できるようにしました。

    これは、複数列を検査して、いくつかのWHERE句の複合効果の見積りを要する問い合わせの最適化を改善します。 これら列が相関していて、一様に分布していない場合、複数列統計がずっと良い見積りを可能にするはずです。

  • 共通テーブル式(common table expressions, CTEs)を外側の問い合わせにインライン化できるようにしました。 (Andreas Karlsson, Andrew Gierth, David Fetter, Tom Lane)

    具体的には、CTEは副作用が無く、再帰ではなく、問い合わせ中で一度だけ参照されているなら、自動的にインライン化されます。 インライン化は、MATERIALIZEDを指定することで防止でき、また、NOT MATERIALIZEDを指定することで複数回参照されているCTEに対して強制することができます。 これまでは、CTEは決してインライン化されず、常に残りの問い合わせよりも前に評価されていました。

  • 準備された文に汎用的な計画をいつ使うかを制御できるようにしました。 (Pavel Stehule)

    これはplan_cache_modeサーバパラメータで制御されます。

  • 一つしか子を持たない、パーティションとUNION ALLの問い合わせの最適化を改善しました。 (David Rowley)

  • チェック制約を持たないドメインの処理を改善しました。 (Tom Lane)

    これからは純粋に型の別名として使われているドメインが最適化に支障をきたすことがなくなります。

  • LEASTGREATESTの呼び出しを引数が定数のときには事前評価するようにしました。 (Vik Fearing)

  • 問い合わせでIS NOT NULL条件を持つ部分インデックスが使えるかについて、オプティマイザの検証能力を改善しました。 (Tom Lane, James Coleman)

    キャストや大きなx IN (array)句を伴う問い合わせを呼び出すときに、より多くの場合で利用可能性を確認できるようになりました。

  • ANALYZE統計情報を各列に定義された照合順序を用いて計算するようにしました。 (Tom Lane)

    これまでは全ての統計情報にデータベースのデフォルト照合順序が使われていました。 この修正はデフォルト照合順序でない列に対して、潜在的により良いオプティマイザ動作をもたらします。

  • ctid列の不等比較について選択性の見積りを改善しました。 (Edmund Horner)

  • tid型列の結合の最適化を改善しました。 (Tom Lane)

    この変更は主としてctid列による自己結合の効率性を改善します。

  • いくつかのbtreeの比較演算子とサポート関数のリーク防止指定を修正しました。 (Tom Lane)

    これは、これまでセキュリティバリアや行レベルセキュリティの存在で適用されなかった最適化を可能にします。

E.5.3.1.4. 性能全般
  • サーバが実行時(Just-in-Time, JIT)コンパイルに対応してビルドされている場合、これをデフォルトで有効にしました。 (Andres Freund)

    JIT対応はデフォルトではビルドされず、ビルド設定時に明示的に選択する必要があることに注意してください。

  • キーワードの検索を高速化しました。 (John Naylor, Joerg Sonnenberger, Tom Lane)

  • position()と関連の関数でマルチバイト文字に対して検索性能を改善しました。 (Heikki Linnakangas)

  • TOASTされた値が最小限に展開されるようにしました。 (Paul Ramsey)

    これはTOASTされたフィールドの最初の部分だけ検査する必要のある処理に役立ちます。

  • ALTER TABLE ... SET NOT NULLが不要なテーブル走査を避けることができるようにしました。 (Sergei Kornilov)

    テーブルの列制約がNULLを禁止していると認識できるとき、これにより最適化できます。

  • セッションのタイムゾーンがUTCであるとき、timestamptimestamptzを変更するALTER TABLE ... SET DATA TYPEがテーブル書き換えを回避できるようにしました。 (Noah Misch)

    UTCタイムゾーンではこれらのデータ型はバイナリです。

  • 文字列からint2またはint4整数への変換の速度を改善しました。

  • SERIALIZABLE隔離モードで並列問い合わせを可能にしました。 (Thomas Munro)

    これまではこのモードでは並列動作ができませんでした。

  • ランダムI/Oにpread()pwrite()を使うようにしました。 (Oskari Saarenmaa, Thomas Munro)

    これはI/Oで必要なシステムコールの数を減らします。

  • FreeBSDにおけるprocess title設定の速度を改善しました。 (Thomas Munro)

E.5.3.1.5. モニタリング
  • トランザクションの内、ある割合だけ文をログ出力をできるようにしました。 (Adrien Nayrat)

    パラメータlog_transaction_sample_rateで制御します。

  • CREATE INDEXおよびREINDEX操作の進捗報告を追加しました。 (Álvaro Herrera, Peter Eisentraut)

    進捗はpg_stat_progress_create_indexシステムビューで報告されます。

  • CLUSTERVACUUM FULLの進捗報告を追加しました。 (Tatsuro Yamada)

    進捗はpg_stat_progress_clusterシステムビューで報告されます。

  • pg_checksumsの進捗報告を追加しました。 (Michael Banck, Bernd Helmle)

    これはオプション--progressで有効になります。

  • pg_stat_databaseにチェックサム障害のカウンターを追加しました。 (Magnus Hagander)

  • システムビューpg_stat_databaseにグローバルオブジェクトの追跡を追加しました。 (Julien Rouhaud)

    グローバルオブジェクトはゼロのpg_stat_database.datid値と共に表示されます。

  • アーカイブディレクトリの内容を一覧できるようにしました。 (Christoph Moench-Tegeder)

    その関数はpg_ls_archive_statusdir()です。

  • 一時ディレクトリの内容を一覧できるようにしました。 (Nathan Bossart)

    その関数pg_ls_tmpdir()は、オプションでテーブル空間を指定できます。

  • システムビューpg_stat_sslにクライアント認証の情報を追加しました。 (Peter Eisentraut)

    新たな列はclient_serialissuer_dnです。 明確化のため、列clientdnclient_dnに改名されました。

  • pg_stat_sslで権限のないユーザに対する行の可視性を厳格化しました。 (Peter Eisentraut)

  • サーバ起動時にサーバのバージョン番号を含むログメッセージを出力するようにしました。 (Christoph Berg)

  • 新たな接続がすぐに切断された場合のincomplete startup packetログ出力を防止しました。 (Tom Lane)

    これには、ある種の形態のモニタリングによるログスパムを回避します。

  • log_connectionsログメッセージに、もし設定されているならapplication_nameを含めるようにしました。 (Don Seiler)

  • walreceiverがそのアプリケーション名に、設定されているならクラスタ名を設定するようにしました。 (Peter Eisentraut)

  • pg_stat_replicationに最後に受け取ったスタンバイのメッセージのタイムスタンプを加えました。 (Lim Myungkyu)

  • WALセグメントのfsyncに対する待機イベントを加えました。 (Konstantin Knizhnik)

E.5.3.1.6. 認証
  • GSSAPIの暗号化に対応しました。 (Robbie Harwood, Stephen Frost)

    この機能により、GSSAPI認証を使用するときにTCP/IP接続を暗号化できます。 SSLなどの別の暗号化機能を設定する必要はありません。 本対応では、GSSAPI暗号化を使用する接続かしない接続かを選択するためにpg_hba.confhostgssenchostnogssencのレコードタイプを追加しました。既存のhostsslhostnosslレコードタイプに相当するものです。 また、gssencmode libpqオプションとpg_stat_gssapiシステムビューも加わりました。

  • pg_hba.confclientcertオプションにより、データベースユーザ名がクライアント証明書のコモンネームと一致するか検査できるようにしました。 (Julian Markwort, Marius Timmer)

    新たな検査はclientcert=verify-fullで有効になります。

  • DNS SRVレコードを使ってLDAPサーバの検出をできるようにしました。 (Thomas Munro)

    これによりldapserverを指定する必要がなくなります。 PostgreSQLOpenLDAPと共にコンパイルされている場合のみサポートされます。

E.5.3.1.7. サーバ設定
  • pg_checksumsを使ってクラスタのチェックサムを有効/無効にできるようにしました。 (Michael Banck, Michaël Paquier)

    これらの操作のためにクラスタを停止しなければなりません。

  • autovacuum_vacuum_cost_delayのデフォルト値を2msに減らしました。 (Tom Lane)

    これによりデフォルトで自動VACUUMの処理がより早く進行できます。

  • vacuum_cost_delayで小数点以下を受け入れ、ミリ秒以下の遅延を指定できるようにしました。 (Tom Lane)

  • 時間に基づくサーバパラメータでマイクロ秒 (us)単位を使えるようにしました。 (Tom Lane)

  • 整数サーバパラメータに対して小数点以下の入力を可能にしました。 (Tom Lane)

    例えば、work_memは整数パラメータですがSET work_mem = '30.1GB'が可能になりました。 値は必要とされる単位変換後に整数に丸められます。

  • 浮動小数点のサーバパラメータに単位を定義できるようにしました。 (Tom Lane)

  • WALファイルの再利用を制御するサーバパラメータwal_recyclewal_init_zeroを追加しました。 (Jerry Jelinek)

    ファイル再利用を回避することはZFSのようなコピーオンライトのファイルシステムで有益です。

  • サーバのTCPタイムアウトを制御するサーバパラメータtcp_user_timeoutを追加しました。 (Ryohei Nagaura)

  • SSLプロトコルバージョンの最小と最大を制御できるようにしました。 (Peter Eisentraut)

    このサーバパラメータはssl_min_protocol_versionssl_max_protocol_versionです。

  • サーバで使われているSSLライブラリバージョンを報告するサーバパラメータssl_libraryを追加しました。 (Peter Eisentraut)

  • 使用する共有メモリの方式を制御するサーバパラメータshared_memory_typeを追加しました。 (Andres Freund)

    これにより、望むならSystem V共有メモリを選択できます。

E.5.3.2. ストリーミングレプリケーションとリカバリ

  • いくつかのリカバリパラメータをリロードで変更できるようにしました。

    該当のパラメータはarchive_cleanup_commandpromote_trigger_filerecovery_end_command、および、recovery_min_apply_delayです。

  • ストリーミングレプリケーションのタイムアウト(wal_sender_timeout)を接続毎に設定できるようにしました。 (Takayuki Tsunakawa)

    これまでは、クラスタ全体むけにのみ設定できました。

  • スタンバイをプライマリに昇格させる関数pg_promote()を追加しました。 (Laurenz Albe, Michaël Paquier)

    これまでは、昇格させるにはpg_ctlを使うかトリガファイルを作る必要がありました。

  • レプリケーションスロットをコピーできるようにしました。 (Masahiko Sawada)

    このための関数はpg_copy_physical_replication_slot()pg_copy_logical_replication_slot()です。

  • max_wal_sendersmax_connectionsの一部として数えないようにしました。 (Alexander Kukushkin)

  • recovery_target_timelineに対する明示的なcurrent値を追加しました。 (Peter Eisentraut)

  • 二相トランザクションの状態ファイルが壊れている場合に、リカバリが失敗するようにしました。 (Michaël Paquier)

    これまでは、警告がログ出力されつつリカバリは継続されて、トランザクション損失のおそれがありました。

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

  • 書き込みをロック締め出ししないインデックス再構築を可能にするREINDEXCONCURRENTLYオプションを追加しました。 (Michaël Paquier, Andreas Karlsson, Peter Eisentraut)

    これはreindexdbアプリケーションの--concurrentlyオプションでも制御できます。

  • 生成列をサポートしました。 (Peter Eisentraut)

    生成列の内容は、INSERTUPDATEコマンドで指定されるのではなく、(同テーブルの他の列の参照を含む)式から計算されます。

  • COPY FROMに、どの行を受け入れるかを制御するWHERE句を追加しました。 (Surafel Temesgen)

    これは入力データをフィルタする簡単な手段を提供します。

  • 列挙値をより柔軟に追加できるようにしました。 (Andrew Dunstan, Tom Lane, Thomas Munro)

    これまでは、ALTER TYPE ... ADD VALUEを、それが列挙型を作ったトランザクションの一部でない限り、トランザクションブロック内で呼び出せませんでした。 これからは、コミットされる前に新たな列挙値が使われていない限り、後に続くトランザクションの中でも呼び出しできます。

  • トランザクションを終了して新たに開始するコマンドを追加しました。 (Peter Eisentraut)

    コマンドはCOMMIT AND CHAINROLLBACK AND CHAINです。

  • VACUUMで末尾の空ページの切り詰めを防止する、VACUUMCREATE TABLEのオプションを追加しました。 (Takayuki Tsunakawa)

    オプションはvacuum_truncatetoast.vacuum_truncateです。 これらオプションはVACUUMのロックの必要性を減らしますが、OSへのディスクスペースの返却を妨げます。

  • VACUUMがインデックスのクリーンアップを省略できるようにしました。 (Masahiko Sawada)

    この変更はVACUUMコマンドにオプションINDEX_CLEANUPを、また同様に、テーブルの格納オプションvacuum_index_cleanupを加えます。 このオプションを使うとスペースを回収する能力が減ってインデックス膨張をもたらす可能性がありますが、主たる目的が古いタプルの凍結であるときには有用です。

  • ロックをすぐに取得できないテーブルについてVACUUMおよびANALYZE操作を省略できるようにしました。 (Nathan Bossart)

    このオプションはSKIP_LOCKEDです。

  • VACUUMANALYZEが随意のBoolean引数の指定を受け付けできるようにしました。 (Masahiko Sawada)

  • TRUNCATEVACUUM、および、ANALYZEでユーザが権限を持たないテーブルに対するロック要求を防止しました。 (Michaël Paquier)

    これは、ユーザ問い合わせを妨げるおそれのある、権限のないロック取得を防止します。

  • デフォルトでないオプティマイザ設定を出力する、EXPLAINのオプションSETTINGSを追加しました。 (Tomas Vondra)

    この出力は、auto_explainを使っているとき、auto_explain.log_settingsを設定することでも得ることができます。

  • CREATE AGGREGATEOR REPLACEオプションを追加しました。 (Andrew Gierth)

  • ALTER TABLEでシステムカタログのオプションを変更可能にしました。 (Peter Eisentraut)

    今のところカタログのreloptionsとautovacuum設定の変更に対応しています。 (依然としてallow_system_table_modsを設定することが必要です。)

  • 外部キーに対してデフォルトの制約名を選択するときに全てのキー列名を使うようにしました。 (Peter Eisentraut)

    これまでは、制約名に最初の列名だけが含まれ、複数列の外部キーに対して結果として曖昧になりました。

E.5.3.4. データ型

  • Unicode 12.1.0 に適合させるようにユニコードに関する各種の認識を更新しました。 (Peter Eisentraut)

    これは、例えばpsqlが結合文字に関して誤った出力をするのを修正します。

  • スノーボール語幹辞書を更新しました。新たな言語の対応が含まれます。 (Arthur Zakirov)

    これにより、全文検索でアラビア語、インドネシア語、アイルランド語、リトアニア語、ネパール語、タミル語の語幹処理に対応します。

  • ビットとしては等しくない文字列に対して等価を報告する照合順序の作成を可能にしました。 (Peter Eisentraut)

    この機能は、大文字小文字やアクセントを無視する等価比較が可能なnondeterministic(非決定的)な照合順序をサポートします。 したがって、例えば、テキスト列に大文字小文字を同一視する一意性制約を従来よりも簡単に作ることができます。 これはICU照合順序でのみサポートされます。

  • 古いICUバージョンでのICU照合順序の属性に対応しました。 (Peter Eisentraut)

    これは全てのICUバージョンにわたって一貫した方法での照合規則のカスタマイズを可能にします。

  • nameデータ型がより透過的に他のテキスト型と比較できるようにしました。 (Tom Lane)

    name型は、デフォルト照合順序がCであるtextのドメインと良く似た振舞いをするようになりました。 これにより型をまたがる比較がより効率的に処理できるようになります。

E.5.3.5. 関数

  • SQL/JSON path言語に対応しました。 (Nikita Glukhov, Teodor Sigaev, Alexander Korotkov, Oleg Bartunov, Liudmila Mantrova)

    これによりJSON値に対してSQL標準の言語を使って複雑な問い合わせの実行が可能になります。

  • 双曲線関数をサポートしました。 (Lætitia Avrot)

    また、標準準拠のためlog()の別名としてlog10()を追加しました。

  • より精密なアルゴリズムを使うことでvariance()のような統計集約の正確さを改善しました。 (Dean Rasheed)

  • date_trunc()がタイムゾーンを制御する追加引数を持てるようにしました。 (Vik Fearing, Tom Lane)

    これはAT TIME ZONE句を使うよりも高速で簡易です。

  • to_timestamp()/to_date()関数をテンプレート不一致に対してより寛容になるように調整しました。 (Artur Zakirov, Alexander Korotkov, Liudmila Mantrova)

    新たな振る舞いは同名のOracleの関数とより似通ったものになります。

  • XML関数の様々なバグを修正しました。 (Pavel Stehule, Markus Winand, Chapman Flack)

    具体的には、XMLTABLExpath()、および、xmlexists()で、あるノードについて何も出力されない、予期せぬエラーが生じる、あるいは、必要なXML特別文字のエスケープが行われない、という場合について修正しました。

  • XMLEXISTSおよびXMLTABLEBY VALUE句が使えるようにしました。 (Chapman Flack)

    このSQL標準の句はPostgreSQLの実装では効果を持ちませんが、不必要に拒絶されていました。

  • current_schema()current_schemas()はパラレル安全ではないので、これらがパラレルワーカーから実行されるのを防止しました。 (Michaël Paquier)

  • RECORDRECORD[]が、RECORDを返すと宣言されているテーブル関数に対する問い合わせの列定義リストで列型として使えるようにしました。 (Elvis Pranskevichus)

E.5.3.6. PL/pgSQL

  • SQLコマンドとコマンドと同名の変数を同じPL/pgSQL関数内で使えるようにしました。 (Tom Lane)

    例えば、commentと言う変数をSQLコマンドのCOMMENTを呼び出す関数の中で使えます。 これまでは、この組み合わせはパースエラーをひき起こしました。

  • PL/pgSQLに随意の新たな警告とエラーの検査を追加しました。 (Pavel Stehule)

    新たな検査は、INTOの列の数と単一行の結果の実行時検査を可能にします。

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

  • libpqTCPタイムアウトを制御する接続パラメータtcp_user_timeoutを追加しました。 (Ryohei Nagaura)

  • libpqが(それによりpsqlも)エラーメッセージにSQLSTATE値だけを報告できるようにしました。 (Didier Gautheron)

  • 問い合わせ結果によるメモリ使用を報告するlibpqの関数PQresultMemorySize()を追加しました。 (Lars Kanis, Tom Lane)

  • libpqoptions接続パラメータからno-display/debugフラグを廃止しました。 (Peter Eisentraut)

    これにより、本パラメータをpostgres_fdwから設定できるようになります。

  • ecpgbyteaデータ型の変数を作成できるようにしました。 (Ryo Matsumura)

    これによりECPGクライアントがbyteaデータをエンコードされた形式を使うことなく直接触れます。

  • ECPGPREPARE ASをサポートしました。 (Ryo Matsumura)

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

  • vacuumdbが周回限界に基づいてバキュームするテーブルを選択できるようにしました。 (Nathan Bossart)

    そのオプションは--min-xid-age--min-mxid-ageです。

  • vacuumdbがロック待機を無効に、あるいは、全て可視のページを省略できるようにしました。 (Nathan Bossart)

    そのオプションは--skip-locked--disable-page-skippingです。

  • コマンドラインユーティリティの出力に色付きを加えました。 (Peter Eisentraut)

    これは環境変数PG_COLORalwaysまたはautoを設定することで有効になります。 使われる色の詳細は、色のANSIエスケープコードを用いて環境変数PG_COLORSを設定することで調整できます。 例えば、デフォルト動作はPG_COLORS="error=01;31:warning=01;35:locus=01"と同等です。

E.5.3.8.1. psql
  • psqlCSVテーブル出力モードを追加しました。

    これは\pset format csvまたはコマンドラインの--csvオプションで制御されます。

  • SQLコマンドに対するpsql\helpの出力でマニュアルページのURLを表示するようにしました。 (Peter Eisentraut)

  • psql\conninfoIPアドレスを表示するようにしました。 (Fabien Coelho)

  • CREATE TABLECREATE TRIGGERCREATE EVENT TRIGGERANALYZEEXPLAINVACUUMALTER TABLEALTER INDEXALTER DATABASE、およびALTER INDEX ALTER COLUMNのタブ補完を改善しました。 (Dagfinn Ilmari Mannsåker, Tatsuro Yamada, Michaël Paquier, Tom Lane, Justin Pryzby)

E.5.3.8.2. pgbench
  • 問い合わせで生成した値をpgbenchの変数に割り当てできるようにしました。 (Fabien Coelho, Álvaro Herrera)

    これを行うコマンドは\gsetです。

  • pgbench--rateオプションの精度を改善しました。 (Tom Lane)

  • メッセージと戻り値の明確化でpgbenchのエラー報告を改善しました。 (Peter Eisentraut)

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

  • pg_ctlを通してログファイルのローテーションを制御できるようにしました。 (Kyotaro Horiguchi, Alexander Kuzmenkov, Alexander Korotkov)

    これまでは、SQL関数かプロセスシグナルを通してのみ可能でした。

  • pg_ctl startの際に、新たなサーバプロセスを適切にデタッチするようにしました。 (Paul Guo)

    これは、pg_ctlを起動するシェルスクリプトが後に割り込まれた場合にサーバがシャットダウンされるのを防止します。

  • pg_upgradeが、もし在るなら、ファイルシステムのクローン機能を使えるようにしました。 (Peter Eisentraut)

    --cloneオプションは、古いクラスタが新しいクラスタが起動した後に変更されるのを防ぎ、--linkに対して優位性を持ちます。

  • pg_upgradeで使うソケットでレクトリの指定ができるようにしました。 (Daniel Gustafsson)

    これは--socketdirで制御され、デフォルトはカレントディレクトリです。

  • pg_checksumsがfsync操作を無効にできるようにしました。 (Michaël Paquier)

    これは--no-syncオプションで制御されます。

  • pg_rewindでfsync操作を無効にできるようにしました。 (Michaël Paquier)

  • pg_test_fsyncWindowsで正確なopen_datasyncの時間を報告するように修正しました。 (Laurenz Albe)

  • pg_dumpCOPYではなくINSERTコマンドでデータを出力するとき、 各INSERTに複数データ行を含めることができるようにしました。 (Surafel Temesgen, David Rowley)

    これを制御するオプションは--rows-per-insertです。

  • pg_dumpINSERT ... ON CONFLICT DO NOTHINGを出力できるようにしました。 (Surafel Temesgen)

    これはリストア時の衝突によるエラーを回避します。 このオプションは--on-conflict-do-nothingです。

  • 並列pg_dumpでの実行の順序を、続く並列pg_restoreで使われる順序と切り離しました。 (Tom Lane)

    これにより、特に元のダンプが並列で行われなかった場合に、pg_restoreがより完全に並列化された並列リストアを行えるようになります。 並列pg_dumpのスケジューリングもいくらか改善されました。

  • extra_float_digits設定がpg_dumppg_dumpallむけに指定できるようにしました。

    これは主として、異なるソースサーババージョンとの間で正確に比較可能なダンプを作るときに有用です。 ダンプをリストアするときに精度の損失が生じるかもしれないため、通常時の使用は推奨されません。

  • pg_dumpall--exclude-databaseオプションを追加しました。 (Andrew Dunstan)

E.5.3.10. ソースコード

  • 新たなテーブルタイプを作るCREATE ACCESS METHODコマンドを追加しました。 (Andres Freund, Haribabu Kommi, Álvaro Herrera, Alexander Korotkov, Dmitry Dolgov)

    これは、ストレージを異なるユースケースに最適化できる、新たなテーブルアクセスメソッドの開発を可能にします。 既存のheapアクセスメソッドが引き続きデフォルトです。

  • 関数に対するオプティマイザの推計やインライン化、インデックス使用を改善する、プランナサポート関数インタフェースを追加しました。 (Tom Lane)

    これは、関数引数に依存した関数特有の選択性やコスト、行数推計を提供できる、プランナサポート関数を作る拡張を可能にします。 サポート関数は単純化された表現とインデックス条件も提供できて、最適化の可能性を大きく広げます。

  • 手動割り当てしたOIDの再付番を単純化して、このようなOIDの管理についての新たなプロジェクト方針を確立しました。 (John Naylor, Tom Lane)

    (新たな関数など)新たなビルトインオブジェクトに対するOIDを手動割り当てするパッチは、8000—9999の範囲でランダムにOIDを選ぶようになります。 開発サイクルの終わりに、コミットされたパッチで使用されるOIDはrenumber_oids.plスクリプトを使って、より少ない数値、今のところ4xxxの範囲のどこか、に番号が付け直されてます。 この方法は、進行中の別パッチ間のOID衝突の可能性を大幅に減らすはずです。

    外部使用に対しては、いかなるOIDにも予約の方針が特段無いため、プライベートな手動割り当てされたOIDを必要とするフォークや他プロジェクトでは、高位の7xxx範囲の番号を使用することが推奨されます。 これにより、コアプロジェクトがその範囲に達するまで長い間、最近にマージされたパッチとの衝突を回避できるでしょう。

  • 静的ライブラリに替えて、動的ライブラリを用いてCygwinバイナリをビルドするようにしました。 (Marco Atzeri)

  • configureスイッチの--disable-strong-randomを廃止しました。 (Michaël Paquier)

    これからは強い乱数ソースが必要です。

  • printfファミリーの関数群およびstrerrorstrerror_rが、PosrtgreSQLコード内においてプラットフォーム間で同じ振る舞いをするようになります。 (Tom Lane)

    とりわけ、printfがどこでも%mを理解します。Windowsで、strerrorがWinsockのエラーコードに対応します(バックエンドではそのように動作してきましたがフロントエンドではそうなっていませんでした)。また、strerror_rがGNUの戻り値の慣例に従います。

  • C99準拠のコンパイラ、および、WindowsではMSVC 2013以降が必要となります。 (Andres Freund)

  • プレーンテキスト文書の出力ファイルを生成するのに、lynxではなくpandocを使うようにしました。 (Peter Eisentraut)

    これは、make distで生成されたINSTALLファイルとほとんど使用されないプレーンテキストのpostgres.txt出力ファイルにのみ影響があります。 Pandocはlynxより良い出力を生成し、一部のロケール/エンコーディングの問題を回避します。 Pandocバージョン1.13以降が必要です。

  • PostgreSQL文書での画像の使用に対応しました。 (Jürgen Purtz)

E.5.3.11. 追加モジュール

  • postgres_fdw外部サーバにORDER BYのソートとLIMIT句がより多くの場合にプッシュされるようになりました。 (Etsuro Fujita)

  • postgres_fdwの問い合わせに対してオプティマイザのコスト計算を改善しました。 (Etsuro Fujita)

  • postgres_fdwテーブルを参照するビューのWITH CHECK OPTIONを適切に尊重するようにしました。 (Etsuro Fujita)

    postgres_fdwテーブルのCHECK OPTIONが(参照先が外部であるために)無視される一方で、このようなテーブルのビューはローカルと認識されていました。そこで本変更は、これらのCHECK OPTIONを強制します。 これまでは、CHECK OPTIONの値を返すRETURNING句を伴うINSERTUPDATEだけが、検査されていました。

  • pg_stat_statements_reset()をより細かく実行できるようにしました。 (Haribabu Kommi, Amit Kapila)

    本関数は指定したデータベース、ユーザ、問い合わせに対して統計情報をリセットできるようになります。

  • auto_explainのログレベルを制御できるようにしました。 (Tom Dunstan, Andrew Dunstan)

    デフォルトはLOGです。

  • unaccentのルールを改定しました。新たな区切り文字とシンボルを伴います。 (Hugh Ranalli, Michaël Paquier)

  • unaccentが結合文字でエンコードされた、いくつかのアクセントを扱えるようにしました。 (Hugh Ranalli)

  • unaccentがギリシャ文字からアクセントを削除できるようにしました。 (Tasos Maschalidis)

  • amcheckbt_index_parent_check()関数に、各インデックスタプルをツリーのルートから検査するパラメータを追加しました。 (Peter Geoghegan)

  • oid2namevacuumloのオプション処理を他のコマンドと一致するように改善しました。 (Tatsuro Yamada)

E.5.4. 謝辞

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

Abhijit Menon-Sen
Achilleas Mantzios
Adam Berlin
Adam Bielanski
Aditya Toshniwal
Adrien Nayrat
Alan Jackson
Albert Schabhuetl
Aleksander Alekseev
Alex Aktsipetrov
Alex Kliukin
Alex Macy
Alexander Korotkov
Alexander Kukushkin
Alexander Kuzmenkov
Alexander Lakhin
Alexandra Ryzhevich
Alexey Bashtanov
Alexey Ermakov
Alexey Kondratov
Alexey Kryuchkov
Alexey Stepanov
Allison Kaptur
Álvaro Herrera
Alyssa Ross
Amit Kapila
Amit Khandekar
Amit Langote
Amul Sul
Anastasia Lubennikova
André Hänsel
Andrea Gelmini
Andreas Joseph Krogh
Andreas Karlsson
Andreas Kunert
Andreas Scherbaum
Andreas Seltenreich
Andrei Yahorau
Andres Freund
Andrew Dunstan
Andrew Fletcher
Andrew Gierth
Andrew Krasichkov
Andrey Borodin
Andrey Klychkov
Andrey Lepikhov
Andy Abelisto
Anthony Greene
Anthony Skorski
Antonin Houska
Arne Roland
Arseny Sher
Arthur Zakirov
Ash Marath
Ashutosh Bapat
Ashutosh Sharma
Ashwin Agrawal
Aya Iwata
Bartosz Polnik
Basil Bourque
Bernd Helmle
Brad DeJong
Brigitte Blanc-Lafay
Bruce Klein
Bruce Momjian
Bruno Wolff
Chapman Flack
Chen Huajun
Chris Travers
Chris Wilson
Christian Hofstaedtler
Christoph Berg
Christoph Moench-Tegeder
Clemens Ladisch
Colm McHugh
Corey Huinker
Craig Ringer
Dagfinn Ilmari Mannsåker
Daisuke Higuchi
Daniel Fiori
Daniel Gustafsson
Daniel Vérité
Daniel Westermann
Daniel Wilches
Darafei Praliaskouski
Daryl Waycott
Dave Cramer
David Binderman
David Fetter
David G. Johnston
David Rowley
David Steele
Davy Machado
Dean Rasheed
Derek Hans
Derek Nelson
Devrim Gündüz
Dian Fay
Didier Gautheron
Dilip Kumar
Dmitry Dolgov
Dmitry Marakasov
Dmitry Molotkov
Dmitry Shalashov
Don Seiler
Donald Dong
Doug Rady
Edmund Horner
Eduards Bezverhijs
Elvis Pranskevichus
Emanuel Araújo
Emre Hasegeli
Eric Cyr
Erik Rijkers
Ertugrul Kahveci
Etsuro Fujita
Eugen Konkov
Euler Taveira
Fabien Coelho
Fabrízio de Royes Mello
Feike Steenbergen
Filip Rembialkowski
Gaby Schilders
Geert Lobbestael
George Tarasov
Georgios Kokolatos
Gianni Ciolli
Gilles Darold
Greg Stark
Grigory Smolkin
Guillaume Lelarge
Gunnlaugur Thor Briem
Gurjeet Singh
Hadi Moshayedi
Hailong Li
Hans Buschmann
Haribabu Kommi
Haruka Takatsuka
Hayato Kuroda
Heikki Linnakangas
Hironobu Suzuki
Hubert Lubaczewski
Hugh Ranalli
Ian Barwick
Ibrar Ahmed
Ildar Musin
Insung Moon
Ioseph Kim
Isaac Morland
Ivan Panchenko
Jack Kelly
Jacob Champion
Jaime Casanova
Jakob Egger
Jakub Glapa
Jakub Janecek
James Coleman
James Inform
James Robinson
James Sewell
James Tomson
Jan Chochol
Jaroslav Sivy
Jean-Christophe Arnu
Jean-Marc Voillequin
Jean-Pierre Pelletier
Jeevan Chalke
Jeevan Ladhe
Jeff Davis
Jeff Janes
Jeremy Evans
Jeremy Schneider
Jeremy Smith
Jerry Jelinek
Jesper Pedersen
Jianing Yang
Jie Zhang
Jim Nasby
Jimmy Yih
Joe Conway
Joe Wildish
Joerg Sonnenberger
John Klann
John Naylor
Jonah Harris
Jonathan S. Katz
Jorge Gustavo Rocha
José Arthur Benetasso Villanova
Joshua D. Drake
Juan José Santamaría Flecha
Julian Hsiao
Julian Markwort
Julian Schauder
Julien Rouhaud
Jürgen Purtz
Jürgen Strobel
Justin Pryzby
Kaiting Chen
Karen Huddleston
Karl Czajkowski
Karl O. Pinc
Keiichi Hirobe
Keith Fiske
Ken Tanzer
Kenji Uno
Kevin Grittner
Kevin Hale Boyes
Kieran McCusker
Kirk Jamison
Kohei KaiGai
Konstantin Knizhnik
Konstantin Kuznetsov
Kristjan Tammekivi
Kuntal Ghosh
Kyle Samson
Kyotaro Horiguchi
Lætitia Avrot
Lars Kanis
Laurenz Albe
Lim Myungkyu
Liu Huailing
Liudmila Mantrova
Lloyd Albin
Luca Ferrari
Luis M. Carril
Lukas Eder
Lukas Fittl
Madelaine Thibaut
Madeleine Thompson
Magnus Hagander
Mahendra Singh
Mai Peng
Maksim Milyutin
Maksym Boguk
Malthe Borch
Manuel Rigger
Marco Atzeri
Marco Slot
Marina Polyakova
Mario De Frutos Dieguez
Marius Timmer
Mark Chambers
Mark Dilger
Marko Tiikkaja
Markus Winand
Martín Marqués
Masahiko Sawada
Masao Fujii
Mateusz Guzik
Mathias Brossard
Matt Williams
Matthias Otterbach
Matvey Arye
Melanie Plageman
Mi Tar
Michael Banck
Michael Davidson
Michael Meskes
Michael Paquier
Michael Vitale
Michel Pelletier
Mikalai Keida
Mike Palmiotto
Mithun Cy
Morgan Owens
Murat Kabilov
Nathan Bossart
Nawaz Ahmed
Neeraj Kumar
Nick Barnes
Nico Williams
Nikita Glukhov
Nikolay Shaplov
Ning Yu
Nishant Fnu
Noah Misch
Norbert Benkocs
Noriyoshi Shinoda
Oleg Bartunov
Oleg Samoilov
Oleksii Kliukin
Ondrej Bouda
Oskari Saarenmaa
Pan Bian
Patrick Francelle
Patrick McHardy
Paul A. Jungwirth
Paul Bonaud
Paul Guo
Paul Martinez
Paul Ramsey
Paul Schaap
Paul van der Linden
Pavan Deolasee
Pavel Oskin
Pavel Raiskup
Pavel Stehule
Peifeng Qiu
Peter Billen
Peter Eisentraut
Peter Geoghegan
Peter Neave
Petr Fedorov
Petr Jelínek
Petr Slavov
Petru-Florin Mihancea
Phil Bayer
Phil Florent
Philip Dubé
Pierre Ducroquet
Piotr Gabriel Kosinski
Piotr Stefaniak
Piotr Wlodarczyk
Prabhat Sahu
Quentin Rameau
Rafael Castro
Rafia Sabih
Rahila Syed
Rajkumar Raghuwanshi
Rares Salcudean
Raúl Marín Rodríguez
Regina Obe
Renaud Navarro
Richard Guo
Rick Otten
Rikard Falkeborn
RK Korlapati
Robbie Harwood
Robert Haas
Robert Treat
Robert Vollmert
Roger Curley
Roman Zharkov
Ronan Dunklau
Rui Hai Jiang
Rushabh Lathia
Ryan Lambert
Ryo Matsumura
Ryohei Nagaura
Ryohei Takahashi
Samuel Williams
Sand Stone
Sanyo Capobiango
Satoru Koizumi
Sean Johnston
Serge Latyntsev
Sergei Kornilov
Sergey Pashkov
Sergio Conde Gómez
Shawn Debnath
Shay Rojansky
Sho Kato
Shohei Mochizuki
Shouyu Luo
Simon Riggs
Sivasubramanian Ramasubramanian
Slawomir Chodnicki
Stas Kelvish
Stefan Kadow
Stepan Yankevych
Stephen Amell
Stephen Frost
Steve Rogerson
Steve Singer
Steven Winfield
Surafel Temesgen
Suraj Kharage
Suresh Kumar R
Takayuki Tsunakawa
Takeshi Ideriha
Takuma Hoshiai
Tasos Maschalidis
Tatsuo Ishii
Tatsuro Yamada
Teodor Sigaev
Thom Brown
Thomas Munro
Thomas Poty
Tillmann Schulz
Tim Möhlmann
Timur Birsh
Tobias Bussmann
Tom Cassidy
Tom Dunstan
Tom Gottfried
Tom Lane
Tomas Vondra
Tushar Ahuja
Ulf Adams
Vaishnavi Prabakaran
Victor Petrovykh
Victor Wagner
Victor Yegorov
Vijaykumar Jain
Vik Fearing
Vlad Sterzhanov
Vladimir Baranoff
Vladimir Kriukov
Wu Fei
Yaroslav Schekin
Yi Huang
Yoshikazu Imai
Yugo Nagata
Yulian Khodorkovskiy
Yuming Wang
YunQiang Su
Yuri Kurenkov
Yusuke Egashira
Yuzuko Hosoya
Zhou Digoal