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

リリース日: 2022-10-13

E.5.1. 概要

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

  • SQLMERGEコマンドがサポートされました。

  • 列リストと行フィルタ条件を指定する機能により、論理レプリケーションパブリケーション内でテーブルの内容を選択的にパブリッシュできるようになりました。

  • Zstandard(zstd)圧縮のサポートを含む、圧縮のオプションが増えました。 これには、pg_basebackup中にサーバ側で圧縮を実行するサポートが含まれます。

  • JSON形式を使用した構造化サーバログ出力がサポートされました。

  • 特にメモリ内およびディスク上のソートのパフォーマンスが改善しました。

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

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

以前のリリースからデータを移行したい時は、どのリリースについても、pg_dumpallを利用したダンプとリストア、あるいはpg_upgradeやロジカルレプリケーションの使用が必要です。 新たなメジャーバージョンへの移行に関する一般的な情報については19.6を参照してください。

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

  • publicスキーマPUBLIC作成権限を削除しました。 (Noah Misch)

    新しいデフォルトは、CVE-2018-1058対応のセキュリティリリース以降5.9.6で推奨している安全なスキーマ使用パターンの1つです。 この変更は、新しいデータベースクラスタと、既存のクラスタで新しく作成されたデータベースに適用されます。 クラスタをアップグレードするか、データベースダンプを復元すると、publicの既存の権限が保持されます。

    既存のデータベース、特に複数のユーザーが存在するデータベースでは、publicスキーマに対するCREATE権限を取り消して、この新しいデフォルトを採用することを検討してください。 内部者の脅威に対して防御する必要のない新しいデータベースでは、CREATE権限を付与すると、以前のリリースと同じ動作になります。

  • publicスキーマの所有者を新しいpg_database_ownerロールに変更しました。 (Noah Misch)

    これにより、各データベースの所有者は、データベース内のpublicスキーマに対する所有者権限を持つことができます。 以前はブートストラップのスーパーユーザが所有していたため、スーパーユーザ以外のデータベース所有者は何もできませんでした。

    この変更は、新しいデータベースクラスタ、および既存のクラスタに新しく作成されたデータベースに適用されます。 クラスタをアップグレードするか、データベースダンプを復元すると、publicの既存の所有者設定が保持されます。

  • 長らく非推奨となっていた排他バックアップモードを削除しました。 (David Steele, Nathan Bossart)

    このモードでデータベースサーバが突然停止すると、サーバの起動に失敗する可能性があります。 非排他バックアップモードは、すべての目的に対して優れていると考えられます。 関数pg_start_backup()/pg_stop_backup()pg_backup_start()/pg_backup_stop()に名前が変更され、関数pg_backup_start_time()pg_is_in_backup()は削除されました。

  • hash_mem_multiplierのデフォルトを2.0に増やしました。 (Peter Geoghegan)

    これにより、問い合わせハッシュ操作は他の操作より多くのwork_memメモリを使用することができます。

  • サーバサイド言語plpython2uと汎用Python言語plpythonuを削除しました。 (Andres Freund)

    Python 2.xはサポートされなくなりました。 plpythonuの当初の意図は、最終的にplpython3uを参照できるようにすることでしたが、変更すると問題を解決するよりも問題を引き起こす可能性が高くなるため、削除されました。

  • array_to_tsvector()に空文字列の配列要素が渡された場合にエラーが発生するようになりました。 (Jean-Christophe Arnu)

    語彙素は決して空であってはならないので、これは禁止されています。 以前のPostgresリリースのユーザは、空の語彙素が格納されていないことを確認する必要があります。 なぜなら、空の語彙素はダンプ/リストアの失敗や矛盾した結果を引き起こす可能性があるからです。

  • chr()に負の引数が与えられた場合にエラーが発生するようになりました。 (Peter Eisentraut)

  • CREATE OR REPLACE VIEWが出力列の照合順序を変更できないようにしました。 (Tom Lane)

  • U&""のような長さ0ユニコード識別子を禁止しました。 (Peter Eisentraut)

    非ユニコード長0の識別子はすでに許可されていませんでした。

  • 数値リテラルの末尾に数値以外の文字が含まれないようにしました。 (Peter Eisentraut)

    以前は、123abcのような問い合わせテキストは123の後に別のトークンabcが続くものとして解釈されていました。

  • JSONの数値リテラル処理をSQL/JSON標準に適合するように調整しました。 (Peter Eisentraut)

    .11.のような数値形式を受け入れ、1.type()のような数値リテラルの後に続くゴミを禁止します。

  • interval型の入力が月より大きい単位の小数値を提供する場合、最も近い月に丸めるようにしました。 (Bruce Momjian)

    たとえば、1.99 yearsは以前のように1 year 11 monthsではなく2 yearsに変換されます。

  • ピリオドが末尾にある場合のinterval型解析との一貫性を改善しました。 (Tom Lane)

    末尾にピリオドがある数字は、一部のプラットフォームで拒否されていました。

  • interval型出力関数はIntervalStyleに依存するので、IMMUTABLEではなくSTABLEとしてマークしました。 (Tom Lane)

    たとえば、interval型の値のテキスト出力に依存するインデックスの作成が失敗するようになりました。

  • interval型調整関数で整数オーバーフローを検出するようになりました。 (Joe Koshakow)

    影響を受ける関数は、justify_interval()justify_hours()justify_days()です。

  • 非ASCII文字の入出力フォーマット"char"型を変更しました。 (Tom Lane)

    上位ビットが設定されたバイトは、エンコーディングの問題を避けるために、バックスラッシュと3桁の8進数として出力されるようになりました。

  • ログインロールが自身のロールメンバーシップに持つデフォルトADMIN OPTION権限を削除しました。 (Robert Haas)

    以前は、ADMIN OPTION権限がなくても、ログインロールは自身のロールのメンバーを追加/削除できました。

  • 論理レプリケーションをサブスクリプションの所有者として実行できるようにしました。 (Mark Dilger)

    行単位セキュリティポリシーはチェックされないため、スーパーユーザ、bypassrlsを持つロール、およびテーブル所有者のみが、行単位セキュリティポリシーを持つテーブルにレプリケートできます。

  • サブスクリプション所有者がテーブルに対するSELECT権限を持たない場合は、テーブルに対するUPDATEおよびDELETE論理レプリケーション操作ができないようになりました。 (Jeff Davis)

    UPDATEコマンドとDELETEコマンドは通常、テーブルの読み取りも行うため、サブスクリプション所有者がテーブルのSELECTパーミッションを持っている必要があります。

  • EXPLAINがセッションの一時オブジェクトスキーマを参照する場合は、pg_tempとして参照するようにしました。 (Amul Sul)

    以前は実際のスキーマ名が報告されていたため、セッション間で不整合が発生していました。

  • pg_statio_all_tablesを、複数のインデックスを持つTOASTテーブルの稀なケースの値を合計するように修正しました。 (Andrei Zubkov)

    以前は、このような場合はインデックスごとに1行が表示されていました。

  • インストールされている拡張機能の名前と一致するが、拡張機能の宣言された変数の1つではないカスタムオプションの設定が禁止されました。 (Florin Irion,Tom Lane)

    この変更により、拡張機能のロード中に既存の変数が削除され、セッションの後半で新しい変数が作成されないようになります。 その目的は、変数が拡張機能に関連付けられているかどうかについての混乱を防ぐことです。

  • 廃止予定だったサーバパラメータstats_temp_directoryを削除しました。 (Andres Freund, Kyotaro Horiguchi)

  • random()の計算に使用するアルゴリズムを改善しました。 (Fabien Coelho)

    これにより、random()の結果は、同じシード値であっても、以前のバージョンで生成された結果とは異なります。

  • libpqPQsendQuery()関数はパイプラインモードでサポートされなくなりました。 (Álvaro Herrera)

    この組み合わせを使用しているアプリケーションは、代わりにPQsendQueryParams()を使用するように修正する必要があります。

  • Windows以外のプラットフォームでは、HOME環境変数を調べてユーザーのホームディレクトリを探すようになりました。 (Anders Kaseorg)

    HOMEが空または設定されていない場合は、<pwd.h>データベースをチェックする前の方法に戻ります。 この変更は、さまざまなクライアントアプリケーションプログラムと同様にlibpq(例えば~/.pgpassを検索する場合)にも影響します。

  • pg_dump--no-synchronized-snapshotsオプションを廃止しました。 (Tom Lane)

    現在サポートされているすべてのサーババージョンが同期スナップショットをサポートしているため、このオプションは必要ありません。

  • psql--single-transactionモードでエラーが検出された後、ON_ERROR_STOPが設定されている場合にのみ、最後のCOMMITコマンドをROLLBACKに変更するようにしました。 (Michael Paquier)

  • postgres_fdwが送信する問い合わせで、不要な定数のキャストを行わないようにしました。 (Dian Fay)

    列の型がローカルデータベースとリモートデータベースで意図的に異なる場合、このようなキャストによってエラーが発生する可能性があります。

  • xml2xml_is_well_formed()関数を廃止しました。 (Tom Lane)

    この関数はPostgres 9.1以降、コアバックエンドで実装されています。

  • カスタムスキャンプロバイダが射影をサポートしているかどうかを示すことができるようになりました。 (Sven Klemm)

    デフォルトでは、カスタムスキャンプロバイダは射影をサポートしていないと見なされるようになりました。 射影をサポートしているものは、このリリースで更新する必要があります。

