リリース日: 2013-04-04
このリリースは9.2.3に対し、各種不具合を修正したものです。 9.2メジャーリリースにおける新機能については、E.102を参照してください。
9.2.Xからの移行ではダンプ/リストアは不要です。
しかしながら、このリリースではGiSTインデックスの管理についていくつかの不具合を修正しています。
このアップデートをインストールした後、以下に記述する条件の1つ以上に該当するGiSTインデックスすべてについて、REINDEX
を実行することを推奨します。
また、9.2.2よりも前のバージョンからアップグレードする場合は、E.100を参照してください。
サーバのコマンド行スイッチについての安全でない解析を修正しました。(Mitsumasa Kondo、Kyotaro Horiguchi)
「-
」で始まるデータベース名を含む接続要求に細工をすることで、例えその要求が最終的に拒絶された場合でも、サーバのデータディレクトリ内のファイルを損傷させる、あるいは破壊することが可能でした。(CVE-2013-1899)
OpenSSLの乱数の状態を、postmasterのそれぞれの子プロセスでリセットするようにしました。(Marko Kreen)
contrib/pgcrypto
関数によって生成された乱数が、他のデータベースユーザによって比較的推定しやすいという問題が、これにより回避されます。
この危険はpostmasterがssl
= on
で構成されている時にのみ問題となりますが、ほとんどの接続ではSSL暗号化を利用していません。(CVE-2013-1900)
REPLICATION権限の検査で、認証されたユーザでなく、現在のユーザについて調べるようにしました。(Noah Misch)
この誤りを利用すると、権限のないデータベースユーザがpg_start_backup()
やpg_stop_backup()
を呼び出し、それにより定期的なバックアップの作成を妨害することが可能でした。(CVE-2013-1901)
GiSTインデックスで、「fuzzy」な幾何比較を使うのが適切でないときは、使わないようにしました。(Alexander Korotkov)
幾何データ型のコアでは「fuzzy」な同値性を利用して比較を行ないますが、gist_box_same
では正確な比較を行う必要があり、そうしなければ、それを利用するGiSTインデックスは一貫しないものになります。
このアップデートをインストールした後、box
、polygon
、circle
、point
型の列のすべてのGiSTインデックスについてREINDEX
を実行してください。
これらはいずれもgist_box_same
を使っています。
可変長のデータ型、つまりtext
、bytea
、bit
、numeric
型の列でcontrib/btree_gist
を使うGiSTインデックスについて誤った範囲の結合と不正なロジックを修正しました。(Tom Lane)
この誤りにより、存在するキーが検索で見つからないような一貫性のないインデックスが作成されたり、インデックスが無駄に大きくなることがありました。
このアップデートをインストールした後、そのようなインデックスについてREINDEX
を実行することを推奨します。
複数列についてのインデックスで、GiSTページを分割するコードの不具合を修正しました。(Tom Lane)
この誤りにより、存在するキーが検索で見つからないような一貫性のないインデックスが作られることや、検索が非常に非効率になるインデックスが作られることがありました。
このアップデートをインストールした後、複数列についてのGiSTインデックスについてREINDEX
を実行することを推奨します。
gist_point_consistent
で曖昧さを一貫性のある方法で処理するようにしました。(Alexander Korotkov)
point
型の列のGiSTインデックスについてのインデックススキャンは、シーケンシャルスキャンとは異なる結果になる場合がありました。
これは、gist_point_consistent
と演算子のコードで、厳密な比較をするか、曖昧な比較をするかについて不一致があったからです。
WAL再生におけるバッファのリークを修正しました。(Heikki Linnakangas)
この不具合により、再生中に「incorrect local pin count」のエラーが発生し、リカバリができなくなる場合がありました。
データベースが正常に停止しておらず、かつrecovery.conf
ファイルが存在する場合は、アーカイブリカバリに入る前に、確実にクラッシュリカバリを実行するようにしました。(Heikki Linnakangas、Kyotaro Horiguchi、Mitsumasa Kondo)
この修正は、実行中のサーバのファイルシステムスナップショットでスタンバイサーバを初期化する、というようなケースでデータベースの一貫性を保証するために必要です。
クラッシュリカバリの最中に、まだアーカイブされていないWALファイルが削除されないようにしました。(Heikki Linnakangas、Fujii Masao)
DELETE RETURNING
での競合条件を修正しました。(Tom Lane)
特定の条件下で、DELETE RETURNING
は現在のプロセスがもはや確保していない共有バッファからデータをフェッチすることがありました。
その間に他のプロセスがそのバッファを変更した場合、ゴミの値がRETURNING
の出力となったり、あるいはクラッシュすることもありました。
正規表現のコンパイルで無限ループになる可能性があるのを修正しました。(Tom Lane、Don Porter)
正規表現のコンパイル時にNULLポインタから参照先を取得する可能性があるのを修正しました。(Tom Lane)
to_char()
で、それが適切な場合、ASCIIのみの大文字変換規則を利用するように修正しました。(Tom Lane)
これにより、ロケールに依存すべきでないいくつかのテンプレートのパターンにおける誤った動作が修正されます。
トルコ語のロケールで「I
」と「i
」が正しく処理されていませんでした。
1999-12-31 24:00:00
というタイムスタンプが理由もなく拒絶されていたのを修正しました。(Tom Lane)
SQL言語の関数が範囲型をサポートする関数として安全に使えるよう修正しました。(Tom Lane)
単一のトランザクションがUNLISTEN
を実行し、その後LISTEN
を実行した場合のロジックの誤りを修正しました。(Tom Lane)
この場合、セッションは通知イベントを監視すべきですが、実際には全く監視しない状態になっていました。
他のビューから参照されているビューに列が追加された後、プランナがクラッシュする可能性があるのを修正しました。(Tom Lane)
EXPLAIN (ANALYZE, TIMING OFF)
のパフォーマンス問題を修正しました。(Pavel Stehule)
「picksplit doesn't support secondary split」という不必要なログメッセージを削除しました。(Josh Hansen、Tom Lane)
このメッセージは何らかのコードを期待して追加されたように思われますが、そのコードは書かれませんでした。 また、GiSTによる二次的分割のデフォルト処理は実際には非常に良いので、そのコードは今後も書かれないでしょう。 そのため、エンドユーザにブツブツ言うのをやめることにしました。
gist_box_picksplit()
にあった二次的分割のサポートの痕跡を削除しました。(Tom Lane)
二次的分割の実装はデフォルトの実装に比べて良くないどころか、実際にはそれより悪いものでした。 そこでそれを削除し、デフォルトのコードに処理させるようにしました。
セッションの最後のいくつかのコミットとアボートの件数を統計情報コレクタに送信するのに失敗する可能性があるのを修正しました。(Tom Lane)
PL/Perlのspi_prepare()
関数のメモリリークを修正しました。(Alex Hunsaker、Tom Lane)
pg_dumpallでデータベース名に「=
」が含まれるものを正しく処理できるよう修正しました。(Heikki Linnakangas)
pg_dumpが不正な接続文字列が渡された時にクラッシュしないようにしました。(Heikki Linnakangas)
pg_dumpとpg_upgradeで不正なインデックスを無視するようにしました。(Michael Paquier、Bruce Momjian)
不正なインデックスをダンプするとリストア時に問題が発生する可能性があります。 例えば、ユニーク条件を満たさないテーブルのデータに対してユニーク条件を強制したためにインデックス作成に失敗したような場合です。 また、インデックスの作成が実際にはまだ進行中の場合もありますが、このときはDDLによる更新がまだコミットされていないと考えるのが適当でしょうから、pg_dumpがダンプする必要はありません。 pg_upgradeは不正なインデックスでエラーを起こす代わりに、それをスキップするようになります。
pg_basebackupでテーブル空間をバックアップするとき、現在のサーババージョンのサブディレクトリだけを含めるようにしました。(Heikki Linnakangas)
pg_basebackupおよびpg_receivexlogでサーバのバージョン確認をするようにしました。 これにより動作しないバージョンの組み合わせに対して、正しく失敗するようになります。(Heikki Linnakangas)
contrib/dblink
についてDateStyle
あるいは IntervalStyle
の一貫しない設定を安全に処理するよう修正しました。(Daniel Farina、Tom Lane)
以前は、リモートのサーバがこれらのパラメータについて異なる設定を指定した場合、曖昧な日付が誤って読み取られることがありました。
この修正により、dblink
の問い合わせによりフェッチされる日時および期間の列が正しく解釈されることが保証されます。
しかし、一貫しない設定はそれでも危険であることに注意してください。
SQLコマンド中のリテラル値がリモートのサーバに送られた場合、ローカルで処理されるのと異なる解釈をされる可能性があります。
contrib/pg_trgm
のsimilarity()
関数が、トライグラムのない文字列について0を返すよう修正しました。(Tom Lane)
以前は内部でのゼロ割りによりNaN
を返していました。
Microsoft Visual Studio 2012でPostgreSQLをビルドできるようにしました。(Brar Piening、Noah Misch)
時間帯データファイルをtzdataリリース2013bに更新しました。 チリ、ハイチ、モロッコ、パラグアイ、およびロシアのいくつかの地域での夏時間の変更が含まれます。 また、数多くの場所での歴史的な地域データの修正が含まれます。
また、時間帯の略称について、ロシアおよび他の地域での以下の最近の変更を反映しました。
CHOT
、GET
、IRKT
、KGT
、KRAT
、MAGT
、MAWT
、MSK
、NOVT
、OMST
、TKT
、VLAT
、WST
、YAKT
、YEKT
については、それらの現在の意味に従います。
VOLT
(Europe/Volgograd (ヨーロッパ/ヴォルゴグラード))および MIST
(Antarctica/Macquarie (南極/マッコーリー島))をデフォルトの短縮名リストに追加しました。