2016-02-11このリリースは9.1.19に対し、各種不具合を修正したものです。9.1メジャーリリースにおける新機能については、E.127を参照してください。バージョン9.1.20への移行9.1.Xからの移行ではダンプ/リストアは不要です。9.1.16よりも前のリリースからアップグレードする場合は、E.111を参照して下さい。正規表現での無限ループやバッファオーバーランの問題を修正しました。Lane)(正規表現における)ブラケット式の非常に大きな文字範囲が一部ケースで無限ループを、また別ケースでメモリ上書きを引き起こすおそれがありました。(CVE-2016-0773)postmaster.pidファイルが削除されたなら、即時シャットダウンを実行するようになりました。Lane)postmasterはpostmaster.pidが引き続き存在していて自身のPIDを含んでいるかを1分毎くらいに確認するようになります。ファイルが無かったりPIDが違っていたなら、SIGQUITを受け取ったのと同様に即時シャットダウンを実行します。この変更の主な動機は失敗したビルドファーム実行を手動調整なしに確実にクリーンアップすることですが、DBAが無理にpostmaster.pidを削除して新たなpostmasterを起動したときに悪影響を限定するのにも役立ちます。挿入時に競合条件のため、SERIALIZABLEトランザクション隔離モードで直列化例外を捉えそこなうおそれがありました。適切なWALレコードを出力するのに失敗していたものを修正しました。Freund)リレーションのデータについてログを取らないとしても、移動はログ記録されるべきです。ないと、そのリレーションはスタンバイがマスタに昇格した後にアクセス不能になるでしょう。クラッシュリカバリの最後で起こりうる、ログを取らないリレーションの初期化漏れを修正しました。TYPEを修正しました。OWNEDを修正しました。OWNERを修正しました。OWNEDが外部ユーザマッピングについてエラーにするのでなく無視するように修正しました。Herrera)インデックスの内部統計がとても古いときにGINインデックススキャンの粗悪なプランナコスト見積りが生じるのを防ぐ仕組みをさらに追加しました。Lane)インデックスアドバイザープラグインが提案する仮想のGINインデックスにプランナを対応させました。Rouhaud)ROW()およびVALUES()リスト内にある行全体の変数のダンプを修正しました。Lane)numericの除算で内部オーバーフローの可能性があるのを修正しました。Rasheed)正規表現の先行検索制約の括弧内における制限の強制を修正しました。先行検索制約内の括弧は常に捕捉されません。予期せぬ結果をもたらしていました。正規表現のインデックスキャン範囲への変換で、先行検索制約を含む正規表現にて不正な範囲が生じるおそれがありました。Lane)正規表現コンパイラが制約アークのループを処理するように修正しました。対応で加えられたコードは、不完全でかつ正しくありませんでした。複数状態に影響を与えるループを処理できません。引き起こす可能性がありました。複数状態ループにより、コンパイラがキャンセルされるか、状態数が多すぎるというエラー条件に達するまで走り続ける可能性がありました。正規表現コンパイラのメモリ使用計算を改善しました。complex」(正規表現が複雑すぎます)というエラーを出します。正規表現コンパイラの性能を改善しました。Lane)log_line_prefixでのエスケープ%hおよび%rをlog_connectionsによるメッセージ出力でも機能するようにしました。received」を出力した直後から働き始めていました。これからはそのメッセージにおいても機能します。Windowsで共有メモリマッピングハンドルを必要としない子プロセスでハンドルを確実に閉じるようにしました。Kapila)この見落としは、logging_collectorをonにしていたとき常に、クラッシュからのリカバリ失敗をもたらしました。WindowsにおけるノンブロッキングモードでソケットのEOF検知に失敗する可能性があるのを修正しました。その症状はwalsenderプロセスが接続の喪失に気づくのではなく際限なく待つというものでしょう。SSPI認証のときにトークンハンドルのリークを防ぐようになりました。Ullrich)psqlで、ターミナルウィンドウのサイズが変わったとき、libreadlineのスクリーンサイズ認識を確実に更新するようにしました。Moncure)これまで、問い合わせ出力の間にウィンドウがリサイズされた場合、libreadlineは気づかず、その後の複数行の問い合わせの入力において奇妙な振る舞いをもたらしていました。psqlの\detコマンドが、そのパターン引数を潜在的にスキーマ修飾パターンを伴う他の\dコマンドが行うのと同様に解釈するように、修正しました。Hart)psqlの\cコマンドで、以前の接続がUNIXソケット経由であってコマンドが新たなホスト名と同ユーザ名を指定しているときの、クラッシュの可能性を回避しました。-wで子プロセス状態を、ヒューリスティックに頼るのではなく直接検査するようにしました。Paquier)これまでは、pg_ctlは新たなpostmasterはpostmaster.pidを常に5秒以内に作るという想定に依存していました。これは高負荷システムでは失敗するおそれがあり、pg_ctlがpostmaster起動に失敗したと間違って報告する原因になります。-wが確実に失敗することも意味します。対してこれまでは、最初のコマンドから2秒以内に実行したなら成功が報告されていました。-wで、ワイルドカードの監視アドレスをpostmasterに接続するのに使わないようにしました。Yuta)Windowsでは、listen_addressesに0.0.0.0または::が設定してあるとき、接続用アドレスとして機能しないこれらの値をそのままに使用しようとするため、pg_ctlはpostmaster起動の検出に失敗していました。代わりにそれぞれ127.0.0.1または::1を使うものとするのが適正でした。Windowsのpg_ctlで出力先をどこにするか決めるのに、標準出力先が端末であるかを確認するのではなく、サービス状態を確認するようになりました。Paquier)pg_dumpとpg_basebackupで8GBを超えるtarアーカイブ要素を扱うのにGNU慣習を採用しました。Lane)tarファイル形式のPOSIX標準ではアーカイブ要素ファイルが8GBを超えることを許していませんが、ほとんどの現代のtar実装はそれを改善した拡張をサポートしています。この拡張を採用したので、-Ft指定のpg_dumpはデータが8GB以上のテーブルでもはや失敗しませんし、また、pg_basebackupは8GBより大きいファイルを扱えます。加えて、いくつかのプラットフォームで4GBから8BGの要素ファイルで失敗をもらたすおそれのある移植性の問題を修正しました。この問題は読めないバックアップファイルのため潜在的に回復できないデータ損失をもたらす可能性があります。拡張の要素オブジェクトの処理に関するpg_dumpの様々な例外的な不具合を修正しました。Lane)パラレルpg_restoreのとき起こりうる失敗を防ぐため、pg_dumpがビューのトリガにそのルールの後に処理される必要ありと印づけするようにしました。Lane)pg_dumpでリレーションのオプション値が確実に適切に引用符付けされるようにしました。Lane)単純な識別子や数値でないreloption値は、pg_dumpにより発行されるCREATE文の構文エラーでダンプ/リロードの失敗をもたらすおそれがありました。PostgreSQL本体で現在サポートされるreloptionでは問題ありませんが、拡張では問題を引き起こすreloptionが許されている可能性がありました。Windowsにおいてpg_upgradeのファイルコピーをするコードを、適切にエラー処理するように修正しました。Momjian)pgbenchでスクリプトに記述された除算または剰余の演算子の評価における例外的なオーバーフロー状態に対する防御策を導入しました。Paquier)ある種のPL/Javaパラメータがスーパーユーザ以外から設定されることを防止しました。Misch)この変更はPL/Javaのセキュリティ障害(CVE-2016-0766)を緩和します。PL/Javaではそれらパラメータをスーパーユーザのみとすることで障害は修正されています。PL/JavaよりもPostgreSQLをより頻繁にアップデートするサイトのセキュリティ危険性を防ぐため、本体コードでもこれらパラメータを認識するようにしました。libpqのメモリ不足状況の扱いを改善しました。Linnakangas)ecpgが生成するtypedef文で引数の順序を修正しました。Meskes)ecpgのPGTYPESnumeric_from_double()で%fでなく%g書式を使うようにしました。Lane)プリプロセッサ命令行から次の行へと継続されるコメントが含まれないようにecpgで供給されるヘッダファイルを修正しました。Meskes)このようなコメントはecpgに受け付けられません。ecpg自体が変更されるべきかまだ明らかではありません。contrib/pgcryptoのcrypt()関数を問い合わせキャンセルで確実に中断できるようにしました。Karlsson)2.5.xより後のflexバージョンに対応しました。2.6.0がリリースされていて、ビルドスクリプトのバージョンチェックは調整する必要がありました。PGXSビルドで見つけられる場所にmissingスクリプトを設置するようにしました。Nasby)bisonのようなビルドツールが存在しないマシンでのPGXSビルドにおいて、まっとうな振る舞いを可能にします。MSVCビルドにてインストールされるヘッダファイル群にdynloader.hが確実に含まれるようにしました。Paquier)現在のlibxml2の動作に適合するように別種のリグレッションテスト予想出力ファイルを追加しました。Lane)libxml2におけるCVE-2015-7499の修正により、これまで出力していた一部ケースでエラーコンテキスト報告を出力しなくなります。これは障害に見えますが、私たちはおそらくしばらくは我慢する必要があり、対処しました。2016aに更新しました。夏時間法の変更、パキスタンの歴史的な訂正が適用されています。リリース9.1.19。