リリース9.0.5

PostgreSQL 9.1.1文書
前のページ | 巻戻し | 付録 E. リリースノート | 早送り | 次のページ

# E.3. リリース9.0.5

> リリース日: 2011-09-26

このリリースは9.0.4に対し、各種の不具合を修正したものです。 9.0メジャーリリースにおける新機能については項E.8を参照してください。

## E.3.1. バージョン9.0.5への移行

9.0.Xからの移行ではダンプ/リストアは不要です。

しかし9.0.4より前のバージョンからアップグレードする場合は、9.0.4のリリースノートを参照してください。

## E.3.2. 変更

- システムカタログに対する`VACUUM FULL`または`CLUSTER`後のカタログキャッシュの無効化を修正しました。(Tom Lane)

  システムカタログ行の位置が他の場所に変わった場合に、同時実行のサーバプロセスから認識できない場合があり、その行を更新しようとした時にカタログが破損する可能性がありました。 最悪の場合、テーブル全体が完全に喪失するほど悪い結果になります。

- sinvalリセット処理期間の操作順を修正し、システムカタログ内でTOAST OIDが確実に予約されるようにしました。(Tom Lane)

  この間違いによりシステムカタログに対する`VACUUM FULL`または`CLUSTER`後に一時的な失敗が発生する可能性がありました。

- HOT更新されたか疑わしいタプルのインデックス処理における不具合を修正しました。(Tom Lane)

  この不具合のために、システムカタログの再インデックス処理の後インデックスが破損する可能性がありました。 ユーザインデックスには影響しないはずです。

- GiSTインデックスページ分割処理における複数の不具合を修正しました。(Heikki Linnakangas)

  発生する可能性は小さいのですが、インデックスの破損を招く可能性がありました。

- `tsvector_concat()`におけるバッファオーバーランの可能性を修正しました。(Tom Lane)

  この関数は必要なメモリを少なく見積もり、その結果サーバクラッシュを招く可能性がありました。

- `xml_recv`において"standalone"パラメータ処理時のクラッシュを修正しました。(Tom Lane)

- `pg_options_to_table`を値を持たないオプションに対してNULLを返すようにしました。(Tom Lane)

  これまではこのような場合にサーバクラッシュしてしまいました。

- `ANALYZE`およびSJIS-2004符号化変換においてメモリの最後を超えてアクセスする可能性を修正しました。(Noah Misch)

  これは非常に可能性が低いサーバクラッシュ状況を修正します。

- NULL入力から`pg_stat_reset_shared()`を保護しました。(Magnus Hagander)

- リカバリの競合デッドロックがサブトランザクション内で検知された場合に失敗する可能性を修正しました。(Tom Lane)

- ホットスタンバイにおいて、btreeインデックスページ回収時の偽の競合を防止します。(Noah Misch、Simon Riggs)

- リカバリが終わっても動きつづけるWAL受信処理を停止します。(Heikki Linnakangas)

  これまでのpostmasterはこうした状況ではパニックになりました。 しかしこの状況は実際には正当なものでした。

- relcache初期ファイルの無効化における競合状態を修正しました。(Tom Lane)

  新しいバックエンドプロセスが無効な初期ファイルを読み取ろうとするが、データが無効であることを通知するinvalメッセージを取り損なう期間がありました。 この結果カタログアクセスにおいて、起動処理の後の"could not read block 0 in file ..."といった奇妙な失敗が起こります。

- GiSTインデックススキャン終了時のメモリリークを修正しました。(Tom Lane)

  すでに多くの行を持つテーブルに対して新たなGiSTを基にした排他制約を作成する際の検証など、多くの分割GiSTインデックススキャンを行うコマンドが一時的にこのリークの原因となる大容量のメモリを求めることがあり得ました。

- 入力コマンド文字列に対する符号化方式の変換が必要かつ`LISTEN`が有効である時のメモリリークを修正しました。(Tom Lane)

- 保持可能カーソルとplpgsqlの`RETURN NEXT`コマンドをサポートするタプルストアにおける(メモリ膨張をもたらすかもしれない)不正なメモリ計上を修正しました。(Tom Lane)