E.5.3. 変更点

PostgreSQL 15と前メジャーリリースとの詳細な変更点を記載しました。

E.5.3.1. サーバ

  • データベースの照合順序バージョンを記録し、チェックするようにしました。 (Peter Eisentraut)

    この機能は、照合順序バージョンの変更を検出してインデックスの破損を回避するように設計されています。 関数pg_database_collation_actual_version()は基礎となるオペレーティングシステムの照合順序バージョンを報告し、ALTER DATABASE ... REFRESHは記録されたデータベースの照合順序バージョンをオペレーティングシステムの照合順序バージョンと一致するように設定しました。

  • ICU照合順序をクラスタとデータベースのデフォルトとして設定できるようにしました。 (Peter Eisentraut)

    以前は、クラスタレベルとデータベースレベルではlibcベースの照合順序のみを選択できました。 ICU照合順序は、明示的なCOLLATE句によってのみ使用できました。

  • システムビューpg_ident_file_mappingspg_ident.conf情報報告用に追加しました。 (Julien Rouhaud)

  • パーティションテーブルを参照する問い合わせのプラン時間を改善しました。 (David Rowley)

    この変更は、多数のパーティションのうち数個のパーティションだけが関連する場合に役立ちます。

  • より多くの場合に、ソートを回避するためのパーティションの順序付きスキャンが可能になりました。 (David Rowley)

    以前は、複数の値を含むDEFAULTパーティションやLISTパーティションを持つパーティションテーブルは、順序付きパーティションスキャンに使用できませんでした。 これからはこのようなパーティションがプラン時にプルーニングされる場合は使用できるようになります。

  • パーティション間での行移動を伴うパーティションテーブル更新における外部キーの動作が改善されました。 (Amit Langote)

    以前は、このような更新はソースパーティションに対して削除アクションを実行し、ターゲットパーティションに対して挿入アクションを実行していました。 これからはPostgreSQLはパーティションルートに対して更新アクションを実行するようになり、よりクリーンなセマンティクスが提供されます。

  • パーティションテーブルでCLUSTERコマンドが実行できるようになりました。 (Justin Pryzby)

  • すべてのパーティションでトリガの名前を正しく変更できるよう、パーティションテーブルのALTER TRIGGER RENAMEを修正しました。 (Arne Roland, Álvaro Herrera)

    また、複製されたトリガの名前変更も禁止されました。

E.5.3.1.2. Indexes
  • システムテーブルとTOASTテーブルのbtreeインデックスが重複を効率的に保存できるようにしました。 (Peter Geoghegan)

    以前は、これらのタイプのインデックスに対して重複除外が無効になっていました。

  • ソートを使用して構築されたGiSTインデックスの検索パフォーマンスを改善しました。 (Aliaksandr Kalenik、Sergei Shoulbakov、Andrey Brodin)

  • 一意性制約とインデックスがNULL値を区別できないものとして扱えるようにしました。 (Peter Eisentraut)

    以前はNULLエントリは常に個別値として扱われていましたが、これはUNIQUE NULLS NOT DISTINCTを使用して制約とインデックスを作成することで変更できるようになりました。

  • C照合順序を使用する場合、^@接頭辞演算子とstarts_with()関数がbtreeインデックスを使用できるようにしました。 (Tom Lane)

    以前はSP-GiSTインデックスのみ使用できました。

