Re: pg_dump 'die on errors' option - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: pg_dump 'die on errors' option |
Date | |
Msg-id | 200408200420.i7K4KO127649@candle.pha.pa.us Whole thread Raw |
In response to | pg_dump 'die on errors' option (Fabien COELHO <coelho@cri.ensmp.fr>) |
List | pgsql-patches |
Patch applied. Thanks. I renamed 'die-on-errors' to 'exit-on-error' which I think was clearer. Modified patch attached. --------------------------------------------------------------------------- Fabien COELHO wrote: > > Dear patchers, > > Please find attached a submission to add a "die on errors" 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. > > It works for me. Maybe Philip could test that it works for him? > > Have a nice day, > > -- > Fabien Coelho - coelho@cri.ensmp.fr Content-Description: [ Attachment, skipping... ] > > ---------------------------(end of broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://archives.postgresql.org -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 Index: doc/src/sgml/ref/pg_restore.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/pg_restore.sgml,v retrieving revision 1.47 diff -c -c -r1.47 pg_restore.sgml *** doc/src/sgml/ref/pg_restore.sgml 13 Jul 2004 02:59:49 -0000 1.47 --- doc/src/sgml/ref/pg_restore.sgml 20 Aug 2004 04:09:31 -0000 *************** *** 130,135 **** --- 130,147 ---- </varlistentry> <varlistentry> + <term><option>-e</option></term> + <term><option>--exit-on-error</option></term> + <listitem> + <para> + Exit if an error is encountered while sending SQL commands to + the database. The default is to continue and to display a count of + errors at the end of the restoration. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><option>-f <replaceable>filename</replaceable></option></term> <term><option>--file=<replaceable>filename</replaceable></option></term> <listitem> Index: src/bin/pg_dump/pg_backup.h =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/pg_dump/pg_backup.h,v retrieving revision 1.31 diff -c -c -r1.31 pg_backup.h *** src/bin/pg_dump/pg_backup.h 13 Jul 2004 03:00:17 -0000 1.31 --- src/bin/pg_dump/pg_backup.h 20 Aug 2004 04:09:37 -0000 *************** *** 59,65 **** int maxRemoteVersion; /* error handling */ ! bool die_on_errors; /* whether to die on sql errors... */ int n_errors; /* number of errors (if no die) */ /* The rest is private */ --- 59,65 ---- int maxRemoteVersion; /* error handling */ ! bool exit_on_error; /* whether to exit on SQL errors... */ int n_errors; /* number of errors (if no die) */ /* The rest is private */ *************** *** 103,108 **** --- 103,109 ---- char *username; int ignoreVersion; int requirePassword; + int exit_on_error; bool *idWanted; bool limitToList; Index: src/bin/pg_dump/pg_backup_archiver.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/pg_dump/pg_backup_archiver.c,v retrieving revision 1.92 diff -c -c -r1.92 pg_backup_archiver.c *** src/bin/pg_dump/pg_backup_archiver.c 13 Aug 2004 21:37:28 -0000 1.92 --- src/bin/pg_dump/pg_backup_archiver.c 20 Aug 2004 04:09:41 -0000 *************** *** 457,462 **** --- 457,463 ---- opts->format = archUnknown; opts->suppressDumpWarnings = false; + opts->exit_on_error = false; return opts; } *************** *** 1227,1233 **** { va_list ap; va_start(ap, fmt); ! if (AH->public.die_on_errors) { _die_horribly(AH, modulename, fmt, ap); } --- 1228,1234 ---- { va_list ap; va_start(ap, fmt); ! if (AH->public.exit_on_error) { _die_horribly(AH, modulename, fmt, ap); } *************** *** 1693,1699 **** } /* sql error handling */ ! AH->public.die_on_errors = true; AH->public.n_errors = 0; return AH; --- 1694,1700 ---- } /* sql error handling */ ! AH->public.exit_on_error = true; AH->public.n_errors = 0; return AH; Index: src/bin/pg_dump/pg_restore.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/pg_dump/pg_restore.c,v retrieving revision 1.59 diff -c -c -r1.59 pg_restore.c *** src/bin/pg_dump/pg_restore.c 13 Jul 2004 03:00:17 -0000 1.59 --- src/bin/pg_dump/pg_restore.c 20 Aug 2004 04:09:42 -0000 *************** *** 90,95 **** --- 90,96 ---- {"create", 0, NULL, 'C'}, {"data-only", 0, NULL, 'a'}, {"dbname", 1, NULL, 'd'}, + {"exit-on-error", 0, NULL, 'e'}, {"file", 1, NULL, 'f'}, {"format", 1, NULL, 'F'}, {"function", 1, NULL, 'P'}, *************** *** 141,147 **** } } ! while ((c = getopt_long(argc, argv, "acCd:f:F:h:iI:lL:Op:P:RsS:t:T:uU:vWxX:", cmdopts, NULL)) != -1) { switch (c) --- 142,148 ---- } } ! while ((c = getopt_long(argc, argv, "acCd:ef:F:h:iI:lL:Op:P:RsS:t:T:uU:vWxX:", cmdopts, NULL)) != -1) { switch (c) *************** *** 159,164 **** --- 160,168 ---- case 'd': opts->dbname = strdup(optarg); break; + case 'e': + opts->exit_on_error = true; + break; case 'f': /* output file name */ opts->filename = strdup(optarg); break; *************** *** 321,330 **** /* Let the archiver know how noisy to be */ AH->verbose = opts->verbose; ! /* restore keeps submitting sql commands as "pg_restore ... | psql ... " ! * this behavior choice could be turned into an option. */ ! AH->die_on_errors = false; if (opts->tocFile) SortTocFromFile(AH, opts); --- 325,334 ---- /* Let the archiver know how noisy to be */ AH->verbose = opts->verbose; ! /* ! * Whether to keep submitting sql commands as "pg_restore ... | psql ... " */ ! AH->exit_on_error = opts->exit_on_error; if (opts->tocFile) SortTocFromFile(AH, opts); *************** *** 391,396 **** --- 395,401 ---- printf(_(" -p, --port=PORT database server port number\n")); printf(_(" -U, --username=NAME connect as specified database user\n")); printf(_(" -W, --password force password prompt (should happen automatically)\n")); + printf(_(" -e, --exit-on-error exit on error, default is to continue\n")); printf(_("\nIf no input file name is supplied, then standard input is used.\n\n")); printf(_("Report bugs to <pgsql-bugs@postgresql.org>.\n"));
pgsql-patches by date: