リリース日: 2016-01-07
PostgreSQL9.5の主な強化点には以下のものがあります。
制約違反を起こすINSERT
をUPDATE
に変換するか、無視することができるようにしました。
GROUP BY
分析機能にGROUPING SETS
、CUBE
、ROLLUP
を加えました。
行単位セキュリティ制御を加えました。
レプリケーション進行を観測する仕組みを作りました。ロジカルレプリケーション時に個々の変更の起点を識別する手段も含まれます。
ブロック範囲インデックス(Block Range Indexes, BRIN)を追加しました
ソート性能を大幅に改善しました。
多CPUマシンでの性能を大幅に改善しました。
上記の項目については、以下でより詳細に説明します。
以前のリリースからデータを移行したい時は、どのリリースについても、 pg_dumpallを利用したダンプとリストア、 あるいはpg_upgradeの利用が必要です。
バージョン9.5には、以前のバージョンとの互換性に影響する多数の変更点が含まれています。 以下の非互換性に注意してください。
SQL標準に適合するように演算子の優先順位を調整しました。 (Tom Lane)
<=
、>=
、<>
の優先順位が、
<
, >
、=
と同じに下げられました。
IS
検査(例: x
IS NULL
)の優先順位がこれら6つの比較演算子のすぐ下まで下げられました。
また、NOT
で始まる複数キーワード演算子はその基底演算子と同じ優先順位を持つようになります(例えば、NOT BETWEEN
はBETWEEN
と同じ優先順位となります)。
NOT
は左辺要素を尊重するけれどもその基底演算子は右辺要素を尊重するといったように、これまで一貫性に欠けた優先順位になっていました。
新たな設定パラメータoperator_precedence_warningで本優先順位変更で異なった解析結果になる問い合わせについての警告を有効にできます。
pg_ctlのデフォルトシャットダウンモードをsmart
からfast
に変更しました。
(Bruce Momjian)
停止時のデフォルトの振る舞いが、既存のデータベースセッションが終了するのを待つのでなく、強制的にセッションを中断するようになることを意味します。
PL/pgSQLの代入でのデータ型変換に、テキストから、あるいは、テキストへの変換ではなく、代入キャストの動作を用います。 (Tom Lane)
この変更により、boolean型から文字列への変換で、t
やf
ではなく、true
やfalse
が生じます。
他の型変換はおそらくこれまでより多くの場合で成功するようになります。
例えば、数値3.9
をinteger変数に代入すると、これからはエラーになるのでなく4が代入されます。
当該の変換元と変換先の型について代入級キャストが定義されていないときには、PL/pgSQLは従来のI/Oによる変換で代替します。
サーバむけコマンドラインオプションでバックスラッシュで文字をエスケープできるようにしました。 (Andres Freund)
これまでは、オプション文字列中の空白文字が常にオプション区切になっていて、オプション内容に空白文字を含める方法がありませんでした。
オプション内容にバックスラッシュ(\)を含めるにはこれからは\\
と書く必要があります。
GSSAPIのinclude_realm
パラメータのデフォルト値を1に変更しました。
そのため、デフォルトではGSSおよびSSPIのプリンシパル名からレルムは取り除かれません。
(Stephen Frost)
設定パラメータcheckpoint_segments
をmin_wal_sizeとmax_wal_sizeで置き換えました。
(Heikki Linnakangas)
これまでcheckpoint_segments
を調整していたのであれば、以下の式でおおよそ同等の設定が得られます。
max_wal_size = (3 * checkpoint_segments) * 16MB
max_wal_size
のデフォルト設定は、以前のcheckpoint_segments
のデフォルト値よりもずっと大きいことに注意してください。そのため、これらを調整することはもはや不要になるかもしれません。
LinuxのOOM killerを、コンパイル時のオプションLINUX_OOM_SCORE_ADJ
、LINUX_OOM_ADJ
に代えて、環境変数PG_OOM_ADJUST_FILE
、PG_OOM_ADJUST_VALUE
で制御します。
(Gurjeet Singh)
以前のリリースで非推奨とされていたサーバ設定パラメータssl_renegotiation_limit
を廃止しました。
(Andres Freund)
理論上はSSL再ネゴシエーションは良い考えですが、実際には差引マイナスと考えられるほど多くのバグを引き起こしており、さらに、関連する標準の将来バージョンから除去されることになっています。
そのため、私たちはPostgreSQLから本機能のサポートを外しました。
パラメータssl_renegotiation_limit
は未だ在りますが、0(無効)以外には設定できませんし、ドキュメントにも記載されません。
既に非推奨かつ使用不能となっていたサーバ設定パラメータautocommit
を除きました。
(Tom Lane)
不用であったため、システムカタログpg_authid
のフィールドrolcatupdate
を除きました。
(Adam Brightwell)
システムビューpg_stat_replication
のフィールドsent
は、有効な値を持たないときゼロでなくNULLとしました。
(Magnus Hagander)
json
およびjsonb
の配列抽出演算子で、JSON配列を後ろから数える、負の添え字を可能にしました。
(Peter Geoghegan, Andrew Dunstan)
これまでは、これらの演算子は負の添え字にNULL
を返しました。
前回のメジャーリリースからのPostgreSQL 9.5 の変更点の詳細説明を以下に示します。
ブロック範囲インデックス(Block Range Indexes, BRIN)を追加しました。 (Álvaro Herrera)
BRINインデックスは、ヒープブロック範囲の(最大値、最小値のような)摘要データのみを格納します。そのため、非常にサイズが小さく、更新コストも軽微です。それでいて、データが自然にクラスタ化されているなら、かなりの検索速度向上も実現します。
GiSTインデックスを使った、外接矩形でインデックス付けされるオブジェクト(polygon や circle)の距離によるフィルタを正確に行う問い合わせを可能にしました。 (Alexander Korotkov, Heikki Linnakangas)
これまで、このようなインデックスを利用するには、副問い合わせで多数の行を外接矩形の距離で並び替えて、さらにその結果をより正確な距離計算でフィルタする必要がありました。
GiSTインデックスでインデックスオンリースキャンを可能にしました。 (Anastasia Lubennikova, Heikki Linnakangas, Andreas Karlsson)
GINの待機リストのサイズを制御する設定パラメータgin_pending_list_limitを追加しました。 (Fujii Masao)
本パラメータはインデックスごとにインデックスのストレージパラメータとして設定することも可能です。これまで待機リストサイズはwork_memで制御されていましたが、適切なwork_mem
値が待機リストサイズむけには大きすぎることがよくあり、扱いにくいものとなっていました。
hashインデックスはクラッシュ時に安全でないため、それを作るときに警告を出します。 (Bruce Momjian)
「短縮」キーにより、varchar
型、text
型、numeric
型フィールドのソート速度を改善しました。
(Peter Geoghegan, Andrew Gierth, Robert Haas)
ソートをインラインで実行できるように基盤を拡張しました。
SQLから呼び出しできない比較関数がCREATE INDEX
、REINDEX
、CLUSTER
に適用されます。
(Peter Geoghegan)
ハッシュ結合の性能を改善しました。 (Tomas Vondra, Robert Haas)
共有バッファの置き換えにおける同時実行性を改善しました。 (Robert Haas, Amit Kapila, Andres Freund)
インデックススキャン中のページロックとピンの数を減らしました。 (Kevin Grittner)
主な恩恵はインデックスのバキュームがあまりブロックされなくなることです。
バックエンド毎のバッファピンの追跡でメモリ利用効率を改善しました。 (Andres Freund)
ロックのスケーラビリティを改善しました。 (Andres Freund)
これは特に複数のCPUソケットをもつシステムで動作させるときのスケーラビリティ問題を解決します。
オプティマイザが左結合された副問い合わせの不要な参照を取り除けるようにしました。 (David Rowley)
適切な場所においては、問い合わせの制約をウィンドウ関数を伴う副問い合わせにプッシュダウンできるようにしました。 (David Rowley)
LEAKPROOFでない関数を、その関数がビューの出力列を受け取らないなら、セキュリティバリアビューにプッシュダウンできるようにしました。 (Dean Rasheed)
プランナが、WHERE
句に照合する関数の呼び出しがあったとき、真偽値を返す関数の式インデックスから得た統計情報を使うようにしました。
(Tom Lane)
ANALYZE
で列のデータ型が等価関数を持たなくても基本的な統計(null比率、列の平均長)の計算をするようにしました。
(Oleksandr Shulgin)
CRC(巡回冗長検査)計算を高速化し、また、CRC-32Cに切り替えました。 (Abhijit Menon-Sen, Heikki Linnakangas)
ビットマップインデックススキャンの性能を改善しました。 (Teodor Sigaev, Tom Lane)
不要なメモリコピーを避けることでCREATE INDEX
を高速化しました。
(Robert Haas)
バッファマッピングのパーティション数を増やしました。 (Amit Kapila, Andres Freund, Robert Haas)
これは並列性の高い負荷に対して性能を改善します。
新たなストレージパラメータlog_autovacuum_min_duration
によるテーブル単位での自動バキュームのログ制御を追加しました。
(Michael Paquier)
新たな設定パラメータcluster_nameを追加しました。 (Thomas Munro)
通常postgresql.conf
に設定されるこの文字列によりクライアントはクラスタを識別できます。
この名称は全サーバプロセスのプロセスタイトルにも出て、同じクラスタに属するプロセス群を識別するのを容易にします。
スーパーユーザ以外がlog_disconnectionsを接続当初に変更することを防ぎました。 (Fujii Masao)
SSLサーバ証明書で「サブジェクト別名」があるなら、それを確認します。 (Alexey Klyukin)
サブジェクト別名があるなら証明書の「Common Name」にむけた確認を代替します。
SSL接続情報を報告するシステムビューpg_stat_ssl
を追加しました。
(Magnus Hagander)
実装に独立な方法でSSL情報を返すlibpq関数を追加しました。 (Heikki Linnakangas)
OpenSSL関数を呼ぶPQgetssl()
関数は未だ使用することができますが、libpqの将来バージョンは別のSSL実装に対応するかもしれないため、これからは非推奨とみなされます。
可能であれば、SSL情報取得にSSL実装独立な新たな関数pqsslattribute()
、pqsslattributenames()
、PQsslInUse()
を使ってください。
libpqであらゆるOpenSSLのスレッドコールバックを尊重するようにしました。 (Jan Urbanski)
これまでは上書きされていました。
設定パラメータcheckpoint_segments
をmin_wal_sizeとmax_wal_sizeで置き換えました。
(Heikki Linnakangas)
この変更により、多数のWALファイルを、それらが不要になったあとも維持することなく、割り当てできます。
それゆえに、max_wal_size
のデフォルトは、従来のcheckpoint_segments
のデフォルトよりもずっと大きい1GB
です。
また、スタンバイサーバがWAL領域の消費をmax_wal_size
で制限するように努めてリスタートポイント処理を実行することにも注意してください。これまではcheckpoint_segments
に注意をはらっていませんでした。
LinuxのOOM killerを新たな環境変数pg_oom_adjust_file
、PG_OOM_ADJUST_VALUE
により制御します。
(Gurjeet Singh)
これまでのOOM制御基盤はコンパイル時のオプションLINUX_OOM_SCORE_ADJ
、LINUX_OOM_ADJ
を必要としました。これらはサポートされなくなります。新たな動作は全てのビルドで利用できます。
設定パラメータtrack_commit_timestampを有効にすることで、トランザクションコミットのタイムスタンプを記録できるようにしました。 (Álvaro Herrera, Petr Jelínek)
タイムスタンプ情報は関数pg_xact_commit_timestamp()
とpg_last_committed_xact()
を使って参照できます。
local_preload_librariesをALTER ROLE SET
から設定できるようにしました。
(Peter Eisentraut, Kyotaro Horiguchi)
自動バキュームワーカが処理中に設定パラメータ変更に反応できるようにしました。 (Michael Paquier)
設定パラメータdebug_assertionsを読み取り専用にしました。 (Andres Freund)
これは、コンパイル時にアサート有効にしたならもはやoffにできないようにして、より効果的なコード最適化を可能にする意味があります。
本変更では、postgres -A
オプションも削除されます。
effective_io_concurrencyを効果の無いシステムにおいても設定できるようにしました。 (Peter Eisentraut)
サーバの設定ファイル内容を表示するシステムビューpg_file_settings
を追加しました。
(Sawada Masahiko)
システムビューpg_settings
に、変更されたけれどもデータベース再起動まで反映されない内容があるかを示すpending_restart
列を追加しました。
(Peter Eisentraut)
ALTER SYSTEM
の設定値をALTER SYSTEM RESET
でリセットできるようにしました。
(Vik Fearing)
このコマンドはpostgresql.auto.conf
から指定した設定項目を削除します。
レプリケーション進行を観測する仕組みを作りました。 ロジカルレプリケーションで個々の変更の起点を識別する方法も含まれます。 (Andres Freund)
これはレプリケーションソリューションを構築するときの助けとなります。
マルチトランザクションのコミットログの切り捨て処理を適切にWAL記録されるように作り直しました。 (Andres Freund)
コードを相当程度より単純でより頑健にしました。
リカバリ後の動作を制御するrecovery.conf
パラメータrecovery_target_action
を追加しました。
(Petr Jelínek)
これは旧来のパラメータpause_at_recovery_target
を置き換えます。
archive_modeの新しい値always
を追加しました。
スタンバイで受け取ったWALファイルを常にアーカイブできるようになります。
(Fujii Masao)
WAL読み込みの失敗したあとのリトライを制御する設定パラメータwal_retrieve_retry_intervalを追加しました。 (Alexey Vasiliev, Michael Paquier)
これは特にウォームスタンバイに役立ちます。
WALにフルページイメージを圧縮して格納できるようにしました。 (Rahila Syed, Michael Paquier)
この機能は、WAL記録とWAL再生によりCPU時間を費やすことで、WAL量を減らします。新たな設定パラメータwal_compressionで制御します。今のところデフォルトはoffです。
スタンバイが昇格するとき、WALファイルに.partial
拡張子を付けてアーカイブします。
(Heikki Linnakangas)
レプリケーションコマンドをログ記録する設定パラメータlog_replication_commandsを追加しました。 (Fujii Masao)
デフォルトではIDENTIFY_SYSTEM
などのレプリケーションコマンドはたとえlog_statementをall
に設定してもログ記録されません
レプリケーションスロットを保持しているプロセスをpg_replication_slots
で報告します。
(Craig Ringer)
このためにactive_pid
列を追加しました。
recovery.conf
のprimary_conninfo
設定で接続URI(例: postgres://
)を使えるようにしました。
(Alexander Shulgin)
INSERT
で制約違反が生じたのを、UPDATE
に転換したり、無視したりできるようにしました。
(Peter Geoghegan, Heikki Linnakangas, Andres Freund)
INSERT ... ON CONFLICT DO NOTHING/UPDATE
という構文を使用します。
これは人気のあるUPSERT
コマンドのPostgreSQLにおける実装となります。
GROUP BY
分析機能にGROUPING SETS
、CUBE
、ROLLUP
を加えました。
(Andrew Gierth, Atri Sharma)
UPDATE
で複数対象カラムに一つの副問い合わせ結果から値を設定できるようにしました。
(Tom Lane)
UPDATE tab SET (col1, col2, ...) = (SELECT ...)
という構文で実現されます。
ロックされた行を読み飛ばすSELECT
オプションSKIP LOCKED
を追加しました。
(Thomas Munro)
NOWAIT
と異なり、ロック行に対してエラーを出すことはありません。
テーブルの部分集合を返すSELECT
オプションTABLESAMPLE
を追加しました。
この機能はSQL標準のテーブルサンプリングメソッドをサポートします。加えて、ユーザ定義サンプリングメソッドを提供します。
ミスタイプしたカラム名に対し、類推される候補をヒント提示します。 (Peter Geoghegan, Robert Haas)
REINDEX
がSCHEMA
オプションでスキーマ全体についてインデックス再作成できるようにしました。
(Sawada Masahiko)
REINDEX
にVERBOSE
オプションを追加しました。
(Sawada Masahiko)
REINDEX DATABASE
/SCHEMA
で、VERBOSE
が使われない限り、オブジェクト名を出力しないようにしました。
(Simon Riggs)
REINDEX
から現在用いられないFORCE
オプションを除きました。
(Fujii Masao)
行単位セキュリティ制御を追加しました。 (Craig Ringer, KaiGai Kohei, Adam Brightwell, Dean Rasheed, Stephen Frost)
本機能は、あるテーブルに対しどのユーザが追加、変更、参照できるかの行ごとの制御を可能にします。新しいコマンドcreate
/alter
/drop policy
、および、ALTER TABLE ... ENABLE/DISABLE ROW SECURITY
によって制御されます。
テーブルを作った後にALTER TABLE ... SET LOGGED / UNLOGGED
でWALログ書き出し状態を変更できるようにしました。
(Fabrízio de Royes Mello)
create table as
、create index
、create sequence
、および、CREATE MATERIALIZED VIEW
にIF NOT EXISTS
句を追加しました。
(Fabrízio de Royes Mello)
ALTER TABLE ... RENAME CONSTRAINT
がIF EXISTS
に対応しました。
(Bruce Momjian)
いくつかのDDLコマンドでユーザ名を指定する箇所にカレントユーザ、セッションユーザの意味でCURRENT_USER
、SESSION_USER
を使用できるようにしました。
(Kyotaro Horiguchi, Álvaro Herrera)
現在、ALTER USER、ALTER GROUP、ALTER ROLE、GRANT、および、ALTER
の各コマンドにて対応しています。
object
OWNER TO
ドメインの制約へのコメントに対応しました。 (Álvaro Herrera)
いくつかのトリガ、外部キーを作成、変更するコマンドでロックレベルを下げました。 (Simon Riggs, Andreas Karlsson)
対象テーブルに対するINSERT
権限でLOCK TABLE ... ROW EXCLUSIVE MODE
を可能にしました。
(Stephen Frost)
これまではこのコマンドはUPDATE
、DELETE
、TRUNCATE
のいずれか権限が必要でした。
テーブルとドメインでCHECK
制約を名前順に適用します。
(Tom Lane)
これまでは順番は不確定でした。
create
/ALTER DATABASE
でdatistemplate
とdatallowconn
を操作可能にしました。
(Vik Fearing)
これによりシステムカタログpg_database
の手動操作なしにこれらデータベースごとの設定を変更できます。
IMPORT FOREIGN SCHEMAコマンドを追加しました。 (Ronan Dunklau, Michael Paquier, Tom Lane)
このコマンドはリモートサーバに在るテーブル群の構造に対応したローカルの外部テーブルを自動で作成します。
CHECK
制約を外部テーブルに置けるようにしました。
(Shigeru Hanada, Etsuro Fujita)
このような制約は、リモートサーバ上で強制されるものと仮定され、ローカル側では強制されません。しかしながら、制約による排除など、問い合わせの最適化では制約が成立しているものと仮定されます。
外部テーブルが継承に参加できるようにしました。 (Shigeru Hanada, Etsuro Fujita)
これを自然に働かせるため、外部テーブルが無効とマークされたチェック制約を持てるように、また、ストレージとOID
属性の設定を可能としました。
ただし、これらの操作は外部テーブルに対して何の効果もありません。
外部データラッパとカスタムスキャンで結合プッシュダウンの実装を可能にしました。 (KaiGai Kohei)
ddl_command_end
イベントトリガが導入されたときはいつでも、DDL動作の調査するための詳細を取得します。
(Álvaro Herrera)
この情報は集合を返す関数pg_event_trigger_ddl_commands()
、あるいは、それでは不十分であるならC言語データ構造の解析を通して、利用できます。
テーブルのイベントトリガをALTER TABLE
により書換え可能にしました。
(Dimitri Fontaine)
データベースレベルのcomment
、security label
、および、grant
/REVOKE
のイベントトリガに対応しました。
(Álvaro Herrera)
pg_event_trigger_dropped_objects
の出力列をいくつか追加しました。
(Álvaro Herrera)
これにより削除操作の処理を容易にします。
xml
データ型が空もしくは全て空白文字の内容を受け入れできるようにしました。
(Peter Eisentraut)
これはSQL/XML仕様で必要とされています。
macaddr
型の入力にxxxx-xxxx-xxxx
形式が使えるようにしました。
(Herwin Weststrate)
interval
型で精度とフィールド定義について非SQL標準の構文を禁止しました。
(Bruce Momjian)
標準では、このような型定義は、例えば INTERVAL MINUTE TO SECOND(2)
というように書かなければいけません。PostgreSQLはこれまで INTERVAL(2) MINUTE TO SECOND
と書くことを許していましたが、これからは標準の方法で書かなければいけません。
inet
/cidr
型演算子の選択率見積もり関数を追加しました。また、テキスト検索関数の見積関数を改善しました。
(Emre Hasegeli, Tom Lane)
ロールや名前空間のOID
の入力や見栄えよい表示を簡単にするためのデータ型regrole
、regnamespace
を追加しました。
(Kyotaro Horiguchi)
jsonb
関数jsonb_set()
、jsonb_pretty()
を追加しました。
(Dmitry Dolgov, Andrew Dunstan, Petr Jelínek)
jsonb
生成関数to_jsonb()
、jsonb_object()
、jsonb_build_object()
、jsonb_build_array()
、jsonb_agg()
、jsonb_object_agg()
を追加しました。
(Andrew Dunstan)
json
型むけには同等の関数が既にありました。
jsonb
ドキュメントから、text
、text
配列、integer
の値を引き算できるようにしました。
(Dmitry Dolgov, Andrew Dunstan)
jsonb
むけの||
演算子を追加しました。
(Dmitry Dolgov, Andrew Dunstan)
JSONのヌル値をJSONドキュメントから取り除く関数json_strip_nulls()
、jsonb_strip_nulls()
を追加しました。
(Andrew Dunstan)
numeric
値のgenerate_series()
を追加しました。
(Plato Malugin)
array_agg()
とARRAY()
が入力に配列を取れるようにしました。
(Ali Akbar, Tom Lane)
配列の添え字を返す関数array_position()
、array_positions()
を追加しました。
(Pavel Stehule)
point
とpolygon
の距離演算子<->を追加しました。
(Alexander Korotkov)
similar to
とSUBSTRING
でマルチバイト文字によるエスケープを可能にしました。
(Jeff Davis)
これまではシングルバイト文字のみエスケープとして使用可能でした。
任意のソート可能なデータ型と一様でないバケット幅に対応した、width_bucket()
の別形を追加しました。
(Petr Jelínek)
pg_read_file()
や関連の関数にオプション引数missing_ok
を追加しました。
(Michael Paquier, Heikki Linnakangas)
関数呼び出しで=>
で名前のついたパラメータを指定できるようにしました。
(Pavel Stehule)
これまでは :=
だけが利用できました。これにより、=>
がユーザ定義演算子である可能性を排除することが必要となります。ユーザ定義演算子=>
の作成では PostgreSQL 9.0 から警告が出ていました。
PostgreSQLによる丸め関数を使うプラットフォームにPOSIX準拠の丸め処理を追加しました。 (Pedro Gimeno Fortea)
オブジェクトを一意に識別するOID
を返す関数pg_get_object_address()
、OID
に基づきオブジェクト情報を返す関数pg_identify_object_as_address()
を追加しました。
(Álvaro Herrera)
pg_stat_activity
のビュー問い合わせ、pg_cancel_backend()
の実行、pg_terminate_backend()
の実行において、セキュリティチェックを緩めました。
(Stephen Frost)
これまでは対象のセッションを所有している特定のロールだけがこれら操作を実行できました。これからはこれらロールのメンバーであれば十分とします。
統計スナップショットのタイムスタンプを出力する関数pg_stat_get_snapshot_timestamp()
を追加しました。
(Matt Kelly)
これは最後のスナップショットファイルがファイルシステムに書かれた時点をあらわします。
マルチトランザクションIDの年代を計算する関数mxid_age()
を追加しました。
(Bruce Momjian)
pg_archivecleanup、pg_test_fsync、pg_test_timing、pg_xlogdumpをcontrib
からsrc/bin
に移しました。
(Peter Eisentraut)
この変更により、ほとんどのインストールでこれらのプログラムがデフォルトでインストールされるようになります。
フェイルバック後にマスタサーバを再同期させることができる、pg_rewindを追加しました。 (Heikki Linnakangas)
pg_receivexlogで物理レプリケーションスロットを管理できるようにしました。 (Michael Paquier)
新たなオプション--create-slot
、--drop-slot
により制御します。
新たな--synchronous
オプションでpg_receivexlogがWALを記憶装置に同期フラッシュするようにしました。
(Furuya Osamu, Fujii Masao)
このオプションが無いと、WALファイルはクローズ時しかfsyncされません。
新たなオプション--jobs
によりvacuumdbが並列にバキュームできるようにしました。
(Dilip Kumar)
vacuumdbで複数の接続が必要であるとき、同じパスワードの入力を繰り返しプロンプトで要求しないようにしました。 (Haribabu Kommi, Michael Paquier)
reindexdbに--verbose
オプションを追加しました。
(Sawada Masahiko)
MS Windows上で、pg_basebackupがtarフォーマットのときテーブル空間マッピングファイルを使い、シンボリックリンクと100文字以上の長さのファイルパスに対応しました。 (Amit Kapila)
pg_xlogdumpに要約統計を表示するオプション--stats
を追加しました。
(Abhijit Menon-Sen)
psqlでAsciiDocを出力できるようにしました。 (Szymon Guz)
psqlのECHO
変数に失敗したコマンドだけ表示するerrors
モードを追加しました。
(Pavel Stehule)
この振る舞いはpsqlの-b
オプションでも指定できます。
psqlの unicode linestyle で、カラム区切り、ヘッダ、境界線の制御ができます。 (Pavel Stehule)
一重線または二重線に対応しています。デフォルトは一重線(single
)です。
psqlのPROMPT
変数に複数行にわたる文の現在の行番号を表示する新オプション%l
を追加しました。
(Sawada Masahiko)
\pset
オプションにページャ起動を制御するpager_min_lines
を追加しました。
(Andrew Dunstan)
ページャ起動を判断するときに使われるpsqlの行数カウントを改善しました。 (Andrew Dunstan)
--output
または--log-file
で指定されたファイルに書き込みできない場合、psqlは失敗するようになります。
(Tom Lane, Daniel Vérité)
これまで、このようなケースでは事実上指定が無視されていました。
search_path変数を設定するときのpsqlタブ補完を追加しました。 (Jeff Janes)
今のところ最初のスキーマのみタブ補完できます。
トリガとルールについてpsqlのタブ補完を改善しました。 (Andreas Karlsson)
psqlの\?
ヘルプにvariables
とoptions
の項目を追加しました。
(Pavel Stehule)
\? variables
は、psqlの特別変数一覧を、\? options
は、コマンドラインオプション一覧を表示します。
\? commands
は、従来の出力(単に \?
と指定した場合)で現在もデフォルトとなっているメタコマンド一覧を表示します。これらのヘルプはコマンドラインオプション--help=
でも得られます。
項目
psqlの\db+
でテーブル空間の大きさを表示します。
(Fabrízio de Royes Mello)
psqlの\dT+
でデータ型の所有者を表示します。
(Magnus Hagander)
psqlの\watch
で\timing
の情報を出力できるようにしました。
また、通常は不必要なので、--echo-hidden
に対して\watch
問い合わせのエコー出力を止めました。
psqlの\sf
と\ef
コマンドがECHO_HIDDEN
を尊重するようにしました。
(Andrew Dunstan)
psqlの\set
、\unset
、および、:variable
(変数参照)に対するタブ補完を改善しました。
(Pavel Stehule)
psqlの\c
コマンドでロール名のタブ補完を可能にしました。
pg_dumpが--snapshot
オプションで他セッションとスナップショットを共有できるようにしました。
(Simon Riggs, Michael Paquier)
指定するリモートスナップショットはpg_export_snapshot()
またはロジカルレプリケーションスロットの作成によりエクスポートされたものでなければいけません。これは複数のpg_dumpプロセス間で一貫したスナップショットを共有するのに使えます。
tarアーカイブフォーマットにおいて8GBを超えるサイズのテーブルに対応しました。 (Tom Lane)
tarフォーマットのPOSIX標準では8GBを超えるtarアーカイブの要素を許可していませんが、ほとんどの近代的なtarの実装ではこれを可能とする拡張をサポートしています。 失敗させるのでなく、必要なら拡張フォーマットを使用するようにします。
pg_dumpが常にサーバとpg_dumpのバージョンを表示するようにしました。 (Jing Wang)
これまでは--verbose
モードのときだけバージョン情報が表示されていました。
永らく無視されてきた-i
/--ignore-version
オプションをpg_dump、pg_dumpall、pg_restoreから取り除きました。
(Fujii Masao)
pg_ctlで複数の-o
オプションに対応しました。これらの値は連結されます。
(Bruce Momjian)
MS Windowsでのログ出力において、pg_ctlのイベントソースを制御できるようになりました。 (MauMau)
これは別にpostgresql.conf
に設定を持つサーバではなく、pg_ctlのみ制御します。
サーバの監視するアドレスにワイルドカード値(IPv4では0.0.0.0
、IPv6では::
)が設定された場合、文字通りにワイルドカードアドレスを試みるのではなくループバックアドレスから接続します。
(Kondo Yuta)
この修正は主にWindowsに影響を及ぼします。 他のプラットフォームではpg_ctlはUnixドメインソケットを使うことを優先します。
pg_upgradeをcontrib
からsrc/bin
に移動しました。
(Peter Eisentraut)
この変更に関連して、pg_upgrade_supportモジュールで提供されていた機能をサーバコアに移動しました。
pg_upgradeで複数の-o
/-O
オプションに対応しました。これらの値は連結されます。
(Bruce Momjian)
pg_upgradeにおけるデータベースの照合順序の比較を改善しました。 (Heikki Linnakangas)
8.3クラスタからのアップグレードのサポートを外しました。 (Bruce Momjian)
pgbenchをcontrib
からsrc/bin
に移動しました。
(Peter Eisentraut)
「excluding connections establishing」のTPS値の計算を修正しました。 (Tatsuo Ishii, Fabien Coelho)
pgbenchのスレッド数がクライアント接続数よりも少ないときには常に接続確立のオーバーヘッドが誤計算されていました。これは明らかにバグですが、TPS値がこれまでの結果と比較できなくなるため、9.5より前のバージョンへの修正は行いません。
指定時間以上要したpgbenchトランザクションをカウントできるようにしました。 (Fabien Coelho)
これは新たなオプション--latency-limit
で制御されます。
pgbenchの\setrandom
で正規分布/指数分布による生成を可能にしました。
(Kondo Mitsumasa, Fabien Coelho)
pgbenchの\set
コマンドで複数の演算子を含む算術演算を扱えるようにし、また、サポートされる演算子に%
(剰余)を加えました。
(Robert Haas, Fabien Coelho)
WALレコードフォーマットを単純にしました。 (Heikki Linnakangas)
これにより外部ツールがより容易にどのブロックが変更されたかを追跡できます。
トランザクションコミットとアボートのWAL記録の表現を改善しました。 (Andres Freund)
原子的メモリ操作のAPIを追加しました。 (Andres Freund)
カスタムパス、カスタムスキャン方式が可能になりました。 (KaiGai Kohei, Tom Lane)
これにより拡張でオプティマイザとエグゼキュータをより大幅に制御できます。
外部データラッパでフィルタ後のロックを可能にしました。 (Etsuro Fujita)
外部テーブルをINSERT ... ON CONFLICT DO NOTHING
問い合わせに含めることができます。
(Peter Geoghegan, Heikki Linnakangas, Andres Freund)
これを扱えるようにするため外部テーブルラッパの修正が必要です。
外部テーブルに対するINSERT ... ON CONFLICT DO UPDATE
はサポートされません。
hash_create()
のシンプルバイナリキーハッシュ関数を選ぶAPIを改善しました。
(Teodor Sigaev, Tom Lane)
並列実行基盤を改善しました。 (Robert Haas, Amit Kapila, Noah Misch, Rushabh Lathia, Jeevan Chalke)
Alpha (CPU)、Tru64 (OS)への移植を削除しました。
ARMv5とより古いCPUむけのスワップバイト命令によるスピンロック実装を削除しました。 (Robert Haas)
ARMv5の弱いメモリ順序付けではこのロック実装は安全ではありません。 アトミックに対応した新しいgcc実装にてスピンロック対応は依然として可能です。
極端に長い(100文字超)ファイルパスがtarファイルに書かれたときエラーを出します。 (Peter Eisentraut)
tarはこのような長すぎるパスに対応しません。
カラムpg_seclabel
.provider
、pg_shseclabel
.provider
のインデックス演算子クラスをtext_pattern_ops
に変更しました。
これは、クラスタ内の異なるデータベースが異なるデフォルト照合順序をもつとき、これらインデックスが問題を惹き起こすことを防ぎます。
スピンロックの基本命令をコンパイラバリアの機能に変更しました。 (Robert Haas)
Windows 8、Windows Server 2012、および以降の Windows systems で高精度タイムスタンプを可能としました。 (Craig Ringer)
MS Windows では共有ライブラリをbin
にインストールします。
(Peter Eisentraut, Michael Paquier)
MSVCビルドではsrc/test/modules
をcontrib
と一緒にインストールします。
(Michael Paquier)
configureの--with-extra-version
オプションをMSVCビルドでも受け付けるようにしました。
(Michael Paquier)
PGFILEDESC
をMSVC contribビルドに渡します。
(Michael Paquier)
全てのMSVCビルドされたバイナリにアイコンを、また、全てのMS Windowsバイナリにバージョン情報を添加しました。 (Noah Misch)
MinGWでは既にそのようにアイコンが与えられていました。
getopt_long()
内部実装にオプション引数対応を加えました。
(Michael Paquier, Andres Freund)
これはMSVCで使われます。
pg_stat_statementsに 時間の最小、最大、平均、標準偏差の統計を追加しました。 (Mitsumasa Kondo, Andrew Dunstan)
pgcryptoにPGP Armorヘッダから抽出をするpgp_armor_headers()
関数を追加しました。
(Marko Tiikkaja, Heikki Linnakangas)
unaccentで空の置き換え文字列を可能としました。 (Mohammad Alhashash)
これは発音区別記号が複数文字に分かれて表現される言語で有用です。
unaccentで複数文字からなる変換元文字を可能にしました。 (Tom Lane)
これは発音区別記号が複数文字に分かれて表現される言語で有用です。 また、より複雑なunaccent辞書も可能にします。
追加的なテーブルサンプリング方式をできるようにするcontrib
モジュールtsm_system_rows、tsm_system_timeを追加しました。
(Petr Jelínek)
pageinspectにGINインデックスを解析する関数を追加しました。 (Heikki Linnakangas, Peter Geoghegan, Michael Paquier)
pg_buffercacheの表示にバッファピンについての情報を追加しました。 (Andres Freund)
pgstattupleがpgstattuple_approx()
でより少ない負荷でおおよその答えを報告できるようにしました。
(Abhijit Menon-Sen)
dummy_seclabel、test_shm_mq、test_parser、および、worker_spiを、contrib
からsrc/test/modules
に移動しました。
(Álvaro Herrera)
これらモジュールはサーバテストだけのためのものであって、PostgreSQLをパッケージングする際のビルドやインストールでは必要とされません。