PostgreSQL 9.6.5文書 | |||
---|---|---|---|
前のページ | 上に戻る | 付録 E. リリースノート | 次のページ |
リリース日: 2016-10-27
このリリースは9.3.14に対し、各種不具合を修正したものです。 9.3メジャーリリースにおける新機能については、項E.51を参照してください。
9.3.Xからの移行ではダンプ/リストアは不要です。
しかしながら、インストレーションが下記変更点の最初に書かれたバグの影響を受けている場合には、アップデート後に壊れた空き領域マップを修復する作業が必要になるでしょう。
また、9.3.9よりも前のバージョンからアップグレードする場合には、項E.42を参照してください。
リレーションの空き領域マップと可視性マップの切り捨てに関するWAL記録を修正しました。 (Pavan Deolasee, Heikki Linnakangas)
クラッシュリカバリの際にこれらのファイルが正しくリストアされない、あるいは、スタンバイサーバで誤った書き込みがされる可能性がありました。 空き領域マップ内のでたらめな項目は、リレーション自体から切り捨てられて存在しないページへのアクセスを引き起こすおそれがあり、典型的には"could not read block XXX: read only 0 of 8192 bytes(ブロックXXXが読み取りできません: 8192バイトのうち0バイトのみ読み取りました)"のようなエラーをもたらします。 チェックサム検査を有効にしているなら、可視性マップでのチェックサムエラーの可能性もあります。
問題があるかどうかの判断とそうであるときの修復の手順について、 https://wiki.postgresql.org/wiki/Free_Space_Map_Problems で説明されています。
SELECT FOR UPDATE/SHAREが、その後に中止されたトランザクションにより更新されたタプルを正しくロックするように修正しました。 (Álvaro Herrera)
9.5以降では、SELECTは時々そのようなタプルを返すのに失敗しました。 失敗が以前のリリースで発生することは確認されていませんが、同時更新で起こる可能性があります。
CTEスキャンを伴うEvalPlanQualの再検査を修正しました。(Tom Lane)
再検査はCTEを行を返さないものと常にみなしており、これは典型的には最近更新された行の更新の失敗に繋がっていました。
副問い合わせにおけるハッシュ集約の以前の結果の不適切な繰り返しを修正しました。(Andrew Gierth)
以前に計算された集約状態値のハッシュテーブルを再利用可能か確認するテストは集約引数式に外部の問い合わせ参照が現れる可能性を無視していました。 そのような参照の値の変化により、ハッシュテーブルが再計算されることになるはずですが、そうなっていませんでした。
track_io_timingがonのとき、有効なXMLを出力するようにEXPLAINを修正しました。 (Markus Winand)
これまでXML出力形式オプションは<I/O-Read-Time>のような文法的に無効なタグを生成していました。 これは<I-O-Read-Time>となります。
EXPLAINにおいて計測されなかった時間に0を表示するのを抑制しました。(Maksim Milyutin)
特定のオプションの組み合わせでは、その組み合わせでは実際には決して計測されない時間に対して0を表示していました。 EXPLAINでの私たちの一般的な方針は、そのようなフィールドは全く表示しないことですので、すべての場合で首尾一貫してそのようにします。
VACUUMがテーブルを切り捨てられるよう排他テーブルロックを待っている時のタイムアウト長を修正しました。(Simon Riggs)
タイムアウトは50ミリ秒とされていましたが、実際にはたったの50マイクロ秒でした。そのためVACUUMは意図したよりもずっと簡単に切り捨てを諦めていました。 意図していた値に設定しました。
テーブルの作成または定義変更における、継承したCHECK制約のマージでのバグを修正しました。 (Tom Lane, Amit Langote)
同一のCHECK制約を親テーブルと子テーブルにどの順でも加えることを可能にします。 親テーブルからの有効な制約と子テーブルのNOT VALIDな制約とのマージを防止します。 そのうえ、NO INHERITな子の制約と継承された制約とのマージを防止します。
numeric_in()
とnumeric_recv()
が受け付ける値に関する人為的な制限を取り除きました。
(Tom Lane)
格納書式の制限(1e100000以上)までの数値を許していますので、numeric_in()
が科学的表記法で1000より大きな指数を拒否するのはかなり意味のないことと思われます。
同様にnumeric_recv()
が入力値として1000桁より大きなものを拒否するのも馬鹿げたことでした。
バッファロックの保持なしにタプル可視性をテストすることによる、とても低い確率のデータ破損を回避しました。 (Thomas Munro, Peter Geoghegan, Tom Lane)
1GBよりも大きな一時リレーションを切り捨てる時のファイルディスクリプタのリークを修正しました。(Andres Freund)
スタンドアローンのバックエンドをstandby_modeをオンにして開始できないようにしました。(Michael Paquier)
WALデータを取得して処理するWALレシーバがありませんので、これは全く有用ではありません。この状況を考慮して設計されていないコードで誤った動作をする可能性がありました。
libpqで複数接続を横断してSSLコンテキストを共有をしようとしなくしました。 (Heikki Linnakangas)
特に異なる接続に異なるSSLパラメータを使おうとするとき、これは稀な場合で起きる様々なバグをもたらしました。
libpqで稀な場合のメモリリークを回避しました。 (Tom Lane)
報告された問題はPQreset()
でエラー報告がメモリリークするものですが、関連したケースがいくつかあると思われます。
ecpgの--helpと--versionオプションが他の実行ファイルと首尾一貫して動作するようにしました(Haribabu Kommi)
pg_dumpでは、範囲コンストラクタ関数を決してダンプしません。 (Tom Lane)
この見過ごしにより、pg_upgradeはコンストラクタ関数を重複して生成していたため範囲型を含む拡張で失敗していました。
pg_xlogdumpで--followオプションを使っているとき、新たなWALセグメントのオープンを再試行するようにしました。 (Magnus Hagander)
これはサーバの次セグメント作成における起こりうる遅れを許容します。
2ページ以上に渡る連続レコードで始まるWALファイルをpg_xlogdumpが処理できるよう修正しました。(Pavan Deolasee)
-eオプションが指定された場合にcontrib/intarray/bench/bench.plがEXPLAINの結果を表示するよう修正しました。 (Daniel Gustafsson)
最近のWindowsのバージョンで追加されたタイムゾーン名を認識するようWindowsのタイムゾーンのマッピングを更新しました。(Michael Paquier)
廃止された動的タイムゾーン省略形での失敗を防止します。(Tom Lane)
参照されるタイムゾーンに動的タイムゾーン省略形が一致するものがない場合に、タイムゾーン名と同じであると扱います。 これは、IANAがタイムゾーンデータベースから省略形を削除した場合に発生する予期せぬ失敗を回避します。削除はtzdata release 2016fで行なわれましたし、また、将来再び行なわれる可能性が高いです。 結果は個々の省略形の分別だけに限定されません。ミスマッチによりpg_timezone_abbrevsビューが完全に失敗します。
タイムゾーンデータファイルをtzdata release 2016hに更新しました。 パレスチナとトルコの夏時間法の変更、トルコとロシアのいくつかの地域の歴史的修正が含まれます。 南極大陸、旧ソ連、スリランカのいくつかのタイムゾーンでは数値による省略形に切り替えました。
IANAタイムゾーンデータベースはこれまで全てのタイムゾーンについて文字による省略形を提供しましたが、地元の人々の間でほとんど、あるいは全く通用していない省略形をしばしば作成していました。 IANAは英語の省略形が現実に使われている形跡がないゾーンにおいてはUTCオフセット数値を使うことを選ぶという方針に転換しようとしてるところです。 少なくともしばらくの間、PostgreSQLはタイムスタンプの入力に、このような削除された省略形を引き続き受け入れます。 しかし、それらはpg_timezone_namesビューには現れず、出力にも使用されなくなります。
本更新ではAMTはもはやアルメニア時間の意味で使われるものとしては現れません。 それゆえに、これをアマゾン時間すなわちUTC+4ではなくUTC-4と解釈するようにDefault省略形セットを変更しました。