[pgsql-jp: 41744] 8.4.8 → 9.1.6 へのバージョンアップ後の oid 不整合について

園田 真樹 sonoda @ tech.k-opti.com
2014年 11月 11日 (火) 12:23:24 JST


はじめまして。
SONODA と申します。

8.4.8(旧) → 9.1.6(新) へのバージョンアップ後に、
システムカタログの oid に不整合が発生しております。

実施した手順は、以下の通りです。

・旧環境の DB をダンプ。
 pg_dump -U postgres -d dbname > dbname.dump
・新環境に DB作成。
 initdb -E EUC_JP -D [dir]
 createdb -U postgres -d dbname
・新環境に DBをリストア。結果、エラーなし。
 psql -U postgres -d dbname < dbname.dump

すると、ユーザーテーブルのコメントを取得する以下のクエリを実行すると
結果が0件となります。
(pg_description を select すると、コメントは挿入されています)

SELECT
  DESCRIPTION
FROM
  PG_ATTRIBUTE
JOIN PG_CLASS ON ATTRELID=RELFILENODE
JOIN PG_DESCRIPTION
ON RELFILENODE=OBJOID AND ATTNUM=OBJSUBID;

調査すると、pg_class、pg_description、pg_attribute で
作成したユーザーテーブルの oid に整合がとれていないことが分かりました。

あと、分かったことは、oid の整合がとれていないユーザーテーブルを新たにダンプし、
別名テーブルでリストアすると、oid が新規作成され整合がとれました。

質問ですが、
oid の不整合は、どういった理由が考えられるでしょうか。
現状で、システムカタログの情報を更新するなどで、
oid の整合を修正するような方法はあるのでしょうか。(ダンプ、リストアではなく)

宜しくお願い致します。


pgsql-jp メーリングリストの案内