Skip site navigation (1) Skip section navigation (2)

Re: 'pg_ctl restart' confused about pathname to postgresql.conf

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Josh Kupershmidt <schmiddy(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Pg Bugs <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: 'pg_ctl restart' confused about pathname to postgresql.conf
Date: 2012-08-16 22:16:46
Message-ID: 20120816221646.GA30286@momjian.us (view raw or flat)
Thread:
Lists: pgsql-bugs
I have applied the attached doc patch to document the problem with
relative paths and pg_ctl restart.

---------------------------------------------------------------------------

On Sun, Oct 23, 2011 at 08:49:25PM -0400, Josh Kupershmidt wrote:
> On Sat, Oct 22, 2011 at 12:13 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> > I think the reason it has a problem is that this is what's left in
> > postmaster.opts:
> >
> > /home/tgl/pgsql/bin/postgres "-D" "baz"
> >
> > (which is an accurate representation of the command line from startup)
> > and that -D switch gets fed to the postmaster as-is during restart.
> 
> I see.
> 
> > By and large, I would not recommend using a relative pathname to start
> > the postmaster, unless you plan to start it from the same working
> > directory every time.
> 
> Well, now I know. But that really seems like an annoying and arbitrary
> restriction, not to mention not being documented anywhere AFAICT.
> 
> (I came upon this problem because I often set up servers with
> binaries, libraries, and $PGDATA all tucked away under
> /home/postgres/, and it seemed natural to use a relative pathname as
> my data directory argument to pg_ctl since my working directory will
> usually be /home/postgres/ when I'm poking at the server.)
> 
> > We could possibly avoid this by having pg_ctl try to absolute-ify the -D
> > setting during postmaster start, but I'm not convinced it's worth the
> > trouble, or even that it's appropriate for pg_ctl to editorialize on the
> > user's choice of absolute vs relative path.
> 
> I don't want to bikeshed on the mechanics of how exactly this should
> work, but it doesn't seem like it should be so hard to get this to
> DWIM. In the example I posted, the last step which fails is basically:
> 
>   pg_ctl -D /tmp/foo/bar/baz/ restart
> 
> and it just seems totally broken for that to not work: pg_ctl knows
> exactly which data directory the user means when invoked here. Plus,
> these steps would work fine instead at that point:
> 
>   pg_ctl -D /tmp/foo/bar/baz/ stop
>   pg_ctl -D /tmp/foo/bar/baz/ start
> 
> and I was under the impression (supported by the pg_ctl doc page,
> which claims "restart mode effectively executes a stop followed by a
> start") that these sequences should be equivalent.

-- 
  Bruce Momjian  <bruce(at)momjian(dot)us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

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

Attachment: pg_ctl.diff
Description: text/x-diff (823 bytes)

In response to

pgsql-bugs by date

Next:From: Bruce MomjianDate: 2012-08-17 00:34:01
Subject: Re: Cannot dump 8.4.8 database using later versions
Previous:From: Tom LaneDate: 2012-08-16 17:46:33
Subject: Re: BUG #7485: 9.2 beta3 libxml2 can't be loaded on Windows

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group