リリース 8.4.5

PostgreSQL 9.1.1文書
前のページ | 巻戻し | 付録 E. リリースノート | 早送り | 次のページ

# E.13. リリース 8.4.5

> リリース日: 2010-10-04

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

## E.13.1. バージョン8.4.5への移行

8.4.Xからの移行ではダンプ/リストアは不要です。 しかし8.4.2以前のバージョンから更新する場合は8.4.2のリリースノートを参照してください。

## E.13.2. 変更点

- PL/PerlおよびPL/Tclにおいて、呼び出し元のSQLユーザIDごとに別のインタプリタを使用します。(Tom Lane)

  この変更は、同じセッション内でその後に異なるSQLユーザIDにより実行されるPerlまたはTclコード（例えば`SECURITY DEFINER`の内部）を破壊することで発生する可能性があるというセキュリティ問題を防止するものです。 ほとんどのスクリプト用言語は、対象とする関数で呼び出される標準関数や演算子の再定義など、これを行うことができる多くの方法を提供します。 この変更がないと、PerlまたはTcl言語の使用権限を持つ任意のSQLユーザは基本的に、対象の関数の所有者が持つSQL権限でできることを何でもできるようになります。

  この変更の欠点はPerlおよびTcl関数間の内部通信がより難しくなるという点です。 逃げ道を提供するために、PL/PerlUおよびPL/TclU関数ではまだセッション当たり1つのインタプリタのみを使用します。 これらのすべての関数は従来よりデータベーススーパーユーザの信頼レベルで実行されますので、これはセキュリティ問題とはみなされません。

  信頼された実行を提供することを主張するサードパーティ製の手続き言語は似たようなセキュリティ問題を持つ可能性が大きくあります。 セキュリティが非常に重要な目的のために依存している手続き言語があれば、その作者に連絡を取ることを勧めます。

  この問題を指摘いただいたTim Bunceに感謝します(CVE-2010-3433)。

- `pg_get_expr()`の用途として意図されたシステムカタログ列の一つではない引数で呼び出されることを拒絶することで`pg_get_expr()`内のクラッシュする可能性を防止します。(Heikki Linnakangas, Tom Lane)

- Windowsにおいて終了コード128（`ERROR_WAIT_NO_CHILDREN`）を致命的でないものと扱います。(Magnus Hagander)

  高負荷状況下で、Windowsプロセスはこのエラーコードで起動に失敗することが時々あります。 以前はpostmasterはパニック状態としてこれを扱い、データベース全体を再起動しました。 しかしこれは過度は反応のように思われます。

- 不正なプレースホルダ位置の評価を修正しました。(Tom Lane)

  この不具合のため外部結合の内側が出力リスト内に制限がない式を持つ副選択であった場合など、問い合わせ出力がNULLであるべき時に非NULLの結果になるかもしれませんでした。

- `UNION ALL`のメンバーリレーションの二重スキャンの可能性を修正しました。(Tom Lane)

- "cannot handle unplanned sub-select"エラーを修正しました。(Tom Lane)

  これは、副選択が他の副選択を含む式に展開される結合の別名参照を含む場合に発生しました。

- ビューまたは副選択への参照を持ち、かつ、入れ子の副選択内に現れる、行全体の変数の誤操作を修正しました。(Tom Lane)

- 型を跨る`IN`比較の誤操作を修正しました。(Tom Lane)

  プランナがsort-then-unique-then-plain-join計画で`IN`結合を実装しようとした場合に、この失敗になり得ました。

- `tsvector`列に対する`ANALYZE`統計情報の計算を修正しました。(Jan Urbanski)

  元々のコードでは不正な統計情報を生成し、後で性能が悪い計画を選択するようになり得ました。

- `array_agg()`、`string_agg()`、その他同様の集約関数で使用されるメモリのプランナの推定を改良しました。(Hitoshi Harada)

  これまでの極端な下方推定により、不適切なハッシュ集約計画が選択されるため、メモリ不足エラーが起こり得ました。

