Skip to content

Commit ad269d5

Browse files
committed
Fix bug in new pg_dump -T/-N handling that was dumping system schemas if
these options were used before -n/-t.
1 parent 6db6714 commit ad269d5

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/bin/pg_dump/pg_dump.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* by PostgreSQL
1313
*
1414
* IDENTIFICATION
15-
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.445 2006/08/02 21:43:43 momjian Exp $
15+
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.446 2006/08/04 18:32:15 momjian Exp $
1616
*
1717
*-------------------------------------------------------------------------
1818
*/
@@ -632,7 +632,10 @@ main(int argc, char **argv)
632632
{
633633
/* Special case for when -N is the first argument */
634634
if (this_obj_name == schemaList && !this_obj_name->is_include)
635-
appendPQExpBuffer(query, "SELECT oid FROM pg_catalog.pg_namespace EXCEPT\n");
635+
appendPQExpBuffer(query,
636+
"SELECT oid FROM pg_catalog.pg_namespace "
637+
"WHERE nspname NOT LIKE 'pg_%%' AND "
638+
" nspname != 'information_schema' EXCEPT\n");
636639

637640
appendPQExpBuffer(query, "SELECT oid FROM pg_catalog.pg_namespace WHERE");
638641
}
@@ -694,7 +697,12 @@ main(int argc, char **argv)
694697
{
695698
/* Special case for when -T is the first argument */
696699
if (this_obj_name == tableList && !this_obj_name->is_include && !strlen(query->data))
697-
appendPQExpBuffer(query, "SELECT oid FROM pg_catalog.pg_class WHERE relkind='r' EXCEPT\n");
700+
appendPQExpBuffer(query,
701+
"SELECT pg_class.oid FROM pg_catalog.pg_class, pg_catalog.pg_namespace "
702+
"WHERE relkind='r' AND "
703+
" relnamespace = pg_namespace.oid AND "
704+
" nspname NOT LIKE 'pg_%%' AND "
705+
" nspname != 'information_schema' EXCEPT\n");
698706

699707
appendPQExpBuffer(query, "SELECT oid FROM pg_catalog.pg_class WHERE relkind='r' AND (");
700708
}
@@ -6169,7 +6177,7 @@ dumpCast(Archive *fout, CastInfo *cast)
61696177
* Skip this cast if all objects are from pg_
61706178
*/
61716179
if ((funcInfo == NULL ||
6172-
strncmp(funcInfo->dobj.namespace->dobj.name, "pg_", 3) == 0) &&
6180+
strncmp(funcInfo->dobj.namespace->dobj.name, "pg_", 3) == 0) &&
61736181
strncmp(sourceInfo->dobj.namespace->dobj.name, "pg_", 3) == 0 &&
61746182
strncmp(targetInfo->dobj.namespace->dobj.name, "pg_", 3) == 0)
61756183
return;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy