[11/15開催: PostgreSQL Conference Japan 2019 参加受付中] 
他のバージョンの文書 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

E.96. リリース9.1.4

リリース日: 2012-06-04

このリリースは9.1.3に対し、各種不具合を修正したものです。 9.1メジャーリリースにおける新機能についてはE.100. リリース9.1を参照してください。

E.96.1. バージョン9.1.4への移行

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を参照してください。

E.96.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_attributeshared_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/dblinkdblink_exec()を修正しました。(Tom Lane)

  • エラーメッセージ内で正しい接続名を報告するようにcontrib/dblinkを修正しました。(Kyotaro Horiguchi)

  • 多くのラージオブジェクトを削除する時に複数のトランザクションを使用するようにcontrib/vacuumloを修正しました。(Tim Lewis、Robert Haas、Tom Lane)

    この変更により、多くのオブジェクトを削除しなければならない時にmax_locks_per_transactionを超えることを防ぎます。 この動作は新しい-l(制限)オプションで調整することができます。

  • 時間帯データファイルをtzdataリリース2012cに更新しました。 南極、アルメリア、チリ、キューバ、フォークランド諸島、ガザ、ハイチ、ヘブロン、モロッコ、シリア、トケラウ諸島における夏時間の変更、カナダに関する歴史的な変更が含まれます。