[11/15開催: PostgreSQL Conference Japan 2019 参加受付中] 
他のバージョンの文書 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

E.20. リリース9.4.11

リリース日: 2017-02-09

このリリースは9.4.10に対し、各種不具合を修正したものです。 9.4メジャーリリースにおける新機能については、E.31. リリース9.4を参照してください。

E.20.1. バージョン9.4.11への移行

9.4.Xからの移行ではダンプ/リストアは不要です。

しかしながら、インストレーションが下記変更点の最初の項目に書かれたバグの影響を受けている場合には、アップデート後に壊れたインデックスを修復する作業が必要になるでしょう。

また、9.4.10よりも前のリリースからアップグレードする場合は、E.21. リリース9.4.10を参照して下さい。

E.20.2. 変更点

  • CREATE INDEX CONCURRENTLYで作られたインデックスの破損をもたらす競合状態を修正しました。 (Pavan Deolasee, Tom Lane)

    CREATE INDEX CONCURRENTLYが前もってインデックスされていない列に依存するインデックスの作成に使われていたなら、CREATE INDEXコマンドと同時実行するトランザクションにより更新された行が誤ったインデックスエントリを受け入れるおそれがありました。 この現象が生じた疑いがあるなら、最も確実な対応はアップデート実施後に影響をうけたインデックスを再作成することです。

  • カタログのスキャンに使われる特別なスナップショットが早すぎるデータ除去処理により無効化されないようにしました。 (Tom Lane)

    バックエンドが自身の最も古いxminを知らせるときにこのスナップショットを考慮しておらず、潜在的に同時実行のバキューム操作が未だ必要なデータを削除するのを許していました。 これはcache lookup failed for relation 1255(リレーション1255のキャッシュ検索に失敗しました)という一時的なエラーをもたらしていました。

  • ログをとらないテーブルに対するinit fork生成を無条件にWAL出力するようにしました。 (Michael Paquier)

    これまでwal_level = minimalのときには省略されていましたが、ログをとらないテーブルがクラッシュ後に適切に空に初期化されることを保証するために、実際にはその場合でも必要でした。

  • Reduce interlocking on standby servers during the replay of btree index vacuuming operations (Simon Riggs)

    This change avoids substantial replication delays that sometimes occurred while replaying such operations.

  • 統計情報コレクタがホットスタンバイ動作中に落ちたときに、それを再起動するようにしました。 (Takayuki Tsunakawa)

  • ホットスタンバイフィードバックがスタンバイサーバ開始時に有効にされた場合に正しく動作するようにしました。 (Ants Aasma, Craig Ringer)

  • ホットスタンバイが衝突する問い合わせを待機している間、割り込みを検査するようにしました。 (Simon Riggs)

  • 稀な場合に絶えず自動バキュームランチャーが再生成されるのを回避しました。 (Amit Khandekar)

    この修正は自動バキュームが名目上offでいくつか凍結を要するテーブルがあるけれども全てのそのようなテーブルは既に自動バキュームワーカにより処理中である場合の問題を回避します。

  • 拡張のメンバオブジェクトが削除できるときのチェックを修正しました。 (Tom Lane)

    拡張のアップグレードスクリプトはメンバオブジェクトを削除できなければいけませんが、serial列のシーケンスについてできませんでした。また、他の場合でもそうなる可能性がありました。

  • インデックス再作成のときに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にトリガがありません)というエラーを回避します。

  • OIDを持つテーブルがOIDを持つ親テーブルとALTER TABLE ... INHERITを通して関連づけられているときのOID列の処理を修正しました。 (Amit Langote)

    この場合、OID列は通常のユーザ列と同様に扱われるべきでしたが、そうなっておらず、後の継承の変更で奇妙な振る舞いをひき起こしていました。

  • 新たなビューオプションを適用しようとする前にビュー問い合わせを更新するようにCREATE OR REPLACE VIEWを修正しました。 (Dean Rasheed)

    これまでは新たなオプションが古いビュー定義と矛盾するときにコマンドが失敗していました。

  • ALTER TEXT SEARCH CONFIGURATIONのとき、正しいオブジェクト識別を報告するようにしました。 (Artur Zakirov)

    ロジカルデコーディングなどの拡張に誤ったカタログOIDが報告されていました。

  • 直列化可能かを、制約違反エラーを報告する前に検査するようにしました。 (Thomas Munro)

    シリアライザブルトランザクション隔離を使っているとき、同時トランザクションを原因とするいかなるエラーも直列化の失敗として表明するのが望ましく、それによりアプリケーションにリトライが成功するかもしれないという手がかりを与えます。 残念ながら、キー重複の失敗が同時挿入で引き起こされた場合には、これは確実には生じません。 本変更は、アプリケーションがトランザクションのより早くに明示的に競合するキーの存在をチェックした(そして見つからなかった)なら、このようなエラーが直列化のエラーとして報告されることを保証します。

  • UPDATEのソース式でのfoo.*の複数列の展開を防止しました。 (Tom Lane)

    これはUPDATE target count mismatch --- internal error(UPDATE対象数が不一致です --- 内部エラー)をもたらしました。 これからは、この構文は他のコンテキストと同様に行全体の変数として解釈されます。

  • 複数行のVALUESコンストラクトに対して列のtypemodが精密に決定されるようにしました。 (Tom Lane)

    これは、列の最初の値が決定可能なtypmod(例えばvarcharの長さ)を持つけれど続く値は同じ制限を共有しないときに発生する問題を修正します。

  • ユニコード文字列の末尾における完結しないユニコードのサロゲートペアにエラーを出すようにしました。 (Tom Lane)

    通常、ユニコードのサロゲート先頭文字にはユニコードのサロゲート末尾文字が続かなければなりませんが、先頭文字がユニコード文字列リテラル(U&'...')またはユニコード識別子(U&"...")の最後の文字である場合に、これについての検査が見逃されていました。

  • !fooのような純粋な否定のテキスト検索問い合わせが空のtsvectorにマッチするようにしました。 (Tom Dunstan)

    このようなマッチはGINインデックス検索では見つかりましたが、シーケンシャルスキャンやGiSTインデックススキャンでは見つかりませんでした。

  • ts_rewrite()が非トップレベルのサブツリーを空クエリで置き換えるときのクラッシュを、防止しました。 (Artur Zakirov)

  • ts_rewrite()での性能問題を修正しました。 (Tom Lane)

  • ts_rewrite()の入れ子NOT演算子の扱いを修正しました。 (Tom Lane)

  • 空配列を適切に扱うようにarray_fill()を修正しました。 (Tom Lane)

  • quote_literal_cstr()で1バイトのバッファオーバランを修正しました。 (Heikki Linnakangas)

    このオーバランは入力全体がシングルクォートおよび/またはバックスラッシュで構成される場合でのみ発生します。

  • pg_start_backup()pg_stop_backup()の複数回の呼び出しが同時に実行されないようにしました。 (Michael Paquier)

    誰かがこれらの関数を並列に実行しようとしたときの、アサート失敗あるいはもっと悪い事態を回避します。

  • 実際にはノーオペレーションではないintervalからintervalへのキャストを捨てないようにしました。 (Tom Lane)

    一部の場合に下位のintervalフィールドのゼロ埋めした結果になるべきキャストが誤って何もしない処理と認識され、捨てられていました。 一例はINTERVAL MONTHからINTERVAL YEARへのキャストが月フィールドをクリアしないことです。

  • キャッシュされたプランが外部テーブルオプションの変更により確実に無効化されるようにしました。 (Amit Langote, Etsuro Fujita, Ashutosh Bapat)

  • 組み込み関数を使うユーザ定義キャストと変換をダンプするように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)

  • 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)

  • ALTER DEFAULT PRIVILEGESに対するpsqlのタブ補完を修正しました。 (Gilles Darold, Stephen Frost)

  • psqlで、空または全てブランクのPAGER環境変数設定をページャ無しという意味で扱うようにしました。 (Tom Lane)

    これまでは、このような設定はページャにむけようとした出力を全く見えなくしていました。

  • contrib/dblinkのメモリ不足などの低レベルlibpqエラーの報告を改善しました。 (Joe Conway)

  • 接続オプションのソースとしてcontrib/postgres_fdw外部サーバを使うとき、contrib/dblinkに無関係なサーバオプションを無視させました。 (Corey Huinker)

    これまでは、外部サーバオブジェクトがlibpq接続オプションでは無いオプションを持っているなら、エラーが生じました。

  • Windowsで環境変数の変更がデバッグオプションを有効にしてビルドされたDLLに確実に伝播するようにしました。 (Christian Ullrich)

  • タイムゾーンライブラリをIANA release tzcode2016jに同期しました。 (Tom Lane)

    多数の問題が修正されており、最も重要なものとしては対象ディレクトリがハードリンクをサポートしない場合はタイムゾーンデータ導入に失敗していたことがあります。

  • タイムゾーンデータをtzdata release 2016jに更新しました。 北キプロス(新タイムゾーン Asia/Famagusta 追加)、ロシア(新タイムゾーン Europe/Saratov 追加)、トンガ、Antarctica/Casey における夏時間法の変更と、イタリア、カザフスタン、マルタ、パレスチナにおける歴史的修正、トンガにおける数値によるゾーン略記法を選択する変更が含まれます。