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

リリース日: 2021-09-30

E.6.1. 概要

PostgreSQL 14には以下をはじめとする多数の新機能と拡張が含まれます。

  • ストアドプロシージャがOUTパラメータを通してデータを返せるようになりました。

  • SQL標準の共通テーブル式のSEARCHCYCLEオプションが実装されました。

  • 配列のみならず、これが有益な表記法となる任意のデータ型に添え字を適用できるようになりました。 本リリースでは、jsonbおよびhstore型で添え字の演算子が使えるようになりました。

  • 多重範囲型が加わって範囲型が拡張され、非連続なデータ範囲の表現が可能になりました。

  • パラレルクエリ、同時実行数の多いワークロード、パーティションテーブル、論理レプリケーション、および、バキューム処理に対して、多数の性能改善が行われました。

  • Bツリーインデックスの更新がより効率的に処理されるようになり、インデックスの膨張が減少しました。

  • データベースがトランザクションIDの周回状態に近づき始めた場合、VACUUMが自動的により積極的になり、また、不必要なクリーンアップを省略するようになりました。

  • 式について拡張統計を収集できるようになり、複雑な問い合わせに対してより良いプラン作成が可能になりました。

  • libpqで複数の問い合わせのパイプライン処理ができるようになりました。これにより遅延の大きい接続上でスループットを向上させることができます。

PostgreSQL 14の上記の項目とその他の新機能は次節でより詳しく説明されます。

E.6.2. バージョン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モジュールのcubehstoreintarraysegに対する、非推奨の包含演算子@および~を廃止しました。 (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_dumppg_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-caverify-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)

  • ecpgSQLコマンド文字列でのダブルクォート記号を正しく処理するようにしました。 (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)

    負の値は望ましくない結果を生成していました。

E.6.3. 変更点

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

E.6.3.1. サーバ

  • 定義済ロール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 CONCURRENTLYREINDEX 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_agevacuum_multixact_failsafe_ageで制御されます。

  • トランザクションIDとマルチトランザクションの周回の前に警告を出す時点とハードリミットを増やしました。 (Noah Misch)

    これにより周回の警告を受け取らずに障害が発生する可能性を減らせると考えられます。

  • 自動バキュームのログ出力にインデックス毎の情報を追加しました。 (Masahiko Sawada)

  • 多数のパーティションを持ったパーティションテーブルの更新と削除の性能を改善しました。 (Amit Langote, Tom Lane)

    この変更は、このような場合のプランナのオーバーヘッドを大幅に減少させるともに、パーティションテーブルでの更新/削除が実行時にパーティション除去を使用できるようにします。

  • ブロックしない方法でパーティションを切り離しできるようにしました。 (Álvaro Herrera)

    その構文は、ALTER TABLE ... DETACH PARTITION ... CONCURRENTLYFINALIZEです。

  • パーティション境界値ではCOLLATE句を無視するようにしました。 (Tom Lane)

    これまで、このような句はパーティションキーの照合順序と一致しなければなりませんでした。しかし、自動的にパーティションキーの照合順序を強制されていると考える方が一貫性があります。

E.6.3.1.3. インデックス
  • Bツリーインデックスの追加の際に、ページ分割を防ぐように無効になったインデックスエントリの除去を行えるようにしました。 (Peter Geoghegan)

    これは特に、インデックス列が頻繁に更新されるテーブルにおけるインデックス肥大化を減らすのに役立ちます。

  • BRINインデックスが範囲ごとに複数の最小値と最大値を記録できるようにしました。 (Tomas Vondra)

    各ページ範囲にいくつかの値のグループがある場合に役立ちます。

  • BRINインデックスがブルームフィルタ使えるようにしました。 (Tomas Vondra)

    これは、ヒープ内で十分に局所化されていないデータでBRINインデックスを効果的に使えるようにします。

  • 一部のGiSTインデックスをデータの事前ソートにより構築できるようにしました。 (Andrey Borodin)

    事前ソートは自動的に行われ、インデックス作成を高速にして、インデックスを小さくする効果があります。

  • SP-GiSTインデックスがINCLUDE指定された列を含められるようにしました。 (Pavel Borisov)

E.6.3.1.4. オプティマイザ
  • 多数の定数を含む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 ASEXPLAIN CREATE MATERIALIZED VIEWを修正しました。 (Bharath Rupireddy)

    これまで、そのオブジェクトが既に存在していた場合、EXPLAINは失敗していました。

E.6.3.1.5. 性能全般
  • 多数の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_fdwasync_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でコンパイルされている必要があります。

E.6.3.1.6. モニタリング
  • サーバパラメータcompute_query_idが有効の場合、pg_stat_activityEXPLAIN VERBOSEcsvlog、および、指定に応じてlog_line_prefixで、クエリIDを出力するようにしました。 (Julien Rouhaud)

    拡張で計算されたクエリIDも出力されます。

  • 自動バキュームと自動アナライズのログ出力を改善しました。 (Stephen Frost, Jakub Wartak)

    これは、track_io_timingが有効の場合に自動バキュームと自動アナライズについてI/O時間を報告します。 また、自動アナライズについてバッファ読み込みとダーティ比率も報告します。

  • log_connectionsの出力にクライアントから供給された元のユーザ名に関する情報を追加しました。 (Jacob Champion)