E.5.3.1.3. オプティマイザ
  • 拡張統計が親とそのすべての子の統計を記録できるようにしました。 (Tomas Vondra, Justin Pryzby)

    通常の統計情報では、すでに親と親+すべての子の統計情報を個別に追跡しています。

  • ユーザーが再帰問い合わせのワーキングテーブルの予想サイズを指定できるようサーバパラメータrecursive_worktable_factorを追加しました。 (Simon Riggs)

E.5.3.1.4. 性能一般
  • 多くの定数を持つNOT IN句のハッシュ検索を可能にしました。 (David Rowley, James Coleman)

    これまでは常に値のリストを順スキャンしていました。

  • SELECT DISTINCTの並列化を可能にしました。 (David Rowley)

  • 一度に16バイトを処理することでUTF-8テキストのエンコーディング妥当性検証を高速化しました。 (John Naylor, Heikki Linnakangas)

    これはCOPY FROMのようなテキスト中心の操作を改善しました。

  • work_memを超えるソートの性能を改善しました。 (Heikki Linnakangas)

    ソートデータがwork_memに収まらなくなったら、以前より多くの出力ストリームを使用するバッチソートアルゴリズムに切り替えるようにしました。

  • メモリ内ソートの性能を改善し、メモリ消費を削減しました。 (Ronan Dunklau, David Rowley, Thomas Munro, John Naylor)

  • WAL全ページ書き込みがLZ4とZstandard圧縮を使用できるようにしました。 (Andrey Borodin, Justin Pryzby)

    これはwal_compressionサーバ設定によって制御されます。

  • macOSでダイレクトI/Oを使用したWAL書き込みサポートを追加しました。 (Thomas Munro)

    これはmax_wal_senders=0wal_level=minimalの場合にのみ有効です。

  • 最も古い凍結されたトランザクションIDとマルチトランザクションIDを設定することで、より積極的なvacuumが実行できるようにしました。 (Peter Geoghegan)

  • より多くの場合に複数の外部テーブルを参照する問い合わせが並列で外部テーブルスキャンを実行できるようにしました。 (Andrey Lepikhov, Etsuro Fujita)

  • row_number()rank()dense_rank()count()を使用するwindow関数の性能が向上しました。 (David Rowley)

  • コア数の多いARM64システムでのスピンロックの性能が向上しました。 (Geoffrey Blake)

E.5.3.1.5. モニタリング
  • チェックポイントと遅い自動バキューム操作のログをデフォルトで有効にしました。 (Bharath Rupireddy)

    これにより、log_checkpointsのデフォルトがonに、log_autovacuum_min_durationのデフォルトが10分に変更されます。 その結果、アイドル状態のサーバでもログ出力が生成され、ログファイルのローテーションが行われていないリソース制約のあるサーバで問題が発生する可能性があります。 このような場合は、これらのデフォルトを変更する必要があります。

  • サーバ起動が遅い時にサーバログに進行メッセージを生成するようになりました。 (Nitin Jadhav, Robert Haas)

    遅延の原因がメッセージで報告されます。 通知の時間間隔は新たなサーバパラメータlog_startup_progress_intervalによって制御されます。

  • 累積的な統計情報システムデータを共有メモリに保存するようにしました。 (Kyotaro Horiguchi, Andres Freund, Melanie Plageman)

    以前は、このデータはUDPパケットを介して統計情報収集プロセスに送信され、ファイルシステム経由で転送された後、セッションによってのみ読み取られることができました。 個別の統計情報収集プロセスは廃止されました。

  • VACUUM VERBOSEと自動バキュームのログメッセージに追加情報を追加しました。 (Peter Geoghegan)

  • 一時ファイルブロックI/Oに対するEXPLAIN (BUFFERS)出力を追加しました。 (Masahiko Sawada)

  • JSON形式でログ出力が可能になりました。 (Sehrope Sarkuni, Michael Paquier)

    新しい設定はlog_destination=jsonlogです。

  • pg_stat_reset_single_table_counters()で全てのデータベースで共有されているリレーションのカウンタをリセットできるようになりました。 (Sadhuprasad Patro)

  • ローカルシェルコマンドの待機イベントを追加しました。 (Fujii Masao)

    新しい待機イベントは、archive_commandarchive_cleanup_commandrestore_commandrecovery_end_commandを呼び出すときに使用されます。

E.5.3.1.6. 権限
  • ビューの呼び出し元の権限によるビューによるテーブルアクセスをオプションで制御できるようにしました。 (Christoph Heiss)

    以前は、ビューへのアクセスは常にビューの所有者によって行われるものとして扱われていました。 今もこれがデフォルトです。

  • 定義済みロールpg_write_server_filesのメンバがサーバ側ベースバックアップを実行できるようにしました。 (Dagfinn Ilmari Mannsåker)

    以前は、スーパーユーザのみがこのようなバックアップを実行できました。

  • SETおよびALTER SYSTEMを介した個々のサーバパラメータを変更する権限をGRANTで付与できるようにしました。 (Mark Dilger)

    新しい関数has_parameter_privilege()はこの権限を報告します。

  • メンバーがCHECKPOINTを実行できるようにする定義済みロールpg_checkpointを追加しました。 (Jeff Davis)

    以前は、チェックポイントはスーパーユーザによってのみ実行できました。

  • pg_read_all_stats事前定義ロールのメンバがビューpg_backend_memory_contextsおよびpg_shmem_allocationsにアクセスできるようにしました。 (Bharath Rupireddy)

    以前は、これらのビューにアクセスできるのはスーパーユーザだけでした。

  • pg_log_backend_memory_contexts()GRANTで権限を与えることできるようになりました。 (Jeff Davis)

    以前は、この関数を実行できるのはスーパーユーザだけでした。

E.5.3.1.7. サーバ設定
  • 割り当てられた共有メモリのサイズを報告するサーバパラメータshared_memory_sizeを追加しました。 (Nathan Bossart)

  • 必要なhugeメモリページ数を報告するためのサーバパラメータshared_memory_size_in_huge_pagesを追加しました。 (Nathan Bossart)

    これはLinuxでのみサポートされています。

  • シングルユーザモードでサーバパラメータshared_preload_librariesを利用できるようになりました。 (Jeff Davis)

    この変更で、シングルユーザモードでもデータベースアクセスに不可欠なカスタムアクセスメソッドとWALリソースマネージャをshared_preload_librariesを使用したロードサポートされます。

  • Solarisでは、dynamic_shared_memory_typeのデフォルト設定をsysvにしました。 (Thomas Munro)

    以前のデフォルト選択posixでは、このプラットフォームで誤ったエラーが発生する可能性があります。

  • postgres -Cが実行時に計算された値を正しく報告できるようにしました。 (Nathan Bossart)

    以前に実行時に計算された値data_checksumwal_segment_size、およびdata_directory_modeは、実行中のサーバでは正確でない値を報告していました。 しかしながら、これらは実行中のサーバでは機能しませんでした。

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

  • サーバサイドベースバックアップのLZ4およびZstandard圧縮のサポートを追加しました。 (Jeevan Ladhe, Robert Haas)

  • クラッシュリカバリ中にcheckpointerとbgwriterプロセスを実行するようになりました。 (Thomas Munro)

    これにより、長時間のクラッシュリカバリを高速化できます。

  • WAL処理で必要なファイル内容をプリフェッチできるようにしました。 (Thomas Munro)

    これは、サーバパラメータrecovery_prefetchによって制御されます。

  • ロード可能なモジュールによるアーカイブ作成が可能になりました。 (Nathan Bossart)

    以前は、アーカイブはシェルコマンドを呼び出すことによってのみ行われていました。 新たなサーバパラメータarchive_libraryを設定して、アーカイブのために呼び出すライブラリを指定できます。

  • START_REPLICATIONの前にIDENTIFY_SYSTEMを実行する必要がなくなりました。 (Jeff Davis)

  • スキーマ内のすべてのテーブルをパブリケーション出来るようになりました。 (Vignesh C, Hou Zhijie, Amit Kapila)

    たとえば、次の構文がサポートされました:CREATE PUBLICATION pub1 FOR TABLES IN SCHEMA s1,s2ALTER PUBLICATIONも同様の構文をサポートしています。 リストされたスキーマに後で追加されたテーブルもレプリケートされます。

  • パブリケーションの内容をWHERE句でフィルタできるようになりました。 (Hou Zhijie, Euler Taveira, Peter Smith, Ajin Cherian, Tomas Vondra, Amit Kapila)

    WHERE句の条件に当てはまらない行はパブリッシュされません。

  • パブリケーションの内容を特定の列に限定できるようになりました。 (Tomas Vondra, Álvaro Herrera, Rahila Syed)

  • ALTER SUBSCRIPTION ... SKIPを使用したサブスクライバーでのトランザクションのスキップができるようになりました。 (Masahiko Sawada)

  • 論理レプリケーションにプリペアド(2相)トランザクションのサポートが追加されました。 (Peter Smith, Ajin Cherian, Amit Kapila, Nikhil Sontakke, Stas Kelvich)

    新しいCREATE_REPLICATION_SLOTオプションはTWO_PHASEと呼ばれます。 pg_recvlogicalは、スロット作成時に新しい--two-phaseオプションをサポートするようになりました。

  • 空のトランザクションを論理レプリケーションしないようにしました。 (Ajin Cherian, Hou Zhijie, Euler Taveira)

    これまでは、サブスクライブしているテーブルが変更されていない場合、パブリッシャは空のトランザクションをサブスクライバに送信していました。

  • 論理レプリケーションスロットのディレクトリの中身を監視するためのSQL関数を追加しました。 (Bharath Rupireddy)

    新しい関数はpg_ls_logicalsnapdir()pg_ls_logicalmapdir()pg_ls_replslotdir()です。 これらは事前定義されたpg_monitorロールのメンバによって実行されます。

  • サブスクライバーでのエラー時に論理レプリケーションの変更適用を停止できるようにしました。 (Osumi Takamichi, Mark Dilger)

    これはサブスクライバーオプションdisable_on_errorで有効にされ、ストリームアプリケーション中に発生する可能性のある無限エラーループが回避されます。

  • サブスクライバーサーバパラメータをパブリッシャに合わせて調整することで、日付時刻とfloat8の値が一貫して解釈されるようにしました。 (Japin Li)

    一部のパブリッシャーは一貫性のない行動に依存している可能性がありました。

  • サブスクライバー側の活動を報告するシステムビューpg_stat_subscription_statsを追加しました。 (Masahiko Sawada)

    新しい関数pg_stat_reset_subscription_stats()により、これらの統計カウンタをリセットすることができます。

  • pg_publication_tablesシステムビューで重複するエントリを抑制しました。 (Hou Zhijie)

    パーティションが複数回表示される場合もありました。

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

  • あるテーブルを別のテーブルに合わせるSQLMERGEコマンドを追加しました。 (Simon Riggs, Pavan Deolasee, Álvaro Herrera, Amit Langote)

    INSERT ... ON CONFLICTと似ていますが、よりバッチ指向です。

  • COPYのテキスト形式のHEADERオプションのサポートを追加しました。 (Rémi Lapeyre)

    新しいオプションを指定すると列名が出力され、オプションで入力時に確認されます。

  • データベース作成のための新しいWALログ方式を追加しました。 (Dilip Kumar)

    これは、テンプレートデータベースをコピーするための新しいデフォルトの方法です。 これにより、データベース作成時のチェックポイントが不要になります。 ただし、テンプレートデータベースが大きい場合は速度が遅くなる可能性があるため、古い方法を引き続き使用できます。

  • CREATE DATABASEがデータベースOIDを設定できるようにしました。 (Shruthi Gowda, Antonin Houska)

  • Windowsでの同時使用時に、DROP DATABASEDROP TABLESPACEALTER DATABASE SET TABLESPACEが時々失敗するのを防ぐようになりました。 (Thomas Munro)

  • 外部キーON DELETE SETアクションが指定した列にのみ影響するようにしました。 (Paul Martinez)

    これまでは、外部キーのすべての列が常に影響を受けていました。

  • ALTER TABLEがテーブルのACCESS METHODを変更できるようにしました。 (Justin Pryzby, Jeff Davis)

  • ALTER TABLEがテーブルの書き換えを引き起こす場合は、オブジェクトアクセスフックを正しく呼び出すようにしました。 (Michael Paquier)

  • ログを記録しないシーケンスを作成できるようにしました。 (Peter Eisentraut)

  • 複合型を返す関数の結果における個々の列の依存関係を追跡するようになりました。 (Tom Lane)

    以前は、ビューまたはルールに、複合型を返す関数の結果内の特定の列への参照が含まれていた場合、それは依存関係として記録されませんでした。 ビューまたはルールは、全体として複合型に依存すると考えられていました。 これは、個々の列の削除が許可され、後でビューまたはルールを使用する際に問題が発生することを意味していました。 また、列レベルの依存関係も記録されるようになったため、ビューが変更または削除されないかぎり、このような列の削除は拒否されます。

