Thread

  1. pg_restore ignores PGDATABASE

    Erik Rijkers <er@xs4all.nl> — 2012-02-18T16:58:19Z

    pg_restore ignores environment variable PGDATABASE.
    
    Is this intentional?  (perhaps because of the risk of restoring into the wrong db?)
    
    I would prefer if it would honor the PGDATABASE variable, but if it does ignore it intentionally,
    the following (from 9.2devel docs) is obviously incorrect:
    
    "This utility, like most other PostgreSQL utilities, also uses the environment variables supported
    by libpq (see Section 31.13)."
    
    I could look into fixing one (binary) or the other (docs), but what /is/ the preferred behavior?
    
    
    thanks,
    
    
    Erik Rijkers
    
    
    
    
    
  2. Re: pg_restore ignores PGDATABASE

    Robert Haas <robertmhaas@gmail.com> — 2012-02-19T05:27:59Z

    On Sat, Feb 18, 2012 at 11:58 AM, Erik Rijkers <er@xs4all.nl> wrote:
    > pg_restore ignores environment variable PGDATABASE.
    
    What exactly do you mean by "ignores"?  pg_restore prints results to
    standard output unless a database name is specified.  AFAIK, there's
    no syntax to say "I want a direct-to-database restore to whatever you
    think the default database is".
    
    -- 
    Robert Haas
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company
    
    
  3. Re: pg_restore ignores PGDATABASE

    Erik Rijkers <er@xs4all.nl> — 2012-02-19T06:18:56Z

    On Sun, February 19, 2012 06:27, Robert Haas wrote:
    > On Sat, Feb 18, 2012 at 11:58 AM, Erik Rijkers <er@xs4all.nl> wrote:
    >> pg_restore ignores environment variable PGDATABASE.
    >
    > What exactly do you mean by "ignores"?  pg_restore prints results to
    > standard output unless a database name is specified.  AFAIK, there's
    > no syntax to say "I want a direct-to-database restore to whatever you
    > think the default database is".
    
    That's right, and that seems contradictory with:
    
    "This utility [pg_restore], like most other PostgreSQL utilities, also uses the environment
    variables supported by libpq (see Section 31.13)."
    
    as pg_restore does 'ignore' (for want of a better word) PGDATABASE.
    
    But I think I can conclude from your reply that that behaviour is indeed intentional.
    
    
    thanks,
    
    Erik Rijkers
    
    
    
    
  4. Re: pg_restore ignores PGDATABASE

    Robert Haas <robertmhaas@gmail.com> — 2012-02-19T13:02:15Z

    On Sun, Feb 19, 2012 at 1:18 AM, Erik Rijkers <er@xs4all.nl> wrote:
    > On Sun, February 19, 2012 06:27, Robert Haas wrote:
    >> On Sat, Feb 18, 2012 at 11:58 AM, Erik Rijkers <er@xs4all.nl> wrote:
    >>> pg_restore ignores environment variable PGDATABASE.
    >>
    >> What exactly do you mean by "ignores"?  pg_restore prints results to
    >> standard output unless a database name is specified.  AFAIK, there's
    >> no syntax to say "I want a direct-to-database restore to whatever you
    >> think the default database is".
    >
    > That's right, and that seems contradictory with:
    >
    > "This utility [pg_restore], like most other PostgreSQL utilities, also uses the environment
    > variables supported by libpq (see Section 31.13)."
    >
    > as pg_restore does 'ignore' (for want of a better word) PGDATABASE.
    >
    > But I think I can conclude from your reply that that behaviour is indeed intentional.
    
    It is, because we want there to be a way of converting a custom or tar
    format archive back to text.  I think that probably works out for the
    best anyway, since pg_restore is a sufficiently dangerous operation
    that you want to be darn sure you're not doing it on the wrong
    database.  dropdb also requires a database name, while createdb does
    not, for similar reasons...
    
    -- 
    Robert Haas
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company
    
    
  5. Re: pg_restore ignores PGDATABASE

    Andrew Dunstan <andrew@dunslane.net> — 2012-02-19T15:25:55Z

    
    On 02/19/2012 08:02 AM, Robert Haas wrote:
    > On Sun, Feb 19, 2012 at 1:18 AM, Erik Rijkers<er@xs4all.nl>  wrote:
    >> On Sun, February 19, 2012 06:27, Robert Haas wrote:
    >>> On Sat, Feb 18, 2012 at 11:58 AM, Erik Rijkers<er@xs4all.nl>  wrote:
    >>>> pg_restore ignores environment variable PGDATABASE.
    >>> What exactly do you mean by "ignores"?  pg_restore prints results to
    >>> standard output unless a database name is specified.  AFAIK, there's
    >>> no syntax to say "I want a direct-to-database restore to whatever you
    >>> think the default database is".
    >> That's right, and that seems contradictory with:
    >>
    >> "This utility [pg_restore], like most other PostgreSQL utilities, also uses the environment
    >> variables supported by libpq (see Section 31.13)."
    >>
    >> as pg_restore does 'ignore' (for want of a better word) PGDATABASE.
    >>
    >> But I think I can conclude from your reply that that behaviour is indeed intentional.
    > It is, because we want there to be a way of converting a custom or tar
    > format archive back to text.  I think that probably works out for the
    > best anyway, since pg_restore is a sufficiently dangerous operation
    > that you want to be darn sure you're not doing it on the wrong
    > database.  dropdb also requires a database name, while createdb does
    > not, for similar reasons...
    
    Right, I think we probably need to adjust the docs slightly to match 
    this reality.
    
    cheers
    
    andrew
    
    
    
  6. Re: pg_restore ignores PGDATABASE

    Bruce Momjian <bruce@momjian.us> — 2012-08-27T19:27:19Z

    On Sun, Feb 19, 2012 at 10:25:55AM -0500, Andrew Dunstan wrote:
    > 
    > 
    > On 02/19/2012 08:02 AM, Robert Haas wrote:
    > >On Sun, Feb 19, 2012 at 1:18 AM, Erik Rijkers<er@xs4all.nl>  wrote:
    > >>On Sun, February 19, 2012 06:27, Robert Haas wrote:
    > >>>On Sat, Feb 18, 2012 at 11:58 AM, Erik Rijkers<er@xs4all.nl>  wrote:
    > >>>>pg_restore ignores environment variable PGDATABASE.
    > >>>What exactly do you mean by "ignores"?  pg_restore prints results to
    > >>>standard output unless a database name is specified.  AFAIK, there's
    > >>>no syntax to say "I want a direct-to-database restore to whatever you
    > >>>think the default database is".
    > >>That's right, and that seems contradictory with:
    > >>
    > >>"This utility [pg_restore], like most other PostgreSQL utilities, also uses the environment
    > >>variables supported by libpq (see Section 31.13)."
    > >>
    > >>as pg_restore does 'ignore' (for want of a better word) PGDATABASE.
    > >>
    > >>But I think I can conclude from your reply that that behaviour is indeed intentional.
    > >It is, because we want there to be a way of converting a custom or tar
    > >format archive back to text.  I think that probably works out for the
    > >best anyway, since pg_restore is a sufficiently dangerous operation
    > >that you want to be darn sure you're not doing it on the wrong
    > >database.  dropdb also requires a database name, while createdb does
    > >not, for similar reasons...
    > 
    > Right, I think we probably need to adjust the docs slightly to match
    > this reality.
    
    Done, with the attached patch.
    
    -- 
      Bruce Momjian  <bruce@momjian.us>        http://momjian.us
      EnterpriseDB                             http://enterprisedb.com
    
      + It's impossible for everything to be true. +