Move resetting of currSchema to a spot where it's not vulnerable to getting
missed in possible future partial-drop scenarios. Improve comment. Per report from Zoltan Boszormenyi.
This commit is contained in:
parent
03debe19a7
commit
229d406a9b
@ -15,7 +15,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.150 2007/11/24 17:45:32 momjian Exp $
|
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.151 2007/11/24 20:26:49 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -245,23 +245,24 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt)
|
|||||||
_selectOutputSchema(AH, te->namespace);
|
_selectOutputSchema(AH, te->namespace);
|
||||||
/* Drop it */
|
/* Drop it */
|
||||||
ahprintf(AH, "%s", te->dropStmt);
|
ahprintf(AH, "%s", te->dropStmt);
|
||||||
if (strcmp(te->desc, "SCHEMA") == 0)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* If we dropped a schema, we know we are going to be
|
|
||||||
* creating one later so don't remember the current one
|
|
||||||
* so we try later. The previous 'search_path' setting
|
|
||||||
* might have failed because the schema didn't exist
|
|
||||||
* (and now it certainly doesn't exist), so force
|
|
||||||
* search_path to be set as part of the next operation
|
|
||||||
* and it might succeed.
|
|
||||||
*/
|
|
||||||
if (AH->currSchema)
|
|
||||||
free(AH->currSchema);
|
|
||||||
AH->currSchema = strdup("");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* _selectOutputSchema may have set currSchema to reflect the effect
|
||||||
|
* of a "SET search_path" command it emitted. However, by now we may
|
||||||
|
* have dropped that schema; or it might not have existed in the first
|
||||||
|
* place. In either case the effective value of search_path will not
|
||||||
|
* be what we think. Forcibly reset currSchema so that we will
|
||||||
|
* re-establish the search_path setting when needed (after creating
|
||||||
|
* the schema).
|
||||||
|
*
|
||||||
|
* If we treated users as pg_dump'able objects then we'd need to reset
|
||||||
|
* currUser here too.
|
||||||
|
*/
|
||||||
|
if (AH->currSchema)
|
||||||
|
free(AH->currSchema);
|
||||||
|
AH->currSchema = strdup("");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user