E.5.3.4. データ型

  • 数値の位取りを負にしたり、より精度を大きくすることができるようになりました。 (Dean Rasheed, Tom Lane)

    これにより、小数点の左側の値を丸めることができます。 たとえば、'1234'::numeric(4,-2)は1200を返します。

  • 値をinterval型にキャストする際のオーバーフロー検出を改善しました。 (Joe Koshakow)

  • 非ASCII文字の"char"型I/Oフォーマットを変更しました。 (Tom Lane)

  • 絵文字のような最新のUnicode文字の表示幅情報を更新しました。 (Jacob Champion)

    また、Unicode 5.0から14.0.0にアップデートしました。 UnicodeリリースでPostgresをし続けるための自動化された方法が用意されました。

E.5.3.5. 関数

  • range_agg()に多重範囲入力を追加しました。 (Paul Jungwirth)

  • xid8データ型のMIN()MAX()集約関数を追加しました。 (Ken Kato)

  • 他のリレーショナルシステムと互換性を持たせるための正規表現関数を追加しました。 (Gilles Darold, Tom Lane)

    新しい関数は、regexp_count()regexp_instr()regexp_like()regexp_substr()です。 新しいオプション引数がregexp_replace()に追加されました。

  • ポリゴン間の距離を計算する機能を追加しました。 (Tom Lane)

  • to_char()フォーマットコードoftzhtzmを追加しました。 (Nitin Jadhav)

    これらに対応する大文字はすでにサポートされています。

  • AT TIME ZONEtime with time zone値に適用する場合、DSTが適用されるかどうかを判断するために、その時点の時刻ではなくトランザクション開始時刻を使用するようにしました。 (Aleksander Alekseev, Tom Lane)

    これにより、変換をVOLATILEではなくSTABLEと見なすことができ、呼び出しごとのカーネル呼び出しを節約することができます。

  • ts_delete()関数とsetweight()関数でNULL配列要素を無視するようにしました。 (Jean-Christophe Arnu)

    これらの関数は、実際には空文字列配列要素を無視します(なぜなら、それらは有効な語彙素と決して一致しないからです)。 失敗する代わりに、NULL要素も無視させることは一貫しているように思えます。

  • pg_size_pretty()pg_size_bytes()にペタバイト単位のサポートを追加しました。 (David Christensen)

  • 実際のスキーマ名を使用して他のセッションの一時スキーマへの参照を出力するようにpg_event_trigger_ddl_commands()を変更しました。 (Tom Lane)

    以前は、この関数はすべての一時スキーマをpg_tempとして報告していましたが、現在のセッションの一時スキーマ以外にこれを使用すると誤解を招きます。

E.5.3.6. PL/pgSQL

  • PL/pgSQLの変数CONSTANTマーキングの強制を修正しました。 (Tom Lane)

    以前は、CONSTANTとマークされていても、変数はCALL出力パラメータまたはrefcursorOPEN変数として使用できました。

E.5.3.7. libpq

  • IPアドレスとサーバ証明書のサブジェクト代替名とのマッチングができるようになりました。 (Jacob Champion)

  • PQsslAttribute()がlibpq接続を必要とせずにSSLライブラリタイプを報告できるようにしました。 (Jacob Champion)

  • クライアントから送信される問い合わせキャンセルは、通常のクライアント接続と同じTCP設定を使用するように変更しました。 (Jelte Fennema)

    これにより、設定されたTCPタイムアウトを問い合わせキャンセル接続に適用できます。

  • libpqイベントコールバックの失敗によって強制的にエラーが発生しないようにしました。 (Tom Lane)

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

  • 直列化失敗とデッドロック障害が発生した後、pgbenchが再試行できるようにしました。 (Yugo Nagata, Marina Polyakova)

E.5.3.8.1. psql
  • より大きなチャンクでデータを送信することにより、psql\copyコマンドのパフォーマンスを改善しました。 (Heikki Linnakangas)

  • サーバパラメータを表示する\dconfigコマンドを追加しました。 (Mark Dilger, Tom Lane)

    これはサーバサイドSHOWコマンドと似ていますが、複数の変数を表示するパターンを処理できます。

  • 環境変数の値をpsql変数に代入する\getenvコマンドを追加しました。 (Tom Lane)

  • \lo_listおよび\dlコマンドにラージオブジェクト権限を表示する+オプションを追加しました。 (Pavel Luzanov)

  • \watchコマンドにページャオプションを追加しました。 (Pavel Stehule, Thomas Munro)

    これはUnixでのみサポートされ、PSQL_WATCH_PAGER環境変数によって制御されます。

  • psqlがサーバに送信する問い合わせで問い合わせ内ダブルハイフンコメントを含めるようにしました。 (Tom Lane, Greg Nancarrow)

    以前は、このようなコメントは送信前に問い合わせから削除されていました。 引き続き問い合わせテキストの前にあるダブルハイフンコメントは送信されず、個別のpsql履歴エントリとして記録されません。

  • psqlでのReadlineのmeta-#コマンドが二重ハイフンのコメントマーカーを挿入するように調整しました。 (Tom Lane)

    以前は、ポンド記号が挿入されていました。ただし、ユーザが明示的にデフォルト以外のコメント記号を設定した場合は除きます。

  • psqlは、複数の問い合わせが一度にサーバに渡された場合にすべての結果を出力するようにしました。 (Fabien Coelho)

    以前は、最後の問合せ結果のみが表示されていました。 SHOW_ALL_RESULTSpsql変数をoffに設定すると、以前の動作に戻すことができます。

  • --single-transactionモードでエラーが検出された後、ON_ERROR_STOPが設定されている場合にのみ、最後のCOMMITコマンドをROLLBACKに変更しました。 (Michael Paquier)

    以前は、-cコマンドや-fスクリプトファイルでエラーが検出されると、ON_ERROR_STOPの値に関係なく、最後にROLLBACKが発行されていました。

  • psqlのタブ補完機能を改善しました。 (Shinya Kato, Dagfinn Ilmari Mannsåker, Peter Smith, Koyu Tanigawa, Ken Kato, David Fetter, Haiying Tang, Peter Eisentraut, Álvaro Herrera, Tom Lane, Masahiko Sawada)

  • psqlのバックスラッシュコマンドのサポートをPostgreSQL 9.2以降を実行しているサーバに制限しました。 (Tom Lane)

    古いサーバでの実行時にのみ使用されていたコードを削除しました。 9.2と比較してバージョン固有の調整を必要としないコマンドは引き続き動作します。

