Re: pg_upgrade and PGPORT

Bruce Momjian <bruce@momjian.us>

From: Bruce Momjian <bruce@momjian.us>
To: Bruce Momjian <bruce@momjian.us>
Cc: Robert Haas <robertmhaas@gmail.com>, Peter Eisentraut <peter_e@gmx.net>, Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2011-05-14T00:45:14Z
Lists: pgsql-hackers

Attachments

Bruce Momjian wrote:
> > >> ? ? ? Performing Consistency Checks
> > >> ? ? ? -----------------------------
> > >> ? ? ? ignoring libpq environment variable PGPORT
> > >
> > > I haven't tried it, but I suppose option.c will now make use of PGPORT
> > > and then later you get that message that it was ignored?
> > 
> > Either way, it hardly seems necessary to emit a log message stating
> > that you are unsetting an environment variable.
> 
> I think the whole idea of worrying about libpq environment variables is
> useless.  I looked at the list of libpq environment variables and I saw
> a lot of useful ones, like PGUSER and PGPASSFILE, which we currently
> throw an error.
> 
> I propose we only disable the use of PGHOST and even then that prevents
> users from controlling tcp vs. unix domain connections.

OK, it turns out the environment variable handling in pg_upgrade was
worse than I thought.  This patch:

o  disables only PGHOST and only if it is set to a non-local value; 
   all other environment variables are honored;  PGDATA isn't even seen
   by libpq
o  push --user value into the PGUSER environment variable so pg_ctl -w
   uses it;  pg_ctl has no --user flag; this is important for pre-9.1
   pg_ctl binaries
o  move putenv() function to utils.c now that it is used by option.c
o  allow pg_ctl failure to continue with a connection request to get a
   possible error message, then exit
o  update document to be clearer and mention environment variables

Patch attached.

-- 
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +