PostgreSQL 7.2.4 に関する技術情報

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

PostgreSQL 7.2.3 から 7.2.4 への変更点

データの失われる可能性があるバグが修正されています。

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

バグ修正

  1. VACUUM
    • VACUUM で “No one parent tuple was found” が発生しないように修正されました。
    • VACUUM が関数内から呼び出されると、関数コンテクストが破壊されるため、呼出ができないように修正されました。
    • アボートトランザクション中の SELECT FOR UPDATE でロックされたタプルを VACUUM が正しく扱えないバグが修正されました。
  2. チェックポイントが完了する前に、pg_clog がディスクに書き込まれるようにバグ修正されました。このバグによる問題点としては、次のようなケースが考えられます。UPDATE を実行している最中に停電などでマシンが落ち、その後電源が入って PostgreSQL がリカバリにはいるが、その最中にまた電源が落ち、その後電源が入って再度リカバリに入り… という過程を繰り返すとコミットしたデータが失われる可能性があります。
    • UPSが設置されていない
    • データベースのリカバリ処理中に何度も電源が落ちる

    というような悪条件が重なる可能性のある方はご注意下さい。ちなみにこの問題は、7.2, 7.2.1, 7.2.3, 7.3.1 にも存在します。

  3. ExecHashJoinGetBatch() での整数演算オーバーフローのために、大きなハッシュ結合でコアダンプするバグが修正されました。
  4. GROUP コマンドで、グループリストが大きい場合に、TOAST されたデータが正しくデコードできないバグが修正されました。
  5. データ型、関数、演算子
    • abstime、almt、apr、april、current、that、decs、mins、timezone のタイムゾーン名について、内部トークンテーブルでの順序の間違いと重複のために、認識されないタイムゾーン名があったバグが修正されました。
    • circle_poly()、path_encode()、path_add() での整数演算オーバーフローのバグが修正されました。
    • lseg_eq() と lseg_ne() の線分の比較、lseg_center() が線分の中心を返さないバグが修正されました。