Thread: pg_dump docs should mention TMPDIR

pg_dump docs should mention TMPDIR

From
Mark Stosberg
Date:
A suggested addition to the pg_dump docs:

This would be an extension to the documentation for the "tar" format:

The tar format needs some space to create temporary files. By default
"/tmp" is used. On systems with small "/tmp" partitions, set the
"TMPDIR" environment variable to a location with more space, such as
"/usr/tmp".

Also, I would like it if the pg_dump docs more assertively recommended
one of the "tar" or "custom" formats. They seem very similiar.

It woud also be nice to document that the full names "custom" and "tar" are
supported. Longer names can be nice for clarity.

( Unfortunately, wrong formats like "txx" also work instead of throwing
an error. )

    Mark

Re: pg_dump docs should mention TMPDIR

From
Tom Lane
Date:
Mark Stosberg <mark@summersault.com> writes:
> A suggested addition to the pg_dump docs:
> This would be an extension to the documentation for the "tar" format:

> The tar format needs some space to create temporary files. By default
> "/tmp" is used. On systems with small "/tmp" partitions, set the
> "TMPDIR" environment variable to a location with more space, such as
> "/usr/tmp".

There is no reference to TMPDIR in the pg_dump code.  It may be that
tmpfile() pays attention to such an environment variable on your
machine, but there's nothing about it in the Single Unix Spec.

> Also, I would like it if the pg_dump docs more assertively recommended
> one of the "tar" or "custom" formats. They seem very similiar.

Yeah.  I think it should specifically recommend custom format.  The only
reason for using tar format would be if you want to process the file
later with something other than pg_restore.

            regards, tom lane

Re: pg_dump docs should mention TMPDIR

From
Bruce Momjian
Date:
Tom Lane wrote:
> Mark Stosberg <mark@summersault.com> writes:
> > A suggested addition to the pg_dump docs:
> > This would be an extension to the documentation for the "tar" format:
>
> > The tar format needs some space to create temporary files. By default
> > "/tmp" is used. On systems with small "/tmp" partitions, set the
> > "TMPDIR" environment variable to a location with more space, such as
> > "/usr/tmp".
>
> There is no reference to TMPDIR in the pg_dump code.  It may be that
> tmpfile() pays attention to such an environment variable on your
> machine, but there's nothing about it in the Single Unix Spec.
>
> > Also, I would like it if the pg_dump docs more assertively recommended
> > one of the "tar" or "custom" formats. They seem very similiar.
>
> Yeah.  I think it should specifically recommend custom format.  The only
> reason for using tar format would be if you want to process the file
> later with something other than pg_restore.

I have applied the attached patch to recommend more clearly custom
pg_dump format over tar, by showing custom format examples first.

--
  Bruce Momjian   http://candle.pha.pa.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: doc/src/sgml/ref/pg_dump.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/ref/pg_dump.sgml,v
retrieving revision 1.83
diff -c -c -r1.83 pg_dump.sgml
*** doc/src/sgml/ref/pg_dump.sgml    15 Apr 2006 18:11:16 -0000    1.83
--- doc/src/sgml/ref/pg_dump.sgml    6 May 2006 23:23:23 -0000
***************
*** 244,271 ****
          </varlistentry>

          <varlistentry>
!          <term><literal>t</></term>
!          <term><literal>tar</></term>
           <listitem>
            <para>
!          Output a <command>tar</command> archive suitable for input into
!          <application>pg_restore</application>. Using this archive format
!          allows reordering and/or exclusion of database objects
!          at the time the database is restored. It is also possible to limit
!          which data is reloaded at restore time.
            </para>
           </listitem>
          </varlistentry>

          <varlistentry>
!          <term><literal>c</></term>
!          <term><literal>custom</></term>
           <listitem>
            <para>
!          Output a custom archive suitable for input into
!          <application>pg_restore</application>. This is the most flexible
!          format in that it allows reordering of loading data as well
!          as object definitions. This format is also compressed by default.
            </para>
           </listitem>
          </varlistentry>
--- 244,271 ----
          </varlistentry>

          <varlistentry>
!          <term><literal>c</></term>
!          <term><literal>custom</></term>
           <listitem>
            <para>
