PostgreSQL 8.1.23に関する技術情報

このリリースは 8.1.22 からの修正リリース(2010/12/16リリース)です。
8.1.x からのアップデートではダンプ、リストアは不要です。

また、8.1.15 より前のバージョンからアップデートを行う場合は 8.1.15 に関する技術情報を参照してください。

PostgreSQL 8.1.22 から 8.1.23 への変更点

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


  1. Linux において wal_sync_method のデフォルトを fdatasync にするようになりました (Tom Lane, Marti Radsepp)(9.0)(8.4)(8.3)(8.2)(8.1)

    Linux では長年にわたり事実上 fdatasync がデフォルトでしたが、最近のカーネル変更により、open_datasync も選択肢となりました。その open_datasync は、パフォーマンス改善につながらず、ある種のファイルシステムでは明確に>落ち込みます。特に ext4 で data=journal マウントオプションを指定した場合に顕著です。

  2. ホットスタンバイでエラー「too many KnownAssignedXids」が出る問題が修正されました (Heikki Linnakangas)(9.0)
  3. ホットスタンバイにおけるロック取得の競合状態が修正されました(Simon Riggs)(9.0)
  4. ホットスタンバイで不要な競合を避けるように修正されました (Simon Riggs)(9.0)

    スタンバイ側のリプレイとクエリが競合するとみなす一部ケースは、実際には競合していませんでした。これにより、不要な遅延やクエリのキャンセルが発生していました。

  5. GINインデックスのWALリプレイ関連の障害が修正されました (Tom Lane)(9.0)(8.4)(8.3)(8.2)
  6. この障害で、レプリケーションにおいて誤ったバッファー id:0 で失敗するか、インデックス内容が不正なものになります。

  7. ベースバックアップからのリカバリで、開始チェックポイントのWALレコードが同じWALセグメントに無い場合の問題が修正されました (Jeff Davis)(9.0)(8.4)(8.3)(8.2)(8.1)
  8. 複数ワーカプロセスが長時間活動中であるときの自動VACUUMによる低速化が修正されました (Tom Lane)(9.0)(8.4)(8.3)

    たくさんのテーブルを処理するとき、自動VACUUMワーカプロセスに対する実際のvacuum_cost_limit がほぼゼロに落ち込むことがありました。これが動作が極端に遅くなる原因となります。

  9. IA64 の レジスタスタックオーバーラン検出がサポートされました (TomLane)(9.0)(8.4)(8.3)(8.2)(8.1)

    IA64アーキテクチャは二つのハードウェアスタックを持ちます。スタックオーバーランを完全に防ぐには両方をチェックする必要がありました。

  10. ソースコード内関数 copyObject() にスタックオーバーフローのチェックが加えられました。 (Tom Lane)(9.0)(8.4)(8.3)(8.2)(8.1)

    非常に複雑な SQL によるある種のコードパスではスタックオーバーフローによりクラッシュする可能性がありました。

  11. 一時 GiSTインデックスでページ分割の検知が修正されました。(Heikki Linnakangas)(9.0)(8.4)(8.3)(8.2)(8.1)

    例えば挿入されるときにオープンカーソルによるスキャンを行うことで、一時インデックスで同時にページ分割が起きる可能性がありました。GiST はこのケースで検知に失敗していて、カーソルが継続しているとき誤った結果を返す可能性がありました。

  12. 初期接続処理中のエラーチェックが修正されました (Tom Lane)(9.0)(8.4)

    too many child processes のチェックが一部のケースで飛ばされていて、新たな子プロセスを加えることで postmaster のクラッシュにつながる可能性がありました。

  13. ウィンドウ関数の効率が改善されました (Tom Lane)(9.0)(8.4)

    多数の行を先行読みを要するが work_mem が大きくそれらを全て保持できるというとき、予想外に遅いケースがありました。 percent_rank()、cume_dist()、ntile() で特にこの問題がありました。

  14. 複合インデックスを ANALYZE するとき、メモリリークを回避するようになりました (Tom Lane)(9.0)(8.4)(8.3)(8.2)(8.1)
  15. 行全体の値を使うインデックスがそのテーブルに依存していることを確実にするようになりました (Tom Lane)(9.0)(8.4)(8.3)(8.2)(8.1)

    CREATE INDEX i ON t (foo(t.*)) のように宣言されたインデックスは自動的にテーブルが削除されたときに自動的に削除されませんでした。

  16. SQL 関数が複数の OUT パラメータを持つとき、インライン化しないようになりました (Tom Lane)(9.0)(8.4)(8.3)(8.2)(8.1)

    予想される返し行型の情報が失われてクラッシュする可能性を回避します。

  17. INSERT ... VALUES の VALUES 部分に ORDER BY、LIMIT、FOR UPDATE、WITHが使われるときの振る舞いが適切なものとなりました (Tom Lane)(9.0)(8.4)(8.3)(8.2)
  18. COALESCE 式の定数畳み込みが修正されました (Tom Lane)(9.0)(8.4)(8.3)(8.2)(8.1)

    プランナが実際にはたどり着かない副式の評価を試みて、想定外のエラーが出る可能性がありました。

  19. GSSAPIサポートを有効にコンパイルされていたとき、accept() またはその後すぐのシステムコールの一つなどの接続を受け付ける部分で失敗したときに起きる postmaster クラッシュが修正されました (Alexander Chernikov)(9.0)(8.4)(8.3)
  20. log_temp_files 設定が有効になっているときの一時ファイルの削除漏れが修正されました (Tom Lane)(9.0)(8.4)(8.3)

    ログメッセージを吐くときにエラーが起きると、unlink (ファイル削除) が実行されませんでした。結果として一時ファイルが溜まってしまいました。

  21. テーブル継承される要素に対する出力機能を追加しました。(9.0)(8.4)(8.3)(8.2)(8.1)

    debug_print_parse が有効なときある種の問い合わせで失敗するのを回避します。

  22. 点と線分との距離を求める計算の誤りが修正されました。(Tom Lane)(9.0)(8.4)(8.3)(8.2)(8.1)

    この障害は幾何データで距離を求めるそのほかいくつかの演算子に影響を及ぼしていました。

  23. ecpg のトランザクション状態の算出の誤りが修正されました (Itagaki Takahiro)(9.0)(8.4)
  24. PL/pgSQL における再帰やエラーを拾うケースで単純な式の扱いに失敗する問題が修正されました。(Tom Lane)(9.0)(8.4)(8.3)(8.2)(8.1)
  25. PL/Python で複数行を返す関数の扱いが修正されました (Jan Urbanski)(9.0)(8.4)(8.3)(8.2)

    イテレータでSPI関数を呼び出そうとするとき複数行結果の生成に失敗していました。

  26. contrib/cube の GiST インデックス定義の picksplit 関数のアルゴリズムの障害が修正されました (Alexander Korotkov)(9.0)(8.4)(8.3)(8.2)(8.1)

    cubeカラム上の GiSTインデックスは、誤った答えを返すことはありませんが、かなりの非効率を引き起こします。既に該当のインデックスがある場合には、アップデート後に REINDEX が必要です。

  27. contrib/dblink で、新たな接続を作ったとき以外には、"identifier will be truncated" という通知を出力しないように修正されました (Itagaki Takahiro)(9.0)(8.4)(8.3)(8.2)(8.1)
  28. contrib/pgcrypto で公開鍵が無いときにクラッシュ(coredump)する可能性があり、修正されました (Marti Raudsepp)(9.0)(8.4)(8.3)(8.2)(8.1)
  29. contrib/xml2 の XPath クエリ関数のメモリリークが修正されました (Tom Lane)(9.0)(8.4)(8.3)(8.2)(8.1)
  30. タイムゾーンデータが tzdata リリース 2010o に更新されました。フィジー、サモアの夏時間法の変更、香港の歴史的修正に対応しています。(9.0)(8.4)(8.3)(8.2)(8.1)
  31. psql の Unicodeエスケープ対応の誤りが修正されました (Tom Lane)(9.0)
  32. ラージオブジェクトを多数含んでいるときの パラレル pg_restore の性能向上が行われました (Tom Lane)(9.0)
  33. PL/pgSQL で "no-such-column" というエラーが出るケースについて修正されました (Tom Lane)(9.0)

    9.0 にて、カラムが無いときに "missing FROM-clause entry" というエラーが出ていました。

  34. PL/Python で行のフィールドを割り当てるときに typmod (長さや精度規定) を尊重するように修正されました。これは 8.4 から退行した障害でした。(9.0)
  35. contrib/pg_upgrade でバッファオーバーランが修正されました(Hernan Gonzalez)(9.0)