- `BEFORE`および`AFTER`トリガの両方が存在する場合のトリガの`WHEN`条件を修正しました。(Tom Lane)

  同一の更新に対して`BEFORE ROW`トリガが発行されていた場合、`AFTER ROW UPDATE`の`WHEN`条件の評価がクラッシュする可能性がありました。

- 大規模かつ非可逆なビットマップを構築する時の性能問題を修正しました。(Tom Lane)

- 一意列の結合選択性推定を修正しました。(Tom Lane)

  結合結果のサイズ推定を悪化させる可能性がある、間違ったプランナの発見的手法を修正します。

- 副選択対象リスト内でのみ出現する、入れ子状のPlaceHolderVar式を修正しました。(Tom Lane)

  この間違いの結果、外側の結合の出力がNULLとして不正に現れます。

- プランナは、空の親テーブルが実際に空であるという仮定をすることができます。(Tom Lane)

  通常、計画作成のために空テーブルは何らかの最小サイズを持つものと仮定されます。 しかしこの発見的手法は、よく永遠に空になる、継承階層の親テーブルでは良いどころか不都合であるようです。

- 入れ子状の`EXISTS`問い合わせを適切に最適化できます。(Tom Lane)

- 配列作成、経路作成関数のパッド用バイトを確実にゼロにするように修正しました。(Tom Lane)

  これにより、プランナが意味的に等しい定数を等しくないとみなし、最適化を悪化させる一部の状況を防ぎます。

- inner-indexscan副計画内のResultノードの開閉を取り扱うよう`EXPLAIN`を修正しました。(Tom Lane)

  この見落としのよくある兆候は"bogus varno"エラーです。

- `indexedcol` `IS NULL`条件のB-Tree前処理を修正しました。(Dean Rasheed)

  同じインデックス列に別の種類のB-Treeインデックス付け可能な条件が組み合わされている場合、こうした条件は満たされません。 この状態は9.0.0以降で不正に処理されており、存在しないはずの問い合わせ出力をもたらしました。

- WAL再生を壊すgcc 4.5.0の不具合を回避します。(Tom Lane)

  サーバクラッシュ後にコミットされたトランザクションの損失をもたらす可能性がありました。

- ビュー内の`VALUES`についてのダンプ不具合を修正しました。(Tom Lane)

- シーケンスに対する`SELECT FOR UPDATE/SHARE`を許しません。(Tom Lane)

  この操作は想定通りに動作せず、また、失敗をもたらすことがあり得ました。

- つねに`pg_class`.`reltuples`/`relpages`を更新するように`VACUUM`を修正しました。(Tom Lane)

  自動バキュームによる、いつテーブルをバキュームするかについての決定をだんだんと悪化させる、いくつかの状況を修正します。

- ハッシュテーブルのサイズ計算時の整数オーバーフローから保護します。(Tom Lane)

- `CLUSTER`がすでに削除されたTOASTデータへアクセスしようとする状況を修正しました。(Tom Lane)

- 初期認証トランザクション中の予期しないタイムアウト失敗を修正しました。(Tom Lane)

- "peer"認証に関する証明書制御メッセージの使用における移植性不具合を修正しました。(Tom Lane)

- 複数の往復が必要な場合のSSPIログインを修正しました。(Ahmed Shinwari、Magnus Hagander)

  この問題の典型的な兆候はSSPIログイン期間の"The function requested is not supported"エラーです。

- 独自変数クラスの変数を新しく`postgresql.conf`に追加する時の失敗を修正しました。(Tom Lane)

- `pg_hba.conf`に`hostssl`が含まれているがSSLが無効である場合にエラーを発生します。(Tom Lane)

  以前の警告なくこうした行を無視するという動作より、この方がよりユーザフレンドリであると判断しました。

- `DROP OWNED BY`がシーケンス上のデフォルト権限を削除しようとした時の失敗を修正しました。(Shigeru Hanada)

- `pg_srand48` シード初期化における記述ミスを修正しました。(Andres Freund)

  このため、提供されたシードの全ビットを使用すると失敗する可能性がありました。 この関数はほとんどのプラットフォームで使用されていません（`srandom`を持たないプラットフォームのみです）ので、想定よりもランダム性が小さいシードによるセキュリティ露見の可能性はとにかく最小だったと思われます。

- `LIMIT`と`OFFSET`値の合計が2^63を超えた場合の整数オーバーフローを防止します。(Heikki Linnakangas)

