リリース日: 2017-10-05
PostgreSQL 10の主な強化点には以下のものがあります。
パブリッシュ/サブスクライブによる論理レプリケーション
宣言的テーブルパーティショニング
改善された並列問い合わせ
著しい全般の性能改善
SCRAM-SHA-256に基づくより強いパスワード認証
改善された監視と制御
上記の項目について以下でより詳細に説明します。
以前のリリースからデータを移行したい時は、どのリリースについても、pg_dumpallを利用したダンプとリストア、あるいはpg_upgradeの使用が必要です。
バージョン10には、以前のバージョンとの互換性に影響する多数の変更点が含まれています。以下の非互換性に注意してください。
以前のPostgreSQLメジャーバージョンからpg_upgradeを行った後に、ハッシュインデックスを再構築しなければなりません。 (Mithun Cy, Robert Haas, Amit Kapila)
大きなハッシュインデックス改良はこれを必要とします。 pg_upgradeは再構築を助けるスクリプトを生成するでしょう。
先行書き込みログ(WAL)のディレクトリpg_xlog
がpg_wal
に改名され、トランザクション状態のディレクトリpg_clog
がpg_xact
に改名されました。
(Michael Paquier)
時々、ユーザがこれらディレクトリには重要でないログファイルだけが含まれると思って、先行書き込みログ(WAL)ファイルやトランザクション状態ファイルの削除を進めて、復旧不能なデータ損失をひき起こすことがありました。 これら改名は今後にこれらの過ちを思いとどまらせることを意図しています。
SQL関数、ツール、および、オプションで「xlog」と言っているものを「wal」と言うように改名しました。 (Robert Haas)
例えば、pg_switch_xlog()
はpg_switch_wal()
になり、pg_receivexlogはpg_receivewalになり、--xlogdir
は--waldir
になります。
これはpg_xlog
ディレクトリ名の変更と一貫性を持たせるためで、全般に「xlog」という用語はあらゆるユーザの目に触れる場所でもはや使われません。
WAL関連の関数とビューでlocation
に替えてlsn
を使うように改名しました。
(David Rowley)
これまでは二つの用語が一貫性なく混在していました。
問い合わせのSELECT
リストに現れる集合を返す関数の実装を変更しました。
(Andres Freund)
これからは集合を返す関数は、それらがLATERAL FROM
句の要素にあるかのように、SELECT
リスト内のスカラ式の評価の前に評価されます。
これは、複数の集合を返す関数がある場合に正常な意味解釈を可能にします。
これらが異なる行数を返す場合、より短い結果はNULLを加えて最も長い結果に一致するように拡張されます。
これまでは、結果はそれらが全て同時に終了するまで回されて、関数の最小公倍数の周期に等しい行数を生み出しました。
加えて、集合を返す関数はこれからはCASE
とCOALESCE
構文の中では使えなくなりました。
詳しくは37.4.8を参照してください。
標準の行生成構文をUPDATE ... SET (
で使えるようにしました。
(Tom Lane)
column_list
) = row_constructor
row_constructor
はキーワードROW
ではじめることができるようになりました。これまでは省略する必要がありました。
また、row_constructor
内に
が生じた場合は、他でのtable_name
.*row_constructor
の使用のように、複数列に展開されるようになります。
ALTER TABLE ... ADD PRIMARY KEY
が列にNOT NULL
を付けるとき、子テーブルにも同様にこの変更が伝播するようにしました。
(Michael Paquier)
文単位のトリガが一つの命令文に対して2回以上駆動されるのを防止しました。 (Tom Lane)
外側の文あるいは他の書き込み可能CTEにより更新された、同テーブルを更新する書き込み可能CTEを伴う場合、BEFORE STATEMENT
またはAFTER STATEMENT
トリガが2回以上駆動されました。
また、外部キーの強制動作(ON DELETE CASCADE
など)の影響を受けるテーブルに文単位トリガがあるとき、外側のSQL文に対して2回以上のトリガ駆動の可能性がありました。
これはSQL標準に反しているため変更しました。
シーケンスのメタデータフィールドを新たなpg_sequence
システムカタログに移動しました。
(Peter Eisentraut)
シーケンスのリレーションはこれからはnextval()
によって変更できるフィールド、すなわち、last_value
、log_cnt
、is_called
だけを格納します。
他の、開始値や増分などのシーケンス属性はpg_sequence
カタログの対応する行に保持されます。
ALTER SEQUENCE
の更新はこれからは完全にトランザクションの一部として扱われ、コミットされるまでのシーケンスのロックを伴います。
nextval()
、setval()
関数はトランザクション制御外のままです。
この変更でもたらされる主な非互換性は、シーケンスリレーションからのSELECTがこれからは上記の3フィールドしか返さないことです。
シーケンスの他の属性を取得するには、アプリケーションはpg_sequence
を調べなければなりません。
既存コードとより互換性のある列名を提供する新たなシステムビューpg_sequences
をこのために使うこともできます。
シーケンスに対するpsqlの\d
コマンドの出力も改訂されました。
pg_basebackupがデフォルトでバックアップをリストアするのに必要とされるWALをストリームするようにしました。 (Magnus Hagander)
これはpg_basebackupの-X
/--xlog-method
のデフォルトをstream
に変えます。
従来の振る舞いを再現するオプション値none
が追加されました。
pg_basebackupのオプション-x
は取り除かれました(代わりに-X fetch
を使ってください)。
論理レプリケーションのpg_hba.conf
の使い方を変更しました。
(Peter Eisentraut)
以前のリリースでは論理レプリケーション接続はデータベース列にreplication
キーワードを必要としていました。
本リリースでは、論理レプリケーションは通常のデータベース名やall
のようなキーワードにマッチします。
物理レプリケーションは引き続きreplication
キーワードを使用します。
組み込みの論理レプリケーションは本リリースでの新機能なので、この変更はサードパーティの論理レプリケーションプラグインのユーザのみに影響があります。
全てのpg_ctlのアクションがデフォルトで完了を待つようにしました。 (Peter Eisentraut)
これまでは一部のpg_ctlのアクションは完了を待たず、そうさせるには-w
を使う必要がありました。
log_directoryサーバパラメータのデフォルト値をpg_log
からlog
変更しました。
(Andreas Karlsson)
カスタムOpenSSL DHパラメータのファイル名を指定する設定オプションssl_dh_params_fileを追加しました。 Heikki Linnakangas)
これはハードコードされていたドキュメント化されていないファイル名dh1024.pem
を置き換えます。
dh1024.pem
はもはやデフォルトでは検査されないことに注意してください。
カスタムDHパラメータを使いたい場合にはこのオプションを指定しなければなりません。
OpenSSLの短期のDH暗号に使われるデフォルトのDHパラメータのサイズを2048ビットに増やしました。 (Heikki Linnakangas)
コンパイルされたDHパラメータのサイズが1024ビットから2048ビットに増やされ、DHキー交換がブルートフォースアタックにより耐性を持ちました。 しかしながら、一部の古いSSL実装、特に一部バージョンのJava Runtime Environmentバージョン6は、1024ビットより大きいDHパラメータを受け付けず、そのためSSLで接続ができません。 このような古いクライアントに対応する必要がある場合には、カスタム1024ビットDHパラメータをコンパイルされたデフォルトの代わりに使うことができます。 ssl_dh_params_fileを参照してください。
暗号化されていないパスワードをサーバに格納できなくしました。 (Heikki Linnakangas)
password_encryptionサーバパラメータでは、もはやoff
やplain
を使用できません。
CREATE/ALTER USER ... PASSSWORD
でのUNENCRYPTED
オプションはもはや使用できません。
同様に、--unencrypted
オプションはcreateuserから除去されました。
古いバージョンから移行した暗号化されないパスワードは、本リリースでは暗号化されて格納されます。
password_encryption
のデフォルト設定は引き続きmd5
です。
並列問い合わせを制御するmin_parallel_table_scan_sizeおよびmin_parallel_index_scan_sizeサーバパラメータを追加しました。
これらはmin_parallel_relation_size
を置き換えます。これでは一般的すぎると認識されました。
shared_preload_librariesと関連するサーバパラメータでクォートされていない文字列を小文字にしないようにしました。 (QL Zhuo)
これらの設定は実際のファイル名のリストですが、これまではSQL識別子のリストのように扱っていました。 これらは異なる解析規則を持ちます。
sql_inheritance
サーバパラメータを取り除きました。
(Robert Haas)
この設定をデフォルト値から変えると、親テーブルを参照する問い合わせが子テーブルを含まなくなります。 SQL標準は含まれることを求めています。 とはいえ、PostgreSQL 7.1以来、これはデフォルトでした。
多次元配列をPL/Python関数に渡せるように、また、入れ子のPythonリストとして返せるようにしました。 (Alexey Grishchenko, Dave Cramer, Heikki Linnakangas)
この機能は記述による複合値配列の扱いに後方非互換な変更を必要とします。
例えば[[col1, col2], [col1, col2]]
は今後は2次元配列として解釈されます。
配列中の複合型は曖昧さを解決するため今後はリストではなくPythonタプルとして記述しなければなりません。
すなわち、代替に[(col1, col2), (col1, col2)]
と書いてください。
PL/Tclの「モジュール」自動ロード機能を除去しました。 (Tom Lane)
この機能は、より使いやすく他のPLで利用可能な機能に似た、新たなサーバパラメータpltcl.start_procとpltclu.start_procで置き換えられました。
pg_dump/pg_dumpallから8.0より前のサーバからのダンプの対応を除去しました。 (Tom Lane)
8.0より前のサーバからダンプをとる必要のあるユーザは、PostgreSQL 9.6 かそれ以前のダンププログラムを使う必要があります。 結果として生じる出力は、今までどおりより新しいサーバに問題なく読み込みできるはずです。
浮動小数点のタイムスタンプとインターバル(時間)の対応を除去しました。 (Tom Lane)
configureの--disable-integer-datetimes
オプションが除去されます。
浮動小数点のタイムスタンプは僅かしか優位点が無く、PostgreSQL 8.3からデフォルトではなくなっていました。
クライアントサーバプロトコルバージョン1.0のサーバの対応が除去されました。 (Tom Lane)
このプロトコルのクライアントの対応はPostgreSQL 6.3からありませんでした。
contrib/tsearch2
モジュールを除きました。
(Robert Haas)
このモジュールは、8.3より前のPostgreSQLリリースで用意されたバージョンの全文検索との互換性を提供していました。
コマンドラインアプリケーションのcreatelangとdroplangを取り除きました。 (Peter Eisentraut)
これらはPostgreSQL 9.1.から非推奨となっていました。
代わりに直接CREATE EXTENSION
とDROP EXTENSION
を使ってください。
バージョン0の関数呼び出し方式の対応を取り除きました。 (Andres Freund)
C言語関数を提供する拡張は、これからはバージョン1の呼び出し方式を受け入れなければなりません。 バージョン0は2001年から非推奨となっていました。
以下にPostgreSQL 10と前のメジャーリリースとの詳細な変更点を記載します。
並列のB-treeインデックススキャンに対応しました。 (Rahila Syed, Amit Kapila, Robert Haas, Rafia Sabih)
この変更でB-treeインデックスページを各パラレルワーカから検索できるようになりました。
並列のビットマップヒープスキャンに対応しました。 (Dilip Kumar)
これにより一つのインデックススキャンを各パラレルワーカにヒープの異なる部分を処理するように割り当てできるようになりました。
マージ結合を並列に実行できるようにしました。 (Dilip Kumar)
関連しない副問い合わせを並列に実行できるようにしました。 (Amit Kapila)
あらかじめソートされたデータを返せるようにパラレルワーカを改良しました。 (Rushabh Lathia)
手続き言語関数において並列問い合わせの使用を増やしました。 (Robert Haas, Rafia Sabih)
並列問い合わせに使うことができるワーカプロセス数を制限するmax_parallel_workersサーバパラメータを追加しました。 (Julien Rouhaud)
並列問い合わせ以外にワーカプロセスを確保するために、このパラメータをmax_worker_processesよりも小さく設定できます。
max_parallel_workers_per_gatherのデフォルト値を2
に変更することでデフォルトでパラレルクエリを使えるようにしました。
ログ先行書き込み(WAL)にハッシュインデックス対応を加えました。 (Amit Kapila)
これはハッシュインデックスをクラッシュセーフかつレプリケーション可能にします。 これまでのこれらの使用に関する警告は取り除かれました。
ハッシュインデックスの性能を改善しました。 (Amit Kapila, Mithun Cy, Ashutosh Sharma)
INET
、CIDR
データ型に対してSP-GiSTインデックス対応を追加しました。
(Emre Hasegeli)
BRINインデックスの要約をより積極的に行うオプションを追加しました。 (Álvaro Herrera)
新たなCREATE INDEX
のオプションは新たなページ範囲が作られたときに以前のBRINページ範囲の自動要約を可能にします。
BRINインデックス範囲のBRIN要約を削除し、再び加える関数を追加しました。 (Álvaro Herrera)
新たなSQL関数brin_summarize_range()
は指定された範囲のBRINインデックス要約を更新し、brin_desummarize_range()
はそれを削除します。
これはUPDATE
とDELETE
のために今やより小さくなった範囲の要約を更新するのに役立ちます。
BRINインデックススキャンが有益かどうかの判断の精度を改善しました。 (David Rowley, Emre Hasegeli)
インデックス空間をより効率的に再利用することで、より速いGiSTの挿入と更新を可能にしました。 (Andrey Borodin)
GINインデックスのバキュームの間のページロック取得を減らしました。 (Andrey Borodin)
テーブルパラメータを変更するのに求められるロック取得を減らしました。 (Simon Riggs, Fabrízio Mello)
例えば、テーブルのeffective_io_concurrency設定の変更がより軽量なロックで可能になりました。
述語ロックの昇格閾値を調整できるようにしました。 (Dagfinn Ilmari Mannsåker)
ロック昇格が二つの新たなサーバパラメータmax_pred_locks_per_relation、max_pred_locks_per_pageを通して制御できるようになりました。
相関率と、異なる値の数を計算するための複数列オプティマイザ統計を追加しました。 (Tomas Vondra, David Rowley, Álvaro Herrera)
新たなコマンドはcreate statistics
、alter statistics
、DROP STATISTICS
です。
この機能は問い合わせのメモリ使用を見積りするのと、別々の列の統計を結びつけるときに役立ちます。
行単位セキュリティの影響を受ける問い合わせの性能を改善しました。 (Tom Lane)
オプティマイザはRLSフィルタ条件を置けるところでより多くの知識をもつようになり、RLS条件を強制しても安全なとき、より良いプラン生成が可能になりました。
numeric
型の計算を使った合計を計算する集約関数を高速化しました。
SUM()
、AVG()
、およびSTDDEV()
のいくつかの別形が含まれます。
(Heikki Linnakangas)
基数木を使うことにより文字エンコーディング変換の性能を改善しました。 (Kyotaro Horiguchi, Heikki Linnakangas)
プランノード呼び出しオーバーヘッドと同様に、問い合わせ実行時の式評価のオーバーヘッドを削減しました。 (Andres Freund)
これは特に多数の行を処理する問い合わせに役立ちます。
グループ化セットでハッシュ集約を使えるようにしました。 (Andrew Gierth)
いくつかの結合タイプの最適化でユニーク保証を使うようにしました。 (David Rowley)
macaddr
データ型のソート性能を改善しました。
(Brandur Leach)
何千ものリレーションを参照するセッションでの統計観測のオーバヘッドを軽減しました。 (Aleksander Alekseev)
プラン作成と実行の時間のEXPLAIN
における表示について明示的な制御を可能にしました。
(Ashutosh Bapat)
デフォルトではプラン作成と実行の時間はEXPLAIN ANALYZE
では表示され、他の場合には表示されません。
新たなEXPLAIN
オプションのSUMMARY
はこれについて明示的な制御ができます。
デフォルト監視ロールを追加しました。 (Dave Page)
新たなロールpg_monitor
、pg_read_all_settings
、pg_read_all_stats
、および、pg_stat_scan_tables
で権限設定を単純化できます。
REFRESH MATERIALIZED VIEW
の際に統計コレクタを適切に更新するようにしました。
(Jim Mlodgenski)
log_line_prefixのデフォルト値をpostmasterログ出力の各行に現在タイムスタンプ(ミリ秒を含む)とプロセスIDを含むように変更しました。 (Christoph Berg)
以前のデフォルトは空のプレフィックスでした。
ログおよびWALのディレクトリ内容を返す関数を追加しました。 (Dave Page)
新たな関数pg_ls_logdir()
およびpg_ls_waldir()
は適切な権限があれば非スーパーユーザで実行できます。
ログコレクタの現在のstderrとcsvlog出力のファイル名を読み取る関数pg_current_logfile()
を追加しました。
(Gilles Darold)
postmaster起動時のサーバログで各待ち受けソケットについてアドレスとポート番号を報告するようにしました。 (Tom Lane)
また、待ち受けソケットのバインド失敗がログ出力されるとき、バインドを試みた特定アドレスがログに含まれるようになります。
ランチャーサブプロセスの開始と停止についてログのおしゃべりを削減しました。 (Tom Lane)
これらはDEBUG1
レベルのメッセージになりました。
log_min_messagesで制御される小さい数のデバッグレベルでのメッセージの冗長度を減らしました。 (Robert Haas)
client_min_messagesのデバッグレベルにおいても冗長度を変更しました。
pg_stat_activity
pg_stat_activity
に低レベル待機状態の報告を加えました。
(Michael Paquier, Robert Haas, Rushabh Lathia)
この変更で、多数の低レベル待機状態の報告が可能になりました。 ラッチ待機、ファイルの読み/書き/同期、クライアントの読み/書き、および、同期レプリケーションが含まれます。
pg_stat_activity
で補助プロセス、バックグラウンドワーカ、およびwalsenderプロセスを表示するようにしました。
(Kuntal Ghosh, Michael Paquier)
これは監視を簡単にします。
新たな列backend_type
がプロセスタイプを識別します。
pg_stat_activity
でパラレルワーカで実行されているSQL問い合わせを見ることができるようにしました。
(Rafia Sabih)
pg_stat_activity
.wait_event_type
の値のLWLockTranche
とLWLockNamed
をLWLock
に改名しました。
(Robert Haas)
これは出力をより一貫したものにします。
パスワードの折衝と格納にSCRAM-SHA-256の対応を追加しました。 (Michael Paquier, Heikki Linnakangas)
これは既存のmd5
による折衝と格納の方式よりも良いセキュリティを提供します。
password_encryptionサーバパラメータをboolean
からenum
に変更しました。
(Michael Paquier)
これは追加的なパスワードハッシュオプションに対応するのに必要でした。
pg_hba.conf
の内容を表示するビューpg_hba_file_rules
を追加しました。
(Haribabu Kommi)
これは現在の動的な設定ではなくファイル内容を表示します。
複数RADIUSサーバに対応しました。 (Magnus Hagander)
全てのRADIUS関連のパラメータは今や複数であり、サーバのカンマ区切りリストに対応しています。
SSL設定を設定リロード時に更新できるようにしました。 (Andreas Karlsson, Tom Lane)
これによりSSLの再設定が、pg_ctl reload
やSELECT pg_reload_conf()
、SIGHUP
シグナルの送信を行うことで、サーバ再起動なしに可能となります。
しかしながら、SSL設定のリロードは、サーバのSSLキーがパスフレーズを必要とする場合、パスフレーズのプロンプトを再度出す手段が無いので、動作しません。
この場合、postmasterが生きている間、元の設定が適用されます。
bgwriter_lru_maxpagesの最大値を事実上無制限にしました。 (Jim Nasby)
ファイルを作成または削除(unlink)した後に、その親ディレクトリにfsyncを実行するようにしました。 (Michael Paquier)
これは電源障害後のデータ損失のリスクを削減します。
不要なチェックポイントとWALアーカイブを、これら処理がなければアイドル状態のシステムにおいて防止しました。 (Michael Paquier)
WALに詳細情報を追加するwal_consistency_checkingサーバパラメータを追加しました。 これはスタンバイサーバで正常性チェックを可能にします。 (Kuntal Ghosh, Robert Haas)
あらゆる正常性チェック失敗はスタンバイ上で致命的エラーをひき起こします。
設定可能な最大WALセグメントサイズを1GBに増やしました。 (Beena Emerson)
より大きいWALセグメントサイズはより少ないarchive_commandの起動とより少ないWALファイル制御を可能にします。
スタンバイサーバにテーブルを論理レプリケートする機能を追加しました。 (Petr Jelinek)
論理レプリケーションは、異なるPostgreSQLメジャーバージョン間でのレプリケーションや選択的レプリケーションを含め、物理レプリケーションよりも柔軟に構成できます。
synchronous_standby_namesでの出現順序にかかわりなくスタンバイサーバからのコミット承認を待てるようになりました。 (Masahiko Sawada)
これまではサーバは常にsynchronous_standby_names
の先頭に現れるアクティブなスタンバイを待機しました。
新たなsynchronous_standby_names
キーワードANY
は、順序にかかわりなく任意の数のスタンバイを待つことを可能にします。
これはクォーラムコミットとして知られています。
ストリーミングでのバックアップとレプリケーションに必要な設定変更を削減しました。 (Magnus Hagander, Dang Minh Huong)
具体的には、wal_level、max_wal_senders、max_replication_slots、および、hot_standbyについてデフォルトがこれらを即座に使うのに適するように変更されました。
pg_hba.conf
のデフォルトでローカルホスト接続からのレプリケーションを利用可能にしました。
(Michael Paquier)
これまではpg_hba.conf
のレプリケーション接続の行はデフォルトではコメントアウトされていました。
これは特にpg_basebackupに有益です。
レプリケーション遅延時間を報告するようにpg_stat_replication
に列を追加しました。
(Thomas Munro)
新たな列はwrite_lag
、flush_lag
、および、replay_lag
です。
recovery.conf
でリカバリ停止点をログシーケンス番号(LSN)で指定できるようにしました。
(Michael Paquier)
これまでは停止点はタイムスタンプかXIDでしか選択できませんでした。
pg_stop_backup()
が全てのWALがアーカイブされるのを待機するのを無効にできるようにしました。
(David Steele)
pg_stop_backup()
のオプションの第2引数でこの振る舞いを制御します。
一時レプリケーションスロットを作成できるようにしました。 (Petr Jelinek)
一時スロットはセッション終了またはエラーで自動的に削除されます。
Access Exclusiveロックのより良い追跡で、ホットスタンバイのリプレイの性能を改善しました。 (Simon Riggs, David Rowley)
2相コミットのリカバリ性能を高速化しました。 (Stas Kelvich, Nikhil Sontakke, Michael Paquier)
XML
整形されたデータを行の集合に変換するXMLTABLE
関数を追加しました。
(Pavel Stehule, Álvaro Herrera)
正規表現の大きい文字コード、特にU+7FF
以上のユニコード文字を扱う文字クラスを修正しました。
(Tom Lane)
これまでは、このような文字は[[:alpha:]]
などのロケール依存文字クラスに属するものとして決して認識されませんでした。
自動的にパーティション制約を作り、タプルの挿入と更新の振り分けを行う、テーブルパーティショニング構文を追加しました。 (Amit Langote)
この構文は範囲パーティショニングとリストパーティショニングに対応します。
AFTER
トリガに行の変更を記録する遷移テーブルを追加しました。
(Kevin Grittner, Thomas Munro)
遷移テーブルはサーバサイド言語で書かれたトリガからアクセスできます。
制限的な行単位セキュリティポリシーを可能にしました。 (Stephen Frost)
これまでは全てのセキュリティポリシーは許容的で、マッチする任意のポリシーはアクセスを許すことを意味しました。 制限的ポリシーは許可されたアクセスにマッチしなければなりません。 これらのポリシータイプを組み合わせることができます。
外部キー制約を作るとき、REFERENCES
権限のチェックを被参照テーブルだけ行うようにしました。
(Tom Lane)
これまでは参照するテーブルのREFERENCES
権限も必要でした。
これはSQL標準の誤読から生じました。
外部キー(あるいは何らか他のタイプの)制約を作るには、制約されるテーブルに所有権が必要で、加えてREFERENCES
権限が必要というのはあまり意味がありません。
スキーマのデフォルトのアクセス権限を設定可能にしました。 (Matheus Oliveira)
これはALTER DEFAULT PRIVILEGES
コマンドを使って行われます。
ある整数データ型に一致するシーケンスを作るCREATE SEQUENCE AS
コマンドを追加しました。
(Peter Eisentraut)
これは基となる列の範囲に一致するシーケンスの作成を簡単にします。
INSTEAD INSERT
トリガを持つビューに対するCOPY
をできるようにしました。
(Haribabu Kommi)
view
FROM source
このトリガにはCOPY
で読み取られたデータ行が与えられます。
唯一であるならDDLコマンドで引数無しに関数名の指定を可能にしました。 (Peter Eisentraut)
例えば、その名前をもつ関数が一つだけしかないなら、引数なしで関数名だけのDROP FUNCTION
が可能です。
この振る舞いはSQL標準で必要とされています。
複数の関数、演算子、および集約を一つのDROP
コマンドで削除できるようにしました。
(Peter Eisentraut)
create server
、create user mapping
、および、CREATE COLLATION
で、IF NOT EXISTS
に対応しました。
(Anastasia Lubennikova, Peter Eisentraut)
VACUUM VERBOSE
がスキップした凍結されたページの数と最も古いxminを報告するようにしました。
(Masahiko Sawada, Simon Riggs)
この情報はlog_autovacuum_min_durationの出力にも含まれます。
VACUUM
が末尾の空ヒープページを除去する速度を改善しました。
(Claudio Freire, Álvaro Herrera)
テキスト検索のJSON
とJSONB
への対応を追加しました。
(Dmitry Dolgov)
関数ts_headline()
とto_tsvector()
がこれらのデータ型に対して使用できるようになりました。
新たなデータ型macaddr8
として
EUI-64 MACアドレスの対応が追加されました。
(Haribabu Kommi)
これは既存のEUI-48 MACアドレス対応(macaddr
型)を補完します。
挿入する列に数値を割り当てるための識別列を追加しました。
これはSERIAL
列と似ていますが、SQL標準準拠です。
ENUM
の値を改名できるようにしました。
(Dagfinn Ilmari Mannsåker)
これは構文ALTER TYPE ... RENAME VALUE
を使用します。
配列の擬似型(anyarray
)をto_json()
とto_jsonb()
で配列として適切に扱うようにしました。
(Andrew Dunstan)
これまではanyarray
として宣言された列(特にpg_stats
ビューの内のもの)が配列でなくJSON
文字列に変換されていました。
money
値とint8
値の積と除算の演算子を追加しました。
(Peter Eisentraut)
これまではこのような場合、結果としてint8
の値がfloat8
に変換されて、money
とfloat8
の演算子が使われていました。
新たな振る舞いは起こりうる精度損失を回避します。
しかし、money
のint8
での除算は、他の整数除算の場合のように商を切り捨てするようになったことに注意してください。
一方、従来の振る舞いでは丸めていました。
money
型の入力関数でオーバーフローの検査をするようにしました。
(Peter Eisentraut)
簡易化したregexp_match()
関数を追加しました。
(Emre Hasegeli)
これはregexp_matches()
と似ていますが、最初のマッチからの結果だけを返すので集合を返す必要がなく、単純な場合により簡単に使えるようになりました。
jsonb
の削除演算子の、削除するキー配列を取る版を追加しました。
(Magnus Hagander)
json_populate_record()
と関連する関数がJSONの配列とオブジェクトを再帰的に処理するようにしました。
(Nikita Glukhov)
この変更で、あて先のSQL型の配列型フィールドが適切にJSON配列から変換され、複合型フィールドは適切にJSONオブジェクトから変換されます。
これまでこのような場合は、JSON値のテキスト表現がarray_in()
またはrecord_in()
に与えられて、その構文が入力関数の期待と一致しないために、失敗していました。
現在のトランザクションIDを、トランザクションIDが割り当てされていないときにはNULL
を返す関数txid_current_if_assigned()
を追加しました。
(Craig Ringer)
txid_current()
は、必要なら一つを割り当てて、常にトランザクションIDを返す点が本関数と異なります。
本関数は、txid_current()
と違い、スタンバイサーバでも実行できます。
あるトランザクションがコミットされたかどうかチェックする関数txid_status()
を追加しました。
(Craig Ringer)
これは突発切断後の、前トランザクションはコミット済で応答を受け取れなかっただけであるかどうかの検査に有益です。
make_date()
がマイナス年をBC年と解釈できるようにしました。
(Álvaro Herrera)
to_timestamp()
とto_date()
が範囲外の入力フィールドを拒否するようにしました。
(Artur Zakirov)
例えば、これまではto_date('2009-06-40','YYYY-MM-DD')
は受け入れられて2009-07-10
を返しました。
これからはエラーが生じます。
PL/Pythonのcursor()
関数とexecute()
関数をそれらのプランオブジェクト引数のメソッドとして呼べるようにしました。
(Peter Eisentraut)
よりオブジェクト指向プログラミング的なスタイルが可能になります。
PL/pgSQLのGET DIAGNOSTICS
文が配列要素に値を取り込めるようにしました。
(Tom Lane)
これまでは、構文上の制限であて先の変数を配列要素にすることが妨げられていました。
PL/Tcl関数が複合型と集合を返せるようにしました。 (Karl Lehenbauer)
PL/Tclにサブトランザクションコマンドを追加しました。 (Victor Wagner)
これによりPL/Tclの問い合わせが関数全体の中断なしに失敗できるようになります。
サーバパラメータpltcl.start_proc、pltclu.start_procを追加しました。 PL/Tcl開始に際して初期化関数が呼ばれるようにできます。 (Tom Lane)
libpqの接続文字列とURIで複数のホスト名またはアドレスの指定を可能にしました。 (Robert Haas, Heikki Linnakangas)
libpqはリスト中の最初の応答するサーバに接続します。
libpq接続文字列とURIが読み/書きホストを要求できるようにしました。 これはスタンバイサーバでなくマスタサーバです。 (Victor Wagner, Mithun Cy)
これは複数ホスト名が指定されたときに便利です。
これはlibpqの接続パラメータtarget_session_attrs
で制御します。
パスワードファイル名をlibpqの接続パラメータとして指定できるようにしました。 (Julian Markwort)
これまでは環境変数を通してのみ指定できました。
クライアント側でより多くの暗号化パスワードタイプを作ることができる、関数PQencryptPasswordConn()
を追加しました。
(Michael Paquier, Heikki Linnakangas)
これまではMD5
で暗号化されたパスワードのみがPQencryptPassword()
を使って作成できました。
新たな関数はSCRAM-SHA-256
で暗号化されたパスワードも作成できます。
ecpgプリプロセッサバージョンを4.12から10に変更しました。 (Tom Lane)
今後はecpgバージョンをPostgreSQL配布バージョン番号と一致させます。
psqlが条件分岐に対応しました。 (Corey Huinker)
この機能はpsqlにメタコマンド\if
、\elif
、\else
、\endif
を加えます。
主としてスクリプト作成に役立ちます。
psqlに\gx
メタコマンドを追加しました。
これは拡張モード(\x
)で問い合わせを実行(\g
)します。
(Christoph Berg)
psqlの変数参照をバッククォート実行の文字列で拡張しました。 (Tom Lane)
これは特に新たなpsqlの条件分岐コマンドにおいて役立ちます。
psqlの特別変数が不正な値に設定されるのを防止しました。 (Daniel Vérité, Tom Lane)
これまでは、psql特別変数を不正な値に設定すると、何も言われず結果としてデフォルトの振る舞いになりました。
特別変数に対する\set
は、これからは指定された新たな値が無効であったときエラーになります。
特例として、真偽値を持つ特別変数に対する空または省略された新たな値での\set
は、まだ値をon
に設定した効果を持ちますが、これからは空文字でなくその値を実際に得ます。
特別変数に対する\unset
は、これからは明示的に値をそのデフォルト値に設定します。
このデフォルト値は起動時に得る値でもあります。
要するに、制御変数は常にpsqlが実際にどうであるかを示す表示できる値を持つようになります。
サーババージョンとpsqlバージョンを表示する変数を追加しました。 (Fabien Coelho)
psqlの\d
(リレーションを表示)と\dD
(ドメインを表示)コマンドを照合順序、NULL可能か、および、個々の列のデフォルト属性を表示するように改良しました。
(Peter Eisentraut)
これまではこれらは一つの「Modifiers」列の中に示されていました。
\d
コマンドをマッチするオブジェクトが無い場合により一貫性のある処理をするようにしました。
(Daniel Gustafsson)
これからは全てのメッセージをstdoutでなくstderrに出力するようになり、メッセージの文言がより一貫性をもったものになります。
psqlのタブ補完を改良しました。 (Jeff Janes, Ian Barwick, Andreas Karlsson, Sehrope Sarkuni, Thomas Munro, Kevin Grittner, Dagfinn Ilmari Mannsåker)
pgbenchにログファイルのプレフィックスを制御するオプション--log-prefix
を追加しました。
(Masahiko Sawada)
pgbenchのメタコマンドが複数行にわたることを可能にしました。 (Fabien Coelho)
メタコマンドはこれからはバックスラッシュと改行で次行に継続できます。
-M
オプションの、他のコマンドラインオプションと関連する位置の制限を取り除きました。
(Tom Lane)
pg_receivewalの圧縮を指定するオプション-Z
/--compress
を追加しました。
(Michael Paquier)
pg_recvlogicalに終了点を指定するオプション--endpos
を追加しました。
元々--startpos
オプションだけ在ったものを補完します。
initdbのオプション--noclean
、--nosync
を--no-clean
、--no-sync
と綴るように改名しました。
(Vik Fearing, Peter Eisentraut)
従来の綴りにも未だ対応します。
pg_restoreがスキーマを除外できるようにしました。 (Michael Banck)
新たに-N
/--exclude-schema
オプションが追加されます。
pg_dumpに--no-blobs
オプションを追加しました。
(Guillaume Lelarge)
これはラージオブジェクトのダンプを抑止します。
pg_dumpallに、ロールのパスワードを無視するオプション--no-role-passwords
を追加しました。
(Robins Tharakan, Simon Riggs)
これにより非スーパーユーザからpg_dumpallが使用できます。 本オプションが無いとパスワードが読めないためにエラーになります。
スタンバイサーバからのダンプでの同期スナップショットの使用に対応しました。 (Petr Jelinek)
pg_dumpとpg_dumpallで生成された出力ファイルに対してfsync()
を発行するようにしました。
(Michael Paquier)
これは、プログラム終了前に出力が安全にディスク上に格納されるという、より良い安全性を提供します。
この動作は新たな--no-sync
オプションで無効にできます。
pg_basebackupをtarモードで先行書き込みログ(WAL)のストリーミングができるようにしました。 (Magnus Hagander)
WALはベースバックアップとは別のtarファイルに格納されます。
pg_basebackupが一時レプリケーションスロットを使うようにしました。 (Magnus Hagander)
pg_basebackupがデフォルトオプションでWALストリーミングを使うとき、一時レプリケーションスロットはデフォルトで使われます。
pg_basebackupとpg_receivewalで必要とされる場所でのfsync実行についてより注意深くしました。 (Michael Paquier)
pg_basebackupにfsyncを無効にするオプション--no-sync
を追加しました。
(Michael Paquier)
pg_basebackupのどのディレクトリを飛ばすかの制御を改良しました。 (David Steele)
pg_ctlの昇格操作むけ待機オプションを追加しました。 (Peter Eisentraut)
pg_ctlの待機(--wait
)、待機無し(--no-wait
)のロングオプションを追加しました。
(Vik Fearing)
pg_ctlサーバオプションのロングオプション(--options
)を追加しました。
(Peter Eisentraut)
pg_ctl start --wait
が接続を試みるのではなく、postmaster.pid
を監視してサーバの準備完了を検出するようにしました。
(Tom Lane)
postmasterはその接続受付状態をpostmaster.pid
で報告するように変更されています。
そして、pg_ctlはそのファイルを調べて起動が完了したかを検出します。
これは従来の方法よりも効率的で信頼でき、postmasterログから起動中の拒否された接続試行のログ項目を除去できます。
postmasterの起動/停止を待機するときのpg_ctlの応答時間を削減しました。 (Tom Lane)
pg_ctlはpostmasterの状態変更を待つときに、これからは1秒に1回ではなく1秒あたり10回検査します。
待たされている操作がタイムアウト内に完了しなかった場合、pg_ctlが非ゼロステータスで終了することを保証しました。 (Peter Eisentraut)
start
、promote
操作は、このような場合に終了ステータスに0でなく1を返すようになりました。
stop
操作は常にそのようになっていました。
二要素のリリースバージョン番号に変更しました。 (Peter Eisentraut, Tom Lane)
リリース番号はこれからは三要素(例えば9.6.3
)でなく二要素になります(例えば、10.1
)。
メジャーバージョンは一番目の数だけが増え、マイナーリリースは二番目に数だけが増えます。
リリースブランチは単一の数で参照されます(例えば9.6
でなく10
)。
この変更は何がPostgreSQLのメジャーリリースあるいはマイナーリリースなのかについてのユーザの混乱を減らすことを意図しています。
pgindentの振る舞いを改良しました。 (Piotr Stefaniak, Tom Lane)
私たちはFreeBSDプロジェクトによる最近の改良に基づくpg_bsd_indentの新バージョンに切り替えました。 これはおかしなCコード整形の判断をする多数の小さなバグを修正します。 最も特記すべきは、たとえ結果としてコードが右端を超えて延びても、(複数行の関数呼び出しのような)括弧内の複数行が開き丸括弧でインデントが揃えられるようになったことです。
ICUライブラリが照合順序の対応にオプションで使用できるようにしました。 (Peter Eisentraut)
ICUライブラリはバージョン間での照合順序の変更がわかるバージョン付けをしています。
これはconfigureオプション--with-icu
で有効にできます。
デフォルトでは未だオペレーティングシステム固有の照合順序ライブラリを使います。
Windows上で自動的に全てのPG_FUNCTION_INFO_V1
関数をDLLEXPORT
されたものと印付けするようにしました。
(Laurenz Albe)
サードパーティコードでextern
関数宣言を使っている場合、
DLLEXPORT
マーカーをそれらの宣言に加える必要があります。
SPI関数のSPI_push()
、SPI_pop()
、SPI_push_conditional()
、SPI_pop_conditional()
、SPI_restore_connection()
は必要ないので除去しました。
(Tom Lane)
これら関数の機能はこれからは自動的に行われます。 外部モジュールが直ちにアップデートを必要としないように、これら関数はその名前の何もしないマクロとなりますが、最終的にはこれらの呼び出しは取り除かれます。
本変更の副作用は、SPI_palloc()
と付随する関数がこれからはアクティブなSPI接続を必要とすることです。接続が無い場合、これからは単純なpalloc()
に縮退しません。
従来の振る舞いは必ずしも便利ではなく予期せぬメモリリークの危険性が生じました。
共有メモリを動的に割り当てできるようにしました。 (Thomas Munro, Robert Haas)
効果的な固定サイズ割り当てのためにスラブのようなメモリアロケータを追加しました。 (Tomas Vondra)
LinuxとFreeBSDにおいてSysVセマフォではなくPOSIXセマフォを使用するようにしました。 (Tom Lane)
これはプラットフォームで指定するSysVセマフォ使用量の制限を回避します。
64ビットでの原子性の対応を改善しました。 (Andres Freund)
ARM64上での64ビットの原子的操作を有効にしました。 (Roman Shaposhnik)
可能であれば遅延の計測にclock_gettime()
を使うように切り替えました。
(Tom Lane)
clock_gettime()
が使えないときにgettimeofday()
もまだ使われます。
暗号による保護の用途で使われるより頑健な乱数生成器を加えました。 (Magnus Hagander, Michael Paquier, Heikki Linnakangas)
強くない乱数生成器が見つかると、configureは--disable-strong-random
が指定されていない限り、失敗します。
しかしながら、このオプション付きですと強いランダム生成器を必要とするpgcrypto関数は使用できません。
WaitLatchOrSocket()
がWindowsでソケット接続を待つことができるようにしました。
(Andres Freund)
tupconvert.c
の関数はもはやタプルを単にそれらの中に異なる複合型のOIDを組み込むようには変換しません。
(Ashutosh Bapat, Tom Lane)
多数派の呼び出し元は複合型OIDについて考慮しませんが、結果タプルが複合Datumとして使われる場合、正しいIDがその中に挿入されるのを確かめる手順であるべきです。
SCOとUnixwareの移植を除きました。 (Tom Lane)
文書のビルド手順を全面的に書き換えしました。 (Alexander Lakhin)
PostgreSQL文書をビルドするのにXSLTを使用するようにしました。 (Peter Eisentraut)
これまではJade、DSSSLおよびJadeTexが使われていました。
デフォルトでXSLTのスタイルシートを使ってHTML文書をビルドするようにしました。 (Peter Eisentraut)
file_fdwがファイル同様にプログラム出力から読み取りできるようにしました。 (Corey Huinker, Adam Gomaa)
postgres_fdwで、可能であれば集約関数をリモートサーバにプッシュするようにしました。 (Jeevan Chalke, Ashutosh Bapat)
これはリモートサーバから渡されなければならないデータ量を減らし、集約計算の負担を要求元サーバから取り除きます。
postgres_fdwで、より多くの場合に結合をリモートサーバにプッシュするようにしました。 (David Rowley, Ashutosh Bapat, Etsuro Fujita)
postgres_fdwテーブルのOID
列に適切に対応しました。
(Etsuro Fujita)
これまではOID
列は常にゼロを返しました。
btree_gistとbtree_ginでenum型のインデックスを可能にしました。 (Andrew Dunstan)
これによりenumが排他制約に使用可能になります。
UUID
データ型に対するbtree_gistインデックスの対応を追加しました。
(Paul Jungwirth)
B-treeインデックスの妥当性を検査できるamcheckを追加しました。 (Peter Geoghegan)
pg_stat_statementsで無視された内容を?
ではなく$N
と表示するようにしました。
(Lukas Fittl)
cubeのゼロ次元キューブの扱いを改善しました。 (Tom Lane)
また、infinite
値とNaN
値の扱いも改善しました。
pg_buffercacheをより少ないロックで実行可能にしました。 (Ivan Kartyshov)
これにより実稼動システムで実行するときの混乱を減らします。
pgstattupleにハッシュインデックスの統計情報を参照する関数pgstathashindex()
を追加しました。
(Ashutosh Sharma)
pgstattuple関数の使用を制御するのにGRANT
で権限を与えるようにしました。(Stephen Frost)
データベース管理者がこれらの関数を非スーパーユーザで実行可能にできるようにしました。
pgstattupleがハッシュインデックスを調べるときのロック取得を軽減しました。 (Amit Kapila)
pageinspectにページのチェックサムを表示する関数page_checksum()
を追加しました。
(Tomas Vondra)
pageinspectにページイメージからページ要素を出力する関数bt_page_items()
を追加しました。
(Tomas Vondra)
pageinspectにハッシュインデックス対応を追加しました。 (Jesper Pedersen, Ashutosh Sharma)
以下の人々(アルファベット順)はパッチ作者、コミッター、レビューア、テスターあるいは問題の報告者として本リリースに貢献しました。
Adam Brightwell |
Adam Brusselback |
Adam Gomaa |
Adam Sah |
Adrian Klaver |
Aidan Van Dyk |
Aleksander Alekseev |
Alexander Korotkov |
Alexander Lakhin |
Alexander Sosna |
Alexey Bashtanov |
Alexey Grishchenko |
Alexey Isayko |
Álvaro Hernández Tortosa |
Álvaro Herrera |
Amit Kapila |
Amit Khandekar |
Amit Langote |
Amul Sul |
Anastasia Lubennikova |
Andreas Joseph Krogh |
Andreas Karlsson |
Andreas Scherbaum |
Andreas Seltenreich |
Andres Freund |
Andrew Dunstan |
Andrew Gierth |
Andrew Wheelwright |
Andrey Borodin |
Andrey Lizenko |
Andy Abelisto |
Antonin Houska |
Ants Aasma |
Arjen Nienhuis |
Arseny Sher |
Artur Zakirov |
Ashutosh Bapat |
Ashutosh Sharma |
Ashwin Agrawal |
Atsushi Torikoshi |
Ayumi Ishii |
Basil Bourque |
Beena Emerson |
Ben de Graaff |
Benedikt Grundmann |
Bernd Helmle |
Brad DeJong |
Brandur Leach |
Breen Hagan |
Bruce Momjian |
Bruno Wolff III |
Catalin Iacob |
Chapman Flack |
Chen Huajun |
Choi Doo-Won |
Chris Bandy |
Chris Richards |
Chris Ruprecht |
Christian Ullrich |
Christoph Berg |
Chuanting Wang |
Claudio Freire |
Clinton Adams |
Const Zhang |
Constantin Pan |
Corey Huinker |
Craig Ringer |
Cynthia Shang |
Dagfinn Ilmari Mannsåker |
Daisuke Higuchi |
Damian Quiroga |
Dan Wood |
Dang Minh Huong |
Daniel Gustafsson |
Daniel Vérité |
Daniel Westermann |
Daniele Varrazzo |
Danylo Hlynskyi |
Darko Prelec |
Dave Cramer |
Dave Page |
David Christensen |
David Fetter |
David Johnston |
David Rader |
David Rowley |
David Steele |
Dean Rasheed |
Denis Smirnov |
Denish Patel |
Dennis Björklund |
Devrim Gündüz |
Dilip Kumar |
Dilyan Palauzov |
Dima Pavlov |
Dimitry Ivanov |
Dmitriy Sarafannikov |
Dmitry Dolgov |
Dmitry Fedin |
Don Morrison |
Egor Rogov |
Eiji Seki |
Emil Iggland |
Emre Hasegeli |
Enrique Meneses |
Erik Nordström |
Erik Rijkers |
Erwin Brandstetter |
Etsuro Fujita |
Eugen Konkov |
Eugene Kazakov |
Euler Taveira |
Fabien Coelho |
Fabrízio de Royes Mello |
Feike Steenbergen |
Felix Gerzaguet |
Filip Jirsák |
Fujii Masao |
Gabriele Bartolini |
Gabrielle Roth |
Gao Zengqi |
Gerdan Santos |
Gianni Ciolli |
Gilles Darold |
Giuseppe Broccolo |
Graham Dutton |
Greg Atkins |
Greg Burek |
Grigory Smolkin |
Guillaume Lelarge |
Hans Buschmann |
Haribabu Kommi |
Heikki Linnakangas |
Henry Boehlert |
Huan Ruan |
Ian Barwick |
Igor Korot |
Ildus Kurbangaliev |
Ivan Kartyshov |
Jaime Casanova |
Jakob Egger |
James Parks |
Jarred Ward |
Jason Li |
Jason O'Donnell |
Jason Petersen |
Jeevan Chalke |
Jeevan Ladhe |
Jeff Dafoe |
Jeff Davis |
Jeff Janes |
Jelte Fennema |
Jeremy Finzel |
Jeremy Schneider |
Jeroen van der Ham |
Jesper Pedersen |
Jim Mlodgenski |
Jim Nasby |
Jinyu Zhang |
Joe Conway |
Joel Jacobson |
John Harvey |
Jon Nelson |
Jordan Gigov |
Josh Berkus |
Josh Soref |
Julian Markwort |
Julien Rouhaud |
Junseok Yang |
Justin Muise |
Justin Pryzby |
Kacper Zuk |
KaiGai Kohei |
Karen Huddleston |
Karl Lehenbauer |
Karl O. Pinc |
Keith Fiske |
Kevin Grittner |
Kim Rose Carlsen |
Konstantin Evteev |
Konstantin Knizhnik |
Kuntal Ghosh |
Kurt Kartaltepe |
Kyle Conroy |
Kyotaro Horiguchi |
Laurenz Albe |
Leonardo Cecchi |
Ludovic Vaugeois-Pepin |
Lukas Fittl |
Magnus Hagander |
Maksim Milyutin |
Maksym Sobolyev |
Marc Rassbach |
Marc-Olaf Jaschke |
Marcos Castedo |
Marek Cvoren |
Mark Dilger |
Mark Kirkwood |
Mark Pether |
Marko Tiikkaja |
Markus Winand |
Marllius Ribeiro |
Marti Raudsepp |
Martín Marqués |
Masahiko Sawada |
Matheus Oliveira |
Mathieu Fenniak |
Merlin Moncure |
Michael Banck |
Michael Day |
Michael Meskes |
Michael Overmeyer |
Michael Paquier |
Mike Palmiotto |
Milos Urbanek |
Mithun Cy |
Moshe Jacobson |
Murtuza Zabuawala |
Naoki Okano |
Nathan Bossart |
Nathan Wagner |
Neha Khatri |
Neha Sharma |
Neil Anderson |
Nicolas Baccelli |
Nicolas Guini |
Nicolas Thauvin |
Nikhil Sontakke |
Nikita Glukhov |
Nikolaus Thiel |
Nikolay Nikitin |
Nikolay Shaplov |
Noah Misch |
Noriyoshi Shinoda |
Olaf Gawenda |
Oleg Bartunov |
Oskari Saarenmaa |
Otar Shavadze |
Paresh More |
Paul Jungwirth |
Paul Ramsey |
Pavan Deolasee |
Pavel Golub |
Pavel Hanák |
Pavel Raiskup |
Pavel Stehule |
Peng Sun |
Peter Eisentraut |
Peter Geoghegan |
Petr Jelínek |
Philippe Beaudoin |
Pierre-Emmanuel André |
Piotr Stefaniak |
Prabhat Sahu |
QL Zhuo |
Radek Slupik |
Rafa de la Torre |
Rafia Sabih |
Ragnar Ouchterlony |
Rahila Syed |
Rajkumar Raghuwanshi |
Regina Obe |
Richard Pistole |
Robert Haas |
Robins Tharakan |
Rod Taylor |
Roman Shaposhnik |
Rushabh Lathia |
Ryan Murphy |
Sandeep Thakkar |
Scott Milliken |
Sean Farrell |
Sebastian Luque |
Sehrope Sarkuni |
Sergey Burladyan |
Sergey Koposov |
Shay Rojansky |
Shinichi Matsuda |
Sho Kato |
Simon Riggs |
Simone Gotti |
Spencer Thomason |
Stas Kelvich |
Stepan Pesternikov |
Stephen Frost |
Steve Randall |
Steve Singer |
Steven Fackler |
Steven Winfield |
Suraj Kharage |
Sveinn Sveinsson |
Sven R. Kunze |
Tahir Fakhroutdinov |
Taiki Kondo |
Takayuki Tsunakawa |
Takeshi Ideriha |
Tatsuo Ishii |
Tatsuro Yamada |
Teodor Sigaev |
Thom Brown |
Thomas Kellerer |
Thomas Munro |
Tim Goodaire |
Tobias Bussmann |
Tom Dunstan |
Tom Lane |
Tom van Tilburg |
Tomas Vondra |
Tomonari Katsumata |
Tushar Ahuja |
Vaishnavi Prabakaran |
Venkata Balaji Nagothi |
Vicky Vergara |
Victor Wagner |
Vik Fearing |
Vinayak Pokale |
Viren Negi |
Vitaly Burovoy |
Vladimir Kunshchikov |
Vladimir Rusinov |
Yi Wen Wong |
Yugo Nagata |
Zhen Ming Yang |
Zhou Digoal |