★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 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.93. リリース9.2.9

リリース日: 2014-07-24

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

E.93.1. バージョン9.2.9への移行

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

しかしながら、本リリースでは、いくつかのGiSTインデックスのインデックス破損問題を修正しています。 下記に示すはじめの変更点を確認し、使用しているインストレーションが影響を受けるか、その場合どのような処置を施すべきか判断してください。

また、9.2.6よりも前のリリースからアップグレードする場合は、E.96を参照して下さい。

E.93.2. 変更点

  • contrib/btree_gist拡張モジュールにおけるbitカラムのインデックスの初期化パディングバイトを修正しました。(Heikki Linnakangas)

    このエラーは、等価であるべき値を等価と見なさないことが原因で、正しくないクエリー結果を引き起こします。 bit型またはbit varying型のカラムにGiSTインデックスを使っている場合、このアップデート適用後にREINDEXが必要です。

  • GINリストページを削除した際、ページを破損から保護します。(Heikki Linnakangas)

    インデックスのページ更新をディスクへの書き込み中にシステムクラッシュが発生した場合、インデックス破損が起こる可能性を防ぐ修正です。

  • WALからの更新を再実行中にGiSTインデックスページのリンク先を削除しません。(Heikki Linnakangas)

    このエラーはホットスタンバイ中にGiSTインデックススキャンを実施した場合、一時的に間違った回答を引き起こす可能性がありました。

  • SP-GiSTテキストインデックスへの挿入中に無限ループに陥る稀なケースを修正しました。(Tom Lane)

  • 稼働中にhot_standby_feedbackがoffに変更された場合のフィードバックステータスを修正しました。(Simon Riggs)

  • ReceiveSharedInvalidMessages関数を入れ子で呼ばれた場合、キャッシュの無効化が正しくない可能性があり、修正しました。(Andres Freund)

  • 入れ子のnestloopプランで生成された、入れ子のプレースホルダ値を取り扱いミスするプランナの不具合を修正しました。(Tom Lane)

    この見落としは、variable not found in subplan target listsエラーを引き起こすか、黙って誤ったクエリの結果を返す可能性がありました。

  • 継承された子テーブルを読み込むUNION ALL上のサブクエリによって、 プランナがcould not find pathkey item to sortエラーになる障害を修正しました。

  • ターゲットリストに複数行を返す関数がある場合、サブクエリの出力が一意であると決めつけないようにしました。(David Rowley)

    この見落としはWHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP BY y)のような構成で最適化ミスを引き起こす可能性がありました。

  • 可能であればAND/OR条件の入力から null定数を除去するようにプランナを改善しました。(Tom Lane)

    より積極的にパラメータ置換をすることにより、9.2以上の版において古いバージョンのものより悪いプランになるかもしれなかったのを、この変更で修正しました。

  • to_json()および関連する関数で、入力型カテゴリの識別を修正しました。(Tom Lane)

    JSONの結果内でmoneyフィールドのクオートが不十分であることが知られており、他のデータタイプでも同様に誤った結果になっていたかもしれません。

  • 複合要素の構造体のTOASTフィールド取り出し失敗を修正しました。(Tom Lane)

    これは、TOASTポインタが参照している値を得ずに他のテーブルにコピーできたケースの修正です。 オリジナルデータが後から削除された場合、不正な領域を指し示すポインタ(dangling pointer)となってしまい、missing chunk number 0 for toast value ...のようなエラーを引き起こしていました。

  • Appendプラン出力の行全体を参照することによって、record type has not been registeredエラーとなる問題を修正しました。(Tom Lane)

  • カーソルを巻き戻している間にユーザ定義関数を呼び出した場合、クラッシュする可能性があり、修正しました。(Tom Lane)

  • FROM 句で関数が引数を評価する際のメモリリーク(クエリー処理内限定)を修正しました。(Tom Lane)

  • 正規表現処理中のメモリリーク(セッション内限定)を修正しました。(Tom Lane、Arthur O'Dwyer、Greg Stark)

  • hungarian.stopのデータエンコーディングエラーを修正しました。(Tom Lane)

  • default_with_oidsがtrueの場合でも、外部テーブルがOID付で作成される事を防止しました。(Etsuro Fujita)

  • 実行中のトランザクションで行を挿入し、当該行を削除したサブトランザクションがロールバックした場合の、行の有効性チェックを修正しました。(Andres Freund)

    これを行った後、同一トランザクション内で、CREATE INDEXまたはCLUSTERが実行された場合、 問題(少なくとも誤ったワーニングが出て、最悪の場合、無限ループに陥る)の原因となります。

  • PREPARE TRANSACTION中は、pg_stat_activityxact_startの値を消去します。(Andres Freund)

    PREPAREコマンド実行後、トランザクション内に元のセッションは最早存在しないので、トランザクション開始時刻を表示し続けるべきではありません。

  • REASSIGN OWNEDがテキスト検索オブジェクトにエラーを起こさないように修正しました。(Álvaro Herrera)

  • postmaster起動中はシグナルをブロックします。(Tom Lane)

    これにより、例えば起動途中にSIGINTを受け取っても、postmasterは適切に後片付けを行う事ができるようになります。

  • IPアドレスの代わりにホスト名がpg_hba.confに定義されている場合、クライアントのホスト名検索処理を修正しました。(Tom Lane)

    DNSの逆引き検索に失敗した場合、エントリーがマッチしない事を黙認せず報告することを保証しました。 また、DNS逆引き検索に失敗した場合に発生していた、ホスト名エントリー毎でなく、コネクション毎に検索する事を保証しました。

  • rootユーザでも postgres -C 変数およびpostgres --describe-configを使うことができるようにしました。(MauMau)

    これらの操作はルートでのサーバ起動禁止に必要では無く、制限を緩和することによってpg_ctlが失敗する幾つかのシナリオを回避できます。

  • make checkで一時的に起動されたpostmasterのUNIXドメインソケットを保護します。(Noah Misch)

    ローカルユーザはサーバのブートストラップスーパーユーザとしてソケットファイルにアクセス出来、接続可能でした。 そのため、任意のコードをテストを実行しているオペレーティングシステムのユーザとして実行可能でした。 これは既にCVE-2014-0067の中で指摘されていました。 この変更では、サーバのソケットを一時ファイルシステム/tmp配下のモード0700のサブディレクトリに配置することで、リスクを防御します。 UNIXソケットがサポートされていないプラットフォーム、特にWindowsでは一時postmasterがローカルTCP接続を必要とするため、この危険性は残ります。

    この変更の有益な影響は、DEFAULT_PGSOCKET_DIRを上書きするビルドのmake check テストが簡単になることです。 よく使われるデフォルトではない/var/run/postgresqlのようなファイルには、 ビルドユーザに書き込み権限がないために必要とされる回避策が、今後必要とされなくなります。

  • テーブルスペース作成のWALリプレイをWindowsで動作するように修正しました。(MauMau)

  • Windowsでソケット生成失敗の判定処理を修正しました。(Bruce Momjian)

  • Windowsで、設定ファイルから(log_connectionsのような)PGC_BACKENDパラメータ値を、新しい接続への適用を許可します。(Amit Kapila)

    以前は、起動後にファイルのパラメータを変更しても反映されませんでした。

  • Windowsの実行パス名を適切にクオートします。(Nikhil Deshpande)

    この見落としは、インストールパスにスペースと@が両方含まれる場合、 Windowsでinitdbpg_upgradeがエラーになる原因となっていました。

  • macOSでlibpythonのリンクを修正しました。(Tom Lane)

    これまでの方式では、Xcode 5.0とそれ以降で提供されているPythonライブラリでエラーになります。

  • クライアントが取り込むよりも速くサーバがデータを送り続けた場合、libpq のバッファが肥大化することを回避しました。(Shin-ichi Morita、Tom Lane)

    libpqはOut of Memoryになるまで入力バッファの拡張を強要していた可能性がありました (lost synchronization with serverの報告は誤解を招いたかもしれません)。 一般的な環境下では、recv() ループが取り込むよりもずっと早くデータが送られ続けるというのは、かなりこじつけで、 クライアントが人為的にスケジューラによる制約で遅くなっている場合に観測されているくらいです。

  • libpqのLDAP照会で、意図した通りのタイムアウトを保証しました。(Laurenz Albe)

  • char ポインタの配列を複数行返すFETCHステートメントがターゲットの場合、ecpgが正しく動作するように修正しました。また、その他の配列操作も修正しました。(Ashutosh Bapat)

  • pg_restoreの、古いスタイルのラージオブジェクトのコメント処理を修正しました。(Tom Lane)

    9.0までのバージョンのpg_dumpで生成したアーカイブファイルで、ラージオブジェクトに数件以上のコメントが含まれている場合、 アーカイブファイルを直接データベースにリストアすると失敗していました。

  • 新しいサーバではTOASTテーブルを作るが古いバージョンでは作らないケースについてpg_upgradeを修正しました。(Bruce Momjian)

    この稀な状況によりrelation OID mismatchエラーを引き起こす可能性がありました。

  • contrib/auto_explainによってユーザのEXPLAINの出力が変化するのを防ぎました。(Tom Lane)

    auto_explainが有効な場合、EXPLAIN (ANALYZE, TIMING OFF)コマンドを実行してもタイミング情報が出力される可能性がありました。

  • contrib/dblinkのクエリー実行範囲内でのメモリリークを修正しました。(MauMau, Joe Conway)

  • contrib/pgcrypto関数で、処理が戻る前にスタック変数から機密情報を削除する事を保証します。(Marko Kreen)

  • contrib/pgstattuplepgstat_heap()が解放済メモリを使わないようにしました。(Noah Misch)

  • contrib/uuid-osspモジュールで、呼び出し間でOSSP UUIDライブラリの状態をキャッシュします。(Tom Lane)

    この改善はUUID生成の効率を上げ、/dev/urandomから取り出すエントロピー量を減らします。

  • タイムゾーンデータファイルをtzdataリリース2014eに更新しました。 クリミア、エジプト、モロッコでの夏時間の変更が含まれます。