Jon Jensen wrote:
> On Fri, 28 May 2004, Christopher Kings-Lynne wrote:
> 
> > > I've encountered a situation where I'd like to store some information 
> > > about the database when I do a pg_dump. For instance, the timestamp of 
> > > the dump. And some other information that I pull from the database.
> > 
> > I think every dump should dump the timestamp regardless...
> 
> That would cause me a lot of trouble. Every night I do a pg_dump on all my
> databases to a temporary file. Then I use cmp to compare that dump to last
> night's dump. If they're identical I just delete the new dump so that only
> the old one remains, with its original timestamp. That way rsync doesn't
> see any change, and doesn't waste any time comparing it when we do
> backups. It's also handy to see the last day the dump changed by looking
> at the file's timestamp.
> 
> Granted, this is only of interest on databases that don't change at all, 
> but on a multi-user system we have a surprising number of databases that 
> don't change at all for days (alongside the ones that change all the time, 
> of course).
> 
> However, I would like to see an option to include the timestamp if someone 
> wants it.

The following patch adds start/stop times for pg_dump and pg_dumpall
when verbose output is selected:

        --
        -- PostgreSQL database cluster dump
        -- Started on 2004-06-04 01:01:35 EDT
        --
        
        --
        -- PostgreSQL database dump
        -- Started on 2004-06-04 01:01:36 EDT
        --
        
        --
        -- PostgreSQL database dump complete
        -- Completed on 2004-06-04 01:01:36 EDT
        --
        
        --
        -- PostgreSQL database cluster dump complete
        -- Completed on 2004-06-04 01:01:36 EDT
        --

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (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_dump.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/pg_dump.sgml,v
retrieving revision 1.70
diff -c -c -r1.70 pg_dump.sgml
*** doc/src/sgml/ref/pg_dump.sgml       31 May 2004 13:37:52 -0000      1.70
--- doc/src/sgml/ref/pg_dump.sgml       4 Jun 2004 04:58:18 -0000
***************
*** 403,409 ****
         <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.
         </para>
        </listitem>
       </varlistentry>
--- 403,410 ----
         <para>
        Specifies verbose mode.  This will cause
        <application>pg_dump</application> to output detailed object
!         comments in the dump file, start and stop times, and progress 
!         messages to standard error.
         </para>
        </listitem>
       </varlistentry>
Index: doc/src/sgml/ref/pg_dumpall.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/pg_dumpall.sgml,v
retrieving revision 1.43
diff -c -c -r1.43 pg_dumpall.sgml
*** doc/src/sgml/ref/pg_dumpall.sgml    29 Nov 2003 19:51:39 -0000      1.43
--- doc/src/sgml/ref/pg_dumpall.sgml    4 Jun 2004 04:58:18 -0000
***************
*** 192,199 ****
        <listitem>
         <para>
        Specifies verbose mode.  This will cause
!       <application>pg_dumpall</application> to print progress
!       messages to standard error.
         </para>
        </listitem>
       </varlistentry>
--- 192,200 ----
        <listitem>
         <para>
        Specifies verbose mode.  This will cause
!       <application>pg_dumpall</application> to output start and stop
!         times in the dump file, and progress messages to standard error.
!         It will also enable verbose output in <application>pg_dump</>.
         </para>
        </listitem>
       </varlistentry>
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.87
diff -c -c -r1.87 pg_backup_archiver.c
*** src/bin/pg_dump/pg_backup_archiver.c        19 May 2004 21:21:26 -0000      1.87
--- src/bin/pg_dump/pg_backup_archiver.c        4 Jun 2004 04:58:21 -0000
***************
*** 28,33 ****
--- 28,34 ----
  
  #include <ctype.h>
  #include <errno.h>
+ #include <time.h>
  #include <unistd.h>
  
  #include "pqexpbuffer.h"
***************
*** 202,208 ****
        if (ropt->filename || ropt->compression)
                sav = SetOutput(AH, ropt->filename, ropt->compression);
  
!       ahprintf(AH, "--\n-- PostgreSQL database dump\n--\n\n");
  
        /*
         * Establish important parameter values right away.
--- 203,218 ----
        if (ropt->filename || ropt->compression)
                sav = SetOutput(AH, ropt->filename, ropt->compression);
  
!       ahprintf(AH, "--\n-- PostgreSQL database dump\n");
!       if (AH->public.verbose)
!       {
!               char buf[256];
!               time_t now = time(NULL);
! 
!               if (strftime(buf, 256, "%Y-%m-%d %H:%M:%S %Z", localtime(&now)) != 0)
!                       ahprintf(AH, "-- Started on %s\n", buf);
!       }
!       ahprintf(AH, "--\n\n");
  
        /*
         * Establish important parameter values right away.
***************
*** 385,391 ****
                }
        }
  
!       ahprintf(AH, "--\n-- PostgreSQL database dump complete\n--\n\n");
  }
  
  /*
--- 395,410 ----
                }
        }
  
!       ahprintf(AH, "--\n-- PostgreSQL database dump complete\n");
!       if (AH->public.verbose)
!       {
!               char buf[256];
!               time_t now = time(NULL);
! 
!               if (strftime(buf, 256, "%Y-%m-%d %H:%M:%S %Z", localtime(&now)) != 0)
!                       ahprintf(AH, "-- Completed on %s\n", buf);
!       }
!       ahprintf(AH, "--\n\n");
  }
  
  /*
Index: src/bin/pg_dump/pg_dumpall.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/bin/pg_dump/pg_dumpall.c,v
retrieving revision 1.36
diff -c -c -r1.36 pg_dumpall.c
*** src/bin/pg_dump/pg_dumpall.c        3 Jun 2004 00:07:36 -0000       1.36
--- src/bin/pg_dump/pg_dumpall.c        4 Jun 2004 04:58:22 -0000
***************
*** 21,26 ****
--- 21,27 ----
  #include "strdup.h"
  #endif
  #include <errno.h>
+ #include <time.h>
  
  #include "getopt_long.h"
  
***************
*** 219,226 ****
  
        conn = connectDatabase("template1", pghost, pgport, pguser, force_password);
  
!       printf("--\n");
!       printf("-- PostgreSQL database cluster dump\n");
        printf("--\n\n");
        printf("\\connect \"template1\"\n\n");
  
--- 220,234 ----
  
        conn = connectDatabase("template1", pghost, pgport, pguser, force_password);
  
!       printf("--\n-- PostgreSQL database cluster dump\n");
!       if (verbose)
!       {
!               char buf[256];
!               time_t now = time(NULL);
! 
!               if (strftime(buf, 256, "%Y-%m-%d %H:%M:%S %Z", localtime(&now)) != 0)
!                       printf("-- Started on %s\n", buf);
!       }
        printf("--\n\n");
        printf("\\connect \"template1\"\n\n");
  
***************
*** 239,246 ****
  
        PQfinish(conn);
  
!       printf("--\n");
!       printf("-- PostgreSQL database cluster dump complete\n");
        printf("--\n\n");
  
        exit(0);
--- 247,261 ----
  
        PQfinish(conn);
  
!       printf("--\n-- PostgreSQL database cluster dump complete\n");
!       if (verbose)
!       {
!               char buf[256];
!               time_t now = time(NULL);
! 
!               if (strftime(buf, 256, "%Y-%m-%d %H:%M:%S %Z", localtime(&now)) != 0)
!                       printf("-- Completed on %s\n", buf);
!       }
        printf("--\n\n");
  
        exit(0);
---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to