PostgreSQL 8.2.18 に関する技術情報

このリリースは 8.2.17 からの修正リリース(2010/10/04リリース)です。
8.2.x からのアップデートではダンプ、リストアは不要です。

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

PostgreSQL 8.2.17 から 8.2.18 への変更点

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


  1. PL/Perl と PL/Tcl で SQLユーザID ごとに別のインタプリタを使用するようになりました。(Tom Lane, Tim Bunce) (9.0)(8.4)(8.3)(8.2)(8.1)(8.0)(7.4)

    この変更により、Perl または Tcl の同一セッションで別の SQLユーザID で(例えば SECURITY DEFINER 関数で)実行される破壊的コードによるセキュリティ問題を防ぎます。

    この変更がないと、Perl、Tcl言語の利用権限をもつ SQLユーザは、関数所有者の権限で何でも実行することができてしまいます。

    この変更の代価は関数間の意図的なコミュニケーションが難しくなることです。PL/PerlU と PL/TclU においては引き続き一つのセッションは単一のインタプリタで処理されます。既にデータベーススーパーユーザでの信頼レベルで実行されるのでこれらはセキュリティ問題を考慮しません。

    信頼された実行を提供するサードパーティーの手続き言語に類似したセキュリティ問題があると予想されます。セキュリティが重要な用途にそれらの手続き言語を使っている場合、手続き言語作成者に連絡をとることが推奨されます。(CVE-2010-3433)

  2. pg_get_expr() 関数で起こりうるクラッシュを防ぐ修正されました。使われるつもりであったシステムカタログのカラムの一つではない引数で呼び出すことを禁止します。(Heikki Linnakangas, Tom Lane) (9.0)(8.4)(8.3)(8.2)(8.1)(8.0)(7.4)
  3. Windows の終了コード 128 (ERROR_WAIT_NO_CHILDREN) を致命的ではないものとして扱うようになりました。(Magnus Hagander) (8.4)(8.3)(8.2)

    高負荷のとき Windows のプロセスは、時々このエラーコードで起動時に失敗します。これまでは postmaster はこれをパニック状態とみなしてデータベース全体を再起動していました。これは過剰反応と考えられます。

  4. プレースホルダ評価の誤った配置が修正されました。この障害で、NULL であるべきところが NULL でないクエリ結果になる可能性があります。OUTER JOIN の内側が 出力リストに STRICT でない式を伴うサブクエリであった場合に発生します。(Tom Lane) (9.0)(8.4)
  5. UNION ALL 下のテーブルに対する二重スキャンが修正されました。 (Tom Lane) (9.0)(8.4)(8.3)(8.2)
  6. 計画されていないサブクエリを扱えない誤りが修正されました。サブクエリが、別のサブクエリを含む式に展開される JOIN の別名参照を含んでいるとき発生します。(Tom Lane) (8.4)(8.3)(8.2)(8.1)(8.0)(7.4)
  7. ビューまたはサブクエリを参照して、入れ子にされたサブクエリの中で現れる、行全体変数の取り扱いの誤りが修正されました。(Tom Lane) (8.4)
  8. 型の異なる IN 比較の処理での誤りが修正されました。プランナが IN 結合を sort → unique → plain join というプランで実現しようとした場合に、失敗に終わることがありえました。(Tom Lane) (8.4)
  9. tsvectorカラムに対する ALANYZE 統計情報の計算が修正されました。元のコーディングでは、誤った統計情報が生成されることがあり、その後に劣ったプランが選択されてしまいます。(Jan Urbanski) (8.4)
  10. array_agg()、string_agg() および同様の集約関数について、プランナのメモリ使用量の見積りが改善されました。これまで大きい過小評価が行われ、hash-aggregation プランが不適切に選択され、out-of-memory エラーにつながっていました。(Hitoshi Harada) (8.4)
  11. 一時的なキャッシュされたプランのマーク付けの障害が修正されました。参照されているテーブルに対して CREATE INDEX CONCURRENTLY が実行中の間に準備されたあるプランは、インデックスの使用が使用可能になるともう一度プラン作成されます。これまでは確実に行われていませんでした。(Tom Lane) (8.4)(8.3)
  12. ときどき報告されていた btree の障害ケースが PANIC から ERROR に格下げされました。また、さらなる詳細がエラーメッセージに表示されるようになります。この変更は壊れたインデックスがあるときのシステムの頑健さを改善します。(Tom Lane) (8.4)(8.3)(8.2)
  13. GINインデックスにおける部分一致検索のロジックの誤りが修正されました。いくつかの GIN インデックス を AND / OR で組み合わせた条件を伴う場合、正しい答えを返さなかったり、ときどき処理が遅かったりします。(Tom Lane) (8.4)
  14. show_session_authorization() 関数が自動VACUUMプロセスの中でクラッシュするのが修正されました。(Tom Lane) (9.0)(8.4)(8.3)(8.2)(8.1)
  15. 関数が実際には型の一致しない複数行レコードを返すのを防ぐようになりました。(Tom Lane) (8.4)(8.3)(8.2)(8.1)(8.0)
  16. サブトランザクションがロールバックする間、保留されているトリガーイベントが壊れる問題が修正されました。クラッシュや不正なトリガー起動を引き起こす可能性がありました。(Tom Lane) (8.4)
  17. リファレンス渡し関数の結果をハッシュ格納する場合に失敗する可能性があり、修正されました。処理に未だ必要なデータについて先にメモリ解放されてしまう可能性がありました。(Tao Ma, Tom Lane) (8.4)(8.3)(8.2)(8.1)
  18. LISTEN/NOTIFY処理における無限ループを防止するようになりました。(Jeff Davis) (9.0)
  19. マージJOIN の結合カラムにおける NULL の扱いが改善されました。マージJOIN は、そのようなソート順序であるとき、最初の NULL に辿り着いたとき処理停止できるようになります。これまでは、無駄な処理を行っていて性能上の不利益が生じていました。(Tom Lane) (9.0)(8.4)(8.3)
  20. ロックファイル(postmaster.pid と ソケットロックファイル) の内容を書き込むとき fsync するようになりました。(Tom Lane) (8.4)(8.3)(8.2)(8.1)(8.0)(7.4)

    postmaster が開始してすぐにマシンクラッシュする場合、ロックファイルの内容が壊れることがありました。そうすると、ロックファイルを手動で除かない限り、次の postmaster 起動成功が妨げられます。

  21. 深くネストしたサブトランザクションに XID を割り当てるとき、再帰処理を避けるようになりました。元のコーディングではスタック空間限界により、クラッシュすることがありえました。(Andres Freund, Robert Haas) (8.4)(8.3)(8.2)(8.1)(8.0)
  22. WALライタープロセスにおいて、古いWALセグメントを開いたまま保持するのを避けるようになりました。これまでコーディングでは、不要なセグメントを除くのを妨げていました。(Magnus Hagander, Heikki Linnakangas) (8.4)(8.3)
  23. log_line_prefix 設定の %i エスケープ(コマンドタグ) が修正されました。これまでバックエンド起動直後にゴミを出力する可能性がありました。(Tom Lane) (8.4)(8.3)(8.2)(8.1)(8.0)
  24. TOASTテーブルのために部分的に指定されたテーブルオプションの誤解を防ぐようになりました。特に、他のオプションがテーブルに設定されたならば、fillfactor はゼロと解釈されてしまい、深刻なテーブル膨張に至ります。(Itagaki Takahiro) (8.4)
  25. ALTER TABLE .. ADD CONSTRAINT での継承数の追跡が修正されました。本修正がない場合、自身が多重継承の親テーブルを持っているテーブルの子テーブルに継承される制約は、間違った pg_class.coninhcount 値で処理をやめてしまうことがあります。(Robert Haas) (8.4)
  26. アーカイビングが有効なとき、ALTER TABLE ... SET TABLESPACE でデータ破壊が起きる可能性があり、 修正されました。(Jeff Davis) (8.4)(8.3)(8.2)(8.1)(8.0)
  27. CREATE DATABASE、ALTER DATABASE ... SET TABLESPACE にてクエリキャンセルができるようになりました。(Guillaume Lelarge) (8.4)(8.3)(8.2)(8.1)(8.0)
  28. CREATE INDEX における指定された式が IMMUTABLE かどうかのチェックが改善されました。(Tom Lane) (8.4)
  29. REASSIGN OWNED がオペレータクラス、オペレータファミリーを扱うように修正されました。(Asko Tiidumaa) (8.4)(8.3)
  30. 空の tsquery 値を比較するときコアダンプが出てしまう可能性があり、修正されました。(Tom Lane) (8.4)(8.3)
  31. LIKE における _ に % が続くパターンの扱いが修正されました。以下が false になってしまっていました。(Tom Lane) (8.4)(8.3)

    select 'ba' ilike '%__%';
  32. 0001-01-01 AD 以前のジュリアン日付を再び許容するようになりました。'J100000'::date のような入力は 8.4 以前では使用できましたが、エラーチェックを加えることにより意図せず壊れていました。(Tom Lane) (9.0)(8.4)
  33. PL/pgSQL で FOR ループの中で、そのループのイテレータであるカーソルがクローズされた場合に、クラッシュするのでなくエラーを出すように、修正されました。(Heikki Linnakangas) (8.4)
  34. PL/Python にて、PyCObject_AsVoidPtr と PyCObject_FromVoidPtr から NULLポインタが返るのに対して防御するようになりました。(Peter Eisentraut) (8.4)(8.3)(8.2)(8.1)(8.0)
  35. libpq にて、host と hostaddr の両方が指定された場合の完全な SSL証明書の認証が修正されました。(Tom Lane) (8.4)
  36. psql が autocommit-off モードにて、DISCARD ALL をトランザクションブロックに入れてはいけないコマンドであると認識するように修正されました。(Itagaki Takahiro) (9.0)(8.4)(8.3)
  37. pg_dump が SQL/MED オブジェクトを扱う際の問題が修正されました。特に pg_dump がデータベーススーパーユーザ以外で実行される場合、常に失敗していました。これは意図した動作ではありません。(Tom Lane) (8.4)
  38. pg_dump と pg_restore においてシーク不能なバックアップファイルの扱いが改善されました。 (Tom Lane, Robert Haas) (8.4)

    この修正はパラレルリストアにおいて重要な役割を果たします。

  39. 並列 pg_restore が、-L オプションによる対象テーブルテーブルを指定したリストアと協働できるようになりました。元のコードでは「-L ファイル」の指定でデフォルト以外のリストア順序を要求すると、失敗しがちでした。(Tom Lane) (8.4)
  40. RETURNING 節からのデータを正しく処理できるように ecpg が修正されました。(Michael Meskes) (8.4)(8.3)
  41. ecpg におけるいくつかのメモリリークが修正されました。
    Fix some memory leaks in ecpg.
    (Zoltan Boszormenyi) (8.4)
  42. contrib/dblink で、削除されたカラムを含んでいるテーブルの扱いが改善されました。(Tom Lane) (8.4)(8.3)(8.2)(8.1)(8.0)(7.4)
  43. contrib/dblink で接続名重複エラーの後に起きる接続リークが修正されました。(Itagaki Takahiro) (8.4)(8.3)(8.2)(8.1)(8.0)(7.4)
  44. contrib/dblink が 62バイトより長い接続名を扱えるように修正されました。(Itagaki Takahiro) (8.4)(8.3)(8.2)(8.1)(8.0)
  45. contrib/hstore に hstore(text, text) 関数が追加されました。この関数は、現在使用が推奨されていない「=>」演算子の代替として、推奨されます。コードは旧バージョンでも適用できたためバックパッチが提供されます。この変更は contrib/hstore をインストール、あるいは再インストールした特定のデータベースにのみ効果があります。代替に CREATE FUNCTION コマンドを手動で実行するのが好まれるかもしれません。(Robert Haas) (8.4)(8.3)(8.2)
  46. ソースコードリポジトリが CVS から Git に移行したことが、ビルド環境とドキュメントに反映されました。(Magnus Hagander and others) (9.0)(8.4)(8.3)(8.2)(8.1)(8.0)(7.4)
  47. タイムゾーンデータファイルが tzdata リリース 2010l に更新されました。エジプト、パレスチナの夏時間法の変更、フィンランドの歴史的な変更に対応しています。本変更は2つのミクロネシアのタイムゾーン名を加えます。現在では Pacific/Truk に代えて Pacific/Chuuk がより望ましいです。(省略形であれば TRUT でなく CHUT になります)。また、Pacific/Ponape に
    代えて、Pacific/Pohnpei が望ましいものとなります。(8.4)(8.3)(8.2)(8.1)(8.0)
  48. Windows の 北中央アジア標準時を Asia/Almaty に代えて Asia/Novosibirsk に割り当てるように変更されました。マイクロソフトはこのゾーンの夏時間の振る舞いを変更しました(KB976098)。Asia?Novosibirsk は新たな振る舞いにより適合するものです。(Magnus Hagander) (8.4)(8.3)(8.2)
  49. Windows の共有メモリ割り当てコードが修正されました。(Tsutomu Yamada, Magnus Hagander) (8.2)

    この障害はしばしば報告される「could not reattach to shared memory」というエラーメッセージを引き起こしていました。これは、8.3.8 で修正されている内容のバックパッチとなります。

  50. Append インデックススキャンで、厳格ではない OR 結合節の誤った使われ方が修正されました。(Tom Lane) (8.3)

    このバックパッチは 8.4 での修正が 8.3.x に適用されていなかったものです。この障害は 8.3.8 で導入されてしまったもので、内側が継承親テーブルかUNION ALL サブクエリであるときに外部結合で誤った結果を引き起こします。