PostgreSQL 8.3.5 に関する技術情報

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

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

PostgreSQL 8.3.4 から 8.3.5 への変更点


    1. 削除後に間違ったインデックス項目を “dead” と印付けたことによる GiST インデックスの破損が修正されました。(Teodor)この障害は 8.3.4 バージョンで埋め込まれたもので、インデックス検索は存在するはずの行の検索に失敗します。
    2. クライアントの文字エンコーティングが翻訳されたエラーメッセージを表すことができない時の、バックエンドのクラッシュが修正されました。(Tom)以前にも同様の問題への対応がありましたが、”等価な文字を持たない”メッセージ自体が変換されない場合にまだ失敗しました。今回の修正では、こうした状況を検知した時、翻訳を無効にし、通常のASCIIエラーメッセージを送信します。
    3. bytea から XML 対応付けにおけるクラッシュの可能性が修正されました。(Michael McMaster)xmlelement 式で XML データを生成する場合などが該当します。
    4. トリガから深い入れ子状態の関数が呼び出された時にクラッシュする可能性があり、修正されました。(Tom)
    5. expression IN (expression-list) 問い合わせの最適化が改良されました。(Tom、Robert Haas のアイデアに基づく)8.2.x および 8.3.xでは、右辺に問い合わせ変数が存在する状況を取扱う効率が過去のバージョンより落ちていました。今回の修正では、こうした状況における振舞いを8.1に戻しました。
    6. 副 SELECT が FROM、複数行の VALUES リスト、RETURNING リスト内の関数呼び出し内に存在する場合の、間違ったルール問い合わせの展開が修正されました。(Tom)この問題のよくある徴候は、”unrecognized node type” というエラーです。
    7. GiST インデックスの IS NULL 検索の再スキャン中のアサート失敗が修正されました。(Teodor)
    8. HashAggregate 実行プランにおける再スキャン中のメモリリークが修正されました。(Neil)
    9. 定義した PL/pgSQL トリガ関数を通常の関数として呼び出した場合に、確実にエラー報告されるようになりました。(Tom)
    10. CREATE DATABASE がファイルコピーを始める前に強制的にチェックポイントを行うようになりました。(Heikki)コピー元となるテンプレートデータベースでファイルが最近削除された場合に失敗する可能性があり、これを防止するものです。
    11. ALTER … SET TABLESPACE を使ってテーブルを別のテーブル空間に移動する時に、relfilenode 番号が衝突する可能性を防止するようになりました。(Heikki)このコマンドは従来、あて先のディレクトリで未使用であることが確認されたファイル名を選ばずに、既存のファイル名を再使用しようとしていました。
    12. 1 つの問い合わせ項目がテキストの先頭の単語に一致した場合における、テキスト検索の間違った見出し生成がされました。(Sushant Sinha)全文検索機能を使った場合に該当します。
    13. –enable-integer-datetimes で構築された場合、ISO 以外の日付書式を使用した時の時間間隔値における不適切な秒端数表示が修正されました。(Ron Mayer)
    14. エスケープされていた場合であってもILIKEが大文字小文字を区別せずに文字を比較するようにしました。(Andrew)本修正の前までは以下のようにエスケープ処理を伴うケースで誤った結果が返っていました。なお、E’\t’ は「 」というパターンの文字列表現で「t」と同じ意味を表します。

(サーバ側文字エンコーディング SQL_ASCII での修正前バージョン動作例)

=# select 'T' ilike 't';
?column?
----------
t
(1 row)

=# select 'T' ilike E'\t';
?column?
----------
f
(1 row)
  1. SQL 文のログ処理で DISCARD 文が適切に取り扱われるように修正されました。(Tom)
  2. PITR リカバリにおける前回完了したトランザクション時刻のログ処理の間違いが修正されました。(Tom)
  3. サーバプログラミングインターフェイスにおいて、渡されたタプルとタプル記述子が異なる列数を持っていた場合にSPI_getvalue 関数および SPI_getbinval 関数が適切に動作するように修正されました。(Tom)テーブルに列が追加または削除された場合、こうした状況は正常です。しかしこの2つの関数は適切に扱っていませんでした。該当のケースでは結果として間違ったエラーが返されます。
  4. 設定項目 session_replication_role に対応する内部変数 SessionReplicationRole を PGDLLIMPORT として印をつけました。これにより Windows上 の Slony-I でこれを使用することができます。(Magnus)
  5. libpq の gsslib パラメータを使用している時の小さなメモリリークが修正されました。(Magnus)パラメータ文字列で使用された領域が接続が閉じた時に開放されてませんでした。
  6. 必要に応じて libgssapi が libpq 確実にリンクされるように、Makefile が修正されました。(Markus Schaaf)
  7. ecpg における CREATE ROLE の構文解析処理が修正されました。(Michael)
  8. 最近のバージョンで埋め込まれた pg_ctl restart の障害が修正されました。(Tom)何もオプションを付けないで pg_ctl restart を実行した場合に、コマンドが正しく動作しません。
  9. pg_control ファイルが確実にバイナリモードで開かれるように修正されました。(Itagaki Takahiro)pg_controldata コマンドおよび pg_resetxlog コマンドはこれを正しく行っていませんでした。このためファイルに EOF(0x1A) が含まれているとき Windows で失敗しました。
  10. 時間帯データファイルが tzdata リリース 2008i(アルゼンチン、ブラジル、モーリシャス、シリアにおける夏時間規則の変更)まで更新されました。