summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/src/sgml/ref/pg_restore.sgml12
-rw-r--r--src/bin/pg_dump/pg_backup.h8
-rw-r--r--src/bin/pg_dump/pg_backup_archiver.c10
-rw-r--r--src/bin/pg_dump/pg_restore.c8
4 files changed, 21 insertions, 17 deletions
diff --git a/doc/src/sgml/ref/pg_restore.sgml b/doc/src/sgml/ref/pg_restore.sgml
index 7c48fcd288f..717da4272dd 100644
--- a/doc/src/sgml/ref/pg_restore.sgml
+++ b/doc/src/sgml/ref/pg_restore.sgml
@@ -230,7 +230,8 @@
<term><option>--index=<replaceable class="parameter">index</replaceable></option></term>
<listitem>
<para>
- Restore definition of named index only.
+ Restore definition of named index only. Multiple indexes
+ may be specified with multiple <option>-I</> switches.
</para>
</listitem>
</varlistentry>
@@ -314,7 +315,8 @@
<term><option>--schema=<replaceable class="parameter">schema</replaceable></option></term>
<listitem>
<para>
- Restore only objects that are in the named schema. This can be
+ Restore only objects that are in the named schema. Multiple schemas
+ may be specified with multiple <option>-n</> switches. This can be
combined with the <option>-t</option> option to restore just a
specific table.
</para>
@@ -348,7 +350,8 @@
<para>
Restore the named function only. Be careful to spell the function
name and arguments exactly as they appear in the dump file's table
- of contents.
+ of contents. Multiple functions may be specified with multiple
+ <option>-P</> switches.
</para>
</listitem>
</varlistentry>
@@ -413,7 +416,8 @@
<term><option>--trigger=<replaceable class="parameter">trigger</replaceable></option></term>
<listitem>
<para>
- Restore named trigger only.
+ Restore named trigger only. Multiple triggers may be specified with
+ multiple <option>-T</> switches.
</para>
</listitem>
</varlistentry>
diff --git a/src/bin/pg_dump/pg_backup.h b/src/bin/pg_dump/pg_backup.h
index b456f959692..6927968de0a 100644
--- a/src/bin/pg_dump/pg_backup.h
+++ b/src/bin/pg_dump/pg_backup.h
@@ -129,10 +129,10 @@ typedef struct _restoreOptions
int selFunction;
int selTrigger;
int selTable;
- char *indexNames;
- char *functionNames;
- char *schemaNames;
- char *triggerNames;
+ SimpleStringList indexNames;
+ SimpleStringList functionNames;
+ SimpleStringList schemaNames;
+ SimpleStringList triggerNames;
SimpleStringList tableNames;
int useDB;
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
index 5204ceb9643..50619a28157 100644
--- a/src/bin/pg_dump/pg_backup_archiver.c
+++ b/src/bin/pg_dump/pg_backup_archiver.c
@@ -2456,12 +2456,12 @@ _tocEntryRequired(TocEntry *te, teSection curSection, RestoreOptions *ropt)
}
/* Check options for selective dump/restore */
- if (ropt->schemaNames)
+ if (ropt->schemaNames.head != NULL)
{
/* If no namespace is specified, it means all. */
if (!te->namespace)
return 0;
- if (strcmp(ropt->schemaNames, te->namespace) != 0)
+ if (!(simple_string_list_member(&ropt->schemaNames, te->namespace)))
return 0;
}
@@ -2479,21 +2479,21 @@ _tocEntryRequired(TocEntry *te, teSection curSection, RestoreOptions *ropt)
{
if (!ropt->selIndex)
return 0;
- if (ropt->indexNames && strcmp(ropt->indexNames, te->tag) != 0)
+ if (ropt->indexNames.head != NULL && (!(simple_string_list_member(&ropt->indexNames, te->tag))))
return 0;
}
else if (strcmp(te->desc, "FUNCTION") == 0)
{
if (!ropt->selFunction)
return 0;
- if (ropt->functionNames && strcmp(ropt->functionNames, te->tag) != 0)
+ if (ropt->functionNames.head != NULL && (!(simple_string_list_member(&ropt->functionNames, te->tag))))
return 0;
}
else if (strcmp(te->desc, "TRIGGER") == 0)
{
if (!ropt->selTrigger)
return 0;
- if (ropt->triggerNames && strcmp(ropt->triggerNames, te->tag) != 0)
+ if (ropt->triggerNames.head != NULL && (!(simple_string_list_member(&ropt->triggerNames, te->tag))))
return 0;
}
else
diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c
index 985c82621ba..26480033a2d 100644
--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -196,7 +196,7 @@ main(int argc, char **argv)
break;
case 'n': /* Dump data for this schema only */
- opts->schemaNames = pg_strdup(optarg);
+ simple_string_list_append(&opts->schemaNames, optarg);
break;
case 'O':
@@ -213,17 +213,17 @@ main(int argc, char **argv)
case 'P': /* Function */
opts->selTypes = 1;
opts->selFunction = 1;
- opts->functionNames = pg_strdup(optarg);
+ simple_string_list_append(&opts->functionNames, optarg);
break;
case 'I': /* Index */
opts->selTypes = 1;
opts->selIndex = 1;
- opts->indexNames = pg_strdup(optarg);
+ simple_string_list_append(&opts->indexNames, optarg);
break;
case 'T': /* Trigger */
opts->selTypes = 1;
opts->selTrigger = 1;
- opts->triggerNames = pg_strdup(optarg);
+ simple_string_list_append(&opts->triggerNames, optarg);
break;
case 's': /* dump schema only */
opts->schemaOnly = 1;