E.6.3.1.7. システムビュー
  • 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)

E.6.3.1.8. 認証
  • SSL証明書の識別名(DN)をクライアント証明書による認証で照合できるようにしました。 (Andrew Dunstan)

    新たなpg_hba.confのオプションclientname=DNにより、CNだけでない証明書属性で比較して、identマップと結びつけることができます。

  • pg_hba.confpg_ident.confを複数行にわたって書けるようにしました。 (Fabien Coelho)

    行末のバックスラッシュでレコード内容を次の行に続けることができます。

  • 証明書失効リスト(CRL)ディレクトリを指定できるようにしました。 (Kyotaro Horiguchi)

    これはサーバパラメータssl_crl_dirとlibpqの接続オプションsslcrldirで制御されます。 これまでは単一のCRLファイルのみ指定可能でした。

  • 任意の長さのパスワードが使用可能になりました。 (Tom Lane, Nathan Bossart)

E.6.3.1.9. サーバ設定
  • 待機セッションを閉じるサーバパラメータ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)

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

  • 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)

E.6.3.3. SELECT, INSERT

  • AS無しに列ラベルとして使用できないキーワードの数を減らしました。 (Mark Dilger)

    制限されたキーワードは90%少なくなりました。

  • JOINUSING句に別名を指定できるようにしました。 (Peter Eisentraut)

    別名はUSINGの後にASを書くことで作られます。 これは併合されたUSINGの列に対するテーブル修飾として使うことができます。

  • GROUPING SETの組み合わせの重複を除くためにGROUP BYDISTINCTを追加できるようにしました。 (Vik Fearing)

    例えば、GROUP BY CUBE (a,b), CUBE (b,c)DISTINCTが無いと重複したグルーピングの組み合わせを生成します。

  • INSERTにおける複数列のVALUESリストでDEFAULTのエントリを適切に処理するようにしました。 (Dean Rasheed)

    このような場合にエラーが出ていました。

  • 共通テーブル式のためのSQL標準のSEARCHおよびCYCLE句を追加しました。 (Peter Eisentraut)

    同等の結果は既存の構文を用いても実現可能ですが、利便性で大きく劣ります。

  • ON CONFLICTWHERE句の列名をテーブル修飾できるようにしました。 (Tom Lane)

    しかしながら、参照できるのは対象テーブルのみです。

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

  • 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標準の関数の呼び出しは、通常の関数呼び出し構文で表示されました。 これからはビューやルールを表示するときに元の構文が維持されます。

  • GRANTREVOKESQL標準のGRANTED BY句を追加しました。 (Peter Eisentraut)

  • CREATE TRIGGEROR 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)

E.6.3.5. データ型

  • 拡張と組み込みデータ型が添字を実装できるようにしました。 (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)

    これまでユーザ定義のリレーションには、それに関連付けられた複合型があり、また、その複合型の配列もありました。 これからはシステムカタログも同様になります。 この変更は、シングルユーザモードでユーザ定義テーブルを作ると複合配列型の作成に失敗するという不整合も修正します。

E.6.3.6. 関数

  • 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)

E.6.3.7. PL/pgSQL

  • PL/pgSQLの代入の解析を改善しました。 (Tom Lane)

    この変更により、配列スライスと入れ子になったレコードフィールドへの代入が可能になります。

  • plpgsqlのRETURN QUERYが問い合わせを並列処理で実行できるようにしました。 (Tom Lane)

  • plpgsqlプロシージャ内で繰り返されるCALLの性能を改善しました。 (Pavel Stehule, Tom Lane)

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

  • libpqにパイプラインモードを追加しました。 (Craig Ringer, Matthieu Garrigues, Álvaro Herrera)

    これにより複数の問い合わせを送出することができて、特定の同期メッセージを送ったときだけ完了を待ちます。

  • libpqのtarget_session_attrsパラメータのオプションを拡張しました。 (Haribabu Kommi, Greg Nancarrow, Vignesh C, Tom Lane)

    新たなオプションはread-onlyprimarystandby、および、prefer-standbyです。

  • libpqのPQtrace()の出力書式を改善しました。 (Aya Iwata, Álvaro Herrera)

  • ECPGのSQL識別子を特定の接続に結びつけられるようにしました。 (Hayato Kuroda)

    これはDECLARE ... STATEMENTによって行われます。

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

  • vacuumdbがインデックスのクリーンアップと切り詰めを省略できるようになりました。 (Nathan Bossart)

    オプションは--no-index-cleanup--no-truncateです。

  • pg_dumpが特定の拡張のみをダンプできるようにしました。 (Guillaume Lelarge)

    オプション--extensionで制御されます。

  • 値をランダムに並び替えするpgbenchpermute()関数を追加しました。 (Fabien Coelho, Hironobu Suzuki, Dean Rasheed)

  • -Cを指定したpgbenchで計測される再接続のオーバーヘッドに切断時間を含めました。 (Yugo Nagata)

  • ログ出力の冗長度を増す冗長オプション(-v)の複数指定を可能にしました。 (Tom Lane)

    この動作はpg_dumppg_dumpallpg_restoreでサポートされます。

