リリース日: 2012-08-17
このリリースは9.1.4に対し、各種不具合を修正したものです。 9.1メジャーリリースにおける新機能についてはE.127を参照してください。
9.1.Xからの移行ではダンプ/リストアは不要です。
しかしながら、9.1.4より前のバージョンからアップグレードする場合は、E.123を参照してください。
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
列で現れます。
enum
列値の比較における競合条件を修正しました。(Robert Haas、Tom Lane)
現在の問い合わせが始まってから追加された列挙値と合う場合に比較が失敗することがありました。
ホットスタンバイではない時に正確なエポックを報告するようにtxid_current()
を修正しました。(Heikki Linnakangas)
これは以前のマイナーリリースで導入されたリグレッションを修正します。
同期スタンバイとして不適切なレプリケーション接続を選択しないようにします。(Fujii Masao)
マスタが同期スタンバイとしてpg_receivexlogやpg_basebackupなどの仮想サーバを不適切に選択し、無限に待機してしまう可能性がありました。
マスタのトランザクションが多くの副トランザクションを持つ時のホットスタンバイの起動処理の不具合を修正しました。(Andres Freund)
この間違いは「out-of-order XID insertion in KnownAssignedXids」と報告される失敗をもたらします。
pg_start_backup()
の後確実にbackup_label
ファイルをfsyncします。(Dave Kerr)
WAL送信処理プロセスにおけるタイムアウト処理を修正しました。(Tom Lane)
WAL送信処理バックグラウンドプロセスでSIGALRMハンドラの設定を忘れていました。 この結果タイムアウトが発生する何らかの境界条件で永遠に待機してしまいます。
WAL書き込み処理によるそれぞれのバックグラウンド吐き出しの後にWAL送信処理を再開します。(Andres Freund、Simon Riggs)
これは、作業が非同期にコミットされるトランザクションのみを含む時のレプリケーション遅延を大きく減少します。
ディスク容量不足等I/O問題をよりよく処理するようにLISTEN
/NOTIFY
を修正しました。(Tom Lane)
書き込みの失敗の後、以降すべてのNOTIFY
メッセージの送信試行は「Could not read from file "pg_notify/nnnn
" at offset nnnnn
: Success」のようなメッセージで失敗しました。
自動バキュームは直接ブロックされたプロセスによってのみ自動キャンセルさせることができます。
元々のコードでは一部の場合に一貫性がない動作を許していました。
具体的にはdeadlock_timeout
猶予期間より短時間で自動バキュームはキャンセルされました。
自動バキュームのキャンセルについてのログ処理を改良しました。(Robert Haas)
サーバ起動後一番最初のログローテーションの間log_truncate_on_rotation
が動作するようにログコレクタを修正しました。(Tom Lane)
入れ子状の集合操作(UNION
/INTERSECT
/EXCEPT
)に付与されるWITH
を修正しました。(Tom Lane)
副問い合わせへの行全体の参照が余計なGROUP BY
やORDER BY
列を含まないことを確実にしました。(Tom Lane)
ALTER TABLE ... ADD CONSTRAINT USING INDEX
時に生成される依存関係を修正しました。(Tom Lane)
このコマンドはインデックス用の冗長なpg_depend
項目を残しました。
これは後の操作、特にインデックス対象の列のいずれかに対するALTER TABLE ... ALTER COLUMN TYPE
を混乱させるかもしれませんでした。
REASSIGN OWNED
の拡張に対する動作を修正しました。(Alvaro Herrera)
CREATE TABLE
時のCHECK
制約およびインデックス定義における行全体の参照の複製を許しません。(Tom Lane)
この状況はLIKE
またはINHERITS
を持つCREATE TABLE
で発生することがあり得ます。
複製される行全体の変数は、新しいテーブルではなく元のテーブルの行型で正しくラベル付けされませんでした。
LIKE
では、後で行型がよく分岐しますので、このような状況を拒絶する方が合理的のように思います。
INHERITS
では理想的には、親のテーブルの行型への暗黙的な変換によって許可すべきですが、安全に以前のバージョンにパッチを充てるにはより多くの作業が必要です。
ARRAY(SELECT ...)
副問い合わせにおけるメモリリークを修正しました。(Heikki Linnakangas、Tom Lane)
演算子の選択性推定処理に正しい照合順序を渡すようにプランナを修正しました。(Tom Lane)
これまではコアの選択性推定関数では必要とされていませんでしたが、サードパーティ製のコードで必要とするかもしれません。
正規表現からの共通接頭辞の抽出を修正しました。(Tom Lane)
このコードでは^(foo)?bar
などの修飾された括弧付きの副式で混乱してしまうことがあり得ました。
こうしたパターンの検索に対して不正確なインデックス最適化をもたらしました。
interval
定数における、符号付きhh
:
mm
、hh
:
mm
:
ss
フィールドの解析に関する不具合を修正しました。(Amit Kapila、Tom Lane)
部分的なGROUP BY
リストを持つビューをより良く扱うようにpg_dumpを修正しました。(Tom Lane)
GROUP BY
内に主キー列のみが列挙されているが、あたかもグループ化されているかのように他のテーブル列を使用するビューは、主キーに依存するものと印付けられます。
pg_dumpにおけるこうした主キーへの依存に関する不適切な扱いの結果、順序の並びが悪い、良くてもリストア効率が悪い、最悪並行pg_restore実行が完全に失敗する、ダンプになりました。
PL/Perlにおいて、SQL_ASCII符号化方式の時にUTF8フラグの設定を防ぎます。(Alex Hunsaker、Kyotaro Horiguchi、Alvaro Herrera)
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に更新しました。 モロッコおよびトケラウにおける夏時間の変更が含まれます。