リリース 8.4.2

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

# E.16. リリース 8.4.2

> リリース日: 2009-12-14

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

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

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

## E.16.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/SHARE`が `WITH`問い合わせに伝搬されないようにしました。(Tom)

  たとえば

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

  では、`FOR UPDATE`は`bar`に影響し、 `foo`には影響しなくなります。 これは、以前の8.4の動作より有用かつ一貫性があります。 以前は`FOR UPDATE`を`WITH`まで伝搬させようとし、常に雑多な実装上の制限により失敗していました。 また、`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)

  これは、`CALLED`、`CATALOG`、`DEFINER`、`ENUM`、`FOLLOWING`、`INVOKER`、`OPTIONS`、`PARTITION`、`PRECEDING`、`RANGE`、`SECURITY`、`SERVER`、`UNBOUNDED`、`WRAPPER`キーワードに影響します。

- 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まで更新しました。 南極、アルゼンチン、バングラディシュ、フィジー、ノヴォクズネツク、パキスタン、パレスチナ、サモア、シリアにおける夏時間規則の変更、および香港に関する歴史的な修正が含まれます。

前のページ | ホーム | 次のページ
リリース 8.4.3 | 上に戻る | リリース8.4.1