mirror of
https://github.com/postgres/postgres.git
synced 2025-06-23 14:01:44 +03:00
Add pg_dump -X no-data-for-failed-tables option to suppress loading data
if table creation failed (the table already exists). Martin Pitt
This commit is contained in:
@ -15,7 +15,7 @@
|
||||
*
|
||||
*
|
||||
* 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 $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -278,6 +278,23 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt)
|
||||
_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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user