PostgreSQL 8.0.2 に関する技術情報

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

PostgreSQL 8.0.1 から 8.0.2 への変更点

8.0.1 からの累積的な修正バージョンです。libpq のメジャーバージョンが変更されているほか、一部特許関係のトラブルを避けるため、今までのマイナーバージョンと比較して大きめの変更がされています。Windows 版特有の問題点もいくつか修正されています。可及的速やかなバージョンアップをおすすめします。

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

    重要な修正

  1. 7.4 以前の一部のアプリケーション(psql など)と 8.0 の libpq は互換性がないため、libpq のメジャーバージョンが上がりました。ただし、これは 8.0 で libpq の隠し関数が削除されたためで、8.0.2 でのソース/バイナリレベルの変更点はありませんが、以下のような条件で再リンクの必要性があります。

    • 8.0/8.0.1 でコンパイルしたアプリケーションを 8.0.2 以降で使う
    • 7.4 でコンパイルしたアプリケーション(の一部)と 8.0.2 以降でコンパイルしたアプリケーションを共用する。
  2. Win32

    • wal_sync_method に設定できる値として、fsync_writethrough が追加されました。基本的には fsync と同じものを意味していますが、他のプラットフォームとあまりにも挙動が違うため、別名になりました。
    • GUC の wal_sync_method に open_datasync が指定出来るようになり、かつデフォルト値に変更されました。従来のデフォルト値 fsync(本バージョン以降は fsync_writethrough ) の場合、ディスクの書き込みキャッシュが ON になっている場合にデータ損失の可能性があります。Windows 上で書き込みキャッシュを OFF にするためには、デバイスマネージャーで当該ディスクを選択し、プロパティの「ポリシー」タグから「ディスクの書き込みキャッシュを有効にする」のチェックボックスをOFFにしてください。
    • log_destination のデフォルトが eventlog になりました
  3. その他の修正

  4. Win32のみ

    • pg_ctl コマンドの、register と unregister についてのドキュメントが追加されました。
    • kerberos 認証が動くようになりました。
  5. キャッシュアルゴリズムが、8.0で新しく採用されたARCから2Qに変更になりました。これは、ARCに関する特許がUSで申請中であり、成立した場合 BSDライセンスに完全に沿った配布が出来なくなる可能性があるため、それを避けたものです。この変更によりわずかにパフォーマンスが低下します。
  6. 新しく作られたテーブルに対してのプランナーの動作が改善されました。ページ長 0 のテーブルの場合、tuple/page比*現在のサイズを使ったタプル数予測で問題が発生していました
  7. plpgsql で、null で初期化された配列要素が許可されるようになりました。
  8. plpython で、¥r¥n,¥r と言った改行を ¥n に読み替えるようになりました。今までではこれらの改行コードの扱いによって、Windows や Mac で書かれたコードが構文エラーになることがありました。
  9. SPI 関数で、検索結果を返すユーティリティ関数、例えば explain などを扱えるようになりました。
  10. “ALTER TABLE SET WITHOUT OIDS” 後に cluster コマンドを実行した場合に失敗する不具合が修正されました。
  11. “ALTER TABLE ADD COLUMN” のときに利用するメモリ使用量を削減しました。
  12. “ALTER LANGUAGE RENAME”が正しく動いていなかった問題が修正されました。
  13. 統計情報収集プロセスが、バックエンド終了直前に発生した問い合わせ等に関する統計情報を正しく処理出来ていなかった問題が修正されました。これは、 pg_autovacuum が一時テーブルの drop をタプル削除と正しく認識出来ないために、システムテーブ>ルの vacuum タイミングを計り損ねる問題を発生させていました。
  14. “ALTER DATABASE RENAME” が、createdb 権限を持たないスーパーユーザーにも実行出来るようになりました。
  15. トランザクション中で、テーブルを作成した後即そのテーブルをカーソルで 参照し、そのままバックエンドから抜けた場合にクラッシュする問題が修正 されました。
  16. 一部の配列型から配列型変換時にクラッシュする問題が修正されました。
  17. contrib/tsearch2,btree_gist に関する修正が取り込まれました。
  18. pgcrypto モジュールが一部のプラットフォームでクラッシュする問題が修正 されました。
  19. contrib/intagg の 64bit 対応コードに問題があったものが修正されました。
  20. ecpg で、create table as 文など一部の命令を使うとクラッシュする問題が修正されました。
  21. ppc/amd64 で ecpg がクラッシュする問題が修正されました。
  22. locale=C の場合、upper(),lower(),initcap()関数は locale 依存版を使わないようになりました。
  23. quote_ident()関数が SQL 予約語をクォートするようになりました。
  24. TO_DATE 関数で CC と YY を両方指定した場合の挙動が改善されました。
  25. TO_CHAR(interval) で、月の長さ=0 と指定したときにクラッシュする問題が修正されました。
  26. date_trunc(‘week’)関数は、1年の最初の週のとき、間違った年を出力してしまうことがある問題が修正されました。
  27. INET 型で、class D のアドレスを使う場合のデフォルトのネットマスクが間違っていた問題が修正されました。