]> granicus.if.org Git - postgresql/commitdiff
Fix bug in new pg_dump -T/-N handling that was dumping system schemas if
authorBruce Momjian <bruce@momjian.us>
Fri, 4 Aug 2006 18:32:15 +0000 (18:32 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 4 Aug 2006 18:32:15 +0000 (18:32 +0000)
these options were used before -n/-t.

src/bin/pg_dump/pg_dump.c

index 85f779d0ae5b7d8b7b82a2b80f8ee5f932f196e3..d48cd255c77543b685e035feddf67ab2721ab6dd 100644 (file)
@@ -12,7 +12,7 @@
  *     by PostgreSQL
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.445 2006/08/02 21:43:43 momjian Exp $
+ *       $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.446 2006/08/04 18:32:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -632,7 +632,10 @@ main(int argc, char **argv)
                {
                        /* Special case for when -N is the first argument */
                        if (this_obj_name == schemaList && !this_obj_name->is_include)
-                               appendPQExpBuffer(query, "SELECT oid FROM pg_catalog.pg_namespace EXCEPT\n");
+                               appendPQExpBuffer(query,
+                                       "SELECT oid FROM pg_catalog.pg_namespace "
+                                       "WHERE nspname NOT LIKE 'pg_%%' AND "
+                                       "      nspname != 'information_schema' EXCEPT\n");
        
                        appendPQExpBuffer(query, "SELECT oid FROM pg_catalog.pg_namespace WHERE");
                }
@@ -694,7 +697,12 @@ main(int argc, char **argv)
                {
                        /* Special case for when -T is the first argument */
                        if (this_obj_name == tableList && !this_obj_name->is_include && !strlen(query->data))
-                               appendPQExpBuffer(query, "SELECT oid FROM pg_catalog.pg_class WHERE relkind='r' EXCEPT\n");
+                               appendPQExpBuffer(query,
+                                       "SELECT pg_class.oid FROM pg_catalog.pg_class, pg_catalog.pg_namespace "
+                                       "WHERE relkind='r' AND "
+                                       "      relnamespace = pg_namespace.oid AND "
+                                       "      nspname NOT LIKE 'pg_%%' AND "
+                                       "      nspname != 'information_schema' EXCEPT\n");
        
                        appendPQExpBuffer(query, "SELECT oid FROM pg_catalog.pg_class WHERE relkind='r' AND (");
                }
@@ -6169,7 +6177,7 @@ dumpCast(Archive *fout, CastInfo *cast)
         * Skip this cast if all objects are from pg_
         */
        if ((funcInfo == NULL ||
-                strncmp(funcInfo->dobj.namespace->dobj.name, "pg_", 3) == 0) &&
+               strncmp(funcInfo->dobj.namespace->dobj.name, "pg_", 3) == 0) &&
                strncmp(sourceInfo->dobj.namespace->dobj.name, "pg_", 3) == 0 &&
                strncmp(targetInfo->dobj.namespace->dobj.name, "pg_", 3) == 0)
                return;