E.5.3.8.2. pg_dump
  • pg_dumppublicスキーマ所有権変更とセキュリティラベルをダンプするようにしました。 (Noah Misch)

  • 多数のオブジェクトを持つデータベースのダンプパフォーマンスを改善しました。 (Tom Lane)

    これによりpg_upgradeのパフォーマンスも改善されます。

  • 大きなTOASTテーブルを持つテーブルの並列pg_dumpのパフォーマンスを改善しました。 (Tom Lane)

  • デフォルトのテーブルアクセス方式のみを使用するようにリストアを強制するダンプ/リストアオプション--no-table-access-methodを追加しました。 (Justin Pryzby)

  • pg_dumppg_dumpallのサポートをPostgreSQL 9.2以降を実行するサーバに制限しました。 (Tom Lane)

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

  • ベースバックアップの場所を制御するための新しいpg_basebackupオプション--targetを追加しました。 (Robert Haas)

    新しいオプションは、ローカルにバックアップを書き込むserverと、バックアップを破棄するblackhole(テスト用)です。

  • pg_basebackupがベースバックアップファイルのサーバ側におけるgzip、LZ4、およびZstandardによる圧縮と、クライアント側におけるLZ4、およびZstandardによる圧縮に対応しました。 (Dipesh Pandit, Jeevan Ladhe)

    クライアントサイドgzip圧縮はすでにサポートされていました。

  • pg_basebackupがサーバ側で圧縮し、保存する前にクライアント側で解凍できるようにしました。 (Dipesh Pandit)

    これは、サーバ側で圧縮を指定し、プレーン出力フォーマットを指定することによって実現されます。

  • pg_basebackup--compressオプションで、圧縮場所(サーバまたはクライアント)、圧縮方法、圧縮オプションを制御できます。 (Michael Paquier, Robert Haas)

  • pg_receivewalにLZ4圧縮方式を追加しました。 (Georgios Kokolatos)

    これは--compress=lz4で有効になっており、--with-lz4を使ってバイナリをビルドする必要があります。

  • pg_receivewal--compressオプションに追加機能を追加しました。 (Georgios Kokolatos)

  • pg_receivewalが適切なWAL場所で再起動できるように改善しました。 (Ronan Dunklau)

    以前は、pg_receivewalはローカルアーカイブディレクトリに保存されたWALファイル、または送信サーバの現在のWALフラッシュ位置に基づいて起動していました。 この変更により、送信サーバがPostgres 15以降を実行しており、ローカルアーカイブディレクトリが空で、レプリケーションスロットが指定されている場合、レプリケーションスロットの再起動ポイントが使用されます。

  • pg_rewindオプション--config-fileを追加して、サーバ設定ファイルがデータディレクトリ外に保存されている場合の使用を簡単にしました。 (Gunnar Bluth)

E.5.3.9.1. pg_upgrade
  • pg_upgradeのログファイルと一時ファイルをpg_upgrade_output.dという新しいクラスタのサブディレクトリに保存するようにしました。 (Justin Pryzby)

    以前は、このようなファイルは現在のディレクトリに残されており、手動でのクリーンアップが必要でしたが、現在ではpg_upgradeが正常に完了すると自動的に削除されます。

  • 出力が端末でない場合、pg_upgrade操作中のデフォルトステータス報告を無効にしました。 (Andres Freund)

    --verboseを使用することで、tty以外でのステータスレポート出力を有効にできます。

  • 無効な接続設定を持つすべてのデータベースをpg_upgradeが報告するようにしました。 (Jeevan Ladhe)

    これまでは、無効な接続設定を持つ最初のデータベースのみが報告されていました。

  • pg_upgradeが、テーブル空間とデータベースOID、およびリレーションのrelfilenode番号を維持するようにしました。 (Shruthi Gowda, Antonin Houska)

  • pg_upgrade--no-syncオプションを追加しました。 (Michael Paquier)

    これはテスト時にのみ推奨されます。

  • pg_upgradeのサポートをPostgreSQL 9.2以降を実行する古いサーバに制限しました。 (Tom Lane)

E.5.3.9.2. pg_waldump
  • pg_waldump出力をリレーションのファイルノード、ブロック番号、フォーク番号、フルページイメージでフィルタリングできるようにしました。 (David Christensen, Thomas Munro)

  • pg_waldumpが中断されて終了する前に統計を報告するようにしました。 (Bharath Rupireddy)

    例えば、pg_waldump --stats --followを実行している端末でcontrol-Cを発行すると、終了前に現在の統計情報が報告されます。 これはWindowsでは動作しません。

  • pg_waldumpによって報告されるいくつかのトランザクションWALレコードの記述を改善しました。 (Masahiko Sawada, Michael Paquier)

  • pg_waldumpが複数のリソースマネージャに関する情報をダンプできるようにしました。 (Heikki Linnakangas)

    --rmgrオプションを複数回指定することで、これを有効にできます。

E.5.3.10. ドキュメンテーション

  • pg_encoding_to_char()pg_char_to_encoding()のドキュメントを追加しました。 (Ian Lawrence Barwick)

  • ^@で始める演算子をドキュメント化しました。 (Tom Lane)

E.5.3.11. ソースコード

  • cirrus-ciを使用した継続的インテグレーションテストのサポートを追加しました。 (Andres Freund, Thomas Munro, Melanie Plageman)

  • Zstandardビルドを有効にするためのconfigureオプション--with-zstdを追加しました。 (Jeevan Ladhe, Robert Haas, Michael Paquier)

  • ロード可能なライブラリのマジックブロックにABI識別子フィールドを追加し、非コミュニティのPostgreSQLディストリビューションが他のビルドと互換性のないライブラリを識別できるようにしました。 (Peter Eisentraut)

    ABIフィールドの不一致で、ロード時にエラーが発生します。

  • "char"の新しいpg_type.typcategory値を作成しました。 (Tom Lane)

    その他の内部使用専用の型もこのカテゴリに割り当てられています。

  • ベースバックアップに使用する新しいCOPYメソッドを指定するため、新しいプロトコルメッセージTARGETを追加しました。 (Robert Haas)

    pg_basebackupはこのメソッドを使用するようになりました。

  • 圧縮方法とオプションを指定する新しいプロトコルメッセージCOMPRESSIONCOMPRESSION_DETAILを追加しました。 (Robert Haas)

  • 古いBASE_BACKUPコマンド構文とベースバックアッププロトコルに対するサーバサポートを削除しました。 (Robert Haas)

  • カスタムバックアップターゲットを設定する拡張のサポートを追加しました。 (Robert Haas)

  • 拡張がカスタムWALリソースマネージャを定義できるようにしました。 (Jeff Davis)

  • サーバパラメータのフラグを取得する関数pg_settings_get_flags()を追加しました。 (Justin Pryzby)

  • Windowsでは、PGDLLIMPORT印を使用してサーバのすべてのグローバル変数をエクスポートしました。 (Robert Haas)

    以前は、Windowsの拡張機能では特定の変数しかアクセスできませんでした。

  • PostgreSQLを構築するにはGNUmakeバージョン3.81以降が必要です。 (Tom Lane)

  • pgcrypto拡張モジュールのビルドにはOpenSSLを必須としました。 (Peter Eisentraut)

  • Perlバージョン5.8.3以降が必要としました。 (Dagfinn Ilmari Mannsåker)

  • Pythonバージョン3.2以降が必要としました。 (Andres Freund)

E.5.3.12. 追加モジュール

  • amcheckがシーケンスをチェックできるようにしました。 (Mark Dilger)

  • TOASTテーブルのamcheck健全性チェックを改善しました。 (Mark Dilger)

  • カスタムバックアップターゲットの例として、新しいモジュールbasebackup_to_shellを追加しました。 (Robert Haas)

  • ライブラリ経由でアーカイブを実行する例として新しいモジュールbasic_archiveを追加しました。 (Nathan Bossart)

  • ブール型の列でbtree_gistインデックスを使えるようにしました。 (Emre Hasegeli)

    これらは排他制約に使用できます。

  • pageinspectpage_header()が32KBのページサイズを扱えるよう修正しました。 (Quan Zongliang)

    これまでは、場合によっては不適切な負の値が返されることがありました。

  • pg_stat_statementsに一時ファイルブロックI/Oのカウンタを追加しました。 (Masahiko Sawada)

  • pg_stat_statementsにJITカウンタを追加しました。 (Magnus Hagander)

  • 新しいモジュールpg_walinspectを追加しました。 (Bharath Rupireddy)

    これはpg_waldumpのようなSQLレベルの出力を与えます。

  • sepgsqlログメッセージにpermissive/enforcing状態を示すようにしました。 (Dave Page)

E.5.3.12.1. postgres_fdw
  • postgres_fdwがCASE式をプッシュダウンできるようにしました。 (Alexander Pyhalov)

  • postgres_fdw接続のアプリケーション名を制御するサーバパラメータpostgres_fdw.application_nameを追加しました。 (Hayato Kuroda)

    以前は、リモートセッションのapplication_nameは、リモートサーバ上で、またはpostgres_fdw接続仕様を介してのみ設定できました。 postgres_fdw.application_nameは、カスタマイズのためのエスケープシーケンスをサポートしており、リモートサーバ上での接続を区別しやすくしています。

  • postgres_fdwサーバで並列コミットができるようにしました。 (Etsuro Fujita)

    これは、CREATE SERVERオプションparallel_commitで有効になります。

E.5.4. 謝辞

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

