aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-04-12 22:19:01 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-04-12 22:19:01 +0000
commite4b8253c40cd066f9e495ca4b5a19e730797f903 (patch)
tree26189c63c3bc7083ddfeb1e963ae08796a0af471
parenta5884d5dc84b7af3f00b10dc7a8a1bb62843891c (diff)
downloadpostgresql-e4b8253c40cd066f9e495ca4b5a19e730797f903.tar.gz
postgresql-e4b8253c40cd066f9e495ca4b5a19e730797f903.zip
Fix pg_restore -n option to do what the man page says it does. The
original coding only worked if one of the selTypes restriction options was also given. Per report from Nick Johnson.
-rw-r--r--src/bin/pg_dump/pg_backup_archiver.c24
-rw-r--r--src/bin/pg_dump/pg_restore.c3
2 files changed, 14 insertions, 13 deletions
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
index 61b0dee4cbf..aa698e73726 100644
--- a/src/bin/pg_dump/pg_backup_archiver.c
+++ b/src/bin/pg_dump/pg_backup_archiver.c
@@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.117.2.2 2006/02/05 20:58:57 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.117.2.3 2006/04/12 22:19:01 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1883,18 +1883,20 @@ _tocEntryRequired(TocEntry *te, RestoreOptions *ropt, bool include_acls)
if (!ropt->create && strcmp(te->desc, "DATABASE") == 0)
return 0;
- /* Check if tablename only is wanted */
+ /* Check options for selective dump/restore */
+ if (ropt->schemaNames)
+ {
+ /* If no namespace is specified, it means all. */
+ if (!te->namespace)
+ return 0;
+ if (strcmp(ropt->schemaNames, te->namespace) != 0)
+ return 0;
+ }
+
if (ropt->selTypes)
{
- if (ropt->schemaNames)
- {
- /* If no namespace is specified, it means all. */
- if (!te->namespace)
- return 0;
- if (strcmp(ropt->schemaNames, te->namespace) != 0)
- return 0;
- }
- if ((strcmp(te->desc, "TABLE") == 0) || (strcmp(te->desc, "TABLE DATA") == 0))
+ if (strcmp(te->desc, "TABLE") == 0 ||
+ strcmp(te->desc, "TABLE DATA") == 0)
{
if (!ropt->selTable)
return 0;
diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c
index c40ee7bbec0..95c481e89a9 100644
--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -34,7 +34,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.73 2005/10/15 02:49:39 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.73.2.1 2006/04/12 22:19:01 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -224,7 +224,6 @@ main(int argc, char **argv)
break;
case 'n': /* Dump data for this schema only */
- opts->selTypes = 1;
opts->schemaNames = strdup(optarg);
break;