Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit daa076c

Browse files
committed
> Please find attached a submission to add a "exit on error" option to
> pg_restore, as it seems that some people have scripts that rely on the > previous "abort on error" default behavior when restoring data with a > direct connection. > > Fabien Coelho
1 parent 46be0c1 commit daa076c

File tree

4 files changed

+30
-11
lines changed

4 files changed

+30
-11
lines changed

doc/src/sgml/ref/pg_restore.sgml

+13-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.47 2004/07/13 02:59:49 momjian Exp $ -->
1+
<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/pg_restore.sgml,v 1.48 2004/08/20 04:20:22 momjian Exp $ -->
22

33
<refentry id="APP-PGRESTORE">
44
<refmeta>
@@ -129,6 +129,18 @@
129129
</listitem>
130130
</varlistentry>
131131

132+
<varlistentry>
133+
<term><option>-e</option></term>
134+
<term><option>--exit-on-error</option></term>
135+
<listitem>
136+
<para>
137+
Exit if an error is encountered while sending SQL commands to
138+
the database. The default is to continue and to display a count of
139+
errors at the end of the restoration.
140+
</para>
141+
</listitem>
142+
</varlistentry>
143+
132144
<varlistentry>
133145
<term><option>-f <replaceable>filename</replaceable></option></term>
134146
<term><option>--file=<replaceable>filename</replaceable></option></term>

src/bin/pg_dump/pg_backup.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*
1616
*
1717
* IDENTIFICATION
18-
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup.h,v 1.31 2004/07/13 03:00:17 momjian Exp $
18+
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup.h,v 1.32 2004/08/20 04:20:22 momjian Exp $
1919
*
2020
*-------------------------------------------------------------------------
2121
*/
@@ -59,7 +59,7 @@ typedef struct _Archive
5959
int maxRemoteVersion;
6060

6161
/* error handling */
62-
bool die_on_errors; /* whether to die on sql errors... */
62+
bool exit_on_error; /* whether to exit on SQL errors... */
6363
int n_errors; /* number of errors (if no die) */
6464

6565
/* The rest is private */
@@ -103,6 +103,7 @@ typedef struct _restoreOptions
103103
char *username;
104104
int ignoreVersion;
105105
int requirePassword;
106+
int exit_on_error;
106107

107108
bool *idWanted;
108109
bool limitToList;

src/bin/pg_dump/pg_backup_archiver.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*
1616
*
1717
* IDENTIFICATION
18-
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.92 2004/08/13 21:37:28 tgl Exp $
18+
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.93 2004/08/20 04:20:22 momjian Exp $
1919
*
2020
*-------------------------------------------------------------------------
2121
*/
@@ -457,6 +457,7 @@ NewRestoreOptions(void)
457457

458458
opts->format = archUnknown;
459459
opts->suppressDumpWarnings = false;
460+
opts->exit_on_error = false;
460461

461462
return opts;
462463
}
@@ -1227,7 +1228,7 @@ warn_or_die_horribly(ArchiveHandle *AH,
12271228
{
12281229
va_list ap;
12291230
va_start(ap, fmt);
1230-
if (AH->public.die_on_errors)
1231+
if (AH->public.exit_on_error)
12311232
{
12321233
_die_horribly(AH, modulename, fmt, ap);
12331234
}
@@ -1693,7 +1694,7 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
16931694
}
16941695

16951696
/* sql error handling */
1696-
AH->public.die_on_errors = true;
1697+
AH->public.exit_on_error = true;
16971698
AH->public.n_errors = 0;
16981699

16991700
return AH;

src/bin/pg_dump/pg_restore.c

+10-5
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
*
3535
*
3636
* IDENTIFICATION
37-
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.59 2004/07/13 03:00:17 momjian Exp $
37+
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.60 2004/08/20 04:20:23 momjian Exp $
3838
*
3939
*-------------------------------------------------------------------------
4040
*/
@@ -90,6 +90,7 @@ main(int argc, char **argv)
9090
{"create", 0, NULL, 'C'},
9191
{"data-only", 0, NULL, 'a'},
9292
{"dbname", 1, NULL, 'd'},
93+
{"exit-on-error", 0, NULL, 'e'},
9394
{"file", 1, NULL, 'f'},
9495
{"format", 1, NULL, 'F'},
9596
{"function", 1, NULL, 'P'},
@@ -141,7 +142,7 @@ main(int argc, char **argv)
141142
}
142143
}
143144

144-
while ((c = getopt_long(argc, argv, "acCd:f:F:h:iI:lL:Op:P:RsS:t:T:uU:vWxX:",
145+
while ((c = getopt_long(argc, argv, "acCd:ef:F:h:iI:lL:Op:P:RsS:t:T:uU:vWxX:",
145146
cmdopts, NULL)) != -1)
146147
{
147148
switch (c)
@@ -159,6 +160,9 @@ main(int argc, char **argv)
159160
case 'd':
160161
opts->dbname = strdup(optarg);
161162
break;
163+
case 'e':
164+
opts->exit_on_error = true;
165+
break;
162166
case 'f': /* output file name */
163167
opts->filename = strdup(optarg);
164168
break;
@@ -321,10 +325,10 @@ main(int argc, char **argv)
321325
/* Let the archiver know how noisy to be */
322326
AH->verbose = opts->verbose;
323327

324-
/* restore keeps submitting sql commands as "pg_restore ... | psql ... "
325-
* this behavior choice could be turned into an option.
328+
/*
329+
* Whether to keep submitting sql commands as "pg_restore ... | psql ... "
326330
*/
327-
AH->die_on_errors = false;
331+
AH->exit_on_error = opts->exit_on_error;
328332

329333
if (opts->tocFile)
330334
SortTocFromFile(AH, opts);
@@ -391,6 +395,7 @@ usage(const char *progname)
391395
printf(_(" -p, --port=PORT database server port number\n"));
392396
printf(_(" -U, --username=NAME connect as specified database user\n"));
393397
printf(_(" -W, --password force password prompt (should happen automatically)\n"));
398+
printf(_(" -e, --exit-on-error exit on error, default is to continue\n"));
394399

395400
printf(_("\nIf no input file name is supplied, then standard input is used.\n\n"));
396401
printf(_("Report bugs to <pgsql-bugs@postgresql.org>.\n"));

0 commit comments

Comments
 (0)