★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.98. リリース8.4.22

リリース日

2014-07-24

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

本リリースはPostgreSQLの8.4.Xシリーズの最後のリリースとなる予定です。 早めに新しいリリースのブランチに更新することを推奨します。

E.98.1. バージョン 8.4.22への移行

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

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

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

E.98.2. 変更点

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

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

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

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

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

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

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

  • 複合要素の構造体の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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • OS Xで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)

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

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

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

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

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

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