PostgreSQL 8.3.6 に関する技術情報

このリリースは 8.3.5 からの修正リリース(2009/02/02リリース)です。
本ドキュメントは PostgreSQL のリリースノートを基に作成しています。
8.3.x からのアップデートではダンプ、リストアは不要です。

しかし、8.3.5 より前のバージョンからアップグレードする場合は、8.3.5 に関する技術情報を参照してください。

PostgreSQL 8.3.5 から 8.3.6 への変更点


  1. DISCARD ALL は、今まですべてのロックを解放していましたが、さらに 勧告的ロック (Advisory lock) も解放するようになりました。(Tom)

    今まではこの動作が最適だと考えられていましたが、それでもなお既存のアプリケーションに影響を及ぼす可能性があります。

  2. 全インデックスを対象とした GiST スキャンが、正しく動作するようになりました。(Teodor)

    これまでは、テーブルが GiST インデックスでクラスタ化したときに、行が削除される可能性がありました。

  3. xmlconcat(NULL) のクラッシュが修正されました。(Peter)
  4. 高位ビットがセットされた文字列がフラグとして使われたときに、ispell 辞書がクラッシュしないように修正されました。(Teodor)

    ノルウェーで広く使われている辞書で発生すると報告されていますが、他の辞書でも発生する可能性があります。

  5. 複合データ型での pg_dump で正しい順で出力されなかった問題が、修正されました。(Tom)

    ユーザ定義のオペレータクラスの出力順が、それを必要とするインデックスやビューの後であるという問題がありました。

  6. URL をよりうまく操作できるように、headline() 関数を改良しました。(Teodor)
  7. 長すぎる headline をよりうまく扱えるように、headline() 関数を改良しました。(Teodor)
  8. 特定の組み合わせのエンコードを変換する関数が誤っているために、Assert での失敗や変換間違いが起こる可能性がありましたが、これを防ぐようになりました。(Tom, Heikki)
  9. PL/pgSQL で実行されたステートメントが他の種類のステートメントで書き換えされたときに、Assert での失敗が発生する可能性がありましたが、これが修正されました。たとえば INSERT が UPDARE に書き換えられるようなケースです。(Heikki)
  10. データ型を入力する関数で、スナップショットを利用できるようになりました。(Tom)

    この変更が影響するのは主に、CHECK 制約に stable / immutable なユーザ定義関数を含んでいる DOMAIN です。この種の関数はおしなべて、スナップショットが取得されていないと失敗してしまうためです。

  11. SPI を利用した関数が、データ型の入出力、特に DOMAIN の CHECK 制約で使われるときに、安全に使われるようになりました。(Tom)
  12. 小さいテーブルに対しての VACUUM で、余計なロックを取得しないようになりました。(Heikki)
  13. ALTER TABLE ENABLE/DISABLE RULE の結果が有効なセッションで認識されない問題を修正しました。(Tom)
  14. UPDATE RETURNING が、tableoid に正しい OID ではなく 0 を返す問題が修正されました。(Tom)
  15. ANYARRAY を pg_statistic カラムとするような関数を宣言できるようになりました。(Tom)

    こうした関数の宣言は今までも可能でしたが、8.3 ではできなくなっていたことが分かりました。

  16. 推移的等値性が OUTER JOIN 節に適用される際に、プランナが選択率の見積りを誤る問題を修正しました。(Tom)

    これまで、〜 FROM a LEFT JOIN b ON a.a1 = b.b1 WHERE a.a1 = 42 〜 のような問い合わせで、効率の悪いプランを選択していました。

  17. IN 句に長いものが指定されたときも効率よく扱えるように、オプティマイザを改良しました。(Tom)

    制約の除外を有効にしたときに、長い IN 句に対して時間を膨大に費やさないようになりました。

  18. GIN インデックスを構築する間は、同期スキャンを行なわないようになりました。(Tom)

    これは、GIN は TID の昇順での行を挿入するように最適化されているため、同期スキャンによってインデックス構築が3倍以上遅くなる可能性があるためです。

  19. WITH HOLD のカーソルの内容が、TOAST 圧縮されたテーブルの内容に依存しないようになりました。(Tom)

    これまでは、カーソルの結果にある大きな行データ値が、TOAST 圧縮された値を示すポインタとして再発行される可能性がありました。このとき、カーソルが読み取る前に参照しているテーブルが削除されたり、大きなデータ値が VACUUM で削除されたりして、カーソルが使用できないことがありました。この問題は、通常のカーソルであれば発生しませんが、そのカーソルを作成したトランザクションが終わったあとも保持されるようなカーソルでは発生します。

  20. 集合を返す関数が結果すべてを読み取る前に停止されたときに、メモリリークが発生しないように修正されました。(Tom)
  21. UTF8 以外のエンコードのデータベースで発生する、XML 関数のエンコーディング変換の問題が修正されました。
  22. contrib/dblink の dblink_get_result(text,bool) 関数が修正されました。(Joe)
  23. contrib/sslinfo 関数の余計な出力を修正しました。(Tom)
  24. contrib/tsearch2 の互換性トリガが、1つのコマンドで1回以上動作したときに、正しい挙動をするようになりました。(Teodor)
  25. autovacuum が間違ったシグナルを送る可能性があることが、修正されました。(Heikki)
  26. Windows 7 beta 版に対応しました。(Dave and Magnus)
  27. ecpg の varchar の構造化型の扱いが、修正されました。(Michael)
  28. PL/Perl のリンカ情報を取得できないときに適切にレポートするように、configure スクリプトが修正されました。(Andrew)
  29. pgsql-ports, pgsql-patches というメーリングリストが閉鎖されたので、ドキュメントではこれらの代わりに pgsql-bugs や pgsql-hackers を参照するようになりました。(Tom)
  30. タイムゾーンのデータファイルが tzdata 2009a に対応しました。(カトマンズ、スイスの歴史的な夏時間、キューバ に対応)