[pgsql-jp: 33067] テーブルとファンクションをりストアする場合のoid問題

yusaku matsuda yumatuda @ msoft.co.jp
2004年 6月 1日 (火) 17:36:36 JST


いつも参考にさせて頂いております。
エムソフトの松田と申します。

下記の手順でDBをリストアした際にエラーが出て困っております。
---ここから
createdb aaa

create table test (cd text , name text);

insert into test values('01','matsuda');

CREATE FUNCTION testfunc(text) RETURNS text
AS 'select name from test
    where cd = $1'
LANGUAGE 'sql';

pg_dump -t test -d aaa > poi.t

drop table test;

psql -e aaa < poi.t

pg_dump aaa > poi

dropdb aaa

createdb aaa

psql -e aaa < poi
---ここまで

とすると、最後のリストアで、
ERROR:  Relation "test" does not exist
と言うエラーが表示されます。

これは、testfuncのoidがtestより大きくなっているため、と言う結論に至りました。
まず、この結論は正しいでしょうか?

そしてもう一つ、この動作に関してはこう言うものなのでしょうか?
テーブルをdropした場合は、そのテーブルを使用しているfunctionも削除し、
createし直す、と言うのが当然なのでしょうか?

度々上記の問題が起こり困っております。
対処法など教えて頂けるとありがたいです。



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