リリース日: 2019-10-03
PostgreSQL 12の主な強化点には以下があります。
各種のパフォーマンス改善:
B-treeインデックスにおける空間利用と読み書き性能の最適化。
パーティショニングのパフォーマンス向上。ここには、数千パーティションを伴うテーブルの問い合わせ性能の改善、改善されたINSERTとCOPYでの挿入性能、問い合わせをブロックせずにALTER TABLE ATTACH PARTITION
を実行できることが含まれます。
共通テーブル式の自動インライン化(無効化も可能)。
CREATE STATISTICSで複数列の最頻値(Most-Common-Value,MCV)統計情報を定義できるようになりました。いくつかの一様でない分布の列を分析する問い合わせに対するより良いプラン作成を助けます。
以下の管理機能の拡張:
REINDEX CONCURRENTLY
で対象テーブルへの書き込みをブロックすることなくインデックスの再構築が可能に
pg_checksumsで停止中のクラスタにてページチェックサムを有効化/無効化できるように
CREATE INDEX、REINDEX、CLUSTER、VACUUM FULL、および、pg_checksumsに対する進捗報告の統計
SQL/JSON path言語に対応
格納された生成列
大文字小文字やアクセント記号の有無を同一視したグループ化や並び替えを可能にする、非決定的ICU照合順序
以下の新たな認証機能:
GSSAPI認証を使用するときのTCP/IP接続の暗号化
DNS SRVレコードを用いたLDAPサーバの検出
clientcert=verify-full
オプションをpg_hba.conf
での追加的な認証方式と組み合わせることによる、多要素認証
上記の項目について以下でより詳細に説明します。
以前のリリースからデータを移行したい時は、どのリリースについても、pg_dumpallを利用したダンプ/リストア、あるいはpg_upgradeの使用が必要です。
バージョン12には、以前のバージョンとの互換性に影響する多数の変更点が含まれています。 以下の非互換性に注意してください。
oid列の特別な振る舞いを廃止しました。 (Andres Freund, John Naylor)
これまでテーブル作成時にWITH OIDS
を用いて通常は見えないoid
列を設定できましたが、この機能は廃止されました。
なお引き続き明示的にoid
型として列を宣言することは可能です。
WITH OIDS
を用いて作られた列を持つテーブルの操作には補正が必要です。
これまで隠しoid
列を持っていたシステムカタログは、通常のoid
列を持つようになります。
ゆえに、これまでは明示的に選択した場合に限って表示されていましたが、SELECT *
がこれらの列を出力するようになります。
データ型abstime
、reltime
、tinterval
を廃止しました。
(Andres Freund)
これらはSQL標準のtimestamp
などの型により置き換えられています。
timetravel
拡張を廃止しました。
(Andres Freund)
recovery.conf
の設定をpostgresql.conf
に移動しました。
(Masao Fujii, Simon Riggs, Abhijit Menon-Sen, Sergei Kornilov)
recovery.conf
はもはや使われず、このファイルがあるとサーバは起動しなくなります。
非プライマリモードに切り替えするのに、これからはrecovery.signalとstandby.signal
ファイルが使われます。
trigger_file
設定はpromote_trigger_fileに改名されました。
standby_mode
設定は廃止されました。
複数の衝突するrecovery_target
*の指定を禁止しました。
(Peter Eisentraut)
具体的には、recovery_target、recovery_target_lsn、recovery_target_name、recovery_target_time、および、recovery_target_xidの中で一つだけの指定が許されます。 これまではこれらパラメータの複数の異なる指定が可能で、最後の一つが適用されました。 これからは一つだけが指定できます。しかし、同じ項目を複数回指定することは可能で、最後の一つが適用されます。
リカバリがデフォルトで最新タイムラインに進むようにしました。 (Peter Eisentraut)
具体的には、recovery_target_timelineのデフォルトがlatest
になりました。
これまではcurrent
がデフォルトでした。
幾何関数・演算子のコードをリファクタリングしました。 (Emre Hasegeli)
これにより、以前のリリースと比べて、より正確ですが僅かに異なる結果をもたらす可能性があります。 特にNaN、アンダーフロー、オーバーフロー、および、ゼロ除算に関する場合が以前より整合的に扱われます。
real
とdouble precision
の値の出力について、新たなアルゴリズムを使うことで性能を改善しました。
(Andrew Gierth)
これまでは表示される浮動小数点の値はデフォルトで6桁(real
の場合)または15桁(double precision
の場合)に丸められて、extra_float_digitsの値により調整されていました。
これからは、extra_float_digits
がゼロより大きいとき(これからはデフォルトです)にはいつでも、正確なバイナリ値を保持するのに必要とされる最小桁数だけ出力します。
extra_float_digits
をゼロ以下に設定したときの動作は以前と同じです。
また、浮動小数点の指数部の書式がプラットフォーム間で統一されました。 3桁が必要でない限り2桁が使われます。 これまでのリリースでは、Windowsビルドは常に3桁を出力していました。
random()
とsetseed()
がプラットフォーム間で統一された動作をするようになります。
(Tom Lane)
特定のシード値を伴ったsetseed()
呼び出しに従って生成される一連のrandom()
値が、これまでと異なるかもしれません。
しかしながら、再現性を持つようになります。サーバ内での他ユーザの乱数使用の干渉のため、以前は再現性が保証されませんでした。
これを防止するため、SQLのrandom()
関数は固有のセッション毎の状態を持つようになります。
SQLスタイルのsubstring()
を標準に従った欲張り動作をするように変更しました。
(Tom Lane)
複数方法でのマッチが可能なパターンの場合に、最初の副パターンが最大ではなく最小テキスト長でマッチするようになります。
例えば、%#"aa*#"%
のようなパターンは入力からa
の、最後のグループではなく、最初のグループを選択するようになります。
xpath()
やXMLTABLE
による生成の結果を整形をしなくしました。
(Tom Lane)
一部の場合にこれら関数がノードセット値に追加の空白文字(改行やスペース)を挿入することがありました。 空白文字も意味的に重要とされるかもしれず、用途によってはこれは望ましくありません。
コマンドラインツールpg_verify_checksumsをpg_checksumsに改名しました。 (Michaël Paquier)
pg_restoreでダンプ内容を標準出力に送るのに-f -
指定を必須としました。
(Euler Taveira)
これまではこれは出力先が指定されない場合のデフォルト動作でしたが、これは不親切と考えられました。
psqlの\pset format
コマンドで一意でない省略形を禁止しました。
(Daniel Vérit)
これまでは、例えば\pset format a
はaligned
を選択しました。
今後これは、asciidoc
を意味する可能性も等しくあるので、失敗するようになります。
新たなBツリーインデックスでは、重複エントリの処理を改善するため、インデックスエントリの最大長が8バイト減りました。 (Peter Geoghegan)
このことは、以前のリリースからpg_upgradeされたインデックスに対するREINDEX操作が潜在的に失敗する可能性あることを意味します。
引数リストが無く、該当するオブジェクトが複数ある場合にDROP IF EXISTS FUNCTION
/PROCEDURE
/AGGREGATE
/ROUTINE
がエラーを生成するようにしました。
(David Rowley)
また、このような場合のエラーメッセージが改善されました。
pg_statistic_ext
カタログをふたつのカタログに分割して、そのpg_stats_ext
ビューを追加しました。
(Dean Rasheed, Tomas Vondra)
この変更は潜在的に機微な統計データを権限のないユーザから隠すのに役立ちます。
もはや用いられないpg_constraint
.consrc
列を廃止しました。
(Peter Eisentraut)
This column has been deprecated for a long time, because it did not
update in response to other catalog changes (such as column renamings).
The recommended way to get a text version of a check constraint's
expression from pg_constraint
is pg_get_expr(conbin, conrelid)
.
pg_get_constraintdef()
is also a useful
alternative.
もはや用いられないpg_attrdef
.adsrc
列を廃止しました。
(Peter Eisentraut)
This column has been deprecated for a long time, because it did not
update in response to other catalog changes (such as column renamings).
The recommended way to get a text version of a default-value expression
from pg_attrdef
is pg_get_expr(adbin,
adrelid)
.
テーブルのname型の列をデフォルトで「C」照合順序を持つものと印付けしました。
name
データ型に対する比較演算子は、常に「C」照合順序を使うのではなく、任意の照合順序を使えるようになりました。
これまでの問い合わせの意味合いを維持するために、name
型の列は明示的に「C」照合順序を持つものと印付けされるようになりました。
この副作用は、(\w
など)ロケール依存の正規表現パターンの動作を決めるにあたり、name
列の正規表現演算子がデフォルトでデータベースの照合順序ではなく「C」照合順序を使うようになることです。
name
列の正規表現に対してCでない動作を望むなら、明示的なCOLLATE
句を付けてください。
(ユーザ定義のname
列に対して他に可能なことはテーブル作成時に異なる照合順序を指定することですが、これは後方非互換性を比較演算子に移したにすぎません。)
information_schema
のビューでのオブジェクト名の列をvarchar
型ではなくname
型であるものとみなすようにしました。
(Tom Lane)
SQL標準では、information_schema
のビューでのオブジェクト名の列はドメイン型sql_identifier
であるものとして宣言されています。
PostgreSQLでは、元となる実際のカタログ列はname
型です。
この変更はsql_identifier
をこれまでのvarchar
ではなくname
上のドメインにします。
これにより比較およびソートの動作での意味の不一致を取り除きます。新たな動作はinformation_schema
ビューへのオブジェクト名の列を限定する問い合わせの性能を大幅に改善できます。
しかしながら、例えば以下の不等式の限定ではデフォルトで、これまでのデータベースのデフォルト照合ではなく、「C」ロケールでの照合が使われることに注意してください。
SELECT ... FROM information_schema.tables WHERE table_name < 'foo';
これらの列のソートも「C」の順序規則に従うようになります。
これまでの動作(および非効率性)はCOLLATE "default"
句を加えることで強制できます。
動的共有メモリを無効にする機能を廃止しました。 (Kyotaro Horiguchi)
具体的には、dynamic_shared_memory_typeはもはやnone
に設定できません。
Parse libpq integer connection parameters more strictly (Fabien Coelho)
In previous releases, using an incorrect integer value for
connection parameters connect_timeout
,
keepalives
, keepalives_count
,
keepalives_idle
,
keepalives_interval
and port
resulted in libpq either ignoring those values or failing with
incorrect error messages.
以下にPostgreSQL 12と前のメジャーリリースとの詳細な変更点を記載します。
パーティションテーブルに対する各種の操作の性能を改善しました。 (Amit Langote, David Rowley, Tom Lane, Álvaro Herrera)
数千の子パーティションを持つテーブルに対する少数のパーティションにだけ影響する操作を効率的に処理できるようにしました。
外部キーがパーティションテーブルを参照できるようにしました。 (Álvaro Herrera)
パーティションテーブルへのCOPY
の速度を改善しました。
(David Rowley)
パーティション境界を任意の式で指定可能にしました。 (Kyotaro Horiguchi, Tom Lane, Amit Langote)
この式はパーティションテーブル作成時に評価されます。 これまではパーティション境界として単なる定数のみが許されていました。
パーティションテーブルのCREATE TABLE
でのテーブル空間指定が子に反映されるようにしました。
(David Rowley, Álvaro Herrera)
パーティションが既に必要とされる順序でスキャンされているときにソートを避けるようにしました。 (David Rowley)
ALTER TABLE ATTACH PARTITION
の実行で必要なロックが減りました。
(Robert Haas)
パーティションの内部観察の関数を追加しました。 (Michaël Paquier, Álvaro Herrera, Amit Langote)
新たな関数のpg_partition_root()
はパーティションツリーの最上位の親を返し、pg_partition_ancestors()
は全ての先祖パーティションを報告し、また、pg_partition_tree()
はパーティションに関する情報を出力します。
システムビューpg_indexes
にパーティションインデックスを含めるようにしました。
(Suraj Kharage)
パーティションテーブルとパーティションインデックスを一覧表示するpsqlのコマンド\dP
を追加しました。
(Pavel Stehule)
psqlの\d
および\z
のパーティションテーブルの表示を改善しました。
(Pavel Stehule, Michaël Paquier, Álvaro Herrera)
ALTER TABLE DETACH PARTITION
が誤った依存状態を取り残し、例えばテーブルを削除したとき以前のパーティション子インデックスを削除しないことで、続く操作で誤動作をひき起こすおそれのあるバグを修正しました。
(Tom Lane)
重複を多く持つBツリーインデックスの性能と空間利用を改善しました。 (Peter Geoghegan, Heikki Linnakangas)
これまでは重複したインデックス項目は重複グループ内で順序付けされずに格納されていました。
これによりインデックス挿入でオーバーヘッド、過度なページ分割による空間の浪費、
および、VACUUM
のページ全体を再利用する能力の縮減をひき起こしました。
重複したインデックスエントリはこれからはヒープ格納順にソートされます
以前のリリースからpg_upgradeされたインデックスは、この恩恵がありません。
複数列のBツリーインデックスを小さくできるようにしました。 (Peter Geoghegan, Heikki Linnakangas)
内部ページと最大/最小リーフページのインジケータに、全てのインデックスキーではなく、変化するキーまでのインデックスキーのみが格納されるようになります。 これはインデックスアクセスの局所性も改善します。
以前のリリースからpg_upgradeされたインデックスは、この恩恵がありません。
ロックのオーバーヘッド軽減によりBツリーインデックスの挿入速度を改善しました。 (Alexander Korotkov)
SP-GiSTインデックスの最近傍(KNN)探索の対応を追加しました。 (Nikita Glukhov, Alexander Korotkov, Vlad Sterzhanov)
GiST、GIN、および、SP-GiSTインデックス作成のWAL書き込みのオーバーヘッドを削減しました。 (Anastasia Lubennikova, Andrey V. Lepikhov)
多数の列を持つインデックスに対するインデックスオンリースキャンをより効率的にしました。 (Konstantin Knizhnik)
GiSTインデックスのバキューム走査の性能を改善しました。 (Andrey Borodin, Konstantin Kuznetsov, Heikki Linnakangas)
GiSTのVACUUM
時に、空リーフページを削除するようにしました。
インデックス改名で必要なロック取得を削減しました。 (Peter Eisentraut)
CREATE STATISTICSが複数列に対する最頻値統計を作成できるようにしました。
これは、複数列を検査して、いくつかのWHERE
句の複合効果の見積りを要する問い合わせの最適化を改善します。
これら列が相関していて、一様に分布していない場合、複数列統計がずっと良い見積りを可能にするはずです。
共通テーブル式(common table expressions, CTEs)を外側の問い合わせにインライン化できるようにしました。 (Andreas Karlsson, Andrew Gierth, David Fetter, Tom Lane)
具体的には、CTEは副作用が無く、再帰ではなく、問い合わせ中で一度だけ参照されているなら、自動的にインライン化されます。
インライン化は、MATERIALIZED
を指定することで防止でき、また、NOT MATERIALIZED
を指定することで複数回参照されているCTEに対して強制することができます。
これまでは、CTEは決してインライン化されず、常に残りの問い合わせよりも前に評価されていました。
準備された文に汎用的な計画をいつ使うかを制御できるようにしました。 (Pavel Stehule)
これはplan_cache_modeサーバパラメータで制御されます。
一つしか子を持たない、パーティションとUNION ALL
の問い合わせの最適化を改善しました。
(David Rowley)
チェック制約を持たないドメインの処理を改善しました。 (Tom Lane)
これからは純粋に型の別名として使われているドメインが最適化に支障をきたすことがなくなります。
LEAST
とGREATEST
の呼び出しを引数が定数のときには事前評価するようにしました。
(Vik Fearing)
問い合わせでIS NOT NULL
条件を持つ部分インデックスが使えるかについて、オプティマイザの検証能力を改善しました。
(Tom Lane, James Coleman)
キャストや大きな
句を伴う問い合わせを呼び出すときに、より多くの場合で利用可能性を確認できるようになりました。
x
IN (array
)
ANALYZE
統計情報を各列に定義された照合順序を用いて計算するようにしました。
(Tom Lane)
これまでは全ての統計情報にデータベースのデフォルト照合順序が使われていました。 この修正はデフォルト照合順序でない列に対して、潜在的により良いオプティマイザ動作をもたらします。
ctid
列の不等比較について選択性の見積りを改善しました。
(Edmund Horner)
tid
型列の結合の最適化を改善しました。
(Tom Lane)
この変更は主としてctid
列による自己結合の効率性を改善します。
いくつかのbtreeの比較演算子とサポート関数のリーク防止指定を修正しました。 (Tom Lane)
これは、これまでセキュリティバリアや行レベルセキュリティの存在で適用されなかった最適化を可能にします。
サーバが実行時(Just-in-Time, JIT)コンパイルに対応してビルドされている場合、これをデフォルトで有効にしました。 (Andres Freund)
JIT対応はデフォルトではビルドされず、ビルド設定時に明示的に選択する必要があることに注意してください。
キーワードの検索を高速化しました。 (John Naylor, Joerg Sonnenberger, Tom Lane)
position()
と関連の関数でマルチバイト文字に対して検索性能を改善しました。
(Heikki Linnakangas)
TOASTされた値が最小限に展開されるようにしました。 (Paul Ramsey)
これはTOASTされたフィールドの最初の部分だけ検査する必要のある処理に役立ちます。
ALTER TABLE ... SET NOT NULL
が不要なテーブル走査を避けることができるようにしました。
(Sergei Kornilov)
テーブルの列制約がNULLを禁止していると認識できるとき、これにより最適化できます。
セッションのタイムゾーンがUTCであるとき、timestamp
とtimestamptz
を変更するALTER TABLE ... SET DATA TYPE
がテーブル書き換えを回避できるようにしました。
(Noah Misch)
UTCタイムゾーンではこれらのデータ型はバイナリです。
文字列からint2
またはint4
整数への変換の速度を改善しました。
SERIALIZABLE
隔離モードで並列問い合わせを可能にしました。
(Thomas Munro)
これまではこのモードでは並列動作ができませんでした。
ランダムI/Oにpread()
とpwrite()
を使うようにしました。
(Oskari Saarenmaa, Thomas Munro)
これはI/Oで必要なシステムコールの数を減らします。
FreeBSDにおけるprocess title設定の速度を改善しました。 (Thomas Munro)
トランザクションの内、ある割合だけ文をログ出力をできるようにしました。 (Adrien Nayrat)
パラメータlog_transaction_sample_rateで制御します。
CREATE INDEX
およびREINDEX
操作の進捗報告を追加しました。
(Álvaro Herrera, Peter Eisentraut)
進捗はpg_stat_progress_create_index
システムビューで報告されます。
CLUSTER
とVACUUM FULL
の進捗報告を追加しました。
(Tatsuro Yamada)
進捗はpg_stat_progress_cluster
システムビューで報告されます。
pg_checksumsの進捗報告を追加しました。 (Michael Banck, Bernd Helmle)
これはオプション--progress
で有効になります。
pg_stat_database
にチェックサム障害のカウンターを追加しました。
(Magnus Hagander)
システムビューpg_stat_database
にグローバルオブジェクトの追跡を追加しました。
(Julien Rouhaud)
グローバルオブジェクトはゼロのpg_stat_database
.datid
値と共に表示されます。
アーカイブディレクトリの内容を一覧できるようにしました。 (Christoph Moench-Tegeder)
その関数はpg_ls_archive_statusdir()
です。
一時ディレクトリの内容を一覧できるようにしました。 (Nathan Bossart)
その関数pg_ls_tmpdir()
は、オプションでテーブル空間を指定できます。
システムビューpg_stat_ssl
にクライアント認証の情報を追加しました。
(Peter Eisentraut)
新たな列はclient_serial
とissuer_dn
です。
明確化のため、列clientdn
はclient_dn
に改名されました。
pg_stat_ssl
で権限のないユーザに対する行の可視性を厳格化しました。
(Peter Eisentraut)
サーバ起動時にサーバのバージョン番号を含むログメッセージを出力するようにしました。 (Christoph Berg)
新たな接続がすぐに切断された場合の「incomplete startup packet」ログ出力を防止しました。 (Tom Lane)
これには、ある種の形態のモニタリングによるログスパムを回避します。
log_connectionsログメッセージに、もし設定されているならapplication_nameを含めるようにしました。 (Don Seiler)
walreceiverがそのアプリケーション名に、設定されているならクラスタ名を設定するようにしました。 (Peter Eisentraut)
pg_stat_replication
に最後に受け取ったスタンバイのメッセージのタイムスタンプを加えました。
(Lim Myungkyu)
WALセグメントのfsyncに対する待機イベントを加えました。 (Konstantin Knizhnik)
GSSAPIの暗号化に対応しました。 (Robbie Harwood, Stephen Frost)
この機能により、GSSAPI認証を使用するときにTCP/IP接続を暗号化できます。
SSLなどの別の暗号化機能を設定する必要はありません。
本対応では、GSSAPI暗号化を使用する接続かしない接続かを選択するためにpg_hba.conf
にhostgssenc
とhostnogssenc
のレコードタイプを追加しました。既存のhostssl
とhostnossl
レコードタイプに相当するものです。
また、gssencmode libpqオプションとpg_stat_gssapiシステムビューも加わりました。
pg_hba.conf
のclientcert
オプションにより、データベースユーザ名がクライアント証明書のコモンネームと一致するか検査できるようにしました。
(Julian Markwort, Marius Timmer)
新たな検査はclientcert=verify-full
で有効になります。
DNS SRVレコードを使ってLDAPサーバの検出をできるようにしました。 (Thomas Munro)
これによりldapserver
を指定する必要がなくなります。
PostgreSQLがOpenLDAPと共にコンパイルされている場合のみサポートされます。
pg_checksumsを使ってクラスタのチェックサムを有効/無効にできるようにしました。 (Michael Banck, Michaël Paquier)
これらの操作のためにクラスタを停止しなければなりません。
autovacuum_vacuum_cost_delayのデフォルト値を2msに減らしました。 (Tom Lane)
これによりデフォルトで自動VACUUMの処理がより早く進行できます。
vacuum_cost_delayで小数点以下を受け入れ、ミリ秒以下の遅延を指定できるようにしました。 (Tom Lane)
時間に基づくサーバパラメータでマイクロ秒 (us
)単位を使えるようにしました。
(Tom Lane)
整数サーバパラメータに対して小数点以下の入力を可能にしました。 (Tom Lane)
例えば、work_mem
は整数パラメータですがSET work_mem = '30.1GB'
が可能になりました。
値は必要とされる単位変換後に整数に丸められます。
浮動小数点のサーバパラメータに単位を定義できるようにしました。 (Tom Lane)
WALファイルの再利用を制御するサーバパラメータwal_recycleとwal_init_zeroを追加しました。 (Jerry Jelinek)
ファイル再利用を回避することはZFSのようなコピーオンライトのファイルシステムで有益です。
サーバのTCPタイムアウトを制御するサーバパラメータtcp_user_timeoutを追加しました。 (Ryohei Nagaura)
SSLプロトコルバージョンの最小と最大を制御できるようにしました。 (Peter Eisentraut)
このサーバパラメータはssl_min_protocol_versionとssl_max_protocol_versionです。
サーバで使われているSSLライブラリバージョンを報告するサーバパラメータssl_libraryを追加しました。 (Peter Eisentraut)
使用する共有メモリの方式を制御するサーバパラメータshared_memory_typeを追加しました。 (Andres Freund)
これにより、望むならSystem V共有メモリを選択できます。
いくつかのリカバリパラメータをリロードで変更できるようにしました。
該当のパラメータはarchive_cleanup_command、promote_trigger_file、recovery_end_command、および、recovery_min_apply_delayです。
ストリーミングレプリケーションのタイムアウト(wal_sender_timeout)を接続毎に設定できるようにしました。 (Takayuki Tsunakawa)
これまでは、クラスタ全体むけにのみ設定できました。
スタンバイをプライマリに昇格させる関数pg_promote()
を追加しました。
(Laurenz Albe, Michaël Paquier)
これまでは、昇格させるにはpg_ctlを使うかトリガファイルを作る必要がありました。
レプリケーションスロットをコピーできるようにしました。 (Masahiko Sawada)
このための関数はpg_copy_physical_replication_slot()
とpg_copy_logical_replication_slot()
です。
max_wal_sendersをmax_connectionsの一部として数えないようにしました。 (Alexander Kukushkin)
recovery_target_timelineに対する明示的なcurrent
値を追加しました。
(Peter Eisentraut)
二相トランザクションの状態ファイルが壊れている場合に、リカバリが失敗するようにしました。 (Michaël Paquier)
これまでは、警告がログ出力されつつリカバリは継続されて、トランザクション損失のおそれがありました。
書き込みをロック締め出ししないインデックス再構築を可能にするREINDEXのCONCURRENTLY
オプションを追加しました。
(Michaël Paquier, Andreas Karlsson, Peter Eisentraut)
これはreindexdbアプリケーションの--concurrently
オプションでも制御できます。
生成列をサポートしました。 (Peter Eisentraut)
生成列の内容は、INSERT
やUPDATE
コマンドで指定されるのではなく、(同テーブルの他の列の参照を含む)式から計算されます。
COPY FROM
に、どの行を受け入れるかを制御するWHERE
句を追加しました。
(Surafel Temesgen)
これは入力データをフィルタする簡単な手段を提供します。
列挙値をより柔軟に追加できるようにしました。 (Andrew Dunstan, Tom Lane, Thomas Munro)
これまでは、ALTER TYPE ... ADD VALUE
を、それが列挙型を作ったトランザクションの一部でない限り、トランザクションブロック内で呼び出せませんでした。
これからは、コミットされる前に新たな列挙値が使われていない限り、後に続くトランザクションの中でも呼び出しできます。
トランザクションを終了して新たに開始するコマンドを追加しました。 (Peter Eisentraut)
コマンドはCOMMIT AND CHAIN
とROLLBACK AND CHAIN
です。
VACUUM
で末尾の空ページの切り詰めを防止する、VACUUMとCREATE TABLE
のオプションを追加しました。
(Takayuki Tsunakawa)
オプションはvacuum_truncate
とtoast.vacuum_truncate
です。
これらオプションはVACUUM
のロックの必要性を減らしますが、OSへのディスクスペースの返却を妨げます。
VACUUM
がインデックスのクリーンアップを省略できるようにしました。
(Masahiko Sawada)
この変更はVACUUM
コマンドにオプションINDEX_CLEANUP
を、また同様に、テーブルの格納オプションvacuum_index_cleanup
を加えます。
このオプションを使うとスペースを回収する能力が減ってインデックス膨張をもたらす可能性がありますが、主たる目的が古いタプルの凍結であるときには有用です。
ロックをすぐに取得できないテーブルについてVACUUM
およびANALYZE
操作を省略できるようにしました。
(Nathan Bossart)
このオプションはSKIP_LOCKED
です。
VACUUM
とANALYZE
が随意のBoolean引数の指定を受け付けできるようにしました。
(Masahiko Sawada)
TRUNCATE、VACUUM
、および、ANALYZE
でユーザが権限を持たないテーブルに対するロック要求を防止しました。
(Michaël Paquier)
これは、ユーザ問い合わせを妨げるおそれのある、権限のないロック取得を防止します。
デフォルトでないオプティマイザ設定を出力する、EXPLAINのオプションSETTINGS
を追加しました。
(Tomas Vondra)
この出力は、auto_explainを使っているとき、auto_explain.log_settings
を設定することでも得ることができます。
CREATE AGGREGATEにOR REPLACE
オプションを追加しました。
(Andrew Gierth)
ALTER TABLEでシステムカタログのオプションを変更可能にしました。 (Peter Eisentraut)
今のところカタログのreloptions
とautovacuum設定の変更に対応しています。
(依然としてallow_system_table_modsを設定することが必要です。)
外部キーに対してデフォルトの制約名を選択するときに全てのキー列名を使うようにしました。 (Peter Eisentraut)
これまでは、制約名に最初の列名だけが含まれ、複数列の外部キーに対して結果として曖昧になりました。
Unicode 12.1.0 に適合させるようにユニコードに関する各種の認識を更新しました。 (Peter Eisentraut)
これは、例えばpsqlが結合文字に関して誤った出力をするのを修正します。
スノーボール語幹辞書を更新しました。新たな言語の対応が含まれます。 (Arthur Zakirov)
これにより、全文検索でアラビア語、インドネシア語、アイルランド語、リトアニア語、ネパール語、タミル語の語幹処理に対応します。
ビットとしては等しくない文字列に対して等価を報告する照合順序の作成を可能にしました。 (Peter Eisentraut)
この機能は、大文字小文字やアクセントを無視する等価比較が可能な「nondeterministic」(非決定的)な照合順序をサポートします。 したがって、例えば、テキスト列に大文字小文字を同一視する一意性制約を従来よりも簡単に作ることができます。 これはICU照合順序でのみサポートされます。
古いICUバージョンでのICU照合順序の属性に対応しました。 (Peter Eisentraut)
これは全てのICUバージョンにわたって一貫した方法での照合規則のカスタマイズを可能にします。
nameデータ型がより透過的に他のテキスト型と比較できるようにしました。 (Tom Lane)
name
型は、デフォルト照合順序が「C」であるtext
のドメインと良く似た振舞いをするようになりました。
これにより型をまたがる比較がより効率的に処理できるようになります。
SQL/JSON path言語に対応しました。 (Nikita Glukhov, Teodor Sigaev, Alexander Korotkov, Oleg Bartunov, Liudmila Mantrova)
これによりJSON
値に対してSQL標準の言語を使って複雑な問い合わせの実行が可能になります。
双曲線関数をサポートしました。 (Lætitia Avrot)
また、標準準拠のためlog()
の別名としてlog10()
を追加しました。
より精密なアルゴリズムを使うことでvariance()
のような統計集約の正確さを改善しました。
(Dean Rasheed)
date_trunc()
がタイムゾーンを制御する追加引数を持てるようにしました。
(Vik Fearing, Tom Lane)
これはAT TIME ZONE
句を使うよりも高速で簡易です。
to_timestamp()
/to_date()
関数をテンプレート不一致に対してより寛容になるように調整しました。
(Artur Zakirov, Alexander Korotkov, Liudmila Mantrova)
新たな振る舞いは同名のOracleの関数とより似通ったものになります。
XML関数の様々なバグを修正しました。 (Pavel Stehule, Markus Winand, Chapman Flack)
具体的には、XMLTABLE
、xpath()
、および、xmlexists()
で、あるノードについて何も出力されない、予期せぬエラーが生じる、あるいは、必要なXML特別文字のエスケープが行われない、という場合について修正しました。
XMLEXISTS
およびXMLTABLE
でBY VALUE
句が使えるようにしました。
(Chapman Flack)
このSQL標準の句はPostgreSQLの実装では効果を持ちませんが、不必要に拒絶されていました。
current_schema()
とcurrent_schemas()
はパラレル安全ではないので、これらがパラレルワーカーから実行されるのを防止しました。
(Michaël Paquier)
RECORD
とRECORD[]
が、RECORD
を返すと宣言されているテーブル関数に対する問い合わせの列定義リストで列型として使えるようにしました。
(Elvis Pranskevichus)
SQLコマンドとコマンドと同名の変数を同じPL/pgSQL関数内で使えるようにしました。 (Tom Lane)
例えば、comment
と言う変数をSQLコマンドのCOMMENT
を呼び出す関数の中で使えます。
これまでは、この組み合わせはパースエラーをひき起こしました。
PL/pgSQLに随意の新たな警告とエラーの検査を追加しました。 (Pavel Stehule)
新たな検査は、INTO
の列の数と単一行の結果の実行時検査を可能にします。
libpqのTCPタイムアウトを制御する接続パラメータtcp_user_timeoutを追加しました。 (Ryohei Nagaura)
libpqが(それによりpsqlも)エラーメッセージにSQLSTATE
値だけを報告できるようにしました。
(Didier Gautheron)
問い合わせ結果によるメモリ使用を報告するlibpqの関数PQresultMemorySize()
を追加しました。
(Lars Kanis, Tom Lane)
libpqのoptions
接続パラメータからno-display/debugフラグを廃止しました。
(Peter Eisentraut)
これにより、本パラメータをpostgres_fdwから設定できるようになります。
ecpgがbytea
データ型の変数を作成できるようにしました。
(Ryo Matsumura)
これによりECPGクライアントがbytea
データをエンコードされた形式を使うことなく直接触れます。
ECPGでPREPARE AS
をサポートしました。
(Ryo Matsumura)
vacuumdbが周回限界に基づいてバキュームするテーブルを選択できるようにしました。 (Nathan Bossart)
そのオプションは--min-xid-age
と--min-mxid-age
です。
vacuumdbがロック待機を無効に、あるいは、全て可視のページを省略できるようにしました。 (Nathan Bossart)
そのオプションは--skip-locked
と--disable-page-skipping
です。
コマンドラインユーティリティの出力に色付きを加えました。 (Peter Eisentraut)
これは環境変数PG_COLOR
にalways
またはauto
を設定することで有効になります。
使われる色の詳細は、色のANSIエスケープコードを用いて環境変数PG_COLORS
を設定することで調整できます。
例えば、デフォルト動作はPG_COLORS="error=01;31:warning=01;35:locus=01"
と同等です。
psqlにCSVテーブル出力モードを追加しました。
これは\pset format csv
またはコマンドラインの--csv
オプションで制御されます。
SQLコマンドに対するpsqlの\help
の出力でマニュアルページのURLを表示するようにしました。
(Peter Eisentraut)
psqlの\conninfo
で
IPアドレスを表示するようにしました。
(Fabien Coelho)
CREATE TABLE
、CREATE TRIGGER
、CREATE EVENT TRIGGER
、ANALYZE
、EXPLAIN
、VACUUM
、ALTER TABLE
、ALTER INDEX
、ALTER DATABASE
、およびALTER INDEX ALTER COLUMN
のタブ補完を改善しました。
(Dagfinn Ilmari Mannsåker, Tatsuro Yamada, Michaël Paquier, Tom Lane, Justin Pryzby)
問い合わせで生成した値をpgbenchの変数に割り当てできるようにしました。 (Fabien Coelho, Álvaro Herrera)
これを行うコマンドは\gset
です。
pgbenchの--rate
オプションの精度を改善しました。
(Tom Lane)
メッセージと戻り値の明確化でpgbenchのエラー報告を改善しました。 (Peter Eisentraut)
pg_ctlを通してログファイルのローテーションを制御できるようにしました。 (Kyotaro Horiguchi, Alexander Kuzmenkov, Alexander Korotkov)
これまでは、SQL関数かプロセスシグナルを通してのみ可能でした。
pg_ctl start
の際に、新たなサーバプロセスを適切にデタッチするようにしました。
(Paul Guo)
これは、pg_ctlを起動するシェルスクリプトが後に割り込まれた場合にサーバがシャットダウンされるのを防止します。
pg_upgradeが、もし在るなら、ファイルシステムのクローン機能を使えるようにしました。 (Peter Eisentraut)
--clone
オプションは、古いクラスタが新しいクラスタが起動した後に変更されるのを防ぎ、--link
に対して優位性を持ちます。
pg_upgradeで使うソケットでレクトリの指定ができるようにしました。 (Daniel Gustafsson)
これは--socketdir
で制御され、デフォルトはカレントディレクトリです。
pg_checksumsがfsync操作を無効にできるようにしました。 (Michaël Paquier)
これは--no-sync
オプションで制御されます。
pg_rewindでfsync操作を無効にできるようにしました。 (Michaël Paquier)
pg_test_fsyncをWindowsで正確なopen_datasync
の時間を報告するように修正しました。
(Laurenz Albe)
pg_dumpがCOPY
ではなくINSERT
コマンドでデータを出力するとき、
各INSERT
に複数データ行を含めることができるようにしました。
(Surafel Temesgen, David Rowley)
これを制御するオプションは--rows-per-insert
です。
pg_dumpがINSERT ... ON CONFLICT DO NOTHING
を出力できるようにしました。
(Surafel Temesgen)
これはリストア時の衝突によるエラーを回避します。
このオプションは--on-conflict-do-nothing
です。
並列pg_dumpでの実行の順序を、続く並列pg_restoreで使われる順序と切り離しました。 (Tom Lane)
これにより、特に元のダンプが並列で行われなかった場合に、pg_restoreがより完全に並列化された並列リストアを行えるようになります。 並列pg_dumpのスケジューリングもいくらか改善されました。
extra_float_digits設定がpg_dumpとpg_dumpallむけに指定できるようにしました。
これは主として、異なるソースサーババージョンとの間で正確に比較可能なダンプを作るときに有用です。 ダンプをリストアするときに精度の損失が生じるかもしれないため、通常時の使用は推奨されません。
pg_dumpallに--exclude-database
オプションを追加しました。
(Andrew Dunstan)
新たなテーブルタイプを作るCREATE ACCESS METHODコマンドを追加しました。 (Andres Freund, Haribabu Kommi, Álvaro Herrera, Alexander Korotkov, Dmitry Dolgov)
これは、ストレージを異なるユースケースに最適化できる、新たなテーブルアクセスメソッドの開発を可能にします。
既存のheap
アクセスメソッドが引き続きデフォルトです。
関数に対するオプティマイザの推計やインライン化、インデックス使用を改善する、プランナサポート関数インタフェースを追加しました。 (Tom Lane)
これは、関数引数に依存した関数特有の選択性やコスト、行数推計を提供できる、プランナサポート関数を作る拡張を可能にします。 サポート関数は単純化された表現とインデックス条件も提供できて、最適化の可能性を大きく広げます。
手動割り当てしたOIDの再付番を単純化して、このようなOIDの管理についての新たなプロジェクト方針を確立しました。 (John Naylor, Tom Lane)
(新たな関数など)新たなビルトインオブジェクトに対するOIDを手動割り当てするパッチは、8000—9999の範囲でランダムにOIDを選ぶようになります。
開発サイクルの終わりに、コミットされたパッチで使用されるOIDはrenumber_oids.pl
スクリプトを使って、より少ない数値、今のところ4xxx
の範囲のどこか、に番号が付け直されてます。
この方法は、進行中の別パッチ間のOID衝突の可能性を大幅に減らすはずです。
外部使用に対しては、いかなるOIDにも予約の方針が特段無いため、プライベートな手動割り当てされたOIDを必要とするフォークや他プロジェクトでは、高位の7xxx
範囲の番号を使用することが推奨されます。
これにより、コアプロジェクトがその範囲に達するまで長い間、最近にマージされたパッチとの衝突を回避できるでしょう。
静的ライブラリに替えて、動的ライブラリを用いてCygwinバイナリをビルドするようにしました。 (Marco Atzeri)
configureスイッチの--disable-strong-random
を廃止しました。
(Michaël Paquier)
これからは強い乱数ソースが必要です。
printf
ファミリーの関数群およびstrerror
とstrerror_r
が、PosrtgreSQLコード内においてプラットフォーム間で同じ振る舞いをするようになります。
(Tom Lane)
とりわけ、printf
がどこでも%m
を理解します。Windowsで、strerror
がWinsockのエラーコードに対応します(バックエンドではそのように動作してきましたがフロントエンドではそうなっていませんでした)。また、strerror_r
がGNUの戻り値の慣例に従います。
C99準拠のコンパイラ、および、WindowsではMSVC 2013以降が必要となります。 (Andres Freund)
プレーンテキスト文書の出力ファイルを生成するのに、lynxではなくpandocを使うようにしました。 (Peter Eisentraut)
これは、make dist
で生成されたINSTALL
ファイルとほとんど使用されないプレーンテキストのpostgres.txt
出力ファイルにのみ影響があります。
Pandocはlynxより良い出力を生成し、一部のロケール/エンコーディングの問題を回避します。
Pandocバージョン1.13以降が必要です。
PostgreSQL文書での画像の使用に対応しました。 (Jürgen Purtz)
postgres_fdw外部サーバにORDER BY
のソートとLIMIT
句がより多くの場合にプッシュされるようになりました。
(Etsuro Fujita)
postgres_fdwの問い合わせに対してオプティマイザのコスト計算を改善しました。 (Etsuro Fujita)
postgres_fdwテーブルを参照するビューのWITH CHECK OPTION
を適切に尊重するようにしました。
(Etsuro Fujita)
postgres_fdwテーブルのCHECK OPTION
が(参照先が外部であるために)無視される一方で、このようなテーブルのビューはローカルと認識されていました。そこで本変更は、これらのCHECK OPTION
を強制します。
これまでは、CHECK OPTION
の値を返すRETURNING
句を伴うINSERT
とUPDATE
だけが、検査されていました。
pg_stat_statements_reset()
をより細かく実行できるようにしました。
(Haribabu Kommi, Amit Kapila)
本関数は指定したデータベース、ユーザ、問い合わせに対して統計情報をリセットできるようになります。
auto_explainのログレベルを制御できるようにしました。 (Tom Dunstan, Andrew Dunstan)
デフォルトはLOG
です。
unaccentのルールを改定しました。新たな区切り文字とシンボルを伴います。 (Hugh Ranalli, Michaël Paquier)
unaccentが結合文字でエンコードされた、いくつかのアクセントを扱えるようにしました。 (Hugh Ranalli)
unaccentがギリシャ文字からアクセントを削除できるようにしました。 (Tasos Maschalidis)
amcheckのbt_index_parent_check()
関数に、各インデックスタプルをツリーのルートから検査するパラメータを追加しました。
(Peter Geoghegan)
oid2nameとvacuumloのオプション処理を他のコマンドと一致するように改善しました。 (Tatsuro Yamada)
以下の人々(アルファベット順)はパッチ作者、コミッター、レビューア、テスターあるいは問題の報告者として本リリースに貢献しました。
Abhijit Menon-Sen |
Achilleas Mantzios |
Adam Berlin |
Adam Bielanski |
Aditya Toshniwal |
Adrien Nayrat |
Alan Jackson |
Albert Schabhuetl |
Aleksander Alekseev |
Alex Aktsipetrov |
Alex Kliukin |
Alex Macy |
Alexander Korotkov |
Alexander Kukushkin |
Alexander Kuzmenkov |
Alexander Lakhin |
Alexandra Ryzhevich |
Alexey Bashtanov |
Alexey Ermakov |
Alexey Kondratov |
Alexey Kryuchkov |
Alexey Stepanov |
Allison Kaptur |
Álvaro Herrera |
Alyssa Ross |
Amit Kapila |
Amit Khandekar |
Amit Langote |
Amul Sul |
Anastasia Lubennikova |
André Hänsel |
Andrea Gelmini |
Andreas Joseph Krogh |
Andreas Karlsson |
Andreas Kunert |
Andreas Scherbaum |
Andreas Seltenreich |
Andrei Yahorau |
Andres Freund |
Andrew Dunstan |
Andrew Fletcher |
Andrew Gierth |
Andrew Krasichkov |
Andrey Borodin |
Andrey Klychkov |
Andrey Lepikhov |
Andy Abelisto |
Anthony Greene |
Anthony Skorski |
Antonin Houska |
Arne Roland |
Arseny Sher |
Arthur Zakirov |
Ash Marath |
Ashutosh Bapat |
Ashutosh Sharma |
Ashwin Agrawal |
Aya Iwata |
Bartosz Polnik |
Basil Bourque |
Bernd Helmle |
Brad DeJong |
Brigitte Blanc-Lafay |
Bruce Klein |
Bruce Momjian |
Bruno Wolff |
Chapman Flack |
Chen Huajun |
Chris Travers |
Chris Wilson |
Christian Hofstaedtler |
Christoph Berg |
Christoph Moench-Tegeder |
Clemens Ladisch |
Colm McHugh |
Corey Huinker |
Craig Ringer |
Dagfinn Ilmari Mannsåker |
Daisuke Higuchi |
Daniel Fiori |
Daniel Gustafsson |
Daniel Vérité |
Daniel Westermann |
Daniel Wilches |
Darafei Praliaskouski |
Daryl Waycott |
Dave Cramer |
David Binderman |
David Fetter |
David G. Johnston |
David Rowley |
David Steele |
Davy Machado |
Dean Rasheed |
Derek Hans |
Derek Nelson |
Devrim Gündüz |
Dian Fay |
Didier Gautheron |
Dilip Kumar |
Dmitry Dolgov |
Dmitry Marakasov |
Dmitry Molotkov |
Dmitry Shalashov |
Don Seiler |
Donald Dong |
Doug Rady |
Edmund Horner |
Eduards Bezverhijs |
Elvis Pranskevichus |
Emanuel Araújo |
Emre Hasegeli |
Eric Cyr |
Erik Rijkers |
Ertugrul Kahveci |
Etsuro Fujita |
Eugen Konkov |
Euler Taveira |
Fabien Coelho |
Fabrízio de Royes Mello |
Feike Steenbergen |
Filip Rembialkowski |
Gaby Schilders |
Geert Lobbestael |
George Tarasov |
Georgios Kokolatos |
Gianni Ciolli |
Gilles Darold |
Greg Stark |
Grigory Smolkin |
Guillaume Lelarge |
Gunnlaugur Thor Briem |
Gurjeet Singh |
Hadi Moshayedi |
Hailong Li |
Hans Buschmann |
Haribabu Kommi |
Haruka Takatsuka |
Hayato Kuroda |
Heikki Linnakangas |
Hironobu Suzuki |
Hubert Lubaczewski |
Hugh Ranalli |
Ian Barwick |
Ibrar Ahmed |
Ildar Musin |
Insung Moon |
Ioseph Kim |
Isaac Morland |
Ivan Panchenko |
Jack Kelly |
Jacob Champion |
Jaime Casanova |
Jakob Egger |
Jakub Glapa |
Jakub Janecek |
James Coleman |
James Inform |
James Robinson |
James Sewell |
James Tomson |
Jan Chochol |
Jaroslav Sivy |
Jean-Christophe Arnu |
Jean-Marc Voillequin |
Jean-Pierre Pelletier |
Jeevan Chalke |
Jeevan Ladhe |
Jeff Davis |
Jeff Janes |
Jeremy Evans |
Jeremy Schneider |
Jeremy Smith |
Jerry Jelinek |
Jesper Pedersen |
Jianing Yang |
Jie Zhang |
Jim Nasby |
Jimmy Yih |
Joe Conway |
Joe Wildish |
Joerg Sonnenberger |
John Klann |
John Naylor |
Jonah Harris |
Jonathan S. Katz |
Jorge Gustavo Rocha |
José Arthur Benetasso Villanova |
Joshua D. Drake |
Juan José Santamaría Flecha |
Julian Hsiao |
Julian Markwort |
Julian Schauder |
Julien Rouhaud |
Jürgen Purtz |
Jürgen Strobel |
Justin Pryzby |
Kaiting Chen |
Karen Huddleston |
Karl Czajkowski |
Karl O. Pinc |
Keiichi Hirobe |
Keith Fiske |
Ken Tanzer |
Kenji Uno |
Kevin Grittner |
Kevin Hale Boyes |
Kieran McCusker |
Kirk Jamison |
Kohei KaiGai |
Konstantin Knizhnik |
Konstantin Kuznetsov |
Kristjan Tammekivi |
Kuntal Ghosh |
Kyle Samson |
Kyotaro Horiguchi |
Lætitia Avrot |
Lars Kanis |
Laurenz Albe |
Lim Myungkyu |
Liu Huailing |
Liudmila Mantrova |
Lloyd Albin |
Luca Ferrari |
Luis M. Carril |
Lukas Eder |
Lukas Fittl |
Madelaine Thibaut |
Madeleine Thompson |
Magnus Hagander |
Mahendra Singh |
Mai Peng |
Maksim Milyutin |
Maksym Boguk |
Malthe Borch |
Manuel Rigger |
Marco Atzeri |
Marco Slot |
Marina Polyakova |
Mario De Frutos Dieguez |
Marius Timmer |
Mark Chambers |
Mark Dilger |
Marko Tiikkaja |
Markus Winand |
Martín Marqués |
Masahiko Sawada |
Masao Fujii |
Mateusz Guzik |
Mathias Brossard |
Matt Williams |
Matthias Otterbach |
Matvey Arye |
Melanie Plageman |
Mi Tar |
Michael Banck |
Michael Davidson |
Michael Meskes |
Michael Paquier |
Michael Vitale |
Michel Pelletier |
Mikalai Keida |
Mike Palmiotto |
Mithun Cy |
Morgan Owens |
Murat Kabilov |
Nathan Bossart |
Nawaz Ahmed |
Neeraj Kumar |
Nick Barnes |
Nico Williams |
Nikita Glukhov |
Nikolay Shaplov |
Ning Yu |
Nishant Fnu |
Noah Misch |
Norbert Benkocs |
Noriyoshi Shinoda |
Oleg Bartunov |
Oleg Samoilov |
Oleksii Kliukin |
Ondrej Bouda |
Oskari Saarenmaa |
Pan Bian |
Patrick Francelle |
Patrick McHardy |
Paul A. Jungwirth |
Paul Bonaud |
Paul Guo |
Paul Martinez |
Paul Ramsey |
Paul Schaap |
Paul van der Linden |
Pavan Deolasee |
Pavel Oskin |
Pavel Raiskup |
Pavel Stehule |
Peifeng Qiu |
Peter Billen |
Peter Eisentraut |
Peter Geoghegan |
Peter Neave |
Petr Fedorov |
Petr Jelínek |
Petr Slavov |
Petru-Florin Mihancea |
Phil Bayer |
Phil Florent |
Philip Dubé |
Pierre Ducroquet |
Piotr Gabriel Kosinski |
Piotr Stefaniak |
Piotr Wlodarczyk |
Prabhat Sahu |
Quentin Rameau |
Rafael Castro |
Rafia Sabih |
Rahila Syed |
Rajkumar Raghuwanshi |
Rares Salcudean |
Raúl Marín Rodríguez |
Regina Obe |
Renaud Navarro |
Richard Guo |
Rick Otten |
Rikard Falkeborn |
RK Korlapati |
Robbie Harwood |
Robert Haas |
Robert Treat |
Robert Vollmert |
Roger Curley |
Roman Zharkov |
Ronan Dunklau |
Rui Hai Jiang |
Rushabh Lathia |
Ryan Lambert |
Ryo Matsumura |
Ryohei Nagaura |
Ryohei Takahashi |
Samuel Williams |
Sand Stone |
Sanyo Capobiango |
Satoru Koizumi |
Sean Johnston |
Serge Latyntsev |
Sergei Kornilov |
Sergey Pashkov |
Sergio Conde Gómez |
Shawn Debnath |
Shay Rojansky |
Sho Kato |
Shohei Mochizuki |
Shouyu Luo |
Simon Riggs |
Sivasubramanian Ramasubramanian |
Slawomir Chodnicki |
Stas Kelvish |
Stefan Kadow |
Stepan Yankevych |
Stephen Amell |
Stephen Frost |
Steve Rogerson |
Steve Singer |
Steven Winfield |
Surafel Temesgen |
Suraj Kharage |
Suresh Kumar R |
Takayuki Tsunakawa |
Takeshi Ideriha |
Takuma Hoshiai |
Tasos Maschalidis |
Tatsuo Ishii |
Tatsuro Yamada |
Teodor Sigaev |
Thom Brown |
Thomas Munro |
Thomas Poty |
Tillmann Schulz |
Tim Möhlmann |
Timur Birsh |
Tobias Bussmann |
Tom Cassidy |
Tom Dunstan |
Tom Gottfried |
Tom Lane |
Tomas Vondra |
Tushar Ahuja |
Ulf Adams |
Vaishnavi Prabakaran |
Victor Petrovykh |
Victor Wagner |
Victor Yegorov |
Vijaykumar Jain |
Vik Fearing |
Vlad Sterzhanov |
Vladimir Baranoff |
Vladimir Kriukov |
Wu Fei |
Yaroslav Schekin |
Yi Huang |
Yoshikazu Imai |
Yugo Nagata |
Yulian Khodorkovskiy |
Yuming Wang |
YunQiang Su |
Yuri Kurenkov |
Yusuke Egashira |
Yuzuko Hosoya |
Zhou Digoal |