リリース日: 2012-06-04
このリリースは9.1.3に対し、各種不具合を修正したものです。 9.1メジャーリリースにおける新機能についてはE.100. リリース9.1を参照してください。
9.1.Xからの移行ではダンプ/リストアは不要です。
しかし、citext
データ型を使用し、かつ、pg_upgradeを実行して過去のメジャーリリースからアップグレードした場合、CREATE EXTENSION citext FROM unpackaged
を実行してcitext
操作における照合順序に関連した失敗を防止しなければなりません。
citext
データ型のインスタンスを含む、9.1より前のダンプからリストアする場合も、同じことが必要です。
もし9.1.4にアップグレードする前にすでにCREATE EXTENSION
を実行していた場合は、代わりに変更点の3番目で説明する通りに手作業でカタログを更新しなければなりません。
また9.1.2より前のバージョンからアップグレードする場合は、E.98. リリース9.1.2を参照してください。
contrib/pgcrypto
のDES crypt()
関数における不正なパスワード変換を修正しました。(Solar Designer)
パスワード文字列に0x80
というバイト値が含まれる場合、パスワードの残りが無視され、見かけよりも非常に弱いパスワードになってしまいました。
この修正によって、文字列の残りが適切にDESハッシュ内に含まれるようになります。
したがって、この不具合の影響を受ける、格納済みのパスワード値はすべて一致しなくなりますので、格納済みの値を更新しなければなりません。(CVE-2012-2143)
手続き言語の呼び出しハンドラにおいてSECURITY DEFINER
およびSET
属性を無視します。(Tom Lane)
こうした属性を呼び出しハンドラに与えるとサーバがクラッシュするかもしれません。(CVE-2012-2655)
contrib/citext
の更新スクリプトがcitext
配列とそのドメインの照合順序を修正するようにしました。(Tom Lane)
9.1.2リリースで、9.1より前のインストレーションからアップグレードまたはリロードしたデータベースにおけるcitext
列とインデックスの照合順序の修正を行いましたが、その修正が完全ではありませんでした。
citext
の配列とドメインの取り扱いを無視していました。
このリリースではこのモジュールの更新スクリプトを拡張し、これらの場合も取り扱うようにしました。
事前に更新スクリプトを実行していた場合は、代わりに手作業で照合順序更新コマンドを実行しなければなりません。
この作業に関する詳細な情報については9.1.2のリリースノートを参照してください。
数字による時間帯オフセットによりUTCから16時間まで離れたtimestamp
の入力を行うことができます。(Tom Lane)
一部の歴史的な時間帯はこれまでの上限であった15時間よりも離れたオフセットを持ちます。 このためリロード時にダンプされたデータ値が拒絶される結果になることがありました。
与えられた時刻が現在の時間帯の最後のDST遷移時刻と正確に一致する場合をうまく処理するようにタイムスタンプ変換を修正しました。(Tom Lane)
長い間これは見落とされていました。 ほとんどのDSTを使用する時間帯では、将来のDST変更が無限に続くものと仮定していましたので、これまで気付きませんでした。
text
からname
へのキャストおよびchar
からname
へのキャストがマルチバイト符号化方式で正しく文字列の切り詰めを行うように修正しました。(Karl Schnaitter)
to_tsquery()
のメモリコピーにおける不具合を修正しました。(Heikki Linnakangas)
txid_current()
がホットスタンバイにおいて実行された場合に、正確なエポックを確実に報告します。(Simon Riggs)
副問い合わせ内の外部プレースホルダに関するプランナの扱いを修正しました。(Tom Lane)
この不具合は、上位の問い合わせの外部結合の内NULLを含む方から由来する変数を参照する副SELECTに影響します。 9.1では、この不具合によって影響を受ける問い合わせは「ERROR: Upper-level PlaceHolderVar found where not expected」というエラーで失敗します。 しかし9.0と8.4では、副問い合わせに渡る値がNULLであるべき時にNULLになりませんので、警告なく間違っているかもしれない回答が得られます。
単純な変数以外の出力列を持つUNION ALL
副問い合わせの計画作成を修正しました。(Tom Lane)
9.1において、「MergeAppend child's targetlist doesn't match MergeAppend」エラーに対する的外れな修正の結果、こうした状況での計画作成が、著しく悪化しました。 この修正を戻し、他の方法を取りました。
pg_attribute
が非常に大きい場合の低速なセッション起動を修正しました。(Tom Lane)
pg_attribute
がshared_buffers
の1/4を超える場合、セッション起動時に時々必要となるキャッシュ再構築コードが同期スキャンロジックを開始し、通常より長い期間かかるようになりました。
この問題は、特に多くの新しいセッションが一度に開始する場合に深刻です。
適切な頻度で発生する問い合わせキャンセルに対する連続的なスキャン検査を確実に行います。(Merlin Moncure)
有効なタプルを含まない連続するページを多くを巡るスキャンは、その間、中断に応答しません。
WindowsのPGSemaphoreLock()
の実装は、戻る前にImmediateInterruptOK
を確実に消去します。(Tom Lane)
この見落としは、同じ問い合わせの中で後で受け取った問い合わせキャンセル中断が、安全ではない時に受け付けられ、予期しない、悪化した結果をもたらす可能性があったことを意味します。
ビューまたはルールを出力する時に行全体の変数を安全に表示します。(Abbas Butt、Tom Lane)
曖昧な名前を含む(つまりその名前がテーブル名か問い合わせの列名かいずれかになる)境界条件では、曖昧な方法で出力し、ビューまたはルールがダンプとリストアの間で別の解釈がされる危険性がありました。 操作を行わないキャストを付与することで曖昧な状況を防ぎます。
無効な符号化方式に対応するヌルマーカ文字列を正しく扱うようにCOPY FROM
を修正しました。(Tom Lane)
E'\\0'
などのヌルマーカ文字列は動作しなければなりませんし、以前は動作していました。
この状況は8.4で壊れました。
RETURNING
句を含む書き出し可能なCTEに対するEXPLAIN VERBOSE
を修正しました。(Tom Lane)
勧告的ロックが存在する場合に正しく動くようにPREPARE TRANSACTION
を修正しました。(Tom Lane)
歴史的にPREPARE TRANSACTION
は、セッションが保持するセッションレベルの勧告的ロックを単に無視していました。
しかしこの状態は9.1で意図せずに壊れました。
ログを取らないテーブルの切り詰めを修正しました。(Robert Haas)
対話式以外のsearch_path
への代入において存在しないスキーマを無視します。(Tom Lane)
これは9.1の動作を過去のブランチに再度合わせました。
これまでの9.1ではALTER DATABASE SET
などの場所から得られたsearch_path
設定で指定される、存在しないスキーマに対してエラーとしました。
拡張スクリプト内で使用される一時テーブルまたは短期間のテーブルに関する不具合を修正しました。(Tom Lane)
これには、表面には現れない短期間のテーブルを使用しますので、拡張更新スクリプトの中のALTER TABLE
の書き換えなども含まれます。
自動バキュームのワーカプロセスは確実にスタック長の検査を適切に行います。(Heikki Linnakangas)
これまでは、自動ANALYZE
によって呼び出される関数の中の無限再帰がワーカプロセスをクラッシュさせる可能性がありました。
高負荷時にログの干渉性が失われないようにログ収集機構を修正しました。(Andrew Dunstan)
これまでは、コレクタは非常に忙しい場合、大規模メッセージの再構成に失敗する可能性がありました。
SIGHUPを受信した後にファイルのローテーションを確実に再開するようにログ収集機構を修正しました。 (Tom Lane)
GiSTインデックスにおける「too many LWLocks taken」失敗を修正しました。(Heikki Linnakangas)
GINインデックスに対するWAL再生ロジックを修正し、インデックスがその後に削除された場合でも失敗しないようにしました。(Tom Lane)
クラッシュ後のプリペアドトランザクションのSSI競合を正しく検出します。(Dan Ports)
一時テーブルのみを変更したトランザクションがコミットされた時の同期レプリケーションの遅延を防止します。(Heikki Linnakangas)
こうした場合、トランザクションのコミットレコードはスタンバイサーバに吐き出す必要はありません。 しかし一部のコードでこれが分からずに、とにかく発生を待機していました。
pg_basebackupのエラー処理を修正しました。(Thomas Ogrisegg、Fujii Masao)
接続が終了した場合にビジーループに入らないようにwalsenderを修正しました。(Fujii Masao)
PL/pgSQLのRETURN NEXT
コマンドにおけるメモリリークを修正しました。(Joe Conway)
対象が関数の第一変数であった場合のPL/pgSQLのGET DIAGNOSTICS
コマンドを修正しました。(Tom Lane)
PL/Perlは確実に_TD
変数をパッケージで修飾します。(Alex Hunsaker)
この不具合により、現在のパッケージを変更する関数呼び出しで入れ子状になった時に、トリガの呼び出しに失敗しました。
文字列としてその結果値を受け付ける複合型を返すPL/Python関数を修正しました。(Jan Urbanski)
この状態は、複合型の結果値を辞書など他の書式に与えることができるという9.1の追加により意図せず壊れました。
psqlの拡張表示(\x
)モードにおいてメモリの最後にアクセスできない可能性を修正しました。(Peter Eisentraut)
データベースに多くのオブジェクトが含まれている場合のpg_dumpの複数の性能問題を修正しました。(Jeff Janes、Tom Lane)
データベースに多くのスキーマが含まれる場合、多くのオブジェクトが依存関係のあるループにある場合、所有されたシーケンスが多く存在する場合に、pg_dumpが非常に低速になる可能性がありました。
pg_restoreにおける、ディレクトリ形式のアーカイブを読み取る際のメモリリークとファイル記述子のリークを修正しました。
デフォルト以外のテーブル空間内に格納されたデータベースがクラスタのデフォルトのテーブル空間内のテーブルを含む状況に対するpg_upgradeを修正しました。(Bruce Momjian)
ecpgにおいて、まれに起こるメモリリークとsqlca_t
構造体の後の1バイトの上書きを修正しました。(Peter Eisentraut)
エラー時に一時データベース接続をリークしないように、contrib/dblink
のdblink_exec()
を修正しました。(Tom Lane)
エラーメッセージ内で正しい接続名を報告するようにcontrib/dblink
を修正しました。(Kyotaro Horiguchi)
多くのラージオブジェクトを削除する時に複数のトランザクションを使用するようにcontrib/vacuumlo
を修正しました。(Tim Lewis、Robert Haas、Tom Lane)
この変更により、多くのオブジェクトを削除しなければならない時にmax_locks_per_transaction
を超えることを防ぎます。
この動作は新しい-l
(制限)オプションで調整することができます。
時間帯データファイルをtzdataリリース2012cに更新しました。 南極、アルメリア、チリ、キューバ、フォークランド諸島、ガザ、ハイチ、ヘブロン、モロッコ、シリア、トケラウ諸島における夏時間の変更、カナダに関する歴史的な変更が含まれます。