PostgreSQL 8.0.4 に関する技術情報

このリリースは PostgreSQL 8.0.4 (2005/10/04リリース)に関する技術情報をお届けします。本ドキュメントは PostgreSQL のリリースノートを元に弊社で解説を加えたものです。

PostgreSQL 8.0.3 から 8.0.4 への変更点

8.0.4 は 8.0.3 の不具合を修正したバージョンです。速やかなバージョンアップをおすすめします。8.0.x からの移行ではダンプ/リストアは不要です。しかし、バージョン 8.0.0 もしくは 8.0.1 からアップグレードする場合は、共有ライブラリ変更の影響を受ける可能性があります。詳しくは 8.0.2 のリリースノートを参照してください。

注意: ここにあげた変更点は、すべてを網羅していない可能性があります。詳しくはソースに付属の HISTORY というファイルを見てください。

重要な修正

      • VACUUM によって ctid チェーンがすぐに削除されてしまうエラーを修正し、ctid リンクを追跡するコードにおいてより多くの検査を行うようにしました。これは懸案であったごく稀な状況でクラッシュするという問題を修正するものです。

その他の修正

    • マルチバイト文字セットを使用する場合に CHAR(n) 型の空白文字埋め込みが適切に指定した長さになるように修正されました。(弊社 浅羽のパッチ投稿による)
      以前のリリースでは、CHAR() の空白文字埋め込みが正しくありませんでした。格納する文字数を考慮せずに単に指定されたバイト数で空白文字を埋め込んでいただけでした。
    • CREATE DATABASE をコミットする前にチェックポイントを強制実行するようになりました。これにより、CREATE DATABASE の実行後すぐにクラッシュしてしまった場合に起きる “index is not a btree” という失敗が修正されるはずです。
    • COPY における READ ONLY トランザクションに関する検査の仕様が変更されました。これまで COPY TO を禁止していましたが、本来ならば COPY FROM を禁止しなければなりません。COPY FROM を禁止するようになりました。
    • CSV モード入力の COPY において、連続して埋め込まれた改行が取り扱えるようになりました。
    • date_trunc(week) 関数の年末近くの日付に対する挙動が修正されました。
    • リレーション内部のみを参照する、外部結合の ON 句に関する計画作成の問題が修正されました。更に「x FULL JOIN y ON true」のまれなケースの問題に関しても改修されました。
    • IN (SELECT DISTINCT …) という形に対する過度な最適化が修正されました。
    • “あいまいな” コスト比較の考慮が十分でなかったことによる、小さな LIMIT 値の問い合わせに対する誤った計画作成が、修正されました。
    • 配列型の変換関数 array_in() と array_recv() の OID パラメータの検証をより多く行うように修正されました。
    • a 列に GiST インデックスを持つ場合の UPDATE a=… WHERE a… といった問い合わせにおいて行が見つからない点が修正されました。
    • 日付時刻の解析の堅牢性が向上しました。
    • 部分的に書き込まれた WAL ページに対する検査が改良されました。
    • SSL 有効時のシグナルの扱いに対する堅牢性が向上しました。
    • CPU が MIPS および M68K であるときのスピンロックコードが改良されました。
    • postmaster の起動時に、max_files_per_process 以上のファイルを開かないように修正されました。
    • さまざまなメモリリークが修正されました。
    • 移植性の向上が各種行われました。
    • タイムゾーンデータファイルが更新されました。
    • psql -f filename において、指定したファイルを開くことができなかった場合の終了コードが非 0 に変更されました。
    • pg_dump で継承された検査制約をより正確に扱うように変更されました。
    • PL/PgSQL において、参照渡しで扱うデータ型の var := var という処理が修正されました。
    • PL/Perl の %_SHARED が修正され、本当に共有できるようになりました。
    • contrib
      • 2000 秒以上の間隔で待機できるように contrib/pg_autovacuum が修正されました。
      • 最新の Snowball コードを使用するように contrib/tsearch2 が更新されました。
    • Win32 のみ
      • Windows における DLL ロード失敗の扱いが改良されました。
      • Windows における乱数発生が改良されました。
      • Windows において pg_restore のパスワード入力待ちが修正されました。