リリース日: 2010-05-17
このリリースは8.4.3に対し、各種の不具合を修正したものです。 8.4メジャーリリースにおける新機能についてはE.147. リリース8.4を参照してください。
8.4.Xからの移行ではダンプ/リストアは不要です。 しかし8.4.2以前のバージョンから更新する場合はE.145. リリース8.4.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
(パキスタン夏時間)を追加しました。