リリース日: 2012-08-17
このリリースは9.0.8に対し、各種の不具合を修正したものです。 9.0メジャーリリースにおける新機能についてはE.151を参照してください。
9.0.Xからの移行ではダンプ/リストアは不要です。
しかしながら、9.0.6より前のバージョンからアップグレードする場合は、E.145を参照してください。
XML実体参照を介した外部ファイル/URLへのアクセスを防止します。(Noah Misch、Tom Lane)
xml_parse()
は、XML値で参照されるDTDと実体参照を解決するために必要な外部ファイルやURLの入手を試みます。
これにより、権限を持たないデータベースユーザがデータベースサーバの権限でデータを入手することができてしまいました。
この外部データは直接ユーザには返されませんが、データが有効なXMLとして解析できなかった場合その一部がエラーメッセージの中に漏洩することがあり得ます。
またどのような場合であっても、ファイルが存在するかどうか検査できるだけでも攻撃者にとって有用になり得ます。(CVE-2012-3489)
contrib/xml2
のxslt_process()
を介した外部ファイル/URLへのアクセスを防止します。(Peter Eisentraut)
libxsltはスタイルシートコマンドを通してファイルとURLの両方を読み書きする機能を提供します。 これにより、権限を持たないデータベースユーザがデータベースサーバの権限でデータを読み書きすることができてしまいました。 libxsltのセキュリティオプションを適切に使用することでこれを無効にします。(CVE-2012-3488)
またxslt_process()
の外部ファイル/URLからドキュメントとスタイルシートを取り込む機能を取り除きました。
これは文書化された「機能」でしたが、推奨されないものと長くみなされていました。
CVE-2012-3489に対する修正のためこの能力が壊れましたが、その修正を行うことは止め、単に取り除きました。
早すぎるbtreeインデックスページの回収を防止します。(Noah Misch)
読み取り専用トランザクションによるXIDの割り当てを省略できるようにした時、読み取り専用トランザクションがまだ参照している時に削除されたbtreeページを回収されてしまう可能性をもたらしました。 これは間違ったインデックス検索結果という結果になります。 時間に関する必要条件のため、こうしたエラーが実際に発生する可能性は非常に低いものでしたが、修正しなければなりません。
新しく作成された、またはリセットされたシーケンスに関するクラッシュに対する安全性を修正しました。(Tom Lane)
ALTER SEQUENCE
が新しく作成されたシーケンスまたはリセットされたシーケンスに対して実行された場合、その後nextval()
呼び出しが一度だけ行われ、そして、サーバがクラッシュすると、WAL再生はシーケンスをnextval()
が行われていないように見える状態にリストアします。
このため次のnextval()
呼び出しにより最初のシーケンス値が再び返されることになります。
シリアル列のシーケンス作成にはALTER SEQUENCE OWNED BY
処理が含まれていますので、特にこれはserial
列で現れます。
ホットスタンバイではない時に正確なエポックを報告するようにtxid_current()
を修正しました。(Heikki Linnakangas)
これは以前のマイナーリリースで導入されたリグレッションを修正します。
マスタのトランザクションが多くの副トランザクションを持つ時のホットスタンバイの起動処理の不具合を修正しました。(Andres Freund)
この間違いは「out-of-order XID insertion in KnownAssignedXids」と報告される失敗がもたらします。
pg_start_backup()
の後確実にbackup_label
ファイルをfsyncします。(Dave Kerr)
WAL送信処理プロセスにおけるタイムアウト処理を修正しました。(Tom Lane)
WAL送信処理バックグラウンドプロセスではSIGALRMハンドラの確立を忘れていました。 この結果タイムアウトが発生する何らかの境界条件で永遠に待機してしまいます。
9.1からのバックパッチはfsync要求キューの圧縮を向上しました。(Robert Haas)
チェックポイント期間の性能を向上します。 9.1の変更は安全に過去のバージョンにパッチを充てられると判断できる程度に実地試験が行われたようです。
ディスク容量不足等I/O問題をよりよく処理するようにLISTEN
/NOTIFY
を修正しました。(Tom Lane)
書き込みの失敗の後、以降すべてのNOTIFY
メッセージの送信試行は「Could not read from file "pg_notify/nnnn
" at offset nnnnn
: Success」のようなメッセージで失敗しました。
自動バキュームは直接ブロックされたプロセスによってのみ自動キャンセルさせることができます。(Tom Lane)
元々のコードでは一部の場合に一貫性がない動作を許していました。
具体的にはdeadlock_timeout
猶予期間より短時間で自動バキュームはキャンセルされました。
自動バキュームのキャンセルについてのログ処理を改良しました。(Robert Haas)
サーバ起動後一番最初のログローテーションの間log_truncate_on_rotation
が動作するようにログコレクタを修正しました。(Tom Lane)
入れ子状の集合操作(UNION
/INTERSECT
/EXCEPT
)に付与されるWITH
を修正しました。(Tom Lane)
副問い合わせへの行全体の参照が余計なGROUP BY
やORDER BY
列を含まないことを確実にしました。(Tom Lane)
CREATE TABLE
時のCHECK
制約およびインデックス定義における行全体の参照の複製を許しません。(Tom Lane)
この状況はLIKE
またはINHERITS
を持つCREATE TABLE
で発生することがあり得ます。
複製される行全体の変数は、新しいテーブルではなく元のテーブルの行型で正しくラベル付けされませんでした。
LIKE
では、後で行型がよく分岐しますので、このような状況を拒絶する方が合理的のように思います。
INHERITS
では理想的には、親のテーブルの行型への暗黙的な変換によって許可すべきですが、安全に以前のバージョンにパッチを充てるにはより多くの作業が必要です。
ARRAY(SELECT ...)
副問い合わせにおけるメモリリークを修正しました。(Heikki Linnakangas、Tom Lane)
正規表現からの共通接頭辞の抽出を修正しました。(Tom Lane)
このコードでは^(foo)?bar
などの修飾された括弧付きの副式で混乱してしまうことがあり得ました。
こうしたパターンの検索に対して不正確なインデックス最適化をもたらしました。
interval
定数における、符号付きhh
:
mm
、hh
:
mm
:
ss
フィールドの解析に関する不具合を修正しました。(Amit Kapila、Tom Lane)
PL/Pythonにおいて、PythonのUnicode文字列からサーバ符号化方式に変換する時にPythonの関数ではなくPostgresの符号化方式変換関数を使用します。(Jan Urbanski)
これは、特にPythonがPostgresがサポートするすべての符号化方式をサポートしていない場合の何らかの境界値問題を防止します。 注意すべき機能上の変更は、サーバ符号化方式がSQL_ASCIIの場合、文字列のUTF-8表現を得ることです。 これまでは文字列内のASCII以外の文字はエラーになりました。
PL/PythonにおいてPostgreSQL符号化方式とPython符号化方式との間の対応付けを修正しました。(Jan Urbanski)
contrib/xml2
のxslt_process()
においてエラーを適切に報告します。(Tom Lane)
時間帯データファイルをtzdataリリース2012eに更新しました。 モロッコおよびトケラウにおける夏時間の変更が含まれます。