リリース日: 2022-10-13
PostgreSQL 15には、以下をはじめとする多数の新機能と拡張が含まれます。
SQLのMERGE
コマンドがサポートされました。
列リストと行フィルタ条件を指定する機能により、論理レプリケーションパブリケーション内でテーブルの内容を選択的にパブリッシュできるようになりました。
Zstandard(zstd)圧縮のサポートを含む、圧縮のオプションが増えました。 これには、pg_basebackup中にサーバ側で圧縮を実行するサポートが含まれます。
JSON形式を使用した構造化サーバログ出力がサポートされました。
特にメモリ内およびディスク上のソートのパフォーマンスが改善しました。
PostgreSQL 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)
.1
や1.
のような数値形式を受け入れ、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()
の結果は、同じシード値であっても、以前のバージョンで生成された結果とは異なります。
libpqのPQsendQuery()
関数はパイプラインモードでサポートされなくなりました。
(Á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)
列の型がローカルデータベースとリモートデータベースで意図的に異なる場合、このようなキャストによってエラーが発生する可能性があります。
xml2のxml_is_well_formed()
関数を廃止しました。
(Tom Lane)
この関数はPostgres 9.1以降、コアバックエンドで実装されています。
カスタムスキャンプロバイダが射影をサポートしているかどうかを示すことができるようになりました。 (Sven Klemm)
デフォルトでは、カスタムスキャンプロバイダは射影をサポートしていないと見なされるようになりました。 射影をサポートしているものは、このリリースで更新する必要があります。
PostgreSQL 15と前メジャーリリースとの詳細な変更点を記載しました。
各データベースの照合順序バージョンを記録し、チェックするようにしました。 (Peter Eisentraut)
この機能は、照合順序バージョンの変更を検出してインデックスの破損を回避するように設計されています。
関数pg_database_collation_actual_version()
は基礎となるオペレーティングシステムの照合順序バージョンを報告し、ALTER DATABASE ... REFRESH
は記録されたデータベースの照合順序バージョンをオペレーティングシステムの照合順序バージョンと一致するように設定しました。
ICU照合順序をクラスタとデータベースのデフォルトとして設定できるようにしました。 (Peter Eisentraut)
以前は、クラスタレベルとデータベースレベルではlibcベースの照合順序のみを選択できました。
ICU照合順序は、明示的なCOLLATE
句によってのみ使用できました。
システムビューpg_ident_file_mappings
をpg_ident.conf
情報報告用に追加しました。
(Julien Rouhaud)
パーティションテーブルを参照する問い合わせのプラン時間を改善しました。 (David Rowley)
この変更は、多数のパーティションのうち数個のパーティションだけが関連する場合に役立ちます。
より多くの場合に、ソートを回避するためのパーティションの順序付きスキャンが可能になりました。 (David Rowley)
以前は、複数の値を含むDEFAULT
パーティションやLIST
パーティションを持つパーティションテーブルは、順序付きパーティションスキャンに使用できませんでした。
これからはこのようなパーティションがプラン時にプルーニングされる場合は使用できるようになります。
パーティション間での行移動を伴うパーティションテーブル更新における外部キーの動作が改善されました。 (Amit Langote)
以前は、このような更新はソースパーティションに対して削除アクションを実行し、ターゲットパーティションに対して挿入アクションを実行していました。 これからはPostgreSQLはパーティションルートに対して更新アクションを実行するようになり、よりクリーンなセマンティクスが提供されます。
パーティションテーブルでCLUSTER
コマンドが実行できるようになりました。
(Justin Pryzby)
すべてのパーティションでトリガの名前を正しく変更できるよう、パーティションテーブルのALTER TRIGGER RENAME
を修正しました。
(Arne Roland, Álvaro Herrera)
また、複製されたトリガの名前変更も禁止されました。
システムテーブルと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インデックスのみ使用できました。
拡張統計が親とそのすべての子の統計を記録できるようにしました。 (Tomas Vondra, Justin Pryzby)
通常の統計情報では、すでに親と親+すべての子の統計情報を個別に追跡しています。
ユーザーが再帰問い合わせのワーキングテーブルの予想サイズを指定できるようサーバパラメータrecursive_worktable_factor
を追加しました。
(Simon Riggs)
多くの定数を持つ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=0
とwal_level=minimal
の場合にのみ有効です。
最も古い凍結されたトランザクションIDとマルチトランザクションIDを設定することで、より積極的なvacuumが実行できるようにしました。 (Peter Geoghegan)
より多くの場合に複数の外部テーブルを参照する問い合わせが並列で外部テーブルスキャンを実行できるようにしました。 (Andrey Lepikhov, Etsuro Fujita)
row_number()
、rank()
、dense_rank()
、count()
を使用するwindow関数の性能が向上しました。
(David Rowley)
コア数の多いARM64システムでのスピンロックの性能が向上しました。 (Geoffrey Blake)
チェックポイントと遅い自動バキューム操作のログをデフォルトで有効にしました。 (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_command
、archive_cleanup_command
、restore_command
、recovery_end_command
を呼び出すときに使用されます。
ビューの呼び出し元の権限によるビューによるテーブルアクセスをオプションで制御できるようにしました。 (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)
以前は、この関数を実行できるのはスーパーユーザだけでした。
割り当てられた共有メモリのサイズを報告するサーバパラメータ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_checksum
、wal_segment_size
、およびdata_directory_mode
は、実行中のサーバでは正確でない値を報告していました。
しかしながら、これらは実行中のサーバでは機能しませんでした。
サーバサイドベースバックアップの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,s2
。
ALTER 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)
パーティションが複数回表示される場合もありました。
あるテーブルを別のテーブルに合わせるSQLのMERGE
コマンドを追加しました。
(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 DATABASE
、DROP TABLESPACE
、ALTER 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)
以前は、ビューまたはルールに、複合型を返す関数の結果内の特定の列への参照が含まれていた場合、それは依存関係として記録されませんでした。 ビューまたはルールは、全体として複合型に依存すると考えられていました。 これは、個々の列の削除が許可され、後でビューまたはルールを使用する際に問題が発生することを意味していました。 また、列レベルの依存関係も記録されるようになったため、ビューが変更または削除されないかぎり、このような列の削除は拒否されます。
数値
の位取りを負にしたり、より精度を大きくすることができるようになりました。
(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をし続けるための自動化された方法が用意されました。
range_agg()
に多重範囲入力を追加しました。
(Paul Jungwirth)
他のリレーショナルシステムと互換性を持たせるための正規表現関数を追加しました。 (Gilles Darold, Tom Lane)
新しい関数は、regexp_count()
、regexp_instr()
、regexp_like()
、regexp_substr()
です。
新しいオプション引数がregexp_replace()
に追加されました。
ポリゴン
間の距離を計算する機能を追加しました。
(Tom Lane)
to_char()
フォーマットコードof
、tzh
、tzm
を追加しました。
(Nitin Jadhav)
これらに対応する大文字はすでにサポートされています。
AT TIME ZONE
をtime 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
として報告していましたが、現在のセッションの一時スキーマ以外にこれを使用すると誤解を招きます。
PL/pgSQLの変数CONSTANT
マーキングの強制を修正しました。
(Tom Lane)
以前は、CONSTANT
とマークされていても、変数はCALL
出力パラメータまたはrefcursorOPEN
変数として使用できました。
IPアドレスとサーバ証明書のサブジェクト代替名とのマッチングができるようになりました。 (Jacob Champion)
PQsslAttribute()
がlibpq接続を必要とせずにSSLライブラリタイプを報告できるようにしました。
(Jacob Champion)
クライアントから送信される問い合わせキャンセルは、通常のクライアント接続と同じTCP設定を使用するように変更しました。 (Jelte Fennema)
これにより、設定されたTCPタイムアウトを問い合わせキャンセル接続に適用できます。
libpqイベントコールバックの失敗によって強制的にエラーが発生しないようにしました。 (Tom Lane)
直列化失敗とデッドロック障害が発生した後、pgbenchが再試行できるようにしました。 (Yugo Nagata, Marina Polyakova)
より大きなチャンクでデータを送信することにより、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_RESULTS
psql変数を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と比較してバージョン固有の調整を必要としないコマンドは引き続き動作します。
pg_dumpがpublic
スキーマ所有権変更とセキュリティラベルをダンプするようにしました。
(Noah Misch)
多数のオブジェクトを持つデータベースのダンプパフォーマンスを改善しました。 (Tom Lane)
これによりpg_upgradeのパフォーマンスも改善されます。
大きなTOASTテーブルを持つテーブルの並列pg_dumpのパフォーマンスを改善しました。 (Tom Lane)
デフォルトのテーブルアクセス方式のみを使用するようにリストアを強制するダンプ/リストアオプション--no-table-access-method
を追加しました。
(Justin Pryzby)
pg_dumpとpg_dumpallのサポートをPostgreSQL 9.2以降を実行するサーバに制限しました。 (Tom Lane)
ベースバックアップの場所を制御するための新しい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)
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)
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
オプションを複数回指定することで、これを有効にできます。
pg_encoding_to_char()
とpg_char_to_encoding()
のドキュメントを追加しました。
(Ian Lawrence Barwick)
^@
で始める演算子をドキュメント化しました。
(Tom Lane)
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はこのメソッドを使用するようになりました。
圧縮方法とオプションを指定する新しいプロトコルメッセージCOMPRESSION
とCOMPRESSION_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)
amcheckがシーケンスをチェックできるようにしました。 (Mark Dilger)
TOASTテーブルのamcheck健全性チェックを改善しました。 (Mark Dilger)
カスタムバックアップターゲットの例として、新しいモジュールbasebackup_to_shellを追加しました。 (Robert Haas)
ライブラリ経由でアーカイブを実行する例として新しいモジュールbasic_archiveを追加しました。 (Nathan Bossart)
ブール型の列でbtree_gistインデックスを使えるようにしました。 (Emre Hasegeli)
これらは排他制約に使用できます。
pageinspectのpage_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)
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
で有効になります。
以下の人々(アルファベット順)はパッチ作者、コミッター、レビューア、テスターあるいは問題の報告者として本リリースに貢献しました。
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 |