Fix logic to prevent pg_dump from dumping system schemas; bug introduced
in recent -t/-n/-T/-N patch. Small style cleanups.
This commit is contained in:
parent
959aee5bbf
commit
f1fa94a415
@ -12,7 +12,7 @@
|
||||
* by PostgreSQL
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.444 2006/08/01 21:05:00 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.445 2006/08/02 21:43:43 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -625,6 +625,7 @@ main(int argc, char **argv)
|
||||
/* Check schema selection flags */
|
||||
resetPQExpBuffer(query);
|
||||
switch_include_exclude = true;
|
||||
|
||||
for (this_obj_name = schemaList; this_obj_name; this_obj_name = this_obj_name->next)
|
||||
{
|
||||
if (switch_include_exclude)
|
||||
@ -686,6 +687,7 @@ main(int argc, char **argv)
|
||||
/* Check table selection flags */
|
||||
resetPQExpBuffer(query);
|
||||
switch_include_exclude = true;
|
||||
|
||||
for (this_obj_name = tableList; this_obj_name; this_obj_name = this_obj_name->next)
|
||||
{
|
||||
if (switch_include_exclude)
|
||||
@ -937,21 +939,23 @@ selectDumpableNamespace(NamespaceInfo *nsinfo)
|
||||
* namespaces. If specific namespaces are being dumped, dump just
|
||||
* those namespaces. Otherwise, dump all non-system namespaces.
|
||||
*/
|
||||
nsinfo->dobj.dump = false;
|
||||
|
||||
if (matchingTables != NULL)
|
||||
nsinfo->dobj.dump = false;
|
||||
/* false */;
|
||||
else if (matchingSchemas != NULL)
|
||||
{
|
||||
char *searchname = NULL;
|
||||
searchname = malloc(20);
|
||||
sprintf(searchname, " %d ", nsinfo->dobj.catId.oid);
|
||||
if (strstr(matchingSchemas, searchname) != NULL)
|
||||
char *search_oid = malloc(20);
|
||||
|
||||
sprintf(search_oid, " %d ", nsinfo->dobj.catId.oid);
|
||||
if (strstr(matchingSchemas, search_oid) != NULL)
|
||||
nsinfo->dobj.dump = true;
|
||||
free(searchname);
|
||||
|
||||
free(search_oid);
|
||||
}
|
||||
else if (strncmp(nsinfo->dobj.name, "pg_", 3) == 0 ||
|
||||
strcmp(nsinfo->dobj.name, "information_schema") == 0)
|
||||
nsinfo->dobj.dump = false;
|
||||
else
|
||||
/* The server prevents users from creating pg_ schemas */
|
||||
else if (strncmp(nsinfo->dobj.name, "pg_", 3) != 0 &&
|
||||
strcmp(nsinfo->dobj.name, "information_schema") != 0)
|
||||
nsinfo->dobj.dump = true;
|
||||
}
|
||||
|
||||
@ -968,16 +972,21 @@ selectDumpableTable(TableInfo *tbinfo)
|
||||
* dump.
|
||||
*/
|
||||
tbinfo->dobj.dump = false;
|
||||
if (tbinfo->dobj.namespace->dobj.dump || matchingTables == NULL)
|
||||
tbinfo->dobj.dump = true;
|
||||
|
||||
if (matchingTables == NULL)
|
||||
{
|
||||
if (tbinfo->dobj.namespace->dobj.dump)
|
||||
tbinfo->dobj.dump = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
char *searchname = NULL;
|
||||
searchname = malloc(20);
|
||||
sprintf(searchname, " %d ", tbinfo->dobj.catId.oid);
|
||||
if (strstr(matchingTables, searchname) != NULL)
|
||||
char *search_oid = malloc(20);
|
||||
|
||||
sprintf(search_oid, " %d ", tbinfo->dobj.catId.oid);
|
||||
if (strstr(matchingTables, search_oid) != NULL)
|
||||
tbinfo->dobj.dump = true;
|
||||
free(searchname);
|
||||
|
||||
free(search_oid);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user