★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.145. リリース8.4.2

リリース日: 2009-12-14

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

E.145.1. バージョン8.4.2への移行

8.4.Xからの移行ではダンプ/リストアは不要です。 しかしハッシュインデックスが存在する場合、8.4.2に移行した後に、破損している可能性があるためそれを修復するためにREINDEXを行わなければなりません。

E.145.2. 変更点

  • セッション固有の状態を変更するインデックス関数により引き起こされる間接的なセキュリティ脅威から保護します。(Gurjeet Singh、Tom)

    この変更により不変インデックス関数がスーパーユーザのセッションを破壊できることを防ぎます。(CVE-2009-4136)

  • ヌルバイトが埋め込まれたコモンネーム(CN)フィールドをもつSSL証明書を拒絶します。(Magnus)

    これは、SSL検証においてサーバまたはクライアント名に対する証明書が不正に一致しないようにします。(CVE-2009-4034)

  • ハッシュインデックス破損を修正しました。 (Tom)

    8.4では、ハッシュインデックスはハッシュ値でソートして項目を保持するように変更されましたが、順序を保持するためにバケット分割および圧縮処理の更新に失敗します。 このためこうした操作を行うアプリケーションは、永続的なインデックスの破損をもたらす可能性がありました。 これをうまく扱うためには、更新をインストールした後にハッシュインデックスすべてをREINDEXすることを推奨します。

  • バックエンド起動時のキャッシュ初期化の間でクラッシュする可能性を修正しました。(Tom)

  • 空のシソーラス辞書におけるクラッシュを防止しました。(Tom)

  • 安全ではない時点でのVACUUMを中断するシグナルを防止します。 (Alvaro)

    この修正により、VACUUM FULLがすでにタプルの移動をコミットした後にキャンセルされた場合のパニックや、通常のVACUUMがテーブルを切り詰めた後に割り込みを受けた場合の一時的なエラーを防止します。

  • ハッシュテーブルサイズの計算における整数オーバーフローによるクラッシュの可能性を修正しました。(Tom)

    これは、ハッシュ結合の結果のプランナの推定サイズが極端に大きい場合に発生することがありました。

  • 内部的な依存関係をもつオブジェクトに対する DROPが試行された場合のクラッシュを修正しました。(Tom)

  • inet/cidrの比較における非常にまれなクラッシュを修正しました。 (Chris Mikkelson)

  • 準備されたトランザクションで保持されるタプルレベルの共有ロックを確実に無視しないようにしました。 (Heikki)

  • 副トランザクション内でアクセスされるカーソルで使用される一時ファイルの早すぎる削除を修正しました。 (Heikki)

  • 新しいCSVログファイルに変更する時のsysloggerプロセスのメモリリークを修正しました。(Tom)

  • pg_hba.confの再解析時のpostmasterのメモリリークを修正しました。(Tom)

  • Windowsにおける権限ダウングレードロジックを修正しました。(Jesse Morris)

    これは、Windowsにおいてcould not locate matching postgres executableといった誤解を招くエラーメッセージでよくデータベースの起動が失敗する状況の一部を修正します。

  • 主問い合わせにおけるFOR UPDATE/SHAREWITH問い合わせに伝搬されないようにしました。(Tom)

    たとえば

    WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE

    では、FOR UPDATEbarに影響し、 fooには影響しなくなります。 これは、以前の8.4の動作より有用かつ一貫性があります。 以前はFOR UPDATEWITHまで伝搬させようとし、常に雑多な実装上の制限により失敗していました。 また、WITH問い合わせは主問い合わせと独立して実行されるという設計規則にも従います。

  • そのすぐ内側に別のWITH RECURSIVEを持つWITH RECURSIVE問い合わせの不具合を修正しました。 (Tom)

  • ハッシュインデックスにおける同時実行性に関する不具合を修正しました。(Tom)

    同時実行の挿入によりインデックス走査が一時的に間違った結果を報告することがありました。

  • GiSTインデックスページ分割において、分割がインデックスの最初の列以外に依存する場合の不正なロジックを修正しました。(Paul Ramsey)

  • fastupdateが有効な場合、複数列に対するGINインデックスの検索結果が不正となる点を修正しました。(Teodor)

  • GINインデックスにおけるWAL項目の生成における不具合を修正しました。(Tom)

    これらの不具合は、 full_page_writesが有効な場合は現れることはありませんが、無効にした場合、次のチェックポイント以前にクラッシュが起きた場合、WAL再生は確実に失敗しました。

  • チェックポイントの最後で古いWALファイルの回収や削除が失敗した場合にエラーを出力しません。(Heikki)

    致命的ではないものと扱い、チェックポイントを完了させることができるようにする方が優れています。 将来のチェックポイントでは削除を再試行します。 こうした問題は通常の操作では想定されませんが、うまく設計されていないWindowsのアンチウィルスソフトウェアやバックアップソフトウェアにより現れることがあります。

  • WindowsにおいてWALファイルが繰り返しアーカイブされないようにしました。 (Heikki)

    別の症状として、一部の他のプロセスが不要となったファイルの削除に干渉する場合にも発生します。

  • PAMパスワード処理をより堅牢に修正しました。(Tom)

    以前のコードでは、Linuxのpam_krb5 PAMモジュールとドメインコントローラとしてのMicrosoft Active Directoryを組み合わせると失敗することが知られていました。 PAMスタックに渡される引数に関する正当ではない仮定を作成することであるため、どこかで問題になるかもしれません。

  • GSSAPIおよびSSPI認証方式における認証トークン(Kerberosチケット)の最大サイズを上げました。(Ian Turner)

    以前の2000バイトという制限はUnix Kerberosの実装では十分でしたが、Windowsドメインコントローラで発行されるチケットではより大きくなることがあります。

  • ドメインが配列型を管理する場合、ドメイン制約がARRAY[...]::domainのような式として確実に強制されるようにしました。 (Heikki)

  • 複合型の列を外部キーとして含む一部の場合における外部キーのロジックを修正しました。 (Tom)

  • カーソルのスナップショットが生成後、確実に変更されないようにしました。(Alvaro)

    これは、同じトランザクション内で後の操作が、そのカーソルが返すものと想定するデータを変更する場合、カーソルが間違った結果をもたらすようになります。

  • CREATE TABLEが別の継承する親テーブル由来のデフォルト式を適切にマージするように修正しました。(Tom)

    これは動作していましたが、8.4では壊れていました。

  • シーケンスのアクセス統計情報の収集を再度有効にしました。 (Akira Kurosawa)

    これは動作していましたが、8.3では壊れていました。

  • CREATE OR REPLACE FUNCTIONにおける所有権限の依存関係の処理を修正しました。(Tom)

  • WHERE x=x条件の不正な処理を修正しました。(Tom)

    一部の場合、これらは冗長なものとして無視されることがありましたが、そうではありません。 — これらはx IS NOT NULLと等価です。

  • テキスト等価性に関する揮発式においてハッシュ集約を使用してDISTINCTを実装する場合における不正な計画生成を修正しました。(Tom)

  • 揮発SELECT DISTINCT ON式におけるアサート失敗を修正しました。(Tom)

  • 空のtsvector値に対してts_stat()が失敗しないように改修しました。 (Tom)

  • 全文検索パーサがXML属性内のアンダースコアを受け付けるようにしました。(Peter)

  • xmlバイナリ入力における符号化方式の扱いを修正しました。(Heikki)

    XMLヘッダにて符号化方式の指定がない場合、デフォルトでUTF-8を仮定するようになります。 以前の扱いには一貫性がありませんでした。

  • plperluからplperlの呼び出し、またはその逆における不具合を修正しました。(Tom)

    内部の関数からのエラー終了が、外側の関数用のPerlインタプリタを正しく再選択できずにクラッシュをもたらす可能性がありました。

  • PL/Perl関数が再定義された時のセッション有効期間のメモリリークを修正しました。(Tom)

  • 集合を返すPL/Perl関数により返される場合Perl配列が適切にPostgreSQL配列に返還されることを確実にしました。(Andrew Dunstan、Abhijit Menon-Sen)

    集合以外を返す関数ではすでに正しく動作しました。

  • PL/Pythonの例外処理におけるまれなクラッシュを修正しました。(Peter)

  • DECLARE CURSOR文におけるコメントに関するecpg問題を修正しました。(Michael)

  • ecpgが最近追加されたキーワードを予約語と扱わない問題を修正しました。(Tom)

    これは、CALLEDCATALOGDEFINERENUMFOLLOWINGINVOKEROPTIONSPARTITIONPRECEDINGRANGESECURITYSERVERUNBOUNDEDWRAPPERキーワードに影響します。

  • psql\df関数名パラメータにおいて正規表現特殊文字を再度許します。(Tom)

  • contrib/fuzzystrmatchにおいて、デフォルト以外のコストによるlevenshtein距離の計算を正しくしました。(Marcin Mank)

  • contrib/pg_standbyにて、Windowsのシグナルを使用したフェイルオーバの通知を無効にしました。(Fujii Masao)

    WindowsではUnixのようなシグナルを持ちませんので、これはまったく役に立っていませんでした。 さらに最近の変更により実際にクラッシュしてしまいます。

  • FREEZEおよびVERBOSEオプションをcontrib/vacuumdbが生成するVACUUMコマンドの右側につけました。(Heikki)

  • contrib/dblinkがエラーになった場合の接続が漏えいする可能性を修正しました。(Tatsuhito Kasahara)

  • psqlのflexモジュールが正しいシステムヘッダファイルを使用してコンパイルされることを確実にしました。(Tom)

    これは、--enable-largefileが生成されたコード内に非互換の変更を引き起こすプラットフォームにおける構築失敗を修正します。

  • 今後のバージョンのlibpqとの互換性を高めるために、postmasterが接続要求パケットにおけるapplication_nameパラメータをすべて無視するようにしました。(Tom)

  • 最新の現実に合うように時間帯省略形ファイルを更新しました。(Joachim Wieland)

    デフォルト時間帯群にIDTの追加が含まれます。

  • タイムゾーンデータファイルをtzdata release 2009sまで更新しました。 南極、アルゼンチン、バングラデシュ、フィジー、ノヴォクズネツク、パキスタン、パレスチナ、サモア、シリアにおける夏時間規則の変更、および香港に関する歴史的な修正が含まれます。