Hi,
pg_restore silently ignores the inclusion of -C when you do use a
restore list.
postgres$ pg_dump -Fc postgres > postgres.dump
postgres$ pg_restore -C postgres.dump | grep 'CREATE DATABASE'
CREATE DATABASE postgres WITH TEMPLATE = template0 ENCODING = 'UTF8';
## Create a restore list
postgres$ pg_restore -l postgres.dump > list.txt
## Attempt to restore using the list
postgres$ pg_restore -L list -C postgres.dump | grep 'CREATE DATABASE'
The final result does not include an \connect or CREATE DATABASE
statements. Expected behavior would be to have CREATE DATABASE in both
cases. It would be at least desirable to remove the footgun and error
if you are not allowed to use -C in this context.
The example above does not involve the use of -d as a connection
database. The results are particularly unexpected when you restore an
entire database into the postgres by using pg_restore -L list -C -d
postgres big_db.dump.
Regards
Russell