他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

E.34. リリース9.4.18

リリース日: 2018-05-10

このリリースは9.4.17に対し、各種不具合を修正したものです。 9.4メジャーリリースにおける新機能については、E.52を参照してください。

E.34.1. バージョン9.4.18への移行

9.4.Xからの移行ではダンプ/リストアは不要です。

しかしながら、1番目の変更履歴項目で言及されている誤った印付けの関数の影響があるなら、データベースカタログを補正する手順を行うのが望ましいです。

また、9.4.17より前のバージョンからアップグレードする場合にはE.35を参照してください。

E.34.2. 変更点

  • いくつかの組み込み関数での誤った変動性区分を修正しました。 (Thomas Munro, Tom Lane)

    関数query_to_xmlcursor_to_xmlcursor_to_xmlschemaquery_to_xmlschema、およびquery_to_xml_and_xmlschemaは、ユーザから供給される不安定な操作を含むかもしれない問い合わせを実行するため、揮発性(volatile)と印付けすべきです。 これらはそうなっておらず、誤った問い合わせ最適化が行われる危険をもたらしました。 これは新たなインストレーションでは補正された初期カタログデータにより修正されますが、既存のインストレーションは誤った印付けを含んだ状態のままとなります。 これら関数の実際の使用ではほとんど害は生じないと見られますが、用心のため、手動でこれら関数のpg_procエントリを更新することで修正できます。 例えばALTER FUNCTION pg_catalog.query_to_xml(text, boolean, boolean, text) VOLATILEと実行します。 (インストレーションの各データベース上で行う必要があることに注意してください。) 他の選択肢はそのデータベースを正しい初期データを持つバージョンにpg_upgradeすることです。

  • 無効になったものの未バキュームのTOASTエントリと一致するTOAST値のOIDの再使用を回避しました。 (Pavan Deolasee)

    一度OIDカウンタが周回すると、同じTOASTテーブルで以前に削除済みのエントリとOIDが一致するTOAST値を割り当てする可能性があります。 そのエントリが未だバキュームされていないと、unexpected chunk number 0 (expected 1) for toast value nnnnn(TOAST値nnnnnに対する予期せぬチャンク番号0、(1が期待された))というエラーをひき起こします。 これは無効なエントリがVACUUMで除去されるまで持続します。 新たなTOASTエントリを作るときにそのようなOIDを選択しないようにして修正しました。

  • ANALYZEpg_class.reltuplesを更新するアルゴリズムを変更しました。 (David Gould)

    これまでは、ANALYZEで実際にはスキャンされないページは、以前のタプル密度を維持していると見做されました。 ANALYZEのサンプル取得が全体のごく一部分となる大きなテーブルにおいては、これは全体のタプル密度見積が決して大きくは変更されないことを意味し、そのため、実際にテーブルに起きていることは無視されて、reltuplesはテーブルの物理サイズ(relpages)の変化にほぼ比例して変化していました。 これは、事実上自動バキュームを遮断するほどにreltuplesが実際より大きくなる結果としてあらわれました。 ANALYZEのサンプルがテーブルの統計的に偏りがないサンプルと見做し(そうであるべきなので)、観測されたページ内の密度を単にテーブル全体に外挿することで、修正しました。

  • SERIALIZABLEまたはREPEATABLE READトランザクション隔離で実行される同時実行のCREATE INDEX CONCURRENTLYコマンドのデッドロックを回避しました。 (Tom Lane)

  • REFRESH MATERIALIZED VIEW CONCURRENTLYの実行が遅くなる可能性があり、修正しました。 (Thomas Munro)

  • 参照されるカーソルがインデックスオンリースキャンプランを使うときにUPDATE/DELETE ... WHERE CURRENT OFが失敗しないように修正しました。 (Yugo Nagata, Tom Lane)

  • パラメータ化されたパスにプッシュされたJOIN句の誤ったプラン作成を修正しました。 (Andrew Gierth, Tom Lane)

    この障害により、filter条件のプランであるべきときに、条件が外部結合に対するjoin filterであると誤った分別がされ、間違った結合結果をもたらす可能性がありました。

  • NULLであると証明可能なトップレベルAND/OR条件の副句を持つ、CHECK制約の誤った最適化が修正されました。 (Tom Lane, Dean Rasheed)

    これにより、例えば、制約による除外が、問い合わせから除外すべきでない子テーブルを除外することを許してしまうおそれがありました。

  • 準備されたトランザクションをコミットする間に、問い合わせキャンセルやセッション終了の割り込みが生じた場合の失敗を回避しました。 (Stas Kelvich)

  • 繰り返し実行されたハッシュ結合での問い合わせの間のメモリリークを修正しました。 (Tom Lane)

  • heap_prepare_freeze_tupleの厳格すぎる整合性検査を修正しました。 (Álvaro Herrera)

    これは、9.2以前からpg_upgradeされたデータベースで間違ったcannot freeze committed xmaxエラーになる可能性がありました。

  • Cで書かれた更新前実行の行トリガがoldタプルを返すときの、ダングリングポインタ参照を防止しました。 (Rushabh Lathia)

  • 自動バキュームワーカのスケジューリング中のロックを減らしました。 (Jeff Janes)

    これまでの振る舞いは、多数のテーブルを持つデータベースで潜在的なワーカの同時実行性の大幅な損失をひき起こしました。

  • pg_stat_activityのデータをローカルメモリにコピーするときに、確実にクライアントホスト名がコピーされるようにしました。 (Edmund Horner)

    以前はローカルと見做されていたスナップショットが共有メモリへのポインタを含んでいて、何らかの存在するセッションが切断した場合に、クライアントホスト名の列が予期せず変化することがありました。

  • ispell辞書で複合接辞の誤った処理を修正しました。 (Arthur Zakirov)

  • テキスト列のSP-GiSTインデックスでの照合を伴う検索(すなわち、不等演算子を使うインデックススキャン)を修正しました。 (Tom Lane)

    このような検索は大部分の非Cロケールで誤った行集合を返しました。

  • SP-GiSTインデックスの初期ビルドの際にインデックスのタプル数を正しく数えるようにしました。 (Tomas Vondra)

    これまでは、タプル数は元となるテーブルと同じと報告されましたが、これは部分インデックスの場合には誤りです。

  • GiSTインデックスのバキュームの際にインデックスタプルの数を正しく数えるようにしました。 (Andrey Borodin)

    これまでは見積られたヒープタプルの数が報告されましたが、それは不正確かもしれず、部分インデックスでは確実に誤っています。

  • WALの継続レコードでストリーミングスタンバイが動かなくなる稀な場合が修正されました。 (Kyotaro Horiguchi)

  • ロジカルデコーディングでwalsenderが再起動したときに起こりうるWALデータの二重処理を回避しました。 (Craig Ringer)

  • scalarltselscalargtselを非コアのデータ型で使用できるようにしました。 (Tomas Vondra)

  • 大量の問い合わせ出力が収集された後にサーバエラーが報告されたときのlibpqのメモリ消費を減らしました。 (Tom Lane)

    以前の出力を後でなく先に廃棄して、エラーメッセージを処理します。 一部のプラットフォーム、とりわけLinuxでは、これによりアプリケーションの以降のメモリフットプリントに違いを出すことができます。

  • ecpgで二重解放のクラッシュを修正しました。 (Patrick Krecker, Jeevan Ladhe)

  • MSVCビルドでlong long int変数を正しく扱うようにecpgを修正しました。 (Michael Meskes, Andrew Gierth)

  • ダンプでリスト値になったGUC変数に対する誤った値のクォート付けを修正しました。 (Michael Paquier, Tom Lane)

    local_preload_librariessession_preload_librariesshared_preload_libraries、およびtemp_tablespaces変数は、pg_dump出力で正しくクォート付けされませんでした。 これら変数に対する設定がCREATE FUNCTION ... SETALTER DATABASE/ROLE ... SET句にあるとき、問題を起こしました。

  • pg_recvlogicalをv10より前のPostgreSQLに対して失敗しないように修正しました。 (Michael Paquier)

    前の修正はpg_recvlogicalがサーババージョンにかかわらずコマンドを発行する動作を起こしていましたが、v10以降のサーバにだけ発行されるべきです。

  • PL/pgSQLの整数FORループでオーバーフローの扱いを修正しました。 (Tom Lane)

    以前のコーディングは一部の非gccコンパイラでループ変数のオーバーフローを検知するのに失敗していて、無限ループをもたらしました。

  • PL/PythonのリグレッションテストをPython 3.7でパスするように修正しました。 (Peter Eisentraut)

  • Python 3とMSVCでビルドするときにPL/Pythonと関連モジュールのテストをサポートしました。 (Andrew Dunstan)

  • Solaris 11.4 の組み込み関数との衝突を避けるため内部のb64_encodeおよびb64_decode関数を改名しました。 (Rainer Orth)

  • タイムゾーンライブラリのコピーをIANA tzcode release 2018eに同期しました。 (Tom Lane)

    これはzicタイムゾーンコンパイラを、負の夏時間オフセットを処理できるように修正します。 PostgreSQLプロジェクトが直ちにそのようなタイムゾーンデータを使えるようにすることはありませんが、zicはIANAから直に取得したタイムゾーンデータで使われるかもしれませんので、確実を期してここでzicをアップデートしました。

  • タイムゾーンデータファイルをtzdata release 2018dに更新しました。 パレスチナと南極(ケーシー基地)の夏時間法の変更に加え、ポルトガルとその植民地、エンダーベリー島、ジャマイカ、タークス・カイコス諸島、ウルグアイの歴史的修正が含まれます。