mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Avoid harmless warning from pg_dump --if-exists mode.
If the public schema has a non-default owner (perhaps due to
dropping and recreating it) then use of pg_dump's "--if-exists"
option results in a warning message:
warning: could not find where to insert IF EXISTS in statement "-- *not* dropping schema, since initdb creates it"
This is harmless since the dump output is the same either way,
but nonetheless it's undesirable. It's the fault of commit
a7a7be1f2
, which created situations where a TOC entry's "defn"
or "dropStmt" fields could be just comments. Although that
commit fixed up the kluges in pg_backup_archiver.c that munge defn
strings, it missed doing so for the one that munges dropStmts.
Per bug# 17753 from Justin Zhang.
Discussion: https://postgr.es/m/17753-9c8773631747ee1c@postgresql.org
This commit is contained in:
@ -529,9 +529,14 @@ RestoreArchive(Archive *AHX)
|
||||
*/
|
||||
if (*te->dropStmt != '\0')
|
||||
{
|
||||
if (!ropt->if_exists)
|
||||
if (!ropt->if_exists ||
|
||||
strncmp(te->dropStmt, "--", 2) == 0)
|
||||
{
|
||||
/* No --if-exists? Then just use the original */
|
||||
/*
|
||||
* Without --if-exists, or if it's just a comment (as
|
||||
* happens for the public schema), print the dropStmt
|
||||
* as-is.
|
||||
*/
|
||||
ahprintf(AH, "%s", te->dropStmt);
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user