リリース日: 2011-04-18
このリリースは9.0.3に対し、各種の不具合を修正したものです。 9.0メジャーリリースにおける新機能についてはE.151を参照してください。
9.0.Xからの移行ではダンプ/リストアは不要です。
しかしながら、使用しているインストレーションが以前のバージョンからpg_upgradeを用いてアップグレードしたものであれば、
pg_upgradeにおいて今回修正された不具合のためにデータを失う可能性を防止するための操作を行わなければなりません。
推奨する解消方法はすべてのTOASTテーブルに対してVACUUM FREEZE
を行うことです。
詳しくはhttp://wiki.postgresql.org/wiki/20110408pg_upgrade_fixを参照してください。
pg_upgradeのTOASTテーブルの取り扱いを修正しました。(Bruce Momjian)
pg_upgradeの間、TOASTテーブルに対するpg_class
.relfrozenxid
値が正しく新しいインストレーションにコピーされていませんでした。
このため実行後、TOASTテーブル内のタプルを有効にするために必要であるのに、pg_clog
ファイルが破棄されてしまう結果となり、そのため「could not access status of transaction」エラーをもたらすことがあり得ました。
このエラーは、pg_upgradeを用いてアップグレードしたインストレーションにおいて、データ損失という重大な危険を引き起こします。 このパッチは、今後pg_upgradeの利用した場合で問題が起こらないようにするものです。 不具合のあるバージョンのpg_upgradeで処理されたインストレーションにおける問題を治すものではありません。
間違った「PD_ALL_VISIBLE flag was incorrectly set」という警告を抑制します。(Heikki Linnakangas)
VACUUM
が時々実際のところ有効な場合でもこの警告を発していました。
ホットスタンバイの競合状態に対してより良いSQLSTATEエラーコードを使用します。(Tatsuo Ishii、 Simon Riggs)
再試行可能な競合エラーはすべて、再試行が可能であることを示すエラーコードを持つようになりました。
また、マスタ側でデータベースが削除されたことが原因でセッションが閉じた場合、接続プール処理が正しくこの状況を扱うことができるように、ERRCODE_ADMIN_SHUTDOWN
ではなくERRCODE_DATABASE_DROPPED
として報告されるようになりました。
起動処理とbgwriter処理との相互作用において断続的なハングを防止します。(Simon Riggs)
これはホットスタンバイ以外の場合のリカバリに影響しました。
複合型自身を複合型に含めることを許可しません。(Tom Lane)
これは、複合型を処理する際にサーバが無限再帰をしてしまう状況を防止します。 こうした構造の使い道は一部ありますが、常に安全に動作することを確実にするために必要な作業量を正当化するほどの説得力はないと思われます。
カタログキャッシュの初期化中のデッドロックの可能性を取り除きました。(Nikhil Sontakke)
一部のキャッシュを読み取るコードが、インデックスのカタログをロックする前にシステムインデックスに対して共有ロックを獲得する場合がありました。 これは他でより標準的な順序で排他ロックを獲得しようとする処理とデッドロックする可能性がありました。
対象タプルに対する同時更新があった時のBEFORE ROW UPDATE
トリガ処理における、不正な領域を指し示すポインタ問題を修正しました。(Tom Lane)
この不具合は、UPDATE RETURNING ctid
を実行しようとした時に、断続的に「cannot extract system attribute from virtual tuple」で失敗するという結果で気付きました。
更新したタプルに対して不正なインデックス項目が生成されてしまうなど、より深刻なエラーとなる可能性がごくわずかながら存在します。
遅延トリガイベントを待たせているテーブルに対するDROP TABLE
を許可しません。(Tom Lane)
以前はDROP
が進み、トリガが最終的に発行された時に「could not open relation with OID nnn」エラーをもたらしました。
pg_hba.conf
内で「replication」をユーザ名として許可します。(Andrew Dunstan)
「replication」はデータベース名の列では特別なものですが、ユーザ名の列でも間違って同様に特別扱いされていました。
GEQO最適化中、常に偽のWHERE条件によって引き起こるクラッシュを防止します。(Tom Lane)
半結合とアンチ結合の場合のプランナの取り扱いを改良しました。(Tom Lane)
副問い合わせ内のSELECT FOR UPDATE
の扱いを修正しました。(Tom Lane)
この不具合はよく「cannot extract system attribute from virtual tuple」エラーを引き起こしました。
全文検索の選択性推定においてNULLを考慮するように修正しました。(Jesper Krogh)
インデックスアドバイザプラグインによって注入された仮想インデックスをサポートするようにget_actual_variable_range()を修正しました。(Gurjeet Singh)
PL/Pythonの部分配列化に関するメモリリークを修正しました。(Daniel Popowich)
ユーザのホームディレクトリが利用できない場合でもlibpqのSSL初期化ができるようになりました。 (Tom Lane)
SSLモードがルート証明書ファイルを必要としない場合、失敗させる必要はありません。 この変更により9.0より前のリリースの振舞いに戻りました。
conninfo_array_parse
でエラーを検知した時に有益なエラーメッセージを返すようにlibpqを修正しました。(Joseph Adams)
タイポによりライブラリがエラーメッセージを含むPGconn
構造体ではなくヌルをアプリケーションに返していました。
ecpgプリプロセッサの浮動小数点定数の扱いを修正しました。(Heikki Linnakangas)
並列pg_restoreがPOST_DATA項目上のコメントを正しく扱うように修正しました。(Arnd Hannemann)
TOCファイル内の(1KB以上の)長い行に対処するようにpg_restoreを修正しました。(Tom Lane)
コンパイラの過度に積極的な最適化によるゼロ除算が原因のクラッシュに対して、より多くの対策を取りました。(Aurelien Jarno)
MIPS上のFreeBSDとOpenBSDでdlopen()の使用をサポートしました。(Tom Lane)
これらのシステムではこのシステム関数はMIPSハードウェアで利用できないという仮定を直接書き込んだコードがありました。 より最近のバージョンでは利用できますので、コンパイル時の試験を使用するように変更しました。
HP-UXにおけるコンパイル失敗を修正しました。(Heikki Linnakangas)
プロセスの起動時Windowsコンソールへの書き出しを非常に早い段階で試行する時にクラッシュしないようにしました。(Rushabh Lathia)
WindowsにおいてMinGW 64ビットコンパイラによる構築をサポートしました。(Andrew Dunstan)
Windowsにおけるlibintlのバージョン非互換問題を修正しました。(Hiroshi Inoue)
Windowsのビルドスクリプト内のxcopyの使用がWindows 7で正しく動作するように修正しました。(Andrew Dunstan)
ビルドスクリプトのみに影響し、インストールや使用には影響しません。
Cygwinにおいてpg_regressで使用されるパス区切り文字を修正しました。(Andrew Dunstan)
時間帯データファイルをtzdata release 2011fに更新しました。 チリ、キューバ、フォークランド諸島、モロッコ、サモア、トルコにおける夏時間規則の変更、南オーストラリア、アラスカ、ハワイの歴史的な修正が含まれています。