Release date: 2017-02-09
このリリースは9.6.1に対し、各種不具合を修正したものです。 9.6メジャーリリースにおける新機能については、E.6. リリース9.6 を参照してください。
9.6.Xからの移行ではダンプ/リストアは不要です。
しかしながら、インストレーションが下記変更点の最初の項目に書かれたバグの影響を受けている場合には、アップデート後に壊れたインデックスを修復する作業が必要になるでしょう。
また、9.6.1よりも前のバージョンからアップグレードする場合は、E.5. リリース9.6.1を参照して下さい。
CREATE INDEX CONCURRENTLY
で作られたインデックスの破損をもたらす競合状態を修正しました。
(Pavan Deolasee, Tom Lane)
CREATE INDEX CONCURRENTLY
が前もってインデックスされていない列に依存するインデックスの作成に使われていたなら、CREATE INDEX
コマンドと同時実行するトランザクションにより挿入あるいは更新された行が誤ったインデックスエントリを受け入れるおそれがありました。
この現象が生じた疑いがあるなら、最も確実な対応はアップデート実施後に影響をうけたインデックスを再作成することです。
カタログのスキャンに使われる特別なスナップショットが早すぎるデータ除去処理により無効化されないようにしました。 (Tom Lane)
バックエンドが自身の最も古いxminを知らせるときにこのスナップショットを考慮しておらず、潜在的に同時実行のバキューム操作が未だ必要なデータを削除するのを許していました。 これは「cache lookup failed for relation 1255」(リレーション1255のキャッシュ検索に失敗しました)という一時的なエラーをもたらしていました。
BRINインデックスの誤ったWALログ出力を修正しました。 (Kuntal Ghosh)
インデックスタプルを異なるページに移動するときにBRINの「revmap」ページに対して出力されるWALレコードが誤っていました。 リプレイでインデックスの関連する部分が使えなくなり、再計算を強いられるでしょう。
ログをとらないテーブルに対する「init fork」生成を無条件にWAL出力するようにしました。 (Michael Paquier)
これまでwal_level = minimal
のときには省略されていましたが、ログをとらないテーブルがクラッシュ後に適切に空に初期化されることを保証するために、実際にはその場合でも必要でした。
統計情報コレクタがホットスタンバイ動作中に落ちたときに、それを再起動するようにしました。 (Takayuki Tsunakawa)
ホットスタンバイフィードバックがスタンバイサーバ開始時に有効にされた場合に正しく動作するようにしました。 (Ants Aasma, Craig Ringer)
ホットスタンバイが衝突する問い合わせを待機している間、割り込みを検査するようにしました。 (Simon Riggs)
稀な場合に絶えず自動バキュームランチャーが再生成されるのを回避しました。 (Amit Khandekar)
この修正は自動バキュームが名目上offでいくつか凍結を要するテーブルがあるけれども全てのそのようなテーブルは既に自動バキュームワーカにより処理中である場合の問題を回避します。
synchronous_standby_namesでnum_sync
フィールドをゼロに設定することを禁止しました。
(Fujii Masao)
同期スタンバイを無効にする正しい方法は値全体を空文字列に設定することです。
ユーザの接続上限に対してバックグラウンドワーカプロセスを含めないようにしました。 (David Rowley)
拡張のメンバオブジェクトが削除できるときのチェックを修正しました。 (Tom Lane)
拡張のアップグレードスクリプトはメンバオブジェクトを削除できなければいけませんが、serial列のシーケンスについてできませんでした。また、他の場合でもそうなる可能性がありました。
ALTER EXTENSION ... ADD/DROP
で正しく動作するように拡張のメンバオブジェクトの初期権限の追跡が修正されました。
(Stephen Frost)
これからは拡張に追加された時点のオブジェクトの権限が、そのデフォルト権限と見做され、後の権限変更だけが以降のpg_dump実行でダンプされるようになります。
インデックス再作成のときにALTER TABLE
がインデックスのテーブル空間の割り当てを確実に維持するようにしました。
(Tom Lane, Michael Paquier)
これまではdefault_tablespaceのデフォルト以外の設定によりインデックス破壊をもたらす可能性がありました。
ALTER TABLE ... ALTER CONSTRAINT
で外部キー制約の遅延可能性属性を変更するときのトリガ関数属性の誤った更新を修正しました。
(Tom Lane)
これは、その後に外部キーを使用する際にトリガが間違ったタイミングで発動することで奇妙なエラーをもたらしました。
参照先リレーションに対する待機中トリガイベントがあるときに外部キー制約を削除しないようにしました。 (Tom Lane)
これにより「could not find trigger NNN
」(トリガNNNが見つかりません)または「relation NNN
has no triggers」(リレーションNNNにトリガがありません)というエラーを回避します。
子テーブルが親テーブルとは異なる列の順序を持つときのALTER TABLE ... SET DATA TYPE ... USING
を修正しました。
(Álvaro Herrera)
USING
式で列の番号付けの調整に失敗して、エラーをもたらしました。
典型的には「attribute N
has wrong type」(属性Nの型が間違っています)です。
OIDを持つテーブルがOIDを持つ親テーブルとALTER TABLE ... INHERIT
を通して関連づけられているときのOID列の処理を修正しました。
(Amit Langote)
この場合、OID列は通常のユーザ列と同様に扱われるべきでしたが、そうなっておらず、後の継承の変更で奇妙な振る舞いをひき起こしていました。
LIKE
参照されているテーブルがOIDを持つかどうかによらず、CREATE TABLE ... LIKE ... WITH OIDS
がOIDを持つテーブルを作るようにしました。
(Tom Lane)
新たなビューオプションを適用しようとする前にビュー問い合わせを更新するようにCREATE OR REPLACE VIEW
を修正しました。
(Dean Rasheed)
これまでは新たなオプションが古いビュー定義と矛盾するときにコマンドが失敗していました。
ALTER TEXT SEARCH CONFIGURATION
のとき、正しいオブジェクト識別を報告するようにしました。
(Artur Zakirov)
ロジカルデコーディングなどの拡張に誤ったカタログOIDが報告されていました。
特別なXIDのFrozenTransactionId
とBootstrapTransactionId
について問われたとき、コミットタイムスタンプの仕組みが失敗しないように修正しました。
(Craig Ringer)
誤って通常テーブルのreloptionと同様にビューのreloptionを使用しているのを修正しました。 (Tom Lane)
症状はINSERT ... ON CONFLICT
の対象がカスケードオプションを伴うビューであるときの偽性の「ON CONFLICT is not supported on table ... used as a catalog table」(ON CONFLICTはカタログテーブルとして使われるテーブル...ではサポートされません)エラーです。
幅の広いテーブルにON CONFLICT
を使ったときの誤った「target lists can have at most N
entries」(対象リストは最大でNエントリ持つことができます)エラーを修正しました。
(Tom Lane)
削除された列を伴うテーブルに対するINSERT
またはUPDATE
のときの偽性の「query provides a value for a dropped column」(問い合わせは削除された列に値を供給しています)エラーを修正しました。
(Tom Lane)
UPDATE
のソース式でのfoo
.*
の複数列の展開を防止しました。
(Tom Lane)
これは「UPDATE target count mismatch --- internal error」(UPDATE対象数が不一致です --- 内部エラー)をもたらしました。 これからは、この構文は他のコンテキストと同様に行全体の変数として解釈されます。
複数行のVALUES
コンストラクトに対して列のtypemodが精密に決定されるようにしました。
(Tom Lane)
これは、列の最初の値が決定可能なtypmod(例えばvarchar
の長さ)を持つけれど続く値は同じ制限を共有しないときに発生する問題を修正します。
ユニコード文字列の末尾における完結しないユニコードのサロゲートペアにエラーを出すようにしました。 (Tom Lane)
通常、ユニコードのサロゲート先頭文字にはユニコードのサロゲート末尾文字が続かなければなりませんが、先頭文字がユニコード文字列リテラル(U&'...'
)またはユニコード識別子(U&"..."
)の最後の文字である場合に、これについての検査が見逃されていました。
複数の集約が同じ遷移状態を共有できるときのDISTINCT
と順序集約の実行を修正しました。
(Heikki Linnakangas)
tsquery
におけるフレーズ検索演算子の実装を修正しました。
(Tom Lane)
PHRASE演算子の後に現れるAND/OR/NOT演算子を取り去ろうとする誤った、そして一貫性なく適用された書き換えルールを削除し、代わりにそのような問題を正しく処理するために実行エンジンをアップグレードしました。 これは、そのような組み合わせを含むテキスト検索問い合わせによる奇妙な動作およびクラッシュする可能性を修正します。 また、左側の階層が深いツリー以外の組み合わせにおいて入れ子になったPHRASE演算子が合理的に動作するように修正し、フレーズ検索句から検索対象外の語句を削除する際の動作を補正し、インデックス検索がそのような問い合わせの単純なシーケンシャルスキャンアプリケーションを用いて一貫性をもって動作するようにしました。
!foo
のような純粋な否定のテキスト検索問い合わせが空のtsvector
にマッチするようにしました。
(Tom Dunstan)
このようなマッチはGINインデックス検索では見つかりましたが、シーケンシャルスキャンやGiSTインデックススキャンでは見つかりませんでした。
ts_rewrite()
が非トップレベルのサブツリーを空クエリで置き換えるときのクラッシュを、防止しました。
(Artur Zakirov)
ts_rewrite()
での性能問題を修正しました。
(Tom Lane)
ts_rewrite()
の入れ子NOT演算子の扱いを修正しました。
(Tom Lane)
遷移関数としてarray_append()
を使うユーザ定義集約の速度を改善しました。
(Tom Lane)
空配列を適切に扱うようにarray_fill()
を修正しました。
(Tom Lane)
レコードの配列を処理しているときにarray_position()
またはarray_positions()
でクラッシュの可能性があり、修正しました。
(Junseok Yang)
quote_literal_cstr()
で1バイトのバッファオーバランを修正しました。
(Heikki Linnakangas)
このオーバランは入力全体がシングルクォートおよび/またはバックスラッシュで構成される場合でのみ発生します。
pg_start_backup()
とpg_stop_backup()
の複数回の呼び出しが同時に実行されないようにしました。
(Michael Paquier)
誰かがこれらの関数を並列に実行しようとしたときの、アサート失敗あるいはもっと悪い事態を回避します。
何もしないAT TIME ZONE
変換を取り除こうとする変換を無効にしました。
(Tom Lane)
これは単純化された式がインデックス条件で使われるときに誤った答えをもたらしました。
実際にはノーオペレーションではないinterval
からinterval
へのキャストを捨てないようにしました。
(Tom Lane)
一部の場合に下位のinterval
フィールドのゼロ埋めした結果になるべきキャストが誤って何もしない処理と認識され、捨てられていました。
一例はINTERVAL MONTH
からINTERVAL YEAR
へのキャストが月フィールドをクリアしないことです。
パラレルクエリに利用できるワーカ数が再スキャン中に減った場合のクラッシュを修正しました。 (Andreas Seltenreich)
GUCパラメータ値をパラレルワーカに渡す際のバグを修正しました。 (Michael Paquier, Tom Lane)
PREPARE
を使ったプリペアド文がパラレルプランを得ることができるようにしました。
(Amit Kapila, Tobias Bussmann)
セミ結合に対するパラレルプランの誤った生成を修正しました。 (Tom Lane)
プランナのパラレル結合に対する濃度推定が修正されました。 (Robert Haas)
これらの推定が合計ではなく各ワーカで見られると予想された行数を反映するようにしました。
初期プランまたはサブプランを含むプランノードのパラレル化を試みないようにプランナを修正しました。 (Tom Lane, Amit Kapila)
キャッシュされたプランが外部テーブルオプションの変更により確実に無効化されるようにしました。 (Amit Langote, Etsuro Fujita, Ashutosh Bapat)
定数のGROUP BY
句を伴うソートされた部分集約に対して生成されるプランを修正しました。
(Tom Lane)
CTE参照を含むUNION ALL
を処理するときの「could not find plan for CTE」(CTEのプランが見つかりません)プランナエラーを修正しました。
(Tom Lane)
Materialノードをサブプランに強制的に追加したときの初期プランの誤操作を修正しました。 (Tom Lane)
この誤りの典型的な結果は「plan should not reference subplan's variable」(プランはサブプランの変数を参照してはいけません)エラーです。
セミ結合とアンチ結合に対する外部キーに基づく結合選択性の推定を継承の場合と同様に修正しました。 (Tom Lane)
外部キー関係の存在を考慮にいれた新たなコードは、これらの場合には間違ったことをして推定をより悪くして9.6以前のコードと変わりませんでした。
拡張の設定テーブルと印付けされたシーケンスのデータを出力するようにpg_dumpを修正しました。 (Michael Paquier)
pg_dumpでALTER DEFAULT PRIVILEGES ... REVOKE
の誤操作を修正しました。
(Stephen Frost)
pg_dumpはALTER DEFAULT PRIVILEGES
が通常あるよりも権限を減らすのに使われている場合に必要なREVOKE
コマンドの発行をしていませんでした。
組み込み関数を使うユーザ定義キャストと変換をダンプするようにpg_dumpを修正しました。 (Stephen Frost)
アーカイブが認識できないDROP
コマンドを含む場合に--create --if-exists
を伴うpg_restoreをより分別のある振る舞いをするように修正しました。
(Tom Lane)
これは今あるバグを修正するわけではありませんが、将来pg_restoreが、後のpg_dumpバージョンで生成されたアーカイブに使用する場合の振る舞いを改善すると考えられます。
遅いI/Oがある中でのpg_basebackupのレート制限を修正しました。 (Antonin Houska)
ディスクI/Oが一時的に指定されたレート制限よりも非常に遅い場合、計算がオーバーフローして、残りの実行に対してレート制限が事実上使えませんでした。
pg_basebackupのシンボリックリンクされたサブディレクトリpg_stat_tmp
およびpg_replslot
の扱いが修正されました。
(Magnus Hagander, Michael Paquier)
WALファイルを含めたときスタンバイサーバで起こりうるpg_basebackupの失敗を修正しました。 (Amit Kapila, Robert Haas)
xxx
_flush_after
パラメータについて正しいプラットフォーム固有のデフォルト値をpostgresql.conf
に挿入するようにinitdbを改善しました。
(Fabien Coelho, Tom Lane)
これはデフォルト値を文書化する従来よりも明快な方法です。
ドメインのチェック制約とCASE
実行にて、拡張された配列の誤操作を修正しました。
(Tom Lane)
これらのコンテキストで実行されたPL/pgSQL関数が続く操作のために保持される必要のある配列値を変更またはさらに削除する可能性がありました。
PL/pgSQL変数への割り当ての際に評価されたドメインのチェック制約のようなコンテキストでのPL/pgSQL関数の入れ子使用を修正しました。 (Tom Lane)
PL/Pythonむけに作成したPython例外オブジェクトが確実に適切にリファレンスカウントされるようにしました。 (Rafa de la Torre, Tom Lane)
これはPythonのガーベージコレクションのサイクルが起きた後にオブジェクトが使われた場合の失敗を回避します。
列名として.tupno
を持つテーブルのトリガに対応するようにPL/Tclを修正しました。
(Tom Lane)
これは(以前の文書化されていない)PL/Tclのspi_exec
およびspi_execp
コマンドの振る舞いと調和させます。
すなわち、.tupno
マジック列はその名前の真の列が無い場合だけ挿入されます。
Unix上であってもDOS形式の改行文字が~/.pgpass
ファイルで許されるようにしました。
(Vik Fearing)
この変更は同じパスワードファイルをUnixマシンとWindowsマシンとで使うのを簡単にします。
ecpgにドットで終わるファイル名が与えられた際の1バイトのバッファオーバランを修正しました。 (Takayuki Tsunakawa)
psqlの\crosstabview
で重複データに対する誤ったエラー報告を修正しました。
(Tom Lane)
psqlは同じクロス表の升目に対する複数エントリに苦情を言うときに、しばしば誤った行および/または列の値を示しました。
ALTER DEFAULT PRIVILEGES
に対するpsqlのタブ補完を修正しました。
(Gilles Darold, Stephen Frost)
ALTER TABLE t ALTER c DROP ...
に対するpsqlのタブ補完を修正しました。
(Kyotaro Horiguchi)
psqlで、空または全てブランクのPAGER
環境変数設定を「ページャ無し」という意味で扱うようにしました。
(Tom Lane)
これまでは、このような設定はページャにむけようとした出力を全く見えなくしていました。
contrib/dblink
のメモリ不足などの低レベルlibpqエラーの報告を改善しました。
(Joe Conway)
接続オプションのソースとしてcontrib/postgres_fdw
外部サーバを使うとき、contrib/dblink
に無関係なサーバオプションを無視させました。
(Corey Huinker)
これまでは、外部サーバオブジェクトがlibpq接続オプションでは無いオプションを持っているなら、エラーが生じました。
contrib/pageinspect
のGINインデックスむけの関数で移植性の問題を修正しました。
(Peter Eisentraut, Tom Lane)
Windowsで待機中にソケット読み取りイベントを見逃す可能性があり、修正しました。 (Amit Kapila)
この誤りはほとんどの場合に無害ですが、pldebugger拡張を使おうとしたときにハングアップをひき起こすことが知られています。
Windowsで環境変数の変更がデバッグオプションを有効にしてビルドされたDLLに確実に伝播するようにしました。 (Christian Ullrich)
タイムゾーンライブラリをIANA release tzcode2016jに同期しました。 (Tom Lane)
多数の問題が修正されており、最も重要なものとしては対象ディレクトリがハードリンクをサポートしない場合はタイムゾーンデータ導入に失敗していたことがあります。
タイムゾーンデータをtzdata release 2016jに更新しました。 北キプロス(新タイムゾーン Asia/Famagusta 追加)、ロシア(新タイムゾーン Europe/Saratov 追加)、トンガ、Antarctica/Casey における夏時間法の変更と、イタリア、カザフスタン、マルタ、パレスチナにおける歴史的修正、トンガにおける数値によるゾーン略記法を選択する変更が含まれます。