- キャッシュされた計画を一時的なものと印付けする失敗を修正しました。(Tom Lane)

  `CREATE INDEX CONCURRENTLY`が参照されるテーブルの1つに対して進行している時に計画が準備された場合、インデックスの使用準備ができた後に再度計画を作成するものと仮定されています。 これが確実に起こりませんでした。

- まれに報告されたB-tree失敗状況の一部をPANICからERRORを減らしました。 また出力されるエラーメッセージに追加の詳細を加えました。(Tom Lane)

  これにより、破損したインデックスに対するシステムの堅牢性が向上したはずです。

- GINインデックスを用いた部分一致問い合わせにおける間違った検索ロジックを修正しました。(Tom Lane)

  複数のGINインデックス条件をAND/ORの組み合わせた場合、常に正しい答えを出力しませんでした。 また時々必要以上に低速になりました。

- 自動バキューム処理中のクラッシュからshow_session_authorization()を防止します。(Tom Lane)

- 返される行のすべてが実際に同一の行型でない、レコードの集合を返す関数を防御します。(Tom Lane)

- 副トランザクションのロールバック中に待ち状態のトリガイベントリストが破損する可能性を修正しました。(Tom Lane)

  これはクラッシュまたは不正なトリガ発行という結果をもたらし得ました。

- 参照渡し関数の結果をハッシュ化する時に失敗する可能性を修正しました。(Tao Ma, Tom Lane)

- マージ結合における、結合列内のNULLの処理を改良しました。(Tom Lane)

  NULLがソートで先になるようなソート順の場合、最初のNULLに達した時にマージ結合が完全に停止することができるようになりました。

- ロックファイル（`postmaster.pid`およびソケット用のロックファイル）を書き出す時に、注意してその内容のfsyncします。(Tom Lane)

  これがないと、postmasterの起動後しばらくしてマシンがクラッシュした場合に、ロックファイルの内容が破損することがあり得ました。 これが起きると、このロックファイルを手作業で削除するまで、その後のpostmasterの起動試行が成功できなくなります。

- 過度に入れ子になった副トランザクションに対してXIDを割り当てる際の再帰を防止します。(Andres Freund, Robert Haas)

  元々のコードでは、制限されたスタック領域であった場合にクラッシュすることがあり得ました。

- walwriterプロセス内で古いWALセグメントを開いたまま保持しないようにしました。(Magnus Hagander, Heikki Linnakangas)

  これまでのコードでは、不要となったセグメントの削除を防止しました。

- バックエンド起動の初期にゴミを生成することがあった`log_line_prefix`の`%i`エスケープを修正しました。(Tom Lane)

- TOASTテーブルに対して部分的に指定されたリレーションオプションの誤解釈を防止します。(Itagaki Takahiro)

  特に、他のreloptionがテーブルに対して設定されていた場合`fillfactor`はゼロとして読み取られ、深刻な膨張をもたらしました。

- `ALTER TABLE ... ADD CONSTRAINT`における継承数の追跡を修正しました。(Robert Haas)

- アーカイブ処理が有効な場合、`ALTER TABLE ... SET TABLESPACE`におけるデータ破損の可能性を修正しました。(Jeff Davis)

- `CREATE DATABASE`と`ALTER DATABASE ... SET TABLESPACE`を問い合わせキャンセルにより中断させることができます。(Guillaume Lelarge)

- 指定されたインデックス式が不変かどうかに関する`CREATE INDEX`の検査を改良しました。(Tom Lane)

- 演算子クラスと演算子族を扱う`REASSIGN OWNED`を修正しました。(Asko Tiidumaa)

- ２つの空の`tsquery`値を比較する際にコアダンプする可能性を修正しました。(Tom Lane)

- `%`に続く`_`を持つパターンに対する`LIKE`の処理を修正しました。(Tom Lane)

  以前にもこれを修正しましたが、正しく処理されない場所が一部残っていました。

- 0001-01-01 AD以前のユリウス日の入力を再度許します。(Tom Lane)

  8.4より前では`'J100000'::date`などの入力が動作しました。 しかし、エラー検査を加えたことで意図せず壊れていました。

- カーソルに対して繰り返す`FOR`ループ内でそのカーソルが閉ざされた場合に、PL/pgSQLがクラッシュせずにエラーを発生させるように修正しました。(Heikki Linnakangas)

- PL/Pythonにおいて、`PyCObject_AsVoidPtr`および`PyCObject_FromVoidPtr`からのヌルポインタ結果を防止します。(Peter Eisentraut)

- libpqにおいて、`host`と`hostaddr`の両方が指定された場合の完全なSSL証明書検証を修正しました。(Tom Lane)

- 自動コミットモードが無効な場合、`DISCARD ALL`をトランザクションブロック内に包むべきものではないコマンドとしてpsqlが認識するようにしました。(Itagaki Takahiro)

- SQL/MEDオブジェクトに対するpg_dump処理におけるいくつかの問題を修正しました。(Tom Lane)

  意図されていないスーパーユーザ以外により実行された場合、pg_dumpは常に失敗することに注意してください。

- pg_dumpおよびpg_restoreにおけるシークできないアーカイブファイルの処理を改良しました。(Tom Lane, Robert Haas)

  これは並行リストアを適切に動作させるために重要です。

- 選択的リストアを対処する、並行pg_restore機能(`-L`オプション)を改良しました。(Tom Lane)

  元々のコードでは、`-L`ファイルがデフォルト以外のリストア順序を指定していた場合に失敗しがちでした。

- `RETURNING`句からのデータを正しく処理するようにecpgを修正しました。(Michael Meskes)

- ecpgにおけるメモリリークをいくつか修正しました。(Zoltan Boszormenyi)

- 削除された列を含むテーブルに対する`contrib/dblink`の処理を改良しました。(Tom Lane)

- `contrib/dblink`において"duplicate connection name"エラー後の接続リークを修正しました。(Itagaki Takahiro)

- 62バイトより長い接続名に関する`contrib/dblink`の処理を正しく修正しました。(Itagaki Takahiro)

- `hstore(text, text)`関数を`contrib/hstore`に追加しました。(Robert Haas)

  この関数は、廃止予定となった`=>`演算子に対する推奨の代替です。 将来を見据えたコードが古めのバージョンのサーバでも使用できるようにするために過去にもパッチが適用されました。 このパッチは、`contrib/hstore`のインストール後もしくは特定のデータベースに再インストールされた後にのみ効果を持つことに注意してください。 代わりに手作業で`CREATE FUNCTION`コマンドを実行することを選ぶユーザがいるかもしれません。

- 構築手順や文書を更新して、ソースコードリポジトリがCVSからGitに変更されたことを反映しました。(Magnus Hagander他)

- 時間帯データファイルをtzdata release 2010lに更新しました。 エジプト、パレスチナにおける夏時間規則の変更、フィンランドの歴史的な修正が含まれています。

  またこの変更では、2つのミクロネシアの時間帯を追加しています。 Pacific/ChuukはPacific/Trukより好まれるようになり（好まれる省略形はTRUTではなくCHUT）、Pacific/PohnpeiはPacific/Ponapeより好まれるようになります。

- Windowsの"N. Central Asia Standard Time"時間帯をAsia/AlmatyではなくAsia/Novosibirskに対応付けるようにしました。

  MicrosoftはKB976098の時間帯更新からこの時間帯の夏時間の振舞いを変更しました。 Asia/Novosibirskはこの新しい振舞いにより合致しています。

前のページ | ホーム | 次のページ
リリース8.4.6 | 上に戻る | リリース 8.4.4