他のバージョンの文書 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.2. リリース10.4

リリース日: 2018-05-10

このリリースは10.3に対し、様々な不具合を修正したものです。 10メジャーリリースにおける新機能については、E.6を参照してください。

E.2.1. バージョン10.4への移行

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

しかしながら、adminpack拡張を使っているなら、下記の1番目の変更履歴項目にしたがって、それをアップデートするべきです。

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

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

E.2.2. 変更点

  • contrib/adminpackpg_logfile_rotate()関数からパブリック実行権限を取り除きました。 (Stephen Frost)

    pg_logfile_rotate()はコア関数pg_rotate_logfile()の廃れたラッパーです。 ハードコードされたスーパーユーザ検査ではなくアクセス制御のためのSQL権限に依存するように関数が変更されたとき、pg_logfile_rotate()も同様に更新されるべきでしたが、その必要性が見逃されました。 そのために、adminpackがインストールされていると、任意のユーザがログファイルのローテーションを要求できてしまい、小さいセキュリティ問題が生じていました。

    本アップデートをインストール後、管理者は、ALTER EXTENSION adminpack UPDATEadminpackがインストールされた各データベースで実行することで、adminpackをアップデートすべきです。 (CVE-2018-1115)

  • いくつかの組み込み関数での誤った変動性区分を修正しました。 (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することです。

  • いくつかの組み込み関数での誤ったパラレルセーフの印付けが修正されました。 (Thomas Munro, Tom Lane)

    関数brin_summarize_new_valuesbrin_summarize_rangebrin_desummarize_rangegin_clean_pending_listcursor_to_xmlcursor_to_xmlschemats_rewritets_statbinary_upgrade_create_empty_extensionpg_import_system_collationsは、パラレル非安全(parallel unsafe)と印付けされるべきでした。 これらの一部は直接データベース変更を行い、また、他はユーザから供給された同様の直接変更を行うかもしれない問い合わせを実行するためです。 これらはパラレル制限(parallel restricted)と印付けされていて、予期せぬ問い合わせエラーの危険をもたらしました。 これは新たなインストレーションでは補正された初期カタログデータにより修正されますが、既存のインストレーションは誤った印付けを含んだ状態のままとなります。 force_parallel_modeがonになっていない限り、これら関数の実際の使用ではほとんど害は生じないと見られます。 もし問題が起きたら、手動でこれら関数のpg_procエントリを更新することで修正できます。 例えばALTER FUNCTION pg_catalog.brin_summarize_new_values(regclass) PARALLEL UNSAFEと実行します。 (インストレーションの各データベース上で行う必要があることに注意してください。) 他の選択肢はそのデータベースを正しい初期データを持つバージョンに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を選択しないようにして修正しました。

  • パーティションテーブルへのCOPY中に、個々のパーティションで正しくあらゆるCHECK制約を強制するようにしました。 (Etsuro Fujita)

    これまでは、パーティションテーブル全体に対して宣言された制約のみが検査されていました。

  • TRUEFALSEをパーティション境界値として受け入れるようにしました。 (Amit Langote)

    これまでは、booleanのパーティション列に文字列リテラル値だけが受け入れられました。 しかし、pg_dumpはそのような値をTRUEFALSEとして出力していて、ダンプ/再読み込みの失敗をもたらしていました。

  • パーティションキーの比較関数に対するメモリ管理を修正しました。 (Álvaro Herrera, Amit Langote)

    ユーザ定義演算子クラスをパーティションキーに使っているとき、この誤りはクラッシュをもたらす可能性がありました。

  • パーティションテーブル内のいくつかのパーティションが同一の行型を持たず、問い合わせがそれらパーティションにタプルを挿入するとき、起こりうるクラッシュを修正しました。 (Etsuro Fujita, Amit Langote)

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

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

  • CREATE TABLE ... LIKE ... INCLUDING ALLで複製されたテーブル属性の集合に拡張統計オブジェクトを含めました。 (David Rowley)

    これを行うかどうかを細かに制御ができるINCLUDING STATISTICSオプションも追加しました。

  • bigintのIDENTITY列を伴うCREATE TABLE ... LIKEを修正しました。 (Peter Eisentraut)

    longが32ビットのプラットフォーム(大部分の32ビットマシンのみならず64ビットWindowsも含まれます)で、コピーされたシーケンスパラメータが32ビットに切り捨てされていました。

  • 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であると誤った分別がされ、間違った結合結果をもたらす可能性がありました。

  • 複合インデックスの列に同じテーブル列が現れ、それらインデックス列の一部だけが列の値を返すことができる演算子クラスを使うときに、起こりうる誤ったインデックスオンリースキャンプランの生成が修正されました。 (Kyotaro Horiguchi)

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

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

  • 問い合わせが複数GROUPING SETSを持ち、それらのいずれもソートによる実現ができないときのプランナのクラッシュを防止しました。 (Andrew Gierth)

  • 一部のGROUPING SET使用における二重解放によるエグゼキュータのクラッシュを修正しました。 (Peter Geoghegan)

  • 遷移テーブルの自己結合の誤った実行を修正しました。 (Thomas Munro)

  • テーブル書き換えイベントトリガが、そのようなトリガを呼び出す可能性のあるコマンドと同時に追加された場合のクラッシュを回避しました。 (Álvaro Herrera, Andrew Gierth, Tom Lane)

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

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

  • 可視性マップのバッファピンのメモリリークまたは二重解放の可能性があり、修正しました。 (Amit Kapila)

  • ページが全て可視であるという偽性の印付けを回避しました。 (Dan Wood, Pavan Deolasee, Álvaro Herrera)

    これは一部タプルがロックされている(しかし削除されていない)場合に発生するおそれがありました。 問い合わせが未だ正しく動作している間、バキュームは通常そのようなページを無視し、タプルがずっと凍結されないという長期の影響が伴います。 最近のリリースではこれは、found multixact nnnnn from before relminmxid nnnnnといったエラーをひき起こすでしょう。

  • 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)

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

  • pg_stat_activityの情報を補助プロセスに対して正しく扱うようにしました。 (Edmund Horner)

    このようなプロセスについてapplication_nameclient_hostname、およびqueryフィールドが誤ったデータを見せるかもしれませんでした。

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

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

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

  • 横断値を使うSP-GiST演算子クラスでの問い合わせの間のメモリリークを防止しました。 (Anton Dignös)

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

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

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

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

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

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

  • ローカルとリモートのサーバで型のOIDが一致すると仮定しないようにロジカルレプリケーションを修正しました。 (Masahiko Sawada)

  • 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以降のサーバにだけ発行されるべきです。

  • pg_rewindが実行中にファイルがソースサーバで削除されている場合、確実にターゲットサーバのそれらファイルを削除するようにしました。 (Takayuki Tsunakawa)

    これを行うのに失敗することで、特に問題のファイルがWALセグメントである場合に、ターゲットでデータ不整合が生じる可能性がありました。

  • デフォルトでないテーブルスペースにあるテーブルを正しく扱うようにpg_rewindを修正しました。 (Takayuki Tsunakawa)

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

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

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

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

  • contrib/bloomのインデックスの初期ビルドでのエラーを修正しました。 (Tomas Vondra, Tom Lane)

    テーブルの最後のタプルがインデックスで無視される可能性があり、修正しました。 部分インデックスの場合にインデックスのタプル数を正しく数えるようにしました。

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

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

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

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