E.6.3.9.1. psql
  • psql\dfおよび\doコマンドが関数と演算子の引数型を指定できるようにしました。 (Greg Sabino Mullane, Tom Lane)

    オーバーロードされた名前に対して表示される該当件数を減らすのに役立ちます。

  • psql\d[i|m|t]+の出力にアクセスメソッド列を追加しました。 (Georgios Kokolatos)

  • psql\dt\diTOASTテーブルとそのインデックスを表示できるようにしました。 (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)

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

  • 簡単に多数のリレーションにcontrib/amcheckのテストを実行できる、コマンドラインユーティリティpg_amcheckを追加しました。 (Mark Dilger)

  • initdb--no-instructionsオプションを追加しました。 (Magnus Hagander)

    これは通常表示されるサーバ開始の手順説明を抑制します。

  • pg_upgradeanalyze_new_clusterスクリプトを生成するのを止めました。 (Magnus Hagander)

    代わりに同等のvacuumdbの説明を出力するようにしました。

  • postmaster-oオプションのサポートを廃止しました。 (Magnus Hagander)

    既に渡されたオプションは全て直接指定できるため、このオプションは不要でした。

E.6.3.11. 文書

  • 「デフォルトルール」を「定義済みルール」に名称変更しました。 (Bruce Momjian, Stephen Frost)

  • factorial()関数について文書を追加しました。 (Peter Eisentraut)

    本リリースでの!演算子の廃止に伴い、factorial()が階乗を計算する組み込みの唯一の方法です。

E.6.3.12. ソースコード

  • 使用するSSLライブラリの将来の選択を可能にするconfigureオプション--with-ssl={openssl}を追加しました。 (Daniel Gustafsson, Michael Paquier)

    --with-opensslという書き方も互換性のため維持されます。

  • 抽象Unixドメインソケットのサポートを追加しました。 (Peter Eisentraut)

    これは今のところLinuxWindowsでサポートされます。

  • Windowsで4ギガバイトより大きいファイルを適切に扱えるようにしました。 (Juan José Santamaría Flecha)

    例えばこれによりCOPYや WALファイル、リレーションセグメントファイルを4ギガバイトより大きくできます。

  • テスト目的でキャッシュのフラッシュを制御するサーバパラメータdebug_discard_cachesを追加しました。 (Craig Ringer)

    これまではこの振る舞いをコンパイル時にのみ設定できました。 initdb時にこれを有効化するには、新たなオプション--discard-cachesを使用してください。

  • valgrindのエラー検出能力について様々な改良をしました。 (Álvaro Herrera, Peter Geoghegan)

  • 正規表現パッケージに対するテストモジュールを追加しました。 (Tom Lane)

  • LLVMバージョン12をサポートしました。 (Andres Freund)

  • SHA1、SHA2、および、MD5のハッシュ計算をOpenSSLEVP APIを使うように変更しました。 (Michael Paquier)

    これはより現代的で、FIPSモードをサポートします。

  • 乱数生成器の選択についてビルド時の別々の制御を廃止しました。 (Daniel Gustafsson)

    これからは常にSSLライブラリの選択により決定されます。

  • EUC_TWエンコーディングとBig5エンコーディングの間の直接変換ルーチンを追加しました。 (Heikki Linnakangas)

  • FreeBSDについて照合順序バージョンをサポートしました。 (Thomas Munro)

  • インデックスアクセスメソッドAPIamadjustmembersを追加しました。 (Tom Lane)

    これによりインデックスアクセスメソッドが、新たな演算子クラスや演算子族を作る際の正当性の検査を提供できます。

  • 最近に追加されたlibpqの機能に対して、libpq-fe.hに機能テストのマクロを提供しました。 (Tom Lane, Álvaro Herrera)

    歴史的には、アプリケーションはある機能が有効かどうかを検査するのに通常コンパイル時のPG_VERSION_NUMのチェックを使用してきました。 しかし、それは通常サーババージョンであって、libpqのバージョンの良いガイドではなかったようです。 libpq-fe.hはv14で追加されたアプリケーションから見える機能を示す#defineシンボルを提供するようになりました。 将来バージョンでこのような機能に対するシンボルを追加していく狙いがあります。

E.6.3.13. 追加モジュール

  • 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)

E.6.3.13.1. pg_stat_statements
  • 問い合わせのハッシュ計算を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)

E.6.3.13.2. postgres_fdw
  • postgres_fdwが行を一括でINSERTできるようにしました。 (Takayuki Tsunakawa, Tomas Vondra, Amit Langote)

  • postgres_fdwIMPORT 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)

E.6.4. 謝辞

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

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