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

リリース日: 2018-08-09

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

E.33.1. バージョン9.4.19への移行

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

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

E.33.2. 変更点

  • 接続試行の間でlibpqの状態の完全リセットに失敗していたものを修正しました。 (Tom Lane)

    dblinkpostgres_fdwの権限の無いユーザが、サーバ実行OSユーザが所有する~/.pgpassファイルなどのサーバ側認証情報を利用するのを防ぐ狙いの検査をすり抜けるおそれがありました。 ローカル接続上のpeer認証を許可しているサーバは特に攻撃されやすいです。 postgres_fdwセッションに対するSQLインジェクションなどの他の攻撃も可能です。 この方法によるpostgres_fdwへの攻撃には指定の接続パラメータで外部サーバオブジェクトを作れることが必要ですが、dblinkに対してはアクセス可能な任意のユーザがこの問題を悪用できます。 他のありえそうな攻撃シナリオは考えにくいですが、一般にはlibpqを使ったアプリケーションに対して接続パラメータを指定できる攻撃者は悪さをすることが可能です。 この問題を報告したAndrew Krasichkovに感謝します。 (CVE-2018-10915)

  • nailedな(固定された)システムカタログに対するrelfrozenxid値およびrelminmxid値の更新が適時に処理されるようにしました。 (Andres Freund)

    過度に楽観的なキャッシュ方式は、これらの更新が他のセッションから参照されることを妨げるおそれがあり、偽性のエラー、および/または、データ破損をひき起こしました。 古くなったキャッシュデータが既存セッションのみならず新たなセッションにまで持続する可能性があるため、この問題はpg_authidなどの共有カタログにおいて著しくより悪質です。

  • 昇格したばかりのスタンバイがリカバリ後の最初のチェックポイントを完了する前にクラッシュする場合について修正しました。 (Michael Paquier, Kyotaro Horiguchi, Pavan Deolasee, Álvaro Herrera)

    本障害により、続くWALをリプレイする際にサーバが一貫性をもったデータベース状態に到達していないと認識する状態になって、再起動を妨げました。

  • 全てゼロのBツリーのページを再利用するときに、でたらめなWALレコードの出力を回避しました。 (Amit Kapila)

    この誤りはアサート失敗としてあらわれました。また、潜在的にホットスタンバイサーバで不要な問い合わせキャンセルをひき起こす可能性がありました。

  • 多数のリレーションを削除するトランザクションに対するWALリプレイ性能を改善しました。 (Fujii Masao)

    この変更は共有バッファをスキャンする回数を減らすので、共有バッファ設定が大きいときに最も恩恵があります。

  • スタンバイサーバのWALリプレイにてロック解放の性能を改善しました。 (Thomas Munro)

  • ロジカルWAL senderがストリーミング状態を正しく報告するようにしました。 (Simon Riggs, Sawada Masahiko)

    これまでのコードは上流サーバに追いついているかどうかを誤判断していました。

  • ロジカルデコーディング中のスナップショット処理でのバグを修正しました。 稀な場合に誤ったデコーディング結果があり得ました。 (Arseny Sher, Álvaro Herrera)

  • インデックス作成が途中で失敗した後に、テーブルのキャッシュされたインデックスリストが正しく再構築されるようにしました。 (Peter Geoghegan)

    これまでは、失敗したインデックスのOIDがリストに残る可能性があり、同セッション内で後に問題をひき起こしました。

  • GINインデックスにおける空で圧縮されていないポスティングリストページの誤った処理を修正しました。 (Sivasubramanian Ramasubramanian, Alexander Korotkov)

    この障害で、9.4より前のGINインデックスからのpg_upgrade後にアサート失敗をひき起こす可能性があります(9.4以降ではこのようなページを作りません)。

  • VACUUMがBツリーページの削除ループの中で確実にシグナルに応答するようにしました。 (Andres Freund)

    破損したBツリーインデックスはそこで無限ループする可能性があり、これまではクラッシュを強制する以外では割り込みができませんでした。

  • 複合型列に関する同値クラスの誤った最適化を修正しました。 (Tom Lane)

    この障害により、複合列のインデックスがその列でのマージ結合に対してソート順を提供できることが認識できませんでした。

  • SQL標準のFETCH FIRST構文を、標準で期待されている通り、パラメータ($n)が使えるように修正しました。 (Andrew Gierth)

  • getObjectDescriptionの出力で、一部のオブジェクト名をスキーマ修飾するのに失敗していたものを修正しました。 (Kyotaro Horiguchi, Tom Lane)

    照合順序、符号化方式変換、および、テキスト検索オブジェクトの名前が、されるべきケースでスキーマ修飾されませんでした。

  • COPY FROMの現在行番号カウンタを32ビットから64ビットに拡張しました。 (David Rowley)

    これは4G行を超える入力に対して二つの問題を回避します。 COPY FROM WITH HEADERが先頭行のみならず4G行毎に1行を捨ててしまっていました。 また、エラー報告が誤った行番号を示す可能性がありました。

  • ecpgpgtypesライブラリに文字列解放関数を追加しました。 これにより、Windowsにおけるモジュールにまたがるメモリ管理の問題が回避できます。 (Takayuki Tsunakawa)

    Windowsでは、与えられたメモリチャンクに対するfree呼び出しがメモリをmallocした同じDLLから行われているのではない場合、クラッシュが起こりえます。 pgtypesライブラリはときどき呼び出し側が解放することを想定した文字列を返しますが、この使い方に従うことが不可能になっていました。 freeをラップするPGTYPESchar_free()関数を追加して、アプリケーションがこの使い方に従えるようにしました。

  • Windowsでecpglong long変数対応を修正しました。 strtoll/strtoullを非標準に宣言する、あるいは全く宣言しない、他のプラットフォームにおいても修正しました。 (Dang Minh Huong, Tom Lane)

  • PL/pgSQLでSQLステートメントタイプの誤識別を修正しました。 RULEの変更がステートメント内部セッションの文脈の変化をひき起こすときに該当します。 (Tom Lane)

    この誤りはアサート失敗、あるいは稀な場合にINTO STRICTオプションでの期待される強制の失敗をもたらします。

  • stdinがターミナルでないときWindowsでエコー出力が適切に無効化されるように、クライアントプログラムでのパスワードプロンプト表示を修正しました。 (Matthew Stickney)

  • ダンプでのリスト値になっているGUC変数値のクォート間違いをさらに修正しました。 (Tom Lane)

    以前のpg_dump出力におけるsearch_pathおよび他のリスト値変数のクォート処理の修正は、空文字列リスト要素に対して誤動作をして、長いファイルパスが切り捨てられる危険性がありました。

  • pg_dumpが制約インデックスに対するREPLICA IDENTITY属性のダンプに失敗していたものが修正されました。 (Tom Lane)

    手動で作成したユニークインデックスには適切に属性が付与されますが、UNIQUEPRIMARY KEY制約を宣言することで作られたものはそうなりませんでした。

  • pg_upgradeが古いサーバがクリーンにシャットダウンされたことを検査するようにしました。 (Bruce Momjian)

    これまでの検査ではimmediateモードでのシャットダウンについてだまされる可能性がありました。

  • contrib/ltreelca()関数での入力配列が空であったときのクラッシュを修正しました。 (Pierre Ducroquet)

  • 不適切なエラーコードが報告されるかもしれない様々なエラー処理コードパスを修正しました。 (Michael Paquier, Tom Lane, Magnus Hagander)

  • プログラムが既存のシステムライブラリディレクトリにあるものではなく、ビルドされたばかりのライブラリ(libpq.soなど)に確実にリンクするように、Makefileを調整しました。 (Tom Lane)

    これにより、PostgreSQLライブラリの古いコピーを提供するプラットフォームでビルドするときの問題を回避します。

  • タイムゾーンデータファイルをtzdata release 2018eに更新しました。 北朝鮮の夏時間(DST)法の変更に加え、チェコスロバキアの歴史的修正が含まれます。

    この更新には、アイルランドおよび過去の何年間かのでのナミビアやチェコスロバキアにおけるdaylight savingsの再定義が含まれます。 これらの管区では法律上、夏に標準時間、冬にDST(訳注:daylight saving timeを通常「夏時間」としているがここでは文脈上DSTとする)であると述べられていて、そのためDSTオフセットは標準時間の1時間後でなく1時間前です。 このことは、実際のUTCオフセットや使われるタイムゾーン略記法のいずれにも影響を与えませんが、唯一の影響として、これらの場合はpg_timezone_namesビューのis_dstが冬に真、夏に偽となります。