PostgreSQL 7.4.12 に関する技術情報

このリリースは 7.4.11 からの修正リリース(2006/2/14リリース)です。

以下に変更点をまとめます。各項目の末尾に適用されるバージョンを記載しております。本ドキュメントは PostgreSQL のリリースノート/HISTORY ファイルを元に作成しています。

PostgreSQL 7.4.11 から 7.4.12 への変更点

8.1.3、8.0.7、7.4.12、7.3.14 の各バージョンが同時にリリースされており、本ページでは共通の記載としています。各修正項目が適用されるバージョン系列番号を項目末尾に括弧書きで記載しています。


    セキュリティに関する修正

    任意のユーザが「SET ROLE」コマンドを使って他のユーザIDに変更できる誤りが修正されました。
    本セキュリティ障害は CVE-2006-0553 として登録されています
    (http://cve.mitre.org/)。

    不十分な正当性チェックにより、ユーザは「SET ROLE」がエラー後に元のロールに戻るという動作を不正利用することができました。これにより、例えば一般ユーザでスーパーユーザ権限を奪取することができます(8.1系)。

    7.3 までの全てのリリースに関連する障害が「SET SESSION AUTHORIZATION」コマンドにあります。これはコンパイル時にアサート有を指定した場合に、権限の無いユーザがサーバプロセスをクラッシュさせることができるというものです(8.1系、8.0系、7.4系、7.3系)。アサート有(--enable-cassert)はデバッグ用の指定で通常利用時には指定しません。本障害は石田氏により報告されました。

    不具合の修正

  1. 挿入した行の可視/不可視に関するロジックの障害が修正されました。まれな状況下で、現在のコマンドで挿入している行が(本来は未だ見えないはずにもかかわらず)既に有効になってしまうことがありました。(8.1系、8.0系、7.4系, 7.3系)
  2. まれな状況下で pg_clog および pg_subtrans ファイルを作るときに "file already exists" エラーが発生する場合があり、修正されました(8.1系、8.0系、7.4系、7.3系)。
  3. サーバプロセスのクラッシュをもたらすケースが修正されました。キャッシュ無効化というメッセージが出る場合が該当します(8.0系、8.1系)。
  4. 準備された文(prepared statements)の不明な型に対する DOMAIN 制約検査が適切になりました(8.1系、8.0系、7.4系)。
  5. 「ALTER COLUMN TYPE」コマンドが、外部キー制約、ユニーク制約、主キー制約の処理を適切な順番で処理することが保障されるようになりました(8.1系、8.0系)。
  6. ユーザ定義の演算子や演算子クラスに対するスキーマにまたがる参照をもつダンプを、リストアできるように修正されました(8.1系、8.0系、7.4系、7.3系)。
  7. pg_restore が COPY に失敗した後に適切に処理を継続できるようになりました。これまでは残っている COPY 用のデータを SQL コマンドとみなそうしていました(8.1系、8.0系)。
  8. データディレクトリが特定されていない場合に「pg_ctl unregister」がクラッシュする問題が修正されました。(Windows版 8.1系、8.0系)
  9. libpq ライブラリの PQprint 関数で HTML として出力する指定をした場合の HTML タグが修正されました(8.1系)。
  10. PPC および AMD64 プラットフォームで ecpg がクラッシュする問題が修正されました(8.1系、8.0系)。
  11. PL/python で、引数渡しをするときにエラーが発生した場合に適切に、復帰するようになりました(8.0系、8.1系)。
  12. PL/Perl で、plperl_return_next 処理において存在したメモリーリークが修正されました(8.1系)。
  13. PL/Perl で、Windows におけるロケールの扱いがバックエンド側と合わすように修正されました(8.1系、8.0系)。
  14. Windows 版で、postgresql.conf で log_min_messages を DEBUG3 (あるいは DEBUG4 など更に詳細なレベルに) に設定したときクラッシュしてしまう問題が修正されました。
  15. Windows、Cygwin、Mac OS X、AIX における「pgxs -L」コマンド(libの下にあり拡張モジュール開発などに使用) によるライブラリパス指定が修正されました(8.1系、8.0系)。
  16. Windows 管理者権限をチェックするとき SID が有効かチェックするようになりました(8.1系、8.0系)。
  17. date の入力で範囲外の値を適切に拒絶するように修正されました(8.1系、8.0系)。
  18. その他の変更

  19. ビットマップスキャンと副問い合わせの組み合わせでオプティマイザの修正がされました(8.1系)。
  20. GROUP BY とマルチカラムインデックスの組み合わせでオプティマイザの修正がせれました(8.1系、8.0系)。
  21. 関数の返し値型の指定で SETOF と %TYPE を同時に使えるようになりました(8.1系)。
  22. libpq ライブラリを通した「COPY IN」コマンドのスピードが改善されました。データ行ごとのカーネルコールを避けることにより実現されています(8.1系)。
  23. 移植性向上のため、configure スクリプトで finite と isinf (いずれもライブラリ関数) の存在を検査するように修正されました(8.1系、8.0系、7.4系、7.3系)。
  24. contribツールの修正

  25. contrib/tsearch2 のインデックス作成速度が改善されました(8.1系)。