リリース 8.4.4

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

# E.14. リリース 8.4.4

> リリース日: 2010-05-17

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

## E.14.1. バージョン8.4.4への移行

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

## E.14.2. 変更点

- `Safe.pm`を使用するのではなく、インタプリタ全体に適用されるopmaskを使用して`plperl`を強制的に制限します。(Tim Bunce, Andrew Dunstan)

  最近の開発により`plperl`を信頼できるとする根拠とするには`Safe.pm`が非常に安全ではないことを知らされました。 この変更により、`Safe.pm`の使用がなくなり、常に適用されるopcodeマスクを持つ別のインタプリタを使用するようになります。 この変更の喜ばしい副作用として、`plperl`内で普通の方法でPerlの`strict`プラグマが使用できるようになりました。 また、Perlの`$a`と`$b`がソート関数で想定される動作を行うようになり、関数のコンパイルが非常に高速になりました。(CVE-2010-1169)

- PL/Tclにおいて`pltcl_modules`経由で信頼できないコードが実行されることを防止しました。(Tom)

  PL/TclのデータベーステーブルからTclコードを自動読み込みする機能はトロイの木馬攻撃によりつけこまれる可能性がありました。 そのテーブルの作成や挿入できるユーザに対する制限がなかったためです。 この変更により、`pltcl_modules`がスーパーユーザにより所有されていない限り、この機能は無効になります。 (しかし、このテーブルに対する権限は検査されませんので、安全性が低いモジュールを本当に必要とするインストレーションでは、スーパーユーザ以外に適切な権限を付与することができます。) また、 `pltclu`関数を本当に実行しようとしていない限り、制限がない"通常の"Tclにコードが読み込まれることを防止しました。(CVE-2010-1170)

- `ALTER ... SET TABLESPACE`をWAL再生する時のデータ破損を修正しました。(Tom)

  `archive_mode`が有効な場合、`ALTER ... SET TABLESPACE`はWAL記録を生成しますが、その再生ロジックが正しくありませんでした。 これにより間違った場所にデータを書き出すことがあり、おそらく修復できないデータ破損が発生する可能性がありました。 データ破損はスタンバイのスレーブ側で観測されますが、`ALTER`をコミットしてから次のチェックポイントに達する前にデータベースクラッシュが発生し、リカバリが発生するとマスタ側でも発生してしまいます。

- relcache項目の再構築中にキャッシュ再設定メッセージを受け取った場合にクラッシュする可能性を修正しました。(Heikki)

  8.4.3で関連する失敗を修正する時に、このエラーが入ってしまいました。

- 関数の言語検証関数を実行する時に関数毎のGUC設定を適用します。(Itagaki Takahiro)

  これは、その設定がないと関数のコードが無効になる場合の失敗を防ぎます。 例えば`search_path`が正しくないとSQL関数は解析できません。

- `constraint_exclusion` = `partition`の時、継承された`UPDATE`および`DELETE`の対象テーブルに対して制約による除外を実行します。(Tom)

  見落としのためこれまでは、`SELECT`コマンド内で検査される制約による除外のみがこの設定で実行されました。

- 非特権ユーザがスーパーユーザのみのパラメータ設定を再設定することを許しません。(Alvaro)

  これまで、非特権ユーザが自身に対する`ALTER USER ... RESET ALL`または自身が所有するデータベースに対する`ALTER DATABASE ... RESET ALL`を行った場合、そのユーザまたはデータベースに対する特別なパラメータ設定は、たとえスーパーユーザのみにより変更可能なものとして提供されるものであっても、すべて削除されました。 `ALTER`はそのユーザが変更権限を持つパラメータのみを削除するようになりました。

- `CONTEXT`追加がログ項目になされる時にシャットダウンが発生した場合に、バックエンドのシャットダウン時にクラッシュする可能性を防ぎました。(Tom)

  現在のトランザクションがログメッセージを出力する時点に達した時にすでにロールバックされているために文脈出力関数が失敗することがありました。

- `recovery_end_command`内の`%r`に対する取り扱いについてのエラーを修正しました。 (Heikki)

  値が常にゼロになっていました。

- アーカイブ処理ができる限り高速に`archive_command`の変更に対応することを確実にしました。(Tom)

- case式が行を返さない問い合わせであった場合に失敗しないように、pl/pgsqlの`CASE`文を修正しました。(Tom)

- pl/perlの`ppport.h`を最近のPerlバージョンに更新しました。(Andrew)

- pl/python内の雑多なメモリリークを修正しました。(Andreas Freund, Tom)

- ecpgにおいて空文字列の接続パラメータ属性を扱います。(Michael)

- 変数展開が自身を参照している際のpsqlにおける無限再帰を防止します。(Tom)

- `\copy (select ...)`内のドットの前後に空白を追加しないように、psqlの`\copy`を修正しました。(Tom)

  数値リテラルにおいて10進数の小数点の前後に空白が追加された場合、構文エラーが発生します。

- `client_encoding`と一致しないロケール文脈内で実行している時のpsqlにおける書式付けの失敗を防ぎます。(Tom)

- `contrib/intarray`演算子を使用する満足されない問い合わせにおいて、不要な"GIN indexes do not support whole-index scans"エラーを修正しました。(Tom)

- `contrib/pgstattuple`関数がキャンセル割り込みに即座に応答することを確実にしました。(Tatsuhito Kasahara)

- サーバ起動時に、既存の共有メモリセグメントに対して`shmget()`が`EINVAL`を返す状況を適切に扱うようにしました。(Tom)

  この振舞いはOS Xを含むBSD派生のカーネルにおいて観測されました。 共有メモリ要求サイズが大きすぎるという警告の、完全に間違った起動失敗という結果になりました。

- Windowsにおけるsysloggerプロセス内のクラッシュする可能性を防ぎます。(Heikki)

- Windowsレジストリにおいて不完全な時間帯情報をより堅牢に扱います。(Magnus)

- Windowsにおいて既知の時間帯名称の集合を更新しました。(Magnus)

- 時間帯データファイルをtzdata release 2010jに更新しました。 アルゼンチン、南極におけるオーストラリア、バングラディシュ、メキシコ、モロッコ、パキスタン、パレスチナ、ロシア、シリア、チュニジアにおける夏時間規則の変更、および、台湾の歴史的な修正が含まれます。

  また、デフォルトの時間帯省略形の集合に`PKST`(パキスタン夏時間)を追加しました。

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