2016-10-27このリリースは9.6.0に対し、各種不具合を修正したものです。バージョン9.6.1への移行9.6.Xからの移行ではダンプ/リストアは不要です。インストレーションが下記変更点の最初の2項目に書かれたバグの影響を受けている場合には、アップデート後に壊れた空き領域マップおよび/または可視性マップを修復する作業が必要になるでしょう。変更点リレーションの空き領域マップと可視性マップの切り捨てに関するWAL記録を修正しました。Linnakangas)クラッシュリカバリの際にこれらのファイルが正しくリストアされない、あるいは、スタンバイサーバで誤った書き込みがされる可能性がありました。8192バイトのうち0バイトのみ読み取りました)」のようなエラーをもたらします。チェックサム検査を有効にしているなら、可視性マップでのチェックサムエラーの可能性もあります。pg_upgradeがリレーションの可視性マップを9.6形式に書き換えたときに起こりうるデータ破損を修正しました。Lane)ビッグエンディアンのマシンで、新たな可視性マップのバイト列が誤った順で書かれ、完全に誤ったマップをもたらしました。Windowsで、古いマップがテキストモードを使って読まれていて、偶然に復帰(CR)・改行(LF)と一致したバイト列を含んでいる場合に誤った結果をもたらしました。後者のエラーは、マップファイルが誤った長さに見えるため、ほとんど常にpg_upgradeのエラーになります。ビッグエンディアンのマシン(多くの非インテルアーキテクチャはビッグエンディアンです)を使っていて、pg_upgradeを9.6より前のリリースからのアップグレードに使っていた場合には、すべての可視性マップが不正で再生成を要すると考えるべきです。そのためにはcontrib/pg_visibilityのpg_truncate_visibility_map()関数を用いて各リレーションの可視性マップを切り捨ればよいです。CONFLICTでの自己競合する挿入には直列化のエラーを出さないようにしました。Geoghegan)DISTINCTを使用する集約関数の実行で解放済みメモリ使用の危険があり、修正しました。Geoghegan)これはクラッシュまたは誤った問い合わせ結果をもたらすおそれがあります。ウィンドウ関数として使用される多様型の集約の誤った扱いを修正しました。Lane)集約の遷移関数は、その第一引数と戻り値が状態の型でなく集約の出力の型であると知らされました。このことは多様遷移関数のエラーまたはクラッシュを引き起こしました。行単位セキュリティが有効なテーブルの列名リストを伴うCOPYを修正しました。Brightwell)track_io_timingがonのとき、有効なXMLを出力するようにEXPLAINを修正しました。Winand)これまでXML出力形式オプションは<I/O-Read-Time>のような文法的に無効なタグを生成していました。これは<I-O-Read-Time>となります。準備されたトランザクションでのTRUNCATEに対する統計情報の更新が修正されました。Kelvich)テーブルの作成または定義変更における、継承したCHECK制約のマージでのバグを修正しました。Langote)同一のCHECK制約を親テーブルと子テーブルにどの順でも加えることを可能にします。VALIDな制約とのマージを防止します。INHERITな子の制約と継承された制約とのマージを防止します。pg_settings.unitでmin_wal_sizeとmax_wal_sizeに実用的な値を表示するようにしました。Lane)jsonb_set()で配列要素の置換を修正しました。Lane)対象が存在するJSON配列要素の場合、新たな値で置き換えられる代わりに削除されていました。バッファロックの保持なしにタプル可視性をテストすることによる、とても低い確率のデータ破損を回避しました。Lane)サーバ再起動をまたいでコミットタイムスタンプを維持するようにしました。Ringer)track_commit_timestampがonのとき、クリーンなサーバ再起動の後に古いコミットタイムスタンプがアクセス不能になっていました。サブトランザクションのWAL出力がディスクに溢れるほど大きいとき、適切に動作するようにロジカルWALデコーディングを修正しました。Freund)ロジカルWALでコーディングでダングリングポインタ問題を修正しました。pageサイズの倍数にまるめるようにしました。pageサイズを持つシステムでmunmap()中に起こりうる失敗を回避します。クラッシュリカバリの場合を除いて、ログメッセージの他には悪影響はありませんでした。libpqで複数接続を横断してSSLコンテキストを共有をしようとしなくしました。Linnakangas)特に異なる接続に異なるSSLパラメータを使おうとするとき、これは稀な場合で起きる様々なバグをもたらしました。libpqで稀な場合のメモリリークを回避しました。Lane)報告された問題はPQreset()でエラー報告がメモリリークするものですが、関連したケースがいくつかあると思われます。pg_upgradeでライブラリがロード可能かを名前順に検査するようにしました。Lane)これは言語の変換モジュールから、その基となる言語とデータ型のモジュールへの拡張間の依存を処理するための回避策です。インデックスアクセスメソッドを含む拡張に対して正しく動作するようにpg_upgradeを修正しました。METHODに対応するように拡張されました。この機能はアクセスメソッドの動的作成に対応した当初のパッチに含まれているべきでしたが、見落とされていました。pg_upgradeのファイルのコピー/リンク/リライト段階におけるエラー報告を改善しました。Herrera)pg_dumpを7.4より前のサーバに対して動作するように修正しました。Lane)pg_rewindで--source-serverと--source-targetのオプションを両方指定することを禁止しました。Banck)pg_rewindがソースサーバ上のセッションでsynchronous_commitをoffにするようにしました。Paquier)これによりソースサーバが同期レプリケーションを使用していて、何らかの理由でそれが機能していないときでも、pg_rewindが動作するようになります。pg_xlogdumpで--followオプションを使っているとき、新たなWALセグメントのオープンを再試行するようにしました。Hagander)これはサーバの次セグメント作成における起こりうる遅れを許容します。ロールバックされた更新の対象となっていた破損したタプルに対して正しいTIDを報告するようにcontrib/pg_visibilityを修正しました。Lane)単独でのPL/Pythonの並行makeが確実に成功するようにmakefileの依存を修正しました。2016hに更新しました。パレスチナとトルコの夏時間法の変更、トルコとロシアのいくつかの地域の歴史的修正が含まれます。南極大陸、旧ソ連、スリランカのいくつかのタイムゾーンでは数値による省略形に切り替えました。IANAタイムゾーンデータベースはこれまで全てのタイムゾーンについて文字による省略形を提供しましたが、地元の人々の間でほとんど、あるいは全く通用していない省略形をしばしば作成していました。IANAは英語の省略形が現実に使われている形跡がないゾーンにおいてはUTCオフセット数値を使うことを選ぶという方針に転換しようとしてるところです。少なくともしばらくの間、PostgreSQLはタイムスタンプの入力に、このような削除された省略形を引き続き受け入れます。それらはpg_timezone_namesビューには現れず、出力にも使用されなくなります。本更新ではAMTはもはやアルメニア時間の意味で使われるものとしては現れません。それゆえに、これをアマゾン時間すなわちUTC+4ではなくUTC-4と解釈するようにDefault省略形セットを変更しました。