Abhijit Menon-Sen
Adam Brusselback
Adam Mackler
Adrian Ho
Ahsan Hadi
Ajin Cherian
Alastair McKinley
Aleksander Alekseev
Ales Zeleny
Alex Kingsborough
Alex Kozhemyakin
Alexander Korotkov
Alexander Kukushkin
Alexander Lakhin
Alexander Nawratil
Alexander Pyhalov
Alexey Borzov
Alexey Ermakov
Aliaksandr Kalenik
Álvaro Herrera
Amit Kapila
Amit Khandekar
Amit Langote
Amul Sul
Anastasia Lubennikova
Anders Kaseorg
Andreas Dijkman
Andreas Grob
Andreas Seltenreich
Andrei Zubkov
Andres Freund
Andrew Alsup
Andrew Bille
Andrew Dunstan
Andrew Gierth
Andrew Kesper
Andrey Borodin
Andrey Lepikhov
Andrey Sokolov
Andy Fan
Anton Melnikov
Anton Voloshin
Antonin Houska
Arjan van de Ven
Arne Roland
Arthur Zakirov
Ashutosh Bapat
Ashutosh Sharma
Ashwin Agrawal
Asif Rehman
Asim Praveen
Atsushi Torikoshi
Aya Iwata
Bauyrzhan Sakhariyev
Benoit Lobréau
Bernd Dorn
Bertrand Drouvot
Bharath Rupireddy
Björn Harrtell
Boris Kolpackov
Boris Korzun
Brad Nicholson
Brar Piening
Bruce Momjian
Bruno da Silva
Bryn Llewellyn
Carl Sopchak
Cary Huang
Chapman Flack
Chen Jiaoqian
Chris Bandy
Chris Lowder
Christian Quest
Christoph Berg
Christoph Heiss
Christophe Pettus
Christopher Painter-Wakefield
Claudio Freire
Clemens Zeidler
Corey Huinker
Dag Lem
Dagfinn Ilmari Mannsåker
Dan Kubb
Daniel Cherniy
Daniel Gustafsson
Daniel Polski
Daniel Vérité
Daniel Westermann
Daniele Varrazzo
Daniil Anisimov
Danny Shemesh
Darafei Praliaskouski
Daria Lepikhova
Dave Cramer
Dave Page
David Christensen
David Fetter
David G. Johnston
David Rowley
David Steele
David Zhang
Dean Rasheed
Dian Fay
Dilip Kumar
Dipesh Pandit
Dmitry Dolgov
Dmitry Koval
Dmitry Marakasov
Dominique Devienne
Dong Wook
Drew DeVault
Eduard Català
Egor Chindyaskin
Egor Rogov
Ekaterina Kiryanova
Elena Indrupskaya
Elvis Pranskevichus
Emmanuel Quincerot
Emre Hasegeli
Eric Mutta
Erica Zhang
Erik Rijkers
Erki Eessaar
Etsuro Fujita
Euler Taveira
Fabien Coelho
Fabrice Chapuis
Fabrice Fontaine
Fabrízio de Royes Mello
Feike Steenbergen
Filip Gospodinov
Florin Irion
Floris Van Nee
Frédéric Yhuel
Gabriela Serventi
Gaurab Dey
Geoff Winkless
Geoffrey Blake
Georgios Kokolatos
Gilles Darold
Greg Nancarrow
Greg Rychlewski
Greg Sabino Mullane
Greg Stark
Gregory Smith
Guillaume Lelarge
Gunnar Bluth
Gurjeet Singh
Haiyang Wang
Haiying Tang
Hannu Krosing
Hans Buschmann
Hayato Kuroda
Heath Lord
Heikki Linnakangas
Herwig Goemans
Himanshu Upadhyaya
Holly Roberts
Hou Zhijie
Hubert Lubaczewski
Ian Barwick
Ian Campbell
Ibrar Ahmed
Ildus Kurbangaliev
Ilya Anfimov
Itamar Gafni
Jacob Champion
Jaime Casanova
Jakub Wartak
James Coleman
James Hilliard
James Inform
Jan Piotrowski
Japin Li
Jason Harvey
Jason Kim
Jean-Christophe Arnu
Jeevan Ladhe
Jeff Davis
Jeff Janes
Jehan-Guillaume de Rorthais
Jelte Fennema
Jeremy Evans
Jeremy Schneider
Jian Guo
Jian He
Jimmy Yih
Jiri Fejfar
Jitka Plesníková
Joe Conway
Joe Wildish
Joel Jacobson
Joey Bodoia
John Naylor
Jonathan Katz
Josef Simanek
Joseph Koshakow
Josh Soref
Joshua Brindle
Juan José Santamaría Flecha
Julien Rouhaud
Julien Roze
Junwang Zhao
Jürgen Purtz
Justin Pryzby
Ken Kato
Kevin Burke
Kevin Grittner
Kevin Humphreys
Kevin McKibbin
Kevin Sweet
Kevin Zheng
Klaudie Willis
Konstantin Knizhnik
Konstantina Skovola
Kosei Masumura
Kotaro Kawamoto
Koyu Tanigawa
Kuntal Ghosh
Kyotaro Horiguchi
Lars Kanis
Lauren Fliksteen
Laurent Hasson
Laurenz Albe
Leslie Lemaire
Liam Bowen
Lingjie Qiang
Liu Huailing
Louis Jachiet
Lukas Fittl
Ma Liangzhu
Maciek Sakrejda
Magnus Hagander
Mahendra Singh Thalor
Maksim Milyutin
Marc Bachmann
Marcin Krupowicz
Marcus Gartner
Marek Szuba
Marina Polyakova
Mario Emmenlauer
Mark Dilger
Mark Murawski
Mark Wong
Markus Wanner
Markus Winand
Martijn van Oosterhout
Martin Jurca
Martin Kalcher
Martín Marqués
Masahiko Sawada
Masahiro Ikeda
Masao Fujii
Masaya Kawamoto
Masayuki Hirose
Matthias van de Meent
Matthijs van der Vleuten
Maxim Orlov
Maxim Yablokov
Melanie Plageman
Michael Banck
Michael Harris
Michael J. Sullivan
Michael Meskes
Michael Mühlbeyer
Michael Paquier
Michael Powers
Mike Fiedler
Mike Oh
Mikhail Kulagin
Miles Delahunty
Naoki Okano
Nathan Bossart
Nathan Long
Nazir Bilal Yavuz
Neha Sharma
Neil Chen
Nicola Contu
Nicolas Lutic
Nikhil Benesch
Nikhil Shetty
Nikhil Sontakke
Nikita Glukhov
Nikolai Berkoff
Nikolay Samokhvalov
Nikolay Shaplov
Nitin Jadhav
Noah Misch
Noboru Saito
Noriyoshi Shinoda
Olaf Bohlen
Olly Betts
Onder Kalaci
Oskar Stenberg
Otto Kekalainen
Paul Guo
Paul Jungwirth
Paul Martinez
Pavan Deolasee
Pavel Borisov
Pavel Luzanov
Pavel Stehule
Peter Eisentraut
Peter Geoghegan
Peter Slavov
Peter Smith
Petr Jelínek
Phil Florent
Phil Krylov
Pierre-Aurélien Georges
Prabhat Sahu
Quan Zongliang
Rachel Heaton
Rahila Syed
Rajakavitha Kodhandapani
Rajkumar Raghuwanshi
Ranier Vilela
Rei Kamigishi
Reid Thompson
Rémi Lapeyre
Renan Soares Lopes
Richard Guo
Richard Wesley
RKN Sai Krishna
Robert Haas
Robert Treat
Roberto Mello
Robins Tharakan
Roger Mason
Roman Zharkov
Ronan Dunklau
Rui Zhao
Ryan Kelly
Ryo Matsumura
Ryohei Takahashi
Sadhuprasad Patro
Sait Talha Nisanci
Sami Imseih
Sandeep Thakkar
Sebastian Kemper
Sehrope Sarkuni
Sergei Kornilov
Sergei Shoulbakov
Sergey Shinderuk
Shay Rojansky
Shenhao Wang
Shi Yu
Shinya Kato
Shruthi Gowda
Simon Perepelitsa
Simon Riggs
Sirisha Chamarthi
Soumyadeep Chakraborty
Stan Hu
Stas Kelvich
Stefen Hillman
Stephen Frost
Steve Chavez
Sumanta Mukherjee
Suraj Khamkar
Suraj Kharage
Sven Klemm
Takamichi Osumi
Takayuki Tsunakawa
Takeshi Ideriha
Tatsuhiro Nakamori
Tatsuhito Kasahara
Tatsuo Ishii
Tatsuro Yamada
Teja Mupparti
Teodor Sigaev
Thibaud Walkowiak
Thom Brown
Thomas McKay
Thomas Munro
Tim McNamara
Timo Stolz
Timur Khanjanov
Tom Lane
Tomas Barton
Tomas Vondra
Tony Reix
Troy Frericks
Tushar Ahuja
Victor Wagner
Victor Yegorov
Vignesh C
Vik Fearing
Vincas Dargis
Vitaly Burovoy
Vitaly Voronov
Vladimir Sitnikov
Wang Ke
Wei Sun
Wei Wang
Whale Song
Will Mortensen
Wolfgang Walther
Yanliang Lei
Yaoguang Chen
Yogendra Suralkar
YoungHwan Joo
Yugo Nagata
Yukun Wang
Yura Sokolov
Yusuke Egashira
Yuzuko Hosoya
Zhang Mingli
Zhang Wenjie
Zhihong Yu
Zhiyong Wu