[11/15開催: PostgreSQL Conference Japan 2019 参加受付中] 
他のバージョンの文書 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

E.98. リリース9.1.2

リリース日: 2011-12-05

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

E.98.1. バージョン9.1.2への移行

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

しかし、information_schema.referential_constraintsビュー定義において長期に渡って潜在したエラーが見つかりました。 このビューからの正確な結果に依存している場合、後述の変更点の最初で説明する通りその定義を置き換えなければなりません。

またcitextデータ型を使用し、かつ、pg_upgradeを実行して過去のメジャーリリースからアップグレードした場合、CREATE EXTENSION citext FROM unpackagedを実行して、citext操作における照合順序に関連した失敗を防止しなければなりません。 citextデータ型のインスタンスを含む、9.1より前のダンプからリストアする場合も、同じことが必要です。 もし9.1.2にアップグレードする前にすでにCREATE EXTENSIONを実行していた場合は、代わりに変更点の2番目で説明する通りに手作業でカタログを更新しなければなりません。

E.98.2. 変更点

  • information_schema.referential_constraintsビューの不具合を修正しました。(Tom Lane)

    このビューでは、外部キーと依存する主キーまたは一意キー制約との対応付けについて十分な注意を行っていませんでした。 このため、外部キー制約がまったく表示されない、何回も表示される、あるいは、実際の依存する制約とは異なる制約に依存するものと言い張るという結果になることがありました。

    このビュー定義はinitdbによってインストールされますので、ただアップグレードしただけでは問題は解消されません。 既存のインストレーションでこの問題を解消させなければならない場合、(スーパーユーザとして)information_schemaスキーマを削除して、SHAREDIR/information_schema.sqlを元に再作成することができます。 (SHAREDIRの場所が分からない場合はpg_config --sharedirを実行してください。) これは修正対象のデータベースそれぞれで繰り返さなければなりません。

  • contrib/citextのアップグレードスクリプトでcitext列とインデックスの照合順序を修正するようにしました。(Tom Lane)

    9.1以前のサーバからpg_upgradeを行う時およびcitext型を含む9.1より前のダンプを9.1サーバにロードする時、既存のcitext列とインデックスは正しく照合順序の設定可能なデータ型として印付けられません。 このためこれらに対する操作がcould not determine which collation to use for string comparisonなどのエラーで失敗してしまいます。 この変更により、CREATE EXTENSION citext FROM unpackaged時にcitextモジュールを適切な9.1の拡張としてアップグレードするものと同じスクリプトでこれらの問題は修正されます。

    この問題の被害を受けるデータベースにすでにアップグレードしており、かつ、すでにCREATE EXTENSIONコマンドを実行している場合は、SHAREDIR/extension/citext--unpackaged--1.0.sqlの最後にあるUPDATEコマンドを(スーパーユーザとして)手作業で実行することができます。 (SHAREDIRの場所が分からない場合はpg_config --sharedirを実行してください。) 確かに行ったかどうか不明な場合、これを繰り返し行っても危険はありません。

  • スカラを返す関数の出力を結合するUPDATEまたはDELETE実行時にクラッシュする可能性を修正しました。(Tom Lane)

    クラッシュは対象の行が同時に更新された場合にのみ起こり得ました。 このためこの問題は間欠的にのみ表面化しました。

  • GINインデックス更新に関するWALレコードの不正確な再生を修正しました。(Tom Lane)

    このためクラッシュ後またはホットスタンバイサーバにおいて、インデックス項目の検索に過渡的に失敗する結果になり得ました。 しかし、この問題はインデックスに対する次回のVACUUMで修復されます。

  • CREATE TABLE dest AS SELECT * FROM srcまたはINSERT INTO dest SELECT * FROM src時のTOAST関連のデータの破損を修正しました。(Tom Lane)

    テーブルがALTER TABLE ADD COLUMNによって変更された場合、データを逐語的に別のテーブルにコピーしようとした時に特定の境界条件で破損した結果になることがありました。 この問題は、8.4以降において、この構文においてのみ明確に発生し得たものですが、同じ不具合を引き起こす他のコードパスがある場合に備えて、より過去のバージョンにおいてもパッチを適用しました。

  • ホットスタンバイの起動時に失敗する可能性を修正しました。(Simon Riggs)

  • 初期スナップショットが不完全である場合のホットスタンバイの起動を高速にしました。(Simon Riggs)

  • 無効なsyscache項目からTOASTテーブルにアクセスする時の競合条件を修正しました。(Tom Lane)

    典型的な兆候は、missing chunk number 0 for toast value NNNNN in pg_toast_2619のような一時的なエラーです。 ここで挙げられるTOASTテーブルは常にシステムカタログに属します。

  • パラメータのデフォルト式で使用される項目について関数の依存関係を追跡します。(Tom Lane)

    これまでは、参照されるオブジェクトが、参照する関数を削除または変更することなく、削除されることがあり得ました。 このため関数が使用される時に誤動作することになりました。 単にこの更新をインストールするだけでは依存関係が消失した項目が修正されないことに注意してください。 修正するためには、その後にこうした関数それぞれにCREATE OR REPLACEを行う必要があります。 デフォルト値が組み込み以外のオブジェクトに依存する関数があれば、これを行うことを勧めます。

  • ネステッドループ結合におけるプレースホルダ変数の不正確な管理を修正しました。(Tom Lane)

    この不具合はvariable not found in subplan target listというプランナエラーをもたらすことが分かっています。 さらに、外部結合が含まれる場合に間違った問い合わせ結果になる可能性もあります。

  • 集約を含む式でソートされたウィンドウ関数を修正しました。(Tom Lane)

    これまではcould not find pathkey item to sortというプランナエラーで失敗することがあり得ました。

  • MergeAppend child's targetlist doesn't match MergeAppendというプランナエラーを修正しました。(Tom Lane)

  • 照合順序設定可能な入力と不可能な入力の両方を持つ演算子に対するインデックス対応付けを修正しました。(Tom Lane)

    9.1.0では、照合順序の設定ができない入力型の左辺と設定ができる入力型の右辺を持つインデックス付け可能な演算子では、左辺の列のインデックスに対応しないものと認識されました。 例えばhstore ? textです。

  • 複数のOUTパラメータを持つ、集合を返すSQL関数をインライン化することができます。(Tom Lane)

  • 結合除去において遅延された一意性制約を信用しません。(Tom Lane、Marti Raudsepp)

    遅延された一意性制約はトランザクション内部で保持されないかもしれません。 このため、間違った問い合わせ結果をもたらすかもしれないとみなします。

  • DatumGetInetP()が1バイトヘッダを持つinetデータを展開するようにしました。 さらに展開を行わない、新しいマクロDatumGetInetPP()を追加しました。(Heikki Linnakangas)

    この変更がコアコードに影響することはありませんが、DatumGetInetP()が通常の規約の通りに展開したデータを生成することを想定しているアドオンのコードにおけるクラッシュを防止できるかもしれません。

  • money型の入出力におけるロケールのサポートを改良しました。(Tom Lane)

    すべての標準lc_monetary書式付けオプションをサポートしていないという点以外にも、入力関数と出力関数に一貫性がなかったため、ダンプされたmoney値では再度読み取ることができないロケールがありました。

  • transform_null_equalsCASE foo WHEN NULL ...式に影響を与えないようにしました。(Heikki Linnakangas)

    transform_null_equalsは、CASE構文によって内部的に生成された等価な検査ではなく、直接ユーザによって書かれたfoo = NULLに影響を与えることのみを前提としています。

  • 自己参照外部キーをより良くサポートするために、外部キートリガの生成順序を変更しました。(Tom Lane)

    カスケードしている外部キーが自身のテーブルを参照する場合、1行の更新が1つのイベントでON UPDATEトリガとCHECKトリガの両方を発行します。 ON UPDATEトリガを最初に実行しなければなりません。 そうしないと、CHECKは最終的ではない行の状態を検査することになり、不適切なエラーが発生する可能性があります。 しかしこれらのトリガの発行順序はその名前によって決まります。 トリガはRI_ConstraintTrigger_NNNNという規約に従った名前で自動生成されますので、一般的には作成順序によって決まります。 適切な修正にはこの規約の変更が必要です。 9.2で変更する予定ですが、既存のリリースで変更することには危険があるように思われます。 このため、このパッチはトリガの作成順序を変更するだけです。 この種のエラーが起きたユーザは、トリガを正しい順序にするために、外部キー制約を削除し再作成しなければなりません。

  • DROP OPERATOR FAMILY内でIF EXISTSが正しく動作するように修正しました。(Robert Haas)

  • 拡張自身のスクリプトの中から拡張を削除することを禁じました。(Tom Lane)

    これにより、拡張依存関係が不正確に管理された場合のおかしな動作を防止します。

  • 自動生成される型を拡張のメンバと印付けません。(Robert Haas)

    リレーション行型と自動生成される配列型をpg_depend内の拡張自身のメンバ関係項目に持たせる必要はありません。 またこうした項目を作成すると、拡張の更新が複雑になります。

  • CREATE EXTENSION時の、事前に存在する無効なsearch_path設定をうまく対処します。(Tom Lane)

  • バッファ割当率を追跡する際の浮動小数アンダーフローを防止します。(Greg Matthews)

    これ自体は害がないものですが、特定のプラットフォームではこれにより煩わしいカーネルログメッセージが現れます。

  • 自動バキュームトランザクションがシリアライザブルモードで実行しないようにしました。(Tom Lane)

    これまでの自動バキュームはクラスタ全体のデフォルトトランザクション隔離レベルを使用していましたが、READ COMMITTED以上のレベルを使用する必要はありません。 またSERIALIZABLEを使用すると他のプロセスで不要な遅延が発生し得ました。

  • walsenderプロセスがSIGTERMに適切に反応することを確実にしました。(Magnus Hagander)

  • ベースバックアップからpostmaster.optsを除外しました。(Magnus Hagander)

  • Windowsにおける子プロセス起動時設定ファイルの名前と行番号を保持します。(Tom Lane)

    これまでこれらはpg_settingsビューで正しく表示されませんでした。

  • ecpgのSQLDA領域における不正確なフィールドの整列を修正しました。(Zoltan Boszormenyi)

  • psqlのコマンド履歴内で空行を含むコマンドを保持します。(Robert Haas)

    これまでの動作では、例えば文字列リテラル内の空行が削除された場合に問題が起きました。

  • pg_dumpにおける、プラットフォーム固有の無限ループを防止します。(Steve Singer)

  • pg_dumpにおける平文テキスト出力書式の圧縮を修正しました。(Adrian Klaver、Tom Lane)

    pg_dumpは歴史的に、-Fがない-Zを平文テキスト出力をgzipで圧縮した形で出力しなければならないことを意味すると解釈していました。 この動作に戻しました。

  • テーブルの行型など自動生成された型の間でユーザが定義したキャストをダンプするようにpg_dumpを修正しました。(Tom Lane)

  • pg_dumpにおいて外部サーバ名の引用符付けの失敗を修正しました。(Tom Lane)

  • pg_upgradeについて様々な修正を行いました。(Bruce Momjian)

    排他制約の正確な取り扱い、Windowsにおける失敗の防止、8.4データベースにおける対応しないTOASTテーブル名に関する警告の抑制。

  • PL/pgSQLにおいて行型を定義するための外部テーブルを許可します。(Alexander Soudakov)

  • PL/Perl関数の結果の変換を取り決めました。(Alex Hunsaker、Tom Lane)

    voidを返すPL/Perl関数がその最後のPerl文の結果値を無視するという9.1より前の動作に戻しました。 9.1.0では、最後の文が参照を返す場合にエラーになりました。 また、複合型に対して文字列値を返す場合も、文字列が型の入力書式に合う限り、確実に動作するようにしました。 さらに、関数の宣言された結果型が配列または複合型ではない場合、それぞれPerlの配列またはハッシュを返そうとするとエラーになります。 (こうした場合、9.1より前のバージョンでは、ほとんど役に立たないARRAY(0x221a9a0)HASH(0x221aa90)といった文字列が返されました。)

  • PL/Perlの文字列が常に正しくUTF8で符号化されることを確実にしました。(Amit Khandekar、Alex Hunsaker)

  • PL/Perlの構築時に好みのバージョンのxsubppを使用します。 オペレーティングシステムのメインコピーである必要はありません。(David Wheeler、Alex Hunsaker)

  • PL/Pythonの例外においてSQLSTATEを正しく伝搬します。(Mika Eloranta、Jan Urbanski)

  • 構築対象メジャーバージョン以外のバージョンのPython用のPL/Python拡張ファイルをインストールしません。(Peter Eisentraut)

  • スクリプトファイルがpsqlに渡される場合に有用なエラーメッセージを出力するように、すべてのcontrib拡張スクリプトファイルを変更しました。(Andrew Dunstan、Tom Lane)

    これは、これらのファイルをロードするためにCREATE EXTENSIONという新しい方法をユーザに知らせる助けになるはずです。 ほとんどの場合、スクリプトファイルを直接読み込んでも失敗しますが、解釈し難いメッセージが出力されました。

  • contrib/dict_intおよびcontrib/dict_xsyn内の間違ったコードを修正しました。(Tom Lane)

    一部の関数で、palloc()で返されるメモリはゼロ埋めされていることが保証されていると間違った前提をしていました。

  • 通常のリグレッションテストからcontrib/sepgsqlを取り除きました。(Tom Lane)

    これらの試験の設定にはroot権限が必要ですので、自動的に実行させるのは実用的ではありません。 代わりに手作業による方法に切替え、その試験を補助する試験スクリプトを用意しました。

  • contrib/unaccentの設定ファイル解析において様々なエラーを修正しました。(Tom Lane)

  • pgstatindex()において問い合わせキャンセル割込みを適切に受け付けます。(Robert Haas)

  • macOS起動スクリプトにおける間違ったログファイル名の引用符付けを修正しました。(Sidar Lopez)

  • 意図せずに有効になっていたWAL_DEBUGを元に戻しました。(Robert Haas)

    幸いなことにデバッグ用ツールが作動する時でもこれは非常に安価なものです。 しかしデフォルトで有効にすることは意図していませんので、元に戻しました。

  • VPATH構築ですべてのサーバヘッダファイルが適切にインストールされることを確実にしました。(Peter Eisentraut)

  • 冗長エラーメッセージ内で報告されるファイル名を短くしました。(Peter Eisentraut)

    通常の構築では常にCファイルの名前だけがエラーメッセージ呼び出しの中で報告されました。 しかしこれまでVPATH構築では絶対パス名が報告されました。

  • 中央アメリカ用のWindowsの時間帯名の解釈を修正しました。(Tom Lane)

    通常中央アメリカではまったく夏時間が認められませんので、Central America Standard TimeCST6CDTではなくCST6に対応付けしました。

  • 時間帯データファイルをtzdata release 2011nに更新しました。 ブラジル、キューバ、フィジー、パレスチナ、ロシア、サモアにおける夏時間規則の変更、アラスカ、イギリス領東アフリカの歴史的な修正が含まれています。