[pgsql-jp: 28398] Re: pg_restore で lo がリストアできない

Hiroshi Inoue Inoue @ tpf.co.jp
2002年 12月 20日 (金) 18:08:19 JST


井上です。

minoru fukuda wrote:
> 
> こんにちは、福田@キノルです。
> 
> これまで PostgreSQL 7.2 で作っていた DB を pg_dump でダンプして
> 7.3 で pg_restore を使ってリストアしようとしたところ、下記のような
> エラーが表示されて、リストアに失敗します。
> 
> pg_restore: [archiver (db)] error while updating column "itemdata" of table "t_h
> agaki": ERROR:  Unable to identify an operator '=' for types 'oid' and 'lo'
>         You will have to retype this query using an explicit cast
> 
> 7.2 時代は lo もうまくリストアできていたのですが、このメッセージによると
> lo がうまくリストアできていないようなのです。

この現象は本家でも報告されています。申し訳ないですが
時間がなくちゃんと調べている暇がありません。原因は多分
次のようなところだと思います。

7.3になってキャストの仕組みが変わりました。loとoid
をキャストしたり比較するためには、次のようにキャストを
登録する必要があります。

 create cast (lo as oid) with function oid(lo) as implicit; 
 create cast (oid as lo) with function lo(oid) as implicit;

さらにこのようにキャストを定義するためにはoid(lo)やlo(oid)
をIMMUTABLEな関数として定義する必要があります。

pg_dumpのデータが編集できるようなら上記の点に注意して
試してみてください。

Hiroshi Inoue
	http://w2422.nsk.ne.jp/~inoue/



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