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

minoru fukuda fukuda @ kinol.co.jp
2002年 12月 20日 (金) 19:02:03 JST


福田@キノルです。

> 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のデータが編集できるようなら上記の点に注意して
> 試してみてください。

上記のように create cast を定義してみたのですが、pg_restore が
別のエラーで失敗してしまいます。pg_dump のデータファイルを
tar で展開して、ファイルを編集後、再度 tar でまとめれば良いと
思ったのですが、そうではないのでしょうか?
すみませんが、ご教授ください。

やったこと。

1) tar xvf test.tar <- pg_dump のデータファイル
2) restore.sql で lo 関連の function の後に上記の cast を追加

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

3) create function oid(lo) ... と create function lo(oid) ... で
   immutable を指定。

4) tar cvf test.tar *
5) pg_restore -Ft -d test test.tar
...
pg_restore: [tar archiver] could not find header for file 102.dat in tar archive

のエラーが出力されて終わる。

-- 
福田稔 Minoru Fukuda
fukuda @ kinol.co.jp
kinol interactive inc.
http://www.kinol.co.jp




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