2010-10-04このリリースは8.4.4に対し、各種の不具合を修正したものです。8.4メジャーリリースにおける新機能については項E.99を参照してください。バージョン8.4.5への移行8.4.Xからの移行ではダンプ/リストアは不要です。8.4.2以前のバージョンから更新する場合は項E.97を参照してください。変更点PL/PerlおよびPL/Tclにおいて、呼び出し元のSQLユーザIDごとに別のインタプリタを使用します。DEFINERの内部)を破壊することで発生する可能性があるというセキュリティ問題を防止するものです。ほとんどのスクリプト用言語は、対象とする関数で呼び出される標準関数や演算子の再定義など、これを行うことができる多くの方法を提供します。この変更がないと、PerlまたはTcl言語の使用権限を持つ任意のSQLユーザは基本的に、対象の関数の所有者が持つSQL権限でできることを何でもできるようになります。この変更の欠点はPerlおよびTcl関数間の内部通信がより難しくなるという点です。逃げ道を提供するために、PL/PerlUおよびPL/TclU関数ではまだセッション当たり1つのインタプリタのみを使用します。これらのすべての関数は従来よりデータベーススーパーユーザの信頼レベルで実行されますので、これはセキュリティ問題とはみなされません。信頼された実行を提供することを主張するサードパーティ製の手続き言語は似たようなセキュリティ問題を持つ可能性が大きくあります。セキュリティが非常に重要な目的のために依存している手続き言語があれば、その作者に連絡を取ることを勧めます。Bunceに感謝します(CVE-2010-3433)。pg_get_expr()の用途として意図されたシステムカタログ列の一つではない引数で呼び出されることを拒絶することでpg_get_expr()内のクラッシュする可能性を防止します。Lane)Windowsにおいて終了コード128(ERROR_WAIT_NO_CHILDREN)を致命的でないものと扱います。Hagander)高負荷状況下で、Windowsプロセスはこのエラーコードで起動に失敗することが時々あります。以前はpostmasterはパニック状態としてこれを扱い、データベース全体を再起動しました。これは過度は反応のように思われます。不正なプレースホルダ位置の評価を修正しました。Lane)この不具合のため外部結合の内側が出力リスト内に制限がない式を持つ副選択であった場合など、問い合わせ出力がNULLであるべき時に非NULLの結果になるかもしれませんでした。ALLのメンバーリレーションの二重スキャンの可能性を修正しました。sub-select"エラーを修正しました。Lane)これは、副選択が他の副選択を含む式に展開される結合の別名参照を含む場合に発生しました。副選択への参照を持ち、かつ、入れ子の副選択内に現れる、行全体の変数の誤操作を修正しました。Lane)型を跨るIN比較の誤操作を修正しました。Lane)プランナがsort-then-unique-then-plain-join計画でIN結合を実装しようとした場合に、この失敗になり得ました。tsvector列に対するANALYZE統計情報の計算を修正しました。Urbanski)元々のコードでは不正な統計情報を生成し、後で性能が悪い計画を選択するようになり得ました。array_agg()、string_agg()、その他同様の集約関数で使用されるメモリのプランナの推定を改良しました。Harada)これまでの極端な下方推定により、不適切なハッシュ集約計画が選択されるため、メモリ不足エラーが起こり得ました。キャッシュされた計画を一時的なものと印付けする失敗を修正しました。CONCURRENTLYが参照されるテーブルの1つに対して進行している時に計画が準備された場合、インデックスの使用準備ができた後に再度計画を作成するものと仮定されています。これが確実に起こりませんでした。まれに報告されたB-tree失敗状況の一部をPANICからERRORを減らしました。出力されるエラーメッセージに追加の詳細を加えました。Lane)これにより、破損したインデックスに対するシステムの堅牢性が向上したはずです。GINインデックスを用いた部分一致問い合わせにおける間違った検索ロジックを修正しました。Lane)複数のGINインデックス条件をAND/ORの組み合わせた場合、常に正しい答えを出力しませんでした。時々必要以上に低速になりました。自動バキューム処理中のクラッシュからshow_session_authorization()を防止します。Lane)返される行のすべてが実際に同一の行型でない、レコードの集合を返す関数を防御します。Lane)副トランザクションのロールバック中に待ち状態のトリガイベントリストが破損する可能性を修正しました。Lane)これはクラッシュまたは不正なトリガ発行という結果をもたらし得ました。参照渡し関数の結果をハッシュ化する時に失敗する可能性を修正しました。Lane)マージ結合における、結合列内のNULLの処理を改良しました。Lane)NULLがソートで先になるようなソート順の場合、最初のNULLに達した時にマージ結合が完全に停止することができるようになりました。ロックファイル(postmaster.pidおよびソケット用のロックファイル)を書き出す時に、注意してその内容のfsyncします。Lane)これがないと、postmasterの起動後しばらくしてマシンがクラッシュした場合に、ロックファイルの内容が破損することがあり得ました。これが起きると、このロックファイルを手作業で削除するまで、その後のpostmasterの起動試行が成功できなくなります。過度に入れ子になった副トランザクションに対してXIDを割り当てる際の再帰を防止します。Haas)元々のコードでは、制限されたスタック領域であった場合にクラッシュすることがあり得ました。walwriterプロセス内で古いWALセグメントを開いたまま保持しないようにしました。Linnakangas)これまでのコードでは、不要となったセグメントの削除を防止しました。バックエンド起動の初期にゴミを生成することがあったlog_line_prefixの%iエスケープを修正しました。Lane)TOASTテーブルに対して部分的に指定されたリレーションオプションの誤解釈を防止します。Takahiro)特に、他のreloptionがテーブルに対して設定されていた場合fillfactorはゼロとして読み取られ、深刻な膨張をもたらしました。CONSTRAINTにおける継承数の追跡を修正しました。TABLESPACEにおけるデータ破損の可能性を修正しました。TABLESPACEを問い合わせキャンセルにより中断させることができます。INDEXの検査を改良しました。OWNEDを修正しました。Tiidumaa)2つの空のtsquery値を比較する際にコアダンプする可能性を修正しました。Lane)%に続く_を持つパターンに対するLIKEの処理を修正しました。Lane)以前にもこれを修正しましたが、正しく処理されない場所が一部残っていました。AD以前のユリウス日の入力を再度許します。Lane)8.4より前では'J100000'::dateなどの入力が動作しました。エラー検査を加えたことで意図せず壊れていました。カーソルに対して繰り返すFORループ内でそのカーソルが閉ざされた場合に、PL/pgSQLがクラッシュせずにエラーを発生させるように修正しました。Linnakangas)PL/Pythonにおいて、PyCObject_AsVoidPtrおよびPyCObject_FromVoidPtrからのヌルポインタ結果を防止します。Eisentraut)libpqにおいて、hostとhostaddrの両方が指定された場合の完全なSSL証明書検証を修正しました。ALLをトランザクションブロック内に包むべきものではないコマンドとしてpsqlが認識するようにしました。Takahiro)SQL/MEDオブジェクトに対するpg_dump処理におけるいくつかの問題を修正しました。Lane)意図されていないスーパーユーザ以外により実行された場合、pg_dumpは常に失敗することに注意してください。pg_dumpおよびpg_restoreにおけるシークできないアーカイブファイルの処理を改良しました。Haas)これは並行リストアを適切に動作させるために重要です。選択的リストアを対処する、並行pg_restore機能(-Lオプション)を改良しました。Lane)元々のコードでは、-Lファイルがデフォルト以外のリストア順序を指定していた場合に失敗しがちでした。RETURNING句からのデータを正しく処理するようにecpgを修正しました。Meskes)ecpgにおけるメモリリークをいくつか修正しました。Boszormenyi)削除された列を含むテーブルに対するcontrib/dblinkの処理を改良しました。name"エラー後の接続リークを修正しました。Takahiro)62バイトより長い接続名に関するcontrib/dblinkの処理を正しく修正しました。text)関数をcontrib/hstoreに追加しました。Haas)この関数は、廃止予定となった=>演算子に対する推奨の代替です。将来を見据えたコードが古めのバージョンのサーバでも使用できるようにするために過去にもパッチが適用されました。このパッチは、contrib/hstoreのインストール後もしくは特定のデータベースに再インストールされた後にのみ効果を持つことに注意してください。FUNCTIONコマンドを実行することを選ぶユーザがいるかもしれません。構築手順や文書を更新して、ソースコードリポジトリがCVSからGitに変更されたことを反映しました。2010lに更新しました。エジプト、パレスチナにおける夏時間規則の変更、フィンランドの歴史的な修正が含まれています。この変更では、2つのミクロネシアの時間帯を追加しています。Pacific/ChuukはPacific/Trukより好まれるようになり(好まれる省略形はTRUTではなくCHUT)、Pacific/PohnpeiはPacific/Ponapeより好まれるようになります。Time"時間帯をAsia/AlmatyではなくAsia/Novosibirskに対応付けるようにしました。MicrosoftはKB976098の時間帯更新からこの時間帯の夏時間の振舞いを変更しました。Asia/Novosibirskはこの新しい振舞いにより合致しています。