if table creation failed (the table already exists).
Martin Pitt
-<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.59 2006/03/17 16:02:47 petere Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.60 2006/08/01 18:21:44 momjian Exp $ -->
<refentry id="APP-PGRESTORE">
<refmeta>
</listitem>
</varlistentry>
- <varlistentry>
- <term><option>-X use-set-session-authorization</option></term>
- <term><option>--use-set-session-authorization</option></term>
- <listitem>
- <para>
- Output SQL-standard <command>SET SESSION AUTHORIZATION</> commands
- instead of <command>ALTER OWNER</> commands to determine object
- ownership. This makes the dump more standards compatible, but
- depending on the history of the objects in the dump, may not restore
- properly.
- </para>
- </listitem>
- </varlistentry>
-
<varlistentry>
<term><option>-X disable-triggers</></term>
<term><option>--disable-triggers</></term>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><option>-X use-set-session-authorization</option></term>
+ <term><option>--use-set-session-authorization</option></term>
+ <listitem>
+ <para>
+ Output SQL-standard <command>SET SESSION AUTHORIZATION</> commands
+ instead of <command>ALTER OWNER</> commands to determine object
+ ownership. This makes the dump more standards compatible, but
+ depending on the history of the objects in the dump, may not restore
+ properly.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-X no-data-for-failed-tables</></term>
+ <listitem>
+ <para>
+ By default, table data objects are restored even if the
+ associated table could not be successfully created (e. g.
+ because it already exists). With this option, such table
+ data is silently ignored. This is useful for dumping and
+ restoring databases with tables which contain auxiliary data
+ for PostgreSQL extensions (e. g. PostGIS).
+ </para>
+ </listitem>
+ </varlistentry>
+
</variablelist>
</para>
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup.h,v 1.41 2006/07/14 14:52:26 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup.h,v 1.42 2006/08/01 18:21:44 momjian Exp $
*
*-------------------------------------------------------------------------
*/
char *pghost;
char *username;
int ignoreVersion;
+ int noDataForFailedTables;
int requirePassword;
int exit_on_error;
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.134 2006/07/18 17:42:00 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.135 2006/08/01 18:21:44 momjian Exp $
*
*-------------------------------------------------------------------------
*/
_printTocEntry(AH, te, ropt, false, false);
defnDumped = true;
+ /* If we could not create a table, ignore the respective TABLE DATA if
+ * -X no-data-for-failed-tables is given */
+ if (ropt->noDataForFailedTables && AH->lastErrorTE == te && strcmp (te->desc, "TABLE") == 0) {
+ TocEntry *tes, *last;
+
+ ahlog (AH, 1, "table %s could not be created, will not restore its data\n", te->tag);
+
+ for (last = te, tes = te->next; tes != AH->toc; last = tes, tes = tes->next) {
+ if (strcmp (tes->desc, "TABLE DATA") == 0 && strcmp (tes->tag, te->tag) == 0 &&
+ strcmp (tes->namespace ? tes->namespace : "", te->namespace ? te->namespace : "") == 0) {
+ /* remove this node */
+ last->next = tes->next;
+ break;
+ }
+ }
+ }
+
/* If we created a DB, connect to it... */
if (strcmp(te->desc, "DATABASE") == 0)
{
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.79 2006/07/14 14:52:26 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.80 2006/08/01 18:21:44 momjian Exp $
*
*-------------------------------------------------------------------------
*/
use_setsessauth = 1;
else if (strcmp(optarg, "disable-triggers") == 0)
disable_triggers = 1;
+ else if (strcmp(optarg, "no-data-for-failed-tables") == 0)
+ opts->noDataForFailedTables = 1;
else
{
fprintf(stderr,
printf(_(" -X use-set-session-authorization, --use-set-session-authorization\n"
" use SESSION AUTHORIZATION commands instead of\n"
" OWNER TO commands\n"));
+ printf(_(" -X no-data-for-failed-tables\n"
+ " do not restore data of tables which could not be\n"
+ " created\n"));
printf(_(" -1, --single-transaction restore as a single transaction\n"));
printf(_("\nConnection options:\n"));