[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.80. リリース9.1.20

リリース日: 2016-02-11

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

E.80.1. バージョン9.1.20への移行

9.1.Xからの移行ではダンプ/リストアは不要です。

また、9.1.16よりも前のリリースからアップグレードする場合は、 E.84. リリース9.1.16を参照して下さい。

E.80.2. 変更点

  • 正規表現での無限ループやバッファオーバーランの問題を修正しました。 (Tom Lane)

    (正規表現における)ブラケット式の非常に大きな文字範囲が一部ケースで無限ループを、また別ケースでメモリ上書きを引き起こすおそれがありました。 (CVE-2016-0773)

  • postmaster.pidファイルが削除されたなら、即時シャットダウンを実行するようになりました。 (Tom Lane)

    postmasterはpostmaster.pidが引き続き存在していて自身のPIDを含んでいるかを1分毎くらいに確認するようになります。 ファイルが無かったりPIDが違っていたなら、SIGQUITを受け取ったのと同様に即時シャットダウンを実行します。 この変更の主な動機は失敗したビルドファーム実行を手動調整なしに確実にクリーンアップすることですが、DBAが無理にpostmaster.pidを削除して新たなpostmasterを起動したときに悪影響を限定するのにも役立ちます。

  • 挿入時に競合条件のため、SERIALIZABLEトランザクション隔離モードで直列化例外を捉えそこなうおそれがありました。 (Kevin Grittner, Thomas Munro)

  • ログを取らないリレーションに対してALTER TABLE ... SET TABLESPACEを行うとき、 適切なWALレコードを出力するのに失敗していたものを修正しました。 (Michael Paquier, Andres Freund)

    リレーションのデータについてログを取らないとしても、移動はログ記録されるべきです。さもないと、そのリレーションはスタンバイがマスタに昇格した後にアクセス不能になるでしょう。

  • クラッシュリカバリの最後で起こりうる、ログを取らないリレーションの初期化漏れを修正しました。 (Andres Freund, Michael Paquier)

  • 継承されたチェック制約を適切に再構成するようにALTER COLUMN TYPEを修正しました。 (Tom Lane)

  • 複合型の所有者を適切に変更するようにREASSIGN OWNEDを修正しました。 (Álvaro Herrera)

  • データ型、外部データラッパ、および、外部サーバの所有者を変更するとき、付与された許可のリストを正しく更新するように、REASSIGN OWNEDALTER OWNERを修正しました。 (Bruce Momjian, Álvaro Herrera)

  • REASSIGN OWNEDが外部ユーザマッピングについてエラーにするのでなく無視するように修正しました。 (Álvaro Herrera)

  • インデックスの内部統計がとても古いときにGINインデックススキャンの粗悪なプランナコスト見積りが生じるのを防ぐ仕組みをさらに追加しました。 (Tom Lane)

  • インデックスアドバイザープラグインが提案する仮想のGINインデックスにプランナを対応させました。 (Julien Rouhaud)

  • ROW()およびVALUES()リスト内にある行全体の変数のダンプを修正しました。 (Tom Lane)

  • numericの除算で内部オーバーフローの可能性があるのを修正しました。 (Dean Rasheed)

  • 正規表現の先行検索制約の括弧内における制限の強制を修正しました。 (Tom Lane)

    マニュアルによれば、先行検索制約に後方参照を含めることは許されていませんし、また、 先行検索制約内の括弧は常に捕捉されません。 しかしながら、括弧に入れられた副式の中ではこれらのケースを適切な処理に失敗していて、 予期せぬ結果をもたらしていました。

  • 正規表現のインデックスキャン範囲への変換で、先行検索制約を含む正規表現にて不正な範囲が生じるおそれがありました。 (Tom Lane)

  • 正規表現コンパイラが制約アークのループを処理するように修正しました。 (Tom Lane)

    CVE-2007-4772 対応で加えられたコードは、不完全でかつ正しくありませんでした。 複数状態に影響を与えるループを処理できません。 また、(アサート無しのビルドであれば悪い結果には見えないけれども)アサート失敗を 引き起こす可能性がありました。 複数状態ループにより、コンパイラがキャンセルされるか、状態数が多すぎるというエラー条件に達するまで走り続ける可能性がありました。

  • 正規表現コンパイラのメモリ使用計算を改善しました。 (Tom Lane)

    本修正により、これまで途方もない時間とメモリを使っていたいくつかのケースで、 regular expression is too complex(正規表現が複雑すぎます)というエラーを出します。

  • 正規表現コンパイラの性能を改善しました。 (Tom Lane)

  • log_line_prefixでのエスケープ%hおよび%rlog_connectionsによるメッセージ出力でも機能するようにしました。 (Tom Lane)

    これまで、%h%rは新セッションがログメッセージconnection receivedを出力した直後から働き始めていました。これからはそのメッセージにおいても機能します。

  • Windowsで共有メモリマッピングハンドルを必要としない子プロセスでハンドルを確実に閉じるようにしました。 (Tom Lane, Amit Kapila)

    この見落としは、logging_collectorをonにしていたとき常に、クラッシュからのリカバリ失敗をもたらしました。

  • WindowsにおけるノンブロッキングモードでソケットのEOF検知に失敗する可能性があるのを修正しました。 (Tom Lane)

    この問題が9.5より前のブランチで起きるかは完全には明確でありませんが、起きるとすれば、 その症状はwalsenderプロセスが接続の喪失に気づくのではなく際限なく待つというものでしょう。

  • SSPI認証のときにトークンハンドルのリークを防ぐようになりました。 (Christian Ullrich)

  • psqlで、ターミナルウィンドウのサイズが変わったとき、libreadlineのスクリーンサイズ認識を確実に更新するようにしました。 (Merlin Moncure)

    これまで、問い合わせ出力の間にウィンドウがリサイズされた場合、libreadlineは気づかず、その後の複数行の問い合わせの入力において奇妙な振る舞いをもたらしていました。

  • psql\detコマンドが、そのパターン引数を潜在的にスキーマ修飾パターンを伴う他の\dコマンドが行うのと同様に解釈するように、修正しました。 (Reece Hart)

  • psql\cコマンドで、以前の接続がUNIXソケット経由であってコマンドが新たなホスト名と同ユーザ名を指定しているときの、クラッシュの可能性を回避しました。 (Tom Lane)

  • pg_ctl start -wで子プロセス状態を、ヒューリスティックに頼るのではなく直接検査するようにしました。 (Tom Lane, Michael Paquier)

    これまでは、pg_ctlは新たなpostmasterはpostmaster.pidを常に5秒以内に作るという想定に依存していました。 しかし、これは高負荷システムでは失敗するおそれがあり、pg_ctlがpostmaster起動に失敗したと間違って報告する原因になります。

    Windows以外では、この変更は他のこのようなコマンドの直後に実行したpg_ctl start -wが確実に失敗することも意味します。対してこれまでは、最初のコマンドから2秒以内に実行したなら成功が報告されていました。

  • pg_ctl start -wで、ワイルドカードの監視アドレスをpostmasterに接続するのに使わないようにしました。 (Kondo Yuta)

    Windowsでは、listen_addresses0.0.0.0または::が設定してあるとき、接続用アドレスとして機能しないこれらの値をそのままに使用しようとするため、pg_ctlはpostmaster起動の検出に失敗していました。 代わりにそれぞれ127.0.0.1または::1を使うものとするのが適正でした。

  • Windowsのpg_ctlで出力先をどこにするか決めるのに、標準出力先が端末であるかを確認するのではなく、サービス状態を確認するようになりました。 (Michael Paquier)

  • pg_dumppg_basebackupで8GBを超えるtarアーカイブ要素を扱うのにGNU慣習を採用しました。 (Tom Lane)

    tarファイル形式のPOSIX標準ではアーカイブ要素ファイルが8GBを超えることを許していませんが、ほとんどの現代のtar実装はそれを改善した拡張をサポートしています。 この拡張を採用したので、-Ft指定のpg_dumpはデータが8GB以上のテーブルでもはや失敗しませんし、また、pg_basebackupは8GBより大きいファイルを扱えます。 加えて、いくつかのプラットフォームで4GBから8BGの要素ファイルで失敗をもらたすおそれのある移植性の問題を修正しました。 この問題は読めないバックアップファイルのため潜在的に回復できないデータ損失をもたらす可能性があります。

  • 拡張の要素オブジェクトの処理に関するpg_dumpの様々な例外的な不具合を修正しました。 (Tom Lane)

  • パラレルpg_restoreのとき起こりうる失敗を防ぐため、pg_dumpがビューのトリガにそのルールの後に処理される必要ありと印づけするようにしました。 (Tom Lane)

  • pg_dumpでリレーションのオプション値が確実に適切に引用符付けされるようにしました。 (Kouhei Sutou, Tom Lane)

    単純な識別子や数値でないreloption値は、pg_dumpにより発行されるCREATE文の構文エラーでダンプ/リロードの失敗をもたらすおそれがありました。 PostgreSQL本体で現在サポートされるreloptionでは問題ありませんが、拡張では問題を引き起こすreloptionが許されている可能性がありました。

  • Windowsにおいてpg_upgradeのファイルコピーをするコードを、適切にエラー処理するように修正しました。 (Bruce Momjian)

  • pgbenchでスクリプトに記述された除算または剰余の演算子の評価における例外的なオーバーフロー状態に対する防御策を導入しました。 (Fabien Coelho, Michael Paquier)

  • ある種のPL/Javaパラメータがスーパーユーザ以外から設定されることを防止しました。 (Noah Misch)

    この変更はPL/Javaのセキュリティ障害(CVE-2016-0766)を緩和します。 PL/Javaではそれらパラメータをスーパーユーザのみとすることで障害は修正されています。 PL/JavaよりもPostgreSQLをより頻繁にアップデートするサイトのセキュリティ危険性を防ぐため、本体コードでもこれらパラメータを認識するようにしました。

  • libpqのメモリ不足状況の扱いを改善しました。 (Michael Paquier, Amit Kapila, Heikki Linnakangas)

  • ecpgが生成するtypedef文で引数の順序を修正しました。 (Michael Meskes)

  • ecpgPGTYPESnumeric_from_double()%fでなく%g書式を使うようにしました。 (Tom Lane)

  • プリプロセッサ命令行から次の行へと継続されるコメントが含まれないようにecpgで供給されるヘッダファイルを修正しました。 (Michael Meskes)

    このようなコメントはecpgに受け付けられません。 ecpg自体が変更されるべきかまだ明らかではありません。

  • contrib/pgcryptocrypt()関数を問い合わせキャンセルで確実に中断できるようにしました。 (Andreas Karlsson)

  • 2.5.xより後のflexバージョンに対応しました。 (Tom Lane, Michael Paquier)

    現在、flex 2.6.0がリリースされていて、ビルドスクリプトのバージョンチェックは調整する必要がありました。

  • PGXSビルドで見つけられる場所にmissingスクリプトを設置するようにしました。 (Jim Nasby)

    bisonのようなビルドツールが存在しないマシンでのPGXSビルドにおいて、まっとうな振る舞いを可能にします。

  • MSVCビルドにてインストールされるヘッダファイル群にdynloader.hが確実に含まれるようにしました。 (Bruce Momjian, Michael Paquier)

  • 現在のlibxml2の動作に適合するように別種のリグレッションテスト予想出力ファイルを追加しました。 (Tom Lane)

    libxml2におけるCVE-2015-7499の修正により、これまで出力していた一部ケースでエラーコンテキスト報告を出力しなくなります。 これは障害に見えますが、私たちはおそらくしばらくは我慢する必要があり、対処しました。

  • タイムゾーンデータファイルをtzdata release 2016aに更新しました。 ケイマン諸島、メトラカトラ、ザバイカリエ地方(Zabaykalsky Krai) の夏時間法の変更、パキスタンの歴史的な訂正が適用されています。