diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml index 4973d27be9237abe81149275f8099ff4624e85fd..12c703b79bceab4af26981cf7e1faa7a55e8305a 100644 --- a/doc/src/sgml/ref/pg_dump.sgml +++ b/doc/src/sgml/ref/pg_dump.sgml @@ -1,5 +1,5 @@ <!-- -$PostgreSQL: pgsql/doc/src/sgml/ref/pg_dump.sgml,v 1.70 2004/05/31 13:37:52 momjian Exp $ +$PostgreSQL: pgsql/doc/src/sgml/ref/pg_dump.sgml,v 1.71 2004/06/07 20:35:57 momjian Exp $ PostgreSQL documentation --> @@ -403,7 +403,8 @@ PostgreSQL documentation <para> Specifies verbose mode. This will cause <application>pg_dump</application> to output detailed object - comments in the dump file, and progress messages to standard error. + comments and start/stop times to the dump file, and progress + messages to standard error. </para> </listitem> </varlistentry> diff --git a/doc/src/sgml/ref/pg_dumpall.sgml b/doc/src/sgml/ref/pg_dumpall.sgml index 06ecce39588a34d5e292d0fe37ff0e5303368233..befd73ba66f4fe53a4f19d90f1b7f80d56ea441b 100644 --- a/doc/src/sgml/ref/pg_dumpall.sgml +++ b/doc/src/sgml/ref/pg_dumpall.sgml @@ -1,5 +1,5 @@ <!-- -$PostgreSQL: pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v 1.43 2003/11/29 19:51:39 pgsql Exp $ +$PostgreSQL: pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v 1.44 2004/06/07 20:35:57 momjian Exp $ PostgreSQL documentation --> @@ -192,8 +192,9 @@ PostgreSQL documentation <listitem> <para> Specifies verbose mode. This will cause - <application>pg_dumpall</application> to print progress - messages to standard error. + <application>pg_dumpall</application> to output start/stop + times to the dump file, and progress messages to standard error. + It will also enable verbose output in <application>pg_dump</>. </para> </listitem> </varlistentry> diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index f71abb7da9f863d514f47bf349cdfb31170eee59..292e70a6db8164a14855576e296d22f3f2d37274 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -12,7 +12,7 @@ * by PostgreSQL * * IDENTIFICATION - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.373 2004/06/03 00:07:36 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.374 2004/06/07 20:35:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -32,6 +32,7 @@ #ifdef HAVE_TERMIOS_H #include <termios.h> #endif +#include <time.h> #ifndef HAVE_STRDUP #include "strdup.h" @@ -163,6 +164,7 @@ static char *myFormatType(const char *typname, int32 typmod); static const char *fmtQualifiedId(const char *schema, const char *id); static int dumpBlobs(Archive *AH, void *arg); static void dumpDatabase(Archive *AH); +static void dumpTimestamp(Archive *AH, char *msg); static void dumpEncoding(Archive *AH); static const char *getAttrName(int attrnum, TableInfo *tblInfo); static const char *fmtCopyColumnList(const TableInfo *ti); @@ -598,6 +600,9 @@ main(int argc, char **argv) * in a safe order. */ + if (g_fout->verbose) + dumpTimestamp(g_fout, "Started on"); + /* First the special encoding entry. */ dumpEncoding(g_fout); @@ -615,6 +620,9 @@ main(int argc, char **argv) dumpDumpableObject(g_fout, dobjs[i]); } + if (g_fout->verbose) + dumpTimestamp(g_fout, "Completed on"); + /* * And finally we can do the actual output. */ @@ -1283,6 +1291,35 @@ dumpDatabase(Archive *AH) } +/* + * dumpTimestamp + */ +static void +dumpTimestamp(Archive *AH, char *msg) +{ + char buf[256]; + time_t now = time(NULL); + + if (strftime(buf, 256, "%Y-%m-%d %H:%M:%S %Z", localtime(&now)) != 0) + { + PQExpBuffer qry = createPQExpBuffer(); + + appendPQExpBuffer(qry, "-- "); + appendPQExpBuffer(qry, msg); + appendPQExpBuffer(qry, " "); + appendPQExpBuffer(qry, buf); + appendPQExpBuffer(qry, "\n"); + + ArchiveEntry(AH, nilCatalogId, createDumpId(), + "DUMP TIMESTAMP", NULL, "", + false, "DUMP TIMESTAMP", qry->data, "", NULL, + NULL, 0, + NULL, NULL); + destroyPQExpBuffer(qry); + } +} + + /* * dumpEncoding: put the correct encoding into the archive */ diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index e2834fbc260489b81fd9095e0ed3d89cc6f50926..0e441bb890d5d298c10767fc656eb22ccc985927 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.37 2004/06/05 04:27:48 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.38 2004/06/07 20:35:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -50,6 +50,7 @@ static void dumpDatabaseConfig(PGconn *conn, const char *dbname); static void dumpUserConfig(PGconn *conn, const char *username); static void makeAlterConfigCommand(const char *arrayitem, const char *type, const char *name); static void dumpDatabases(PGconn *conn); +static void dumpTimestamp(char *msg); static int runPgDump(const char *dbname); static PGconn *connectDatabase(const char *dbname, const char *pghost, const char *pgport, @@ -220,6 +221,9 @@ main(int argc, char *argv[]) conn = connectDatabase("template1", pghost, pgport, pguser, force_password); printf("--\n-- PostgreSQL database cluster dump\n--\n\n"); + if (verbose) + dumpTimestamp("Started on"); + printf("\\connect \"template1\"\n\n"); if (!data_only) @@ -237,6 +241,8 @@ main(int argc, char *argv[]) PQfinish(conn); + if (verbose) + dumpTimestamp("Completed on"); printf("--\n-- PostgreSQL database cluster dump complete\n--\n\n"); exit(0); @@ -808,3 +814,17 @@ executeQuery(PGconn *conn, const char *query) return res; } + + +/* + * dumpTimestamp + */ +static void +dumpTimestamp(char *msg) +{ + char buf[256]; + time_t now = time(NULL); + + if (strftime(buf, 256, "%Y-%m-%d %H:%M:%S %Z", localtime(&now)) != 0) + printf("-- %s %s\n\n", msg, buf); +}