From 913661380382f268d2eec10f5c5e1ec1497fdd32 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Mon, 7 Jun 2004 20:35:57 +0000 Subject: [PATCH] Add start/stop times for pg_dump/pg_dumpall when verbose output is used. --- doc/src/sgml/ref/pg_dump.sgml | 5 ++-- doc/src/sgml/ref/pg_dumpall.sgml | 7 +++--- src/bin/pg_dump/pg_dump.c | 39 +++++++++++++++++++++++++++++++- src/bin/pg_dump/pg_dumpall.c | 22 +++++++++++++++++- 4 files changed, 66 insertions(+), 7 deletions(-) diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml index 4973d27be9..12c703b79b 100644 --- a/doc/src/sgml/ref/pg_dump.sgml +++ b/doc/src/sgml/ref/pg_dump.sgml @@ -1,5 +1,5 @@ @@ -403,7 +403,8 @@ PostgreSQL documentation Specifies verbose mode. This will cause pg_dump 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. diff --git a/doc/src/sgml/ref/pg_dumpall.sgml b/doc/src/sgml/ref/pg_dumpall.sgml index 06ecce3958..befd73ba66 100644 --- a/doc/src/sgml/ref/pg_dumpall.sgml +++ b/doc/src/sgml/ref/pg_dumpall.sgml @@ -1,5 +1,5 @@ @@ -192,8 +192,9 @@ PostgreSQL documentation Specifies verbose mode. This will cause - pg_dumpall to print progress - messages to standard error. + pg_dumpall to output start/stop + times to the dump file, and progress messages to standard error. + It will also enable verbose output in pg_dump. diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index f71abb7da9..292e70a6db 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 #endif +#include #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 e2834fbc26..0e441bb890 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); +}