2015-10-08このリリースは9.4.4に対し、各種不具合を修正したものです。リリース9.4を参照してください。バージョン9.4.5への移行9.4.Xからの移行ではダンプ/リストアは不要です。リリース9.4.4を参照して下さい。変更点jsonのパースでのスタックオーバーフローを防止しました。Saarenmaa)アプリケーションが任意のユーザ入力からPostgreSQLのjsonやjsonbの値を構成する場合、アプリケーションユーザはPostgreSQLサーバを確実にクラッシュさせることができて、一時的なサービス不能を引き起こせます。(CVE-2015-5289)短すぎるcrypt()のソルトを検出して報告するようにcontrib/pgcryptoを修正しました。Kupershmidt)ある種の無効なソルト引数はサーバをクラッシュさせるか、わずかなバイト数のサーバメモリを露出させました。機密情報を露出するバイト列に在るように配置する攻撃の可能性は排除しませんが、ありそうにないと考えられます。(CVE-2015-5288)外側サブトランザクションに属するポータル(カーソル)がエラーになった後の、サブトランザクションのクリーンアップ処理を修正しました。Paquier)外側サブトランザクションのカーソルで実行された関数が、内側サブトランザクションで作られたリレーションを参照することで、アサート失敗かクラッシュを引き起こすことがありました。WAL挿入中に起こりうるデッドロックを修正しました。Linnakangas)UPDATE実行時に更新可能ビューに参照されてる全てのリレーションが確実に正しくロックされるようにしました。Rasheed)リレーションキャッシュ「initファイル」へのリレーションの書き込みを修正しました。Lane)直近のマイナーリリースでの修正の誤りにより、pg_trigger_tgrelid_tgname_indexをinitファイルから除外していました。その後のセッションはこのことを検出して、initファイルが壊れているとみなして黙ってファイルを無視します。結果としてセッション開始時間が顕著に劣化しました。本バグの修正に加えて、似たような将来の誤りが見つかりやすくなるように防止策をいくつか導入しました。振る舞いを防止しました。Conway)読まれていない通知が多数あるときのLISTEN開始時間を改善しました。Newell)一つの接続で多数の外部キー制約を変更するときの性能問題を修正しました。Lane)主として数千テーブルを持つデータベースのpg_dump出力をリストアするときに見られます。SSL再ネゴシエーションをデフォルトで無効にしました。Freund)SSL再ネゴシエーションの使用は理論的には良い考えですが、OpenSSLライブラリに因るものと私たちのライブラリの使い方に因るものの両方で実際のところ多くのバグが見られました。再ネゴシエーションは9.5以降では完全に取り除く予定です。古いバージョン系列ではssl_renegotiation_limitのデフォルト値をゼロ(無効)に変更するだけとします。*_freeze_max_ageパラメータの下限値を下げました。Freund)これは主として関連する振る舞いのテストの所要時間を短くするものですが、限られたディスク領域でインストールする際にも有益と思われます。サーバクラッシュを防ぐため、wal_buffersの最大値を2GBに制限しました。Berkus)サーバ開始時にしか設定できないパラメータがpostgresql.confに複数回現れたときに苦情のログがでないようにしました。include_dir命令後の行番号カウントを修正しました。Lane)numeric値の掛け算における稀な内部オーバーフローを修正しました。Rasheed)レコード型、範囲型、json、jsonb、tsquery、ltxtquery、および、query_intに含まれる起こりにくいスタックオーバーフローを予防しました。Misch)日付時刻の入力でDOWとDOYの扱いを修正しました。TO、および、LIKEの照合に再帰深度の保護を加えました。Lane)ある種の検索パターンと低いスタック深度制限によりスタックオーバーランクラッシュを引き起こすことがありました。正規表現の実行での無限ループの可能性を修正しました。Lane)一見ゼロ長文字列にマッチできそうで実際には後方参照のためにマッチしない検索パターンで、無限ループになるおそれがありました。正規表現の実行で、たとえマッチがゼロ長であったとしても、量指定子を含む括弧で補足されたマッチデータを正しく記録するようにました。Lane)正規表現のコンパイルでメモリ不足による障害を修正しました。Seltenreich)正規表現実行での稀なメモリリークを修正しました。Lane)トランザクションがアボートした際のロック解放処理における稀なメモリ不足時の障害を修正しました。sort」エラーになるのを修正しました。Lane)qsortでの大変稀なスタックオーバーランを修正しました。size」エラーになるのを修正しました。Lane)プランナに関するいくつかのバグを修正しました。奇妙なプランナエラーになりました。Stefaniakに感謝しなければいけません。大きな継承セット上のUPDATE/DELETEに対するプランナの性能を改善しました。Rasheed)スタンバイ昇格のトリガファイルがpostmaster起動時に確実に削除されるようにしました。Masao)新たなスタンバイサーバを初期化するのに使われるデータベースバックアップにトリガファイルが在ったとき、望まない昇格が起きるのを防ぎます。postmasterシャットダウンの際、postmaster.pidファイルを削除する前に、確実にソケット毎のロックファイルが削除され、リッスンソケットが閉じられるようにしました。stopが戻ってすぐに新たなpostmasterを起動しようとする場合の、競合状態による失敗を防ぎます。immediateシャットダウンであっても、すべての子プロセスが居なくなるまでpostmasterが終了しないようにしました。Lane)手前の項目と同様に、続いて起動されたpostmasterとの間で競合状態になる可能性を回避します。postmasterにおけるクラッシュリカバリ中のスタートアッププロセスのクラッシュの扱いを修正しました。Lane)クラッシュリカバリサイクルの中で、スタートアッププロセスがデータベース一貫性の復旧無しにクラッシュした場合、一般的に再クラッシュとなるだけの新たなスタートアッププロセスを起動しようとして無限ループをもたらしていました。マルチトランザクション周回のための緊急自動バキュームをより頑健にしました。Freund)自動バキュームワーカにシグナルを送ろうとしてそのプロセスが既にいなくなっていた場合にWARNINGを出さないようにしました。そのようなシグナルに関連するログ冗長性を減らしました。Lane)サーバ時計の時刻が大幅に戻ったときに自動バキュームランチャーが過度に長く休止するのを防止しました。Herrera)GINインデックスの挿入保留リストのクリーンアップがキャンセル要求により割り込みできることを確実にしました。Janes)GINインデックスで全ゼロページを再利用可能にしました。Linnakangas)そのようなページはクラッシュ後に取り残されるかもしれませんでした。SP-GiSTインデックスで全ゼロページの扱いを修正しました。Linnakangas)VACUUMはこのようなページを再利用しようとしていましたが、クラッシュ安全ではない方法で行っていました。Munro)PL/pgSQLのエラーコンテキストメッセージにて、文の種類CONTINUE、MOVEの誤報告を修正しました。PL/Perlを修正しました。PL/Pythonのクラッシュを修正しました。Lane)PL/Tclにてmalloc()呼び出しの失敗チェックを怠っているいくつかの箇所を修正しました。Herrera)contrib/isnで、979で始まるISBN-13番号の出力を修正しました。Coelho)(9790ではなく)979から始まるEANはISBNと見做せますが、それらは10桁形式ではなく、新しい13桁形式で出力されなければいけません。contrib/pg_stat_statementsの問い合わせ文字列のガベージコレクションの処理を改善しました。Geoghegan)問い合わせ文字列が格納される外部ファイルは非常に大きいサイズに膨らむことがありました。一度ファイルが1GBを超えたなら、それを縮小する試みは失敗し、その後すぐにファイルが全く読めない状況になりました。contrib/postgres_fdwで照合に関するの判断を改善しました。Lane)ユーザに見える主な効果は、varcharカラムを含む比較が以前より多くのケースでリモートサーバに送られて実行されるようになることと思われます。libpqのメモリ不足状態の扱いを改善しました。Linnakangas)ecpgにおいて、メモリリークとメモリ不足チェックの欠落を修正しました。Paquier)数値出力のロケールを意識した書式整形について、psqlのコードを修正しました。実行される書式整形のコードは、べき指数を持つけれども小数点を持たない数値など、一部のまれなケースで誤っていました。moneyデータ型の既にローカライズされた出力を壊すこともありました。現在の接続が無いときの\cコマンドでpsqlがクラッシュするのを防止しました。VALIDのCHECK制約を正しく扱うようにしました。Lane)pg_dumpのディレクトリ出力フォーマットにおいて、デフォルトのzlib圧縮レベルの選択を修正しました。Dunstan)tar形式出力でのpg_dumpで作られる一時ファイルを全ユーザから読み取り可能にしないようにしました。Paquier)postgresまたはtemplate1データベースがデフォルトテーブルスペース以外にある場合に対応するように、pg_dumpとpg_upgradeを修正しました。Momjian)特定の権限タイプを持つには古すぎるサーバからダンプするときに、pg_dumpがオブジェクト権限を正常に扱うように修正しました。Lane)9.2以前のサーバからデータ型をダンプするとき、および、関数や手続き言語を7.3以前のサーバからダンプするとき、pg_dumpは所有者の付与できる権限を剥奪して、代わりにPUBLICに全ての権限を与えるようなGRANT/REVOKEコマンドを生成していました。ここでの権限に含まれるのはUSAGEとEXECUTEだけなので、これはセキュリティ問題ではありませんが、まったく驚くべき旧システム挙動の表現です。この場合はデフォルト権限状態のままにするように修正しました。pg_dumpがシェル型をダンプするように修正しました。Lane)シェル型(未定義のデータ型)は大して有用ではありませんが、それでもpg_dumpはダンプすべきでした。pg_dumpとその他いくつかのクライアント側プログラムの、様々なちょっとしたメモリリークを修正しました。Paquier)問い合わせやpgbench自身が固まったときの、pgbenchの進捗報告の振る舞いを修正しました。Coelho)Alphaハードウェア向けのスピンロックのアセンブラコードを修正しました。Lane)AIXのネイティブアセンブラと互換性を持つように、PPCハードウェアむけのスピンロックのアセンブラコードを修正しました。gccが一般的になりつつあるネイティブアセンブラを使う構成である場合に、gccでのビルドができませんでした。AIXで、単にそれが安全に使えるとみなすのでなく、-qlonglongコンパイラオプションのテストをします。Misch)AIXで、実行時に解決されるシンボルを許可する-Wl,-brtllibリンクオプションを使います。Misch)Perlでは5.8.0以降からこの機能に依存しています。xlcでインライン関数展開を使わないようにしました。Misch)いくつかのSolarisバージョン上で、必要に応じてsched_yield()のためにlibrtを使用します。Saarenmaa)UHCエンコーディングをWindowsコードページ949と解釈します。Misch)これはpostmasterのような特定のデータベースに紐づかないプロセスからの非ASCIIのログメッセージ出力を修正します。Windowsで、ログメッセージ用などのトランザクション外でのUTF16への文字エンコーディング変換で失敗するのを防止しました。Misch)setlocale()の返し値をコピーしないことによる、postmaster起動失敗を修正しました。PRC)」)に設定したWindowsシステムで報告され、他のマルチバイトコードページでも起こるとみられます。Windowsのinstall.batスクリプトが空白文字を含む対象ディレクトリ名を扱えるように修正しました。Linnakangas)PostgreSQLバージョン番号の数値形式(90405など)を拡張モジュールのMakefileで変数VERSION_NUMとして容易に利用可能にしました。2015gに更新しました。カナダ・ノーザンロッキーのための新しいタイムゾーン名America/Fort_Nelsonが加わっています。