リリース日: 2016-05-12
このリリースは9.5.2に対し、各種不具合を修正したものです。 9.5メジャーリリースにおける新機能については、E.32 を参照してください。
OpenSSLを呼び出す前にそのエラーキューを、既に消去されているとみなすのではなく、消去します。また、必ず後に消去しておくようにします。 (Peter Geoghegan, Dave Vitek, Peter Eisentraut)
この変更は、一つのプロセスの中でOpenSSLを使った複数の接続があって、含まれるコードの全てがエラーキューを消去するとき同一規則に従っていない場合の問題を防ぎます。 特に、クライアントアプリケーションがPHPやPython、RubyのOpenSSLラッパーを使ったSSL接続と同時に、libpqでSSL接続を使っているときに、障害が報告されました。 拡張モジュールが外にむけたSSL接続をするのであれば、同様にサーバでも似た問題が起こる可能性があります。
左外部結合の右手側に入っている完全外部結合でのプランナのエラー「failed to build any N
-way joins (N個立ての結合の構築にいずれも失敗しました)」を修正しました。
(Tom Lane)
複数階層のネステッドループプランにおける等価クラス検査の誤った扱いを修正しました。 (Tom Lane)
X.X = Y.Y = Z.Z
のような、3つ以上からなる変数の等価クラスが与えられると、
プランナが全ての変数が実際に等しいようにするために必要な検査の一部を怠る可能性があり、
出力される行がWHERE
句を満たさない結合をもたらしました。
さまざまな理由のため、誤ったプランは実際には滅多に選択されません。
そのため、このバグは長い間気づかれずにきました。
operator_precedence_warningがonのときに生じる、稀な場合のパーサのエラーを修正しました。 (Tom Lane)
一例としては、SELECT (ARRAY[])::text[]
が、括弧が無ければ動作するにもかかわらず、エラーになります。
GINインデックススキャンで問い合わせ処理内のメモリリークを修正しました。 (Julien Rouhaud)
GINインデックスの挿入で、問い合わせ処理内のメモリリークとインデックス破損の可能性を修正しました。 (Tom Lane)
このメモリリークは単純な問い合わせでは通常は大きくなりませんが、大きなmaintenance_work_mem
で巨大なGINインデックスを構築する間に相当な量になることがありえました。
to_timestamp()
の書式コードTH
、th
、Y,YYY
の誤った振る舞いを修正しました。
(Tom Lane)
これにより、入力文字列の末尾を超えて進み、次の書式コードでゴミが読まれるおそれがありました。
という構造のvalue
operator
ANY (array
)array
引数が副問い合わせである場合のルールとビューのダンプを修正しました。
(Tom Lane)
ALTER SYSTEM
のパラメータ値で改行を禁止しました。
(Tom Lane)
設定ファイルのパーサは文字列リテラルに含まれた改行に対応していませんので、私たちはALTER SYSTEM
で挿入される値においてもこれを許すべきではありません。
ALTER TABLE ... REPLICA IDENTITY USING INDEX
を、OIDに対するインデックスが指定されても適切に動作するように修正しました。
(David Rowley)
テーブル空間のシンボリックリンクを削除するのに失敗した後の誤動作の可能性を回避しました。 (Tom Lane)
アラインメントを選り好みするプラットフォームでのロジカルデコーディングのクラッシュを修正しました。 (Tom Lane, Andres Freund)
ディスクにあふれ出るほど大きいトランザクションで、かつ、主キーがそのトランザクション中で変更されるときだけ、障害が発生します。
walsenderのシャットダウン中に受信側からフィードバックの要求が繰り返されるのを回避しました。 (Nick Cleaton)
PGCTLTIMEOUT
環境変数が設定されているなら、pg_regressがその値による起動タイムアウトを適用するようにしました。
(Tom Lane)
これは、最近pg_ctlに追加された振る舞いとの一貫性のためで、 遅いマシンでの自動テストを容易にします。
一つの演算子クラスだけを含む演算子族の拡張への所属を正しくリストアできるようにpg_upgradeを修正しました。 (Tom Lane)
このような場合、演算子族は新しいデータベースにリストアされますが、もはや拡張の一部として記されませんでした。これは直ちには悪影響はありませんが、後にpg_dumpが リストア時に(無害な)エラーを引き起こす出力を吐き出す原因となりました。
新たなクラスタのTOAST規則が古いクラスタと異なるとき失敗しないようにpg_upgradeを修正しました。 (Tom Lane)
pg_upgradeには、新しいPostgreSQLバージョンが、 古いバージョンには無いけれどこのテーブルはTOASTテーブルを持つべきとみなした場合を扱う特別な場合のコードがありました。 このコードは壊れていたため除去し、このような場合には代わりに何もしません。 古いバージョンの規則に従って問題ないなら、TOASTテーブルがないとうまくいかないと思う理由がないように思われます。
IBMのXLCコンパイラを使ったときのPPCむけの原子的操作を修正しました。 (Noah Misch)
--disable-spinlocks
と設定されたビルドで、使用されるSysVセマフォの数を減らしました。
(Tom Lane)
NetBSDのライブラリ関数との衝突を避けるため、内部関数strtoi()
の名前をstrtoint()
に変えました。
(Thomas Munro)
Windowsにおけるシステムコールbind()
とlisten()
からのエラー報告を修正しました。
(Tom Lane)
Microsoft Visual Studioでビルドするときのコンパイラ出力の冗長さを減らしました。 (Christian Ullrich)
Visual Studio 2015でのビルドに対応しました。 (Michael Paquier, Petr Jelínek)
なお、VS2015で作ったビルドはWindows Vistaより前のバージョンのWindowsでは動作しません。
Visual Studio 2013で適切に動作するようにputenv()
を修正しました。
(Michael Paquier)
WindowsのFormatMessage()
関数の安全でない可能性のある使用を回避しました。
(Christian Ullrich)
適切にFORMAT_MESSAGE_IGNORE_INSERTS
フラグを使用します。
これに関連した既知の未修整バグはありませんが、注意深くすることは良い考えと思われます。
タイムゾーンデータファイルをtzdata release 2016dに更新しました。
ロシア、ベネズエラの夏時間法の変更、当該地域は今では隣接した地域とは異なるタイムゾーンの歴史を持っているという事実を反映させた新しい地域名Europe/Kirov
、Asia/Tomsk
が含まれます。