Does anyone know why 'pg_restore -d' doesn't display the commands being
executed, like you see when you don't use '-d':

	pg_dump -Fc test >/tmp/test.db
	pg_restore < /tmp/test.db
	pg_restore -d test < /tmp/test.db

The first pg_restore displays the commands, while the second does not.

-- 
  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

Mon, 6 Oct 2003 11:08:10 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
pg_restore -d doesn't display output
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Does anyone know why 'pg_restore -d' doesn't display the commands being
> executed, like you see when you don't use '-d':

> 	pg_restore < /tmp/test.db
> 	pg_restore -d test < /tmp/test.db

The first sends a script to stdout (effectively equivalent to pg_dump
plain style).  The second sends the commands to a backend.

I would have expected there to be a --verbose option that would also echo
the commands to stderr, but it doesn't look like there's any support for
that in the code.

			regards, tom lane

Mon, 06 Oct 2003 12:12:01 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Re: pg_restore -d doesn't display output 
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Does anyone know why 'pg_restore -d' doesn't display the commands being
> > executed, like you see when you don't use '-d':
> 
> > 	pg_restore < /tmp/test.db
> > 	pg_restore -d test < /tmp/test.db
> 
> The first sends a script to stdout (effectively equivalent to pg_dump
> plain style).  The second sends the commands to a backend.
> 
> I would have expected there to be a --verbose option that would also echo
> the commands to stderr, but it doesn't look like there's any support for
> that in the code.

I don't understand why sending something to a backend should effect the
script output.

-- 
  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

Mon, 6 Oct 2003 12:34:53 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
Re: pg_restore -d doesn't display output
Bruce Momjian wrote:
> Tom Lane wrote:
> > Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > > Does anyone know why 'pg_restore -d' doesn't display the commands being
> > > executed, like you see when you don't use '-d':
> > 
> > > 	pg_restore < /tmp/test.db
> > > 	pg_restore -d test < /tmp/test.db
> > 
> > The first sends a script to stdout (effectively equivalent to pg_dump
> > plain style).  The second sends the commands to a backend.
> > 
> > I would have expected there to be a --verbose option that would also echo
> > the commands to stderr, but it doesn't look like there's any support for
> > that in the code.
> 
> I don't understand why sending something to a backend should effect the
> script output.

I have patched pg_restore to output the script contents if you restore
with -v:

	pg_restore -v -d test /tmp/x

Patch attached.  I will save this for 7.5.

-- 
  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: 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.78
diff -c -c -r1.78 pg_backup_archiver.c
*** src/bin/pg_dump/pg_backup_archiver.c	3 Oct 2003 20:10:59 -0000	1.78
--- src/bin/pg_dump/pg_backup_archiver.c	8 Oct 2003 04:43:39 -0000
***************
*** 1232,1246 ****
  		 * connected then send it to the DB.
  		 */
  		if (RestoringToDB(AH))
! 			return ExecuteSqlCommandBuf(AH, (void *) ptr, size * nmemb);		/* Always 1, currently */
! 		else
  		{
  			res = fwrite((void *) ptr, size, nmemb, AH->OF);
  			if (res != nmemb)
  				die_horribly(AH, modulename, "could not write to output file (%lu != %lu)\n",
  							 (unsigned long) res, (unsigned long) nmemb);
- 			return res;
  		}
  	}
  }
  
--- 1232,1247 ----
  		 * connected then send it to the DB.
  		 */
  		if (RestoringToDB(AH))
! 			res = ExecuteSqlCommandBuf(AH, (void *) ptr, size * nmemb);	/* Always 1, currently */
! 
! 		if (!RestoringToDB(AH) || AH->public.verbose)
  		{
  			res = fwrite((void *) ptr, size, nmemb, AH->OF);
  			if (res != nmemb)
  				die_horribly(AH, modulename, "could not write to output file (%lu != %lu)\n",
  							 (unsigned long) res, (unsigned long) nmemb);
  		}
+ 		return res;
  	}
  }
Wed, 8 Oct 2003 00:44:45 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
Re: [HACKERS] pg_restore -d doesn't display output
Bruce Momjian writes:

> I have patched pg_restore to output the script contents if you restore
> with -v:

I don't think it's a good idea to overload the -v switch with it.  A
separate switch seems OK, but I don't quite get the point of this
functionality, actually.

-- 
Peter Eisentraut   peter_e@gmx.net


Wed, 8 Oct 2003 19:44:17 +0200 (CEST)
Peter Eisentraut <peter_e@gmx.net>
Re: [HACKERS] pg_restore -d doesn't display output
Peter Eisentraut wrote:
> Bruce Momjian writes:
> 
> > I have patched pg_restore to output the script contents if you restore
> > with -v:
> 
> I don't think it's a good idea to overload the -v switch with it.  A
> separate switch seems OK, but I don't quite get the point of this
> functionality, actually.

Oh, OK.  When I was testing, I didn't realize that pg_restore doesn't do
anything unless you specify the database via -d, but I see it in the
docs now:

       pg_restore can operate in two modes: If a database name is
       specified, the  archive  is  restored  directly  into  the
       database.  Otherwise, a script containing the SQL commands
       necessary to rebuild the database is created (and  written
       to a file or standard output), similar to the ones created
       by the pg_dump plain text format. Some of the options con-
       trolling  the  script  output  are  therefore analogous to
       pg_dump options.

-- 
  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

Wed, 8 Oct 2003 13:48:43 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
Re: [HACKERS] pg_restore -d doesn't display output