!          Output a custom archive suitable for input into
!          <application>pg_restore</application>. This is the most flexible
!          format in that it allows reordering of loading data as well
!          as object definitions. This format is also compressed by default.
            </para>
           </listitem>
          </varlistentry>

          <varlistentry>
!          <term><literal>t</></term>
!          <term><literal>tar</></term>
           <listitem>
            <para>
!          Output a <command>tar</command> archive suitable for input into
!          <application>pg_restore</application>. Using this archive format
!          allows reordering and/or exclusion of database objects
!          at the time the database is restored. It is also possible to limit
!          which data is reloaded at restore time.
            </para>
           </listitem>
          </varlistentry>
***************
*** 665,675 ****
    </para>

    <para>
!    To dump a database called <literal>mydb</> to a <filename>tar</filename>
     file:

  <screen>
! <prompt>$</prompt> <userinput>pg_dump -Ft mydb > db.tar</userinput>
  </screen>
    </para>

--- 665,675 ----
    </para>

    <para>
!    To dump a database called <literal>mydb</> to a file in custom format:
     file:

  <screen>
! <prompt>$</prompt> <userinput>pg_dump -Fc mydb > db.out</userinput>
  </screen>
    </para>

***************
*** 677,683 ****
     To reload this dump into an existing database called <literal>newdb</>:

  <screen>
! <prompt>$</prompt> <userinput>pg_restore -d newdb db.tar</userinput>
  </screen>
    </para>

--- 677,683 ----
     To reload this dump into an existing database called <literal>newdb</>:

  <screen>
! <prompt>$</prompt> <userinput>pg_restore -d newdb db.out</userinput>
  </screen>
    </para>


Re: pg_dump docs should mention TMPDIR

From
Mark Stosberg
Date:
On 2006-05-03, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Mark Stosberg <mark@summersault.com> writes:
>> A suggested addition to the pg_dump docs:
>> This would be an extension to the documentation for the "tar" format:
>
>> The tar format needs some space to create temporary files. By default
>> "/tmp" is used. On systems with small "/tmp" partitions, set the
>> "TMPDIR" environment variable to a location with more space, such as
>> "/usr/tmp".
>
> There is no reference to TMPDIR in the pg_dump code.  It may be that
> tmpfile() pays attention to such an environment variable on your
> machine, but there's nothing about it in the Single Unix Spec.

Yes, on FreeBSD "man tmpfile()" documents the use of TMPDIR.

If TMPDIR isn't being respected globally, perhaps there /should/ be
logic in the code to make that so. Even on fairly modern FreeBSD
installs, sometimes "/tmp" only has 256 MB of room. There really should
be a reliable way to specify a different temporary directory.

>> Also, I would like it if the pg_dump docs more assertively recommended
>> one of the "tar" or "custom" formats. They seem very similiar.
>
> Yeah.  I think it should specifically recommend custom format.  The only
> reason for using tar format would be if you want to process the file
> later with something other than pg_restore.

Thanks for the recommendation.

Is that any concern that over time newer pg_restore's won't read old
"custom" formats? That would be my only worry-- that the data would be
locked in a binary format which becomes unsupported.

    Mark

Re: pg_dump docs should mention TMPDIR

From
Bruce Momjian
Date:
Mark Stosberg wrote:
> >> Also, I would like it if the pg_dump docs more assertively recommended
> >> one of the "tar" or "custom" formats. They seem very similiar.
> >
> > Yeah.  I think it should specifically recommend custom format.  The only
> > reason for using tar format would be if you want to process the file
> > later with something other than pg_restore.
>
> Thanks for the recommendation.
>
> Is that any concern that over time newer pg_restore's won't read old
> "custom" formats? That would be my only worry-- that the data would be
> locked in a binary format which becomes unsupported.

No, we wouldn't do that.

--
  Bruce Momjian   http://candle.pha.pa.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: pg_dump docs should mention TMPDIR

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Mark Stosberg wrote:
>> Is that any concern that over time newer pg_restore's won't read old
>> "custom" formats? That would be my only worry-- that the data would be
>> locked in a binary format which becomes unsupported.

> No, we wouldn't do that.

Right, I can't imagine that we'd abandon support for pg_dump custom
format without many versions' warning.  AFAIK we still read pg_dump
output from 7.0 if not earlier ...

            regards, tom lane