- `generate_series()`の`int4`版と`int8`版にオーバーフロー検査を追加しました。(Robert Haas)

- `to_char()`における末尾のゼロ除去を修正しました。(Marti Raudsepp)

  小数点の後の桁位置がない`FM`付きの書式において、小数点より左のゼロが正しく除去できていませんでした。

- 2^63近辺の入力に対するオーバーフローを防ぐように`pg_size_pretty()`を修正しました。(Tom Lane)

- plpgsqlのレコード値におけるtypmodマッチ検査を弱めました。(Tom Lane)

  過度に積極的な検査によって、保持しなければならない長さ修飾子が破棄されることがあり得ました。

- initdbの間、ロケール名内の引用符を正しく扱います。(Heikki Linnakangas)

  この問題は、"People's Republic of China"などの、いくつかのWindowsのロケールにて起こり得ました。

- pg_upgradeにおいて、孤児になった一時テーブルをダンプしません。(Bruce Momjian)

  テーブルOIDの割り当てが、新旧のインストレーション間で同期できなくなる状況を防ぎます。

- 8.3からのアップグレードにおいて、TOASTテーブルのrelfrozenxidsを維持するようにpg_upgradeを修正しました。(Bruce Momjian)

  これに失敗すると、アップグレードの後`pg_clog`ファイルがあまりに早く削除される可能性がありました。

- pg_upgradeにおいて、Windowsで`-l`(ログ)オプションが動作するように修正しました。(Bruce Momjian)

- pg_ctlにおいて、Windowsのサービス登録用の静寂モードをサポートしました。(MauMau)

- 異なるファイルから`COPY`している時の、psqlのスクリプトファイル行番号の計数処理を修正しました。(Tom Lane)

- `standard_conforming_strings`に合わせて、pg_restoreの直接データベースモードを修正しました。(Tom Lane)

  pg_restoreが、`standard_conforming_strings`が`on`に設定されたアーカイブファイルからデータベースサーバに直接リストアする時に間違ったコマンドを発行する可能性がありました。

- 並行pg_restoreをサポートしない状況をよりユーザフレンドリにしました。(Tom Lane)

  この変更により、何らかのリストア作業が発生する前にこうした状況を検知し報告することが確実になりました。

- libpqのLDAPサービス検索コードにおけるwrite-past-buffer-endとメモリリークを修正しました。(Albe Laurenz)

- libpqにおいて、非ブロッキングI/OとSSL接続を使用する場合の失敗を防止します。(Martin Pihlak、Tom Lane)

- libpqの接続開始期間のエラーの取扱いを改良しました。(Tom Lane)

  具体的には、SSL接続開始期間の`fork()`失敗についてのサーバ報告への応答がより健全になりました。

- SSL失敗に関するlibpqのエラー報告を改良しました。(Tom Lane)

- 元々サーバ問い合わせから得られた`PGresult`に新しいタプルを追加する時に、クラッシュする可能性を避けるように`PQsetvalue()`を修正しました。(Andrew Chernow)

- ecpglibが`double`値を15桁の精度で書き込むようにしました。(Akira Kurosawa)

- ecpglibにおいて、エラー後確実に`LC_NUMERIC`の設定を元に戻します。(Michael Meskes)

- blowfishの符号付き文字に関する不具合(CVE-2011-2483)に対する上流の修正を適用しました。(Tom Lane)

  `contrib/pg_crypto`のblowfish暗号化コードは、charが符号付きであるプラットフォーム(ほとんどのプラットフォーム)において間違った結果を生成し、暗号化されたパスワードが本来より脆弱になりました。

- `contrib/seg`におけるメモリリークを修正しました。(Heikki Linnakangas)

- 空のインデックスに対して一貫性を持った結果を生成するように`pgstatindex()`を修正しました。(Tom Lane)

- perl 5.14を用いたビルドを可能にしました。(Alex Hunsaker)

- 空白を含むファイルパスでのビルドとインストールに関連した問題を修正しました。(Tom Lane)

- 時間帯データファイルをtzdata release 2011iに更新しました。 カナダ、エジプト、ロシア、サモア、南スーダンにおける夏時間規則の変更が含まれています。

前のページ | ホーム | 次のページ
リリース9.1 | 上に戻る | リリース9.0.4