リリース日: 2014-03-20
このリリースは9.3.3に対し、各種不具合を修正したものです。 9.3メジャーリリースにおける新機能については、E.77を参照してください。
9.3.Xからの移行ではダンプ/リストアは不要です。
しかしながら、最初の変更ログにあるように、スタンバイサーバのデータが破損する問題を修正しています。 このアップデートを適用した後、新規にベースバックアップからスタンバイサーバを再初期化した方が賢明かもしれません。
また、9.3.3以前のリリースからアップグレードする場合は、E.74を参照して下さい。
WALからの再構築時に更新済みのタプルをロックするように修正しました。(Andres Freund, Álvaro Herrera)
この障害は、更新した行がインデックススキャンで見つからないため、インデックススキャンを使ったかどうかによってクエリーの結果に一貫性がとれない原因となっていました。 先に更新された行が後から実行されたインデックス検索で見つからないため、後のプロセスは制約違反になる可能性があり、そのため矛盾する行が挿入できてしまう可能性がありました。 この障害はWALからの再構築処理にあるので、クラッシュからのリカバリ中やスタンバイサーバでのみ発生します。 外部キー制約で参照されているテーブルの行が更新されると同時に参照行が作成された場合、この不適切に再構築された問題は極普通に表面化します。
ページ破損リスクを避けるために、GINメタページを無条件でリストアします。(Heikki Linnakangas)
この見落としは理論的にはインデックスの破損をもたらすかもしれませんが、 GINメタページのアクティブな部分は標準的なディスクセクタの512バイトよりも小さいので、 実際に問題を引き起こすことはほとんどありません。
NOTIFY
メッセージ受信中にトランザクションのコミット状態チェックが競合状態になるのを防止しました。(Marko Tiikkaja)
これはNOTIFY送信者によって更新されたデータベースのデータが見えるようになる前に、十分に高速なクライアントが通知に応答するかもしれないシナリオを防ぎます。
マテリアライズドビューをUPDATE
とDELETE
コマンドから参照できるようにしました。(Michael Paquier)
以前は、そのようなクエリはマテリアライズドビュー内の行をロックできない為、エラーになっていました。
クエリーのキャンセルリクエストによる、正規表現操作のより速い終了を許可します。(Tom Lane)
おかしな正規表現によって長時間、中断不可なサーバプロセスでロックされてしまうシナリオを防ぎます。
単一要素のROWの引数に対してOVERLAPS
を実行しようとする誤ったコードを削除しました。(Joshua Yanovski)
このコードは決して正しく動かず、またこのケースはSQL標準にもドキュメントにも定義されていないため、修正するよりも削除した方が良いと思われました。
ルールやビューをデパースする際、AccessShareLock
以上のロック取得を防ぎます。(Dean Rasheed)
この見落としによって、pg_dumpでINSERT
/UPDATE
/DELETE
コマンドをデパースする際、
対象テーブルに予期しないRowExclusiveLock
ロックが発生していました。
通常は無害ですが、例えば、これらのテーブルにShareLock
を取得しようとするトランザクションが同時にあった場合、それを妨げていました。
実行プラン作成で、インデックス終点探査の性能を改善しました。(Tom Lane)
インデックス終点に未コミット行が多数ある場合に発生する大幅なパフォーマンス問題をこの変更で修正しました。この状況は、タイムスタンプやシーケンスで生成した識別子のように連続して与えられた値をインデックスとしている場合によくあることです。
右側が固定式の場合、
と
値
IN (list
)
式では
デフォルトではない選択評価を使うようにしました。(Tom Lane)
値
operator
ANY(array
)
DROP DATABASE
で統計情報ファイルをデータベース毎に正しく削除するようしました。(Tomas Vondra)
この修正は統計情報ファイルが永続的に漏れるのを防ぐものです。
PostgreSQL9.3にアップグレードすることでDROP DATABASE
コマンドを多用するユーザは、
既存のデータベースに対応していない統計情報ディレクトリをチェックし統計情報ファイルを削除したい場合があります。
db_0.stat
ファイルは削除すべきではないのでご注意ください。
高負荷が続く状況下で不適切に切断してしまうのを防ぐ為に、walsenderのpingロジックを修正しました。(Andres Freund, Heikki Linnakangas)
WALデータの送信で忙しい状態が続いた場合、walsenderはクライアントにpingメッセージの送信に失敗していました。 にもかかわらずpingの応答受信を期待しており、その結果wal_sender_timeoutタイムアウトで切断していました。
クライアントがpg_receivexlogの場合、walsenderが正常終了に失敗する事を修正しました。(Fujii Masao)
アーカイブリカバリによるクラッシュリカバリ実施時にWALレベルとホットスタンバイパラメータのチェックが正しく行われるようにしました。(Heikki Linnakangas)
クラッシュ直後にホットスタンバイ接続を許可できるかどうか調べる修正をしました。(Heikki Linnakangas)
ページのチェックサムが有効かどうか表示するために、読み取り専用のdata_checksumsパラメータを追加しました。(Heikki Linnakangas)
このパラメータ無しでは、チェックサム処理の状態を特定するのは困難でした。
ERROR
でないメッセージ出力中の割り込みを防止しました。(Tom Lane)
再帰的にsyslog()
に書き込まれたり、恐らくそれに関連した他の問題などによって、稀にサーバプロセスが固まる事への対処です。
複数のOUTパラメータの場合や複合結果を返す場合の、PL/Perlのメモリリークを修正しました。(Alex Hunsaker)
psqlスクリプトで\copy
がデータ外の行データを拾ってしまう問題を修正しました。(Kumar Rajeev Rastogi, Amit Khandekar)
\copy ... from
はデータがスクリプトファイルから来ていなかった場合でも、各データ行としてスクリプトファイルの行番号をインクリメントしていました。この間違いにより、同じスクリプトファイルの後の部分にエラーが発生していると誤った行番号で報告されていました。
contrib/postgres_fdwが多重結合条件を正しく処理できるように修正しました。(Tom Lane)
この見落としで、リモートサーバのWHERE
句が同じ意味になるのか分からなくても、実行させるためにWHERE
句をリモートサーバに送ってしまう事がありました
(例えば、WHERE
句で非組み込み演算子を使っている場合)。
クエリーは取りあえず成功するかもしれませんし、リモートサーバからのエラーで失敗するかもしれません。もっと悪い事に、間違った結果を黙って返すかもしれません。
新しいWindowsのバージョンで時々発生する「could not reserve shared memory region」障害を防止しました。(MauMau)
タイムゾーンデータファイルをtzdataリリース2014aに更新しました。 フィジーとトルコでの夏時間の変更が含まれます。 また、イスラエルとウクライナでの歴史的な地域データの修正が含まれます。