Hi,
Good catch! Here are several points for improvement:
1. pg_dump.c:17380
Maybe better to write simpler
appendPQExpBuffer(delcmd, "CREATE SCHEMA IF NOT EXISTS %s;\n", tbinfo->dobj.namespace->dobj.name);
because there is a schema name inside the `tbinfo->dobj.namespace->
dobj.name`
2. pg_backup_archiver.c:588
Here are no necessary spaces before and after braces, and no spaces around the '+' sign.
( strncmp(dropStmt, "CREATE SCHEMA IF NOT EXISTS", 27) == 0 &&
strstr(dropStmt+29, "CREATE OR REPLACE VIEW") ))
Best regards,
Viktoria Shepard
Hello,
When using pg_dump (or pg_restore) with option "--clean", there is some
SQL code to drop every objects at the beginning.
The DROP statement for a view involving circular dependencies is :
CREATE OR REPLACE VIEW [...]
(see commit message of d8c05aff for a much better explanation)
If the view is not in the "public" schema, and the target database is
empty, this statement fails, because the schema hasn't been created yet.
The attached patches are a TAP test which can be used to reproduce the
bug, and a proposed fix. They apply to the master branch.
Best regards,
Frédéric