Ian Burrell <ib@onsitetech.com> writes:
> I just recreated the problem with a slightly different command. The
> problem was caused by using a list file to skip loading some function
> definitions that were causing problems. The command that loaded
> everything into template1 was:
> pg_restore -C -d template1 -L mpmx.lst -Ft mpmx.tar
> It looks like the CREATE DATABASE call isn't done unless the -C flag is
> included both when the list file is created and when doing the restore.
Yeah, that seems to make sense. I observe that -C causes an additional
entry to be made in the list file:
$ pg_restore -l r.tar >r.lst
$ pg_restore -C -l r.tar >r.lstc
$ diff r.lst r.lstc
13a14
> 1; 0 DATABASE regression postgres
and it makes sense that the actual CREATE DATABASE command would be
issued when that TOC entry is processed (if -C was given).
Offhand it seems to me that -l should produce this list-file entry
always, regardless of -C; and perhaps "pg_restore -C -L" should
complain if it doesn't find a DATABASE entry in the list (though I'm
unsure how hard that is to implement).
Philip, any comments? Do you have time to fix this?
regards, tom lane