リリース7.4.2

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

# E.93. リリース7.4.2

> リリース日: 2004-03-08

このリリースは7.4.1の様々な不具合を修正したものです。 7.4メジャーリリースにおける新機能については項E.95を参照してください。

## E.93.1. 7.4.2バージョンへの移行

7.4.Xからの移行の場合は ダンプ/リストアは必要ありません。 しかし、これは初期の7.4.Xシステムカタログの内容に存在した2つのエラーの修正を組み込む最も簡単な方法としてお勧めできます。 7.4.2のinitdbを使用したダンプ、initdb、再ロードという流れにより、自動的にこの問題が修正されます。

この2つのエラーのより深刻な点は、`anyarray`データ型が間違った整列ラベルを持っていたことです。 `pg_statistic`システムカタログが`anyarray`型の列を使用しているため、これは問題です。 この間違ったラベル付けにより、doubleで整列された列(`float8`や`timestamp`など)を`WHERE`句に含む問い合わせの計画を作成中、プランナは間違った推定を行ない、最悪はクラッシュしてしまいます。 initabや後述の手作業による修復手順に従って、全てのインストレーションでこのエラーを修復することを強く推奨します。

あまり深刻ではないエラーは、`SET`の代わりに`UPDATE pg_settings`を使用できるように`pg_settings`システムビューの出力がpublicに対して更新アクセス可能すべきでした。 これは、initdbや手作業で修正することができますが、`UPDATE pg_settings`を使用したいのでない限り修正する必要はありません。

initdbを実行したくなければ、以下の手順で`pg_statistic`を修正することができます。 データベーススーパーユーザで実行してください。

    -- clear out old data in pg_statistic:
    DELETE FROM pg_statistic;
    VACUUM pg_statistic;
    -- this should update 1 row:
    UPDATE pg_type SET typalign = 'd' WHERE oid = 2277;
    -- this should update 6 rows:
    UPDATE pg_attribute SET attalign = 'd' WHERE atttypid = 2277;
    --
    -- At this point you MUST start a fresh backend to avoid a crash!
    --
    -- repopulate pg_statistic:
    ANALYZE;

これは稼働中のデータベースに対して行なうことができますが、変更したデータベースで実行中の全てのバックエンドは、`pg_statistic`を安全に更新させるために、再起動されなければなりません。

`pg_settings`エラーを修復するには単に以下を実行してください。

    GRANT SELECT, UPDATE ON pg_settings TO PUBLIC;

上述の手順は、`template1`を含むインストレーションの全てのデータベースに対して行なわなければなりません。理想をいえば`template0`にも行なってください。 テンプレートデータベースに対して修復を行なわないと、将来作成されるデータベースに同じエラーが含まれることになります。 `template1`は他のデータベースと同様の方法で修正できますが、`template0`の修正には更に手順が必要です。 まず、任意のデータベースから以下を発行してください。

    UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';

次に`template0`に接続し、上の手順を実行してください。 最後に以下を実行してください。

    -- re-freeze template0:
    VACUUM FREEZE;
    -- and protect it against future alterations:
    UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';

## E.93.2. 変更点

リリース7.4.2には、リリース7.3.6で行なわれた修正に加え、以下の修正が組み込まれています。

- Fix `pg_statistics` alignment bug that could crash optimizer

  See above for details about this problem.

- Allow non-super users to update `pg_settings`

- Fix several optimizer bugs, most of which led to "variable not found in subplan target lists" errors

- Avoid out-of-memory failure during startup of large multiple index scan

- Fix multibyte problem that could lead to "out of memory" error during `COPY IN`

- Fix problems with `SELECT INTO` / `CREATE TABLE AS` from tables without OIDs

- Fix problems with `alter_table` regression test during parallel testing

- Fix problems with hitting open file limit, especially on OS X (Tom)

- Partial fix for Turkish-locale issues

  initdb will succeed now in Turkish locale, but there are still some inconveniences associated with the `i/I` problem.

- Make pg_dump set client encoding on restore

- Other minor pg_dump fixes

- Allow ecpg to again use C keywords as column names (Michael)

- Added ecpg `WHENEVER NOT_FOUND` to `SELECT/INSERT/UPDATE/DELETE` (Michael)

- Fix ecpg crash for queries calling set-returning functions (Michael)

- Various other ecpg fixes (Michael)

- Fixes for Borland compiler

- Thread build improvements (Bruce)

- Various other build fixes

- Various JDBC fixes

前のページ | ホーム | 次のページ
リリース7.4.3 | 上に戻る | リリース7.4.1