リリース日: 2012-12-06
このリリースは8.4.14に対し、各種不具合を修正したものです。 8.4メジャーリリースにおける新機能については、E.147. リリース8.4を参照してください。
8.4.Xからの移行ではダンプ/リストアは不要です。
しかし8.4.10より前のバージョンからアップグレードする場合は、E.137. リリース8.4.10を参照してください。
CREATE INDEX CONCURRENTLY
に関連する複数の不具合を修正しました。(Andres Freund、Tom Lane)
CREATE INDEX CONCURRENTLY
がインデックスのpg_index
の行の状態を変更するときに、その場にある更新を使うように修正しました。
これにより、同時実行中のセッションが対象のインデックスを更新できず、それによりCONCURRENTLYで作成されるインデックスを破損させることになる競合条件を防ぐことができます。
また、CREATE INDEX CONCURRENTLY
コマンドのエラーの結果として作られる不正なインデックスについて、他の様々な操作が確実に無視するように修正しました。
この中で最も重要なのはVACUUM
です。
なぜなら、この不正なインデックスを修正あるいは削除するための修正の処理が実行される前に、自動バキュームが実行されることがあり得るからです。
メモリが不足した時でも、内部ハッシュテーブルが破損しないようにしました。(Hitoshi Harada)
外部結合上の厳格でない等価な句についての計画作成を修正しました。(Tom Lane)
厳格でない構造を他のものと等号で結ぶ句について、プランナが誤った制約を導出する場合がありました。
例えば、WHERE COALESCE(foo, 0) = 0
でfoo
が外部結合のNULLになるかもしれない側のもののときです。
プランナについて、等価なクラスから排他制約を証明する能力を向上しました。(Tom Lane)
ハッシュされた副計画の部分行のマッチングについて、型をまたがる場合を正しく処理できるよう修正しました。(Tom Lane)
これはWHERE (a, b) NOT IN (SELECT x, y FROM ...)
のような複数の列についてのNOT IN
の副計画で、例えばb
とy
がそれぞれint4
型とint8
型である、というような場合に影響します。
この処理の誤りにより、そこで使われているデータ型によって、誤った結果が得られたり、あるいはクラッシュする、ということが起きていました。
AFTER ROW UPDATE/DELETE
トリガーで古いタプルを再フェッチする時、バッファロックを取得するようにしました。(Andres Freund)
この誤りにより、非常に特異な状況において、外部キーを強制するトリガーの事前チェックのロジックに対して誤ったデータを渡すことがありました。 その結果として、クラッシュを起こしたり、あるいはトリガーを実行するかどうかについて誤った判断をすることがありました。
ALTER COLUMN TYPE
について、継承されたチェック制約を正しく処理できるように修正しました。(Pavan Deolasee)
これは8.4より前のリリースでは正しく動作していました。 この修正により8.4およびそれ以降のリリースでも正しく動作するようになりました。
REASSIGN OWNED
について、表領域のGRANTが正しく処理できるように修正しました。(Álvaro Herrera)
ビューのシステム列についてのpg_attribute
の誤ったエントリを無視するようにしました。(Tom Lane)
ビューにはシステム列はありません。 しかし、表をビューに変換するとき、そのようなエントリを取り除くことを忘れていました。 これは9.3およびそれ以降のリリースでは適切に修正されますが、それ以前のブランチにおいても、誤って変換されたビューが存在しないようにする必要があります。
ルールの出力について、INSERT INTO
を正しくダンプできるよう修正しました。(Tom Lane)
table
DEFAULT VALUES
問い合わせが非常に多くのUNION
/INTERSECT
/EXCEPT
を含むときでもスタックオーバーフローが発生しないようにしました。(Tom Lane)
もっとも小さな整数値を-1で割り算した時に、プラットフォームによってはエラーとなるのを修正しました。(Xi Wang、Tom Lane)
日付文字列の解析で、文字列の終わりを越えてアクセスすることがあるのを修正しました。(Hitoshi Harada)
Unixドメインソケットのパス名がプラットフォーム依存の最大長を超えていた場合に、理解可能なエラーメッセージを生成するようにしました。(Tom Lane、Andrew Dunstan)
以前は「Non-recoverable failure in name resolution」(名前解決で解決不能なエラーが発生しました)といった非常に不親切なエラーを起こしていました。
複合列の値をクライアントに送るときのメモリリークを修正しました。(Tom Lane)
postmaster.pid
ファイルの読み込みについて、pg_ctlをより堅牢にしました。(Heikki Linnakangas)
競合条件、およびファイルデスクリプタのリークを解決しました。
psqlにおいて、不正にエンコードされたデータが入力され、かつclient_encoding
の設定がSJISのようにクライアントでしか利用できない文字セットである場合にクラッシュする場合があるのを修正しました。(Jiang Guiqing)
pg_dumpがtar
出力形式で生成するrestore.sql
スクリプトの不具合を修正しました。(Tom Lane)
このスクリプトはテーブル名が大文字を含む場合に全く動作しませんでした。
また、このスクリプトで通常のCOPYモードだけでなく--inserts
モードの場合もデータをリストアできるようにしました。
pg_restoreでPOSIX準拠のtar
ファイルを処理できるよう修正しました。(Brian Weaver、Tom Lane)
pg_dumpのtar
出力モードの元々のプログラムは、POSIX標準に完全には準拠していないファイルを生成していました。
この問題はバージョン9.3で修正されます。
このパッチは9.3より前のブランチを修正するもので、正しくないフォーマットと正しいフォーマットの両方を処理できるようにします。
これにより、9.3がリリースされた時に互換性の問題を防ぐことができます。
pg_resetxlogについて、データディレクトリへの相対パスが与えられた時に、postmaster.pid
の場所を正しく特定できるよう修正しました。(Tom Lane)
この誤りにより、データディレクトリを使用している動作中のpostmasterがあることにpg_resetxlogが気が付かないことがありました。
libpqのlo_import()
関数およびlo_export()
関数が、ファイルI/Oのエラーを適切に報告するよう修正しました。(Tom Lane)
ecpgについて、ネストした構造体のポインタ変数の処理を修正しました。(Muhammad Usama)
contrib/pageinspect
のBツリーページ検査関数で、ページの検査中はバッファロックを取得するようにしました。(Tom Lane)
AIX上でのロード可能モジュールのビルドについてpgxsのサポートを修正しました。(Tom Lane)
元々のソースツリーの外側でモジュールをビルドしてもAIXでは正しく動作しませんでした。
タイムゾーンデータファイルをtzdataリリース2012jに更新しました。 キューバ、イスラエル、ヨルダン、リビア、パレスチナ、西サモア、およびブラジルの一部での夏時間の変更が含まれます。