Thread: pg_ctl -w port detection with docs

pg_ctl -w port detection with docs

From
"Greg Sabino Mullane"
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
NotDashEscaped: You need GnuPG to verify this message


(Now featuring documentation: fixed some typos, expanded the
Envrironment and Files section, explained exactly what -w
does)

This is a patch which allows pg_ctl to make an intelligent
guess as to the proper port when running 'psql -l' to
determine if the database has started up (the -w flag).

The environment variable PGPORT is used. If that is not found,
it checks if a specific port has been set inside the postgresql.conf
file. If it is has not, it uses the port that Postgres was
compiled with.

--
Greg Sabino Mullane  greg@turnstep.com
PGP Key: 0x14964AC8 200302230759

Index: pg_ctl.sh
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_ctl/pg_ctl.sh,v
retrieving revision 1.31
diff -c -r1.31 pg_ctl.sh
*** pg_ctl.sh    2003/02/14 22:18:25    1.31
--- pg_ctl.sh    2003/02/22 14:47:09
***************
*** 60,65 ****
--- 60,66 ----
  # Placed here during build
  bindir='@bindir@'
  VERSION='@VERSION@'
+ DEF_PGPORT='@DEF_PGPORT@'

  # protect the log file
  umask 077
***************
*** 240,245 ****
--- 241,247 ----
  DEFPOSTOPTS=$PGDATA/postmaster.opts.default
  POSTOPTSFILE=$PGDATA/postmaster.opts
  PIDFILE=$PGDATA/postmaster.pid
+ CONFFILE=$PGDATA/postgresql.conf

  if [ "$op" = "status" ];then
      if [ -f "$PIDFILE" ];then
***************
*** 356,367 ****
          fi
      fi

-     # wait for postmaster to start
-     if [ "$wait" = yes ];then
-     cnt=0
-     $silence_echo $ECHO_N "waiting for postmaster to start..."$ECHO_C
-     while :
-     do
  # FIXME:  This is horribly misconceived.
  # 1) If password authentication is set up, the connection will fail.
  # 2) If a virtual host is set up, the connection may fail.
--- 358,363 ----
***************
*** 369,380 ****
  #    may fail.
  # 4) When no Unix domain sockets are available, the connection will
  #    fail.  (Using TCP/IP by default ain't better.)
! # 5) When a different port is configured, the connection will fail
! #    or go to the wrong server.
! # 6) If the dynamic loader is not set up correctly (for this user/at
  #    this time), psql will fail (to find libpq).
! # 7) If psql is misconfigured, this may fail.
!         if "$PGPATH/psql" -l >/dev/null 2>&1
          then
          break;
          else
--- 365,390 ----
  #    may fail.
  # 4) When no Unix domain sockets are available, the connection will
  #    fail.  (Using TCP/IP by default ain't better.)
! # 5) If the dynamic loader is not set up correctly (for this user/at
  #    this time), psql will fail (to find libpq).
! # 6) If psql is misconfigured, this may fail.
!
!     # Attempt to use the right port
!     # Use PGPORT if set, otherwise look in the configuration file
!     if [ -z $PGPORT ];then
!         PGPORT=`sed -ne 's/^[     ]*port[^=]*=[     ]\+\([0-9]\+\).*/\1/p' $CONFFILE 2>/dev/null`
!         if [ -z $PGPORT ];then
!             PGPORT=$DEF_PGPORT
!         fi
!     fi
!
!     # wait for postmaster to start
!     if [ "$wait" = yes ];then
!     cnt=0
!     $silence_echo $ECHO_N "waiting for postmaster to start..."$ECHO_C
!     while :
!     do
!         if "$PGPATH/psql" -p $PGPORT -l >/dev/null 2>&1
          then
          break;
          else
Index: Makefile
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_ctl/Makefile,v
retrieving revision 1.10
diff -c -r1.10 Makefile
*** Makefile    2000/11/25 17:17:30    1.10
--- Makefile    2003/02/22 14:47:40
***************
*** 17,22 ****
--- 17,23 ----
  pg_ctl: pg_ctl.sh
      sed -e 's/@VERSION@/$(VERSION)/g' \
          -e 's,@bindir@,$(bindir),g' \
+         -e 's,@DEF_PGPORT@,$(DEF_PGPORT),g' \
        $< >$@
      chmod a+x $@




Index: pg_ctl-ref.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/ref/pg_ctl-ref.sgml,v
retrieving revision 1.18
diff -c -r1.18 pg_ctl-ref.sgml
*** pg_ctl-ref.sgml    2003/01/19 00:13:30    1.18
--- pg_ctl-ref.sgml    2003/02/23 12:56:04
***************
*** 73,94 ****
     <productname>PostgreSQL</productname> backend server, or displaying
     the status of a running postmaster.  Although the postmaster can be
     started manually, <application>pg_ctl</application> encapsulates
!    tasks such as redirecting log output, properly detaching from the
!    terminal and process group, and it provides convenient options for
     controlled shutdown.
    </para>

    <para>
     In <option>start</option> mode, a new postmaster is launched.  The
!    server is started in the background, the standard input attached to
     <filename>/dev/null</filename>.  The standard output and standard
!    error are either appended to a log file, if the <option>-l</option>
!    option is used, or are redirected to
!    <application>pg_ctl</application>'s standard output (not standard
!    error).  If no log file is chosen, the standard output of
!    <application>pg_ctl</application> should be redirected to a file or
!    piped to another process, for example a log rotating program,
!    otherwise the postmaster will write its output the the controlling
     terminal (from the background) and will not leave the shell's
     process group.
    </para>
--- 73,93 ----
     <productname>PostgreSQL</productname> backend server, or displaying
     the status of a running postmaster.  Although the postmaster can be
     started manually, <application>pg_ctl</application> encapsulates
!    tasks such as redirecting log output and properly detaching from the
!    terminal and process group. It also provides convenient options for
     controlled shutdown.
    </para>

    <para>
     In <option>start</option> mode, a new postmaster is launched.  The
!    server is started in the background, and standard input is attached to
     <filename>/dev/null</filename>.  The standard output and standard
!    error are either appended to a log file (if the <option>-l</option>
!    option is used), or redirected to  <application>pg_ctl</application>'s
!    standard output (not standard error).  If no log file is chosen, the
!    standard output of <application>pg_ctl</application> should be redirected
!    to a file or piped to another process, for example a log rotating program,
!    otherwise the postmaster will write its output to the controlling
     terminal (from the background) and will not leave the shell's
     process group.
    </para>
***************
*** 102,109 ****
     not wait for clients to disconnect.  All active transactions are
     rolled back and clients are forcibly disconnected, then the
     database is shut down.  <quote>Immediate</quote> mode will abort
!    all server processes without clean shutdown.  This will lead to a recovery
!    run on restart.
    </para>

    <para>
--- 101,108 ----
     not wait for clients to disconnect.  All active transactions are
     rolled back and clients are forcibly disconnected, then the
     database is shut down.  <quote>Immediate</quote> mode will abort
!    all server processes without a clean shutdown.  This will lead to
!    a recovery run on restart.
    </para>

    <para>
***************
*** 121,129 ****
    </para>

    <para>
!    <option>status</option> mode checks whether a postmaster is running
!    and if so displays the <acronym>PID</acronym> and the command line
!    options that were used to invoke it.
    </para>
   </refsect1>

--- 120,128 ----
    </para>

    <para>
!    <option>status</option> mode checks whether a postmaster is running.
!    If it is, the <acronym>PID</acronym> and the command line
!    options that were used to invoke it are displayed.
    </para>
   </refsect1>

***************
*** 188,194 ****
         <para>
      Specifies the location of the <filename>postmaster</filename>
      executable.  By default the postmaster is taken from the same
!     directory as <command>pg_ctl</>, or failing that, the hard-wired
      installation directory.  It is not necessary to use this
      option unless you are doing something unusual and get errors
      that the postmaster was not found.
--- 187,193 ----
         <para>
      Specifies the location of the <filename>postmaster</filename>
      executable.  By default the postmaster is taken from the same
!     directory as <command>pg_ctl</command>, or failing that, the hard-wired
      installation directory.  It is not necessary to use this
      option unless you are doing something unusual and get errors
      that the postmaster was not found.
***************
*** 210,216 ****
        <listitem>
         <para>
      Wait for the start or shutdown to complete.  Times out after
!     60 seconds.  This is the default for shutdowns.
         </para>
        </listitem>
       </varlistentry>
--- 209,224 ----
        <listitem>
         <para>
      Wait for the start or shutdown to complete.  Times out after
!     60 seconds.  This is the default for shutdowns. A successful
!         shutdown is indicated by removal of the <acronym>PID</scronym>
!         file. For starting up, a successful <command>psql -l</command>
!         indicates success. <command>pg_ctl</command> will attempt to
!         use the proper port for psql. If the environment variable
!         PGPORT exists, that is used. Otherwise, it will see if a port
!         has been set in the <filename>postgresql.conf</filename> file.
!         If neither of those is used, it will use the default port that
!         <productname>PostgreSQL</productname> was compiled with
!         (5432 by default).
         </para>
        </listitem>
       </varlistentry>
***************
*** 238,247 ****

      <listitem>
       <para>
!       Default data direction location
       </para>
      </listitem>
     </varlistentry>
    </variablelist>

    <para>
--- 246,265 ----

      <listitem>
       <para>
!       Default data directory location.
       </para>
      </listitem>
     </varlistentry>
+
+    <varlistentry>
+     <term><envar>PGPORT</envar></term>
+
+     <listitem>
+      <para>
+       Default port for <xref linkend="app-psql"> (used by the -w option).
+      </para>
+     </listitem>
+    </varlistentry>
    </variablelist>

    <para>
***************
*** 253,264 ****
   <refsect1>
    <title>Files</title>

!    <para>
!     If the file <filename>postmaster.opts.default</filename> exists in
!     the data directory, the contents of the file will be passed as
!     options to the <application>postmaster</application>, unless
!     overridden by the <option>-o</option> option.
!    </para>
   </refsect1>


--- 271,328 ----
   <refsect1>
    <title>Files</title>

!   <variablelist>
!    <varlistentry>
!     <term><filename>postmaster.pid</filename></term>
!
!     <listitem>
!      <para>The existence of this file in the data directory is used to help
!            <application>pg_ctl</application> determine if the server is
!            currently running or not.
!      </para>
!     </listitem>
!    </varlistentry>
!
!    <varlistentry>
!     <term><filename>postmaster.opts.default</filename></term>
!
!     <listitem>
!      <para>If this file exists in the data directory,
!       <application>pg_ctl</application> (in <option>start</option> mode)
!       will pass the contents of the file as options to the
!       <application>postmaster</application>, unless overridden
!       by the <option>-o</option> option.
!      </para>
!     </listitem>
!    </varlistentry>
!
!    <varlistentry>
!     <term><filename>postmaster.opts</filename></term>
!
!     <listitem>
!      <para>If this file exists in the data directory,
!       <application>pg_ctl</application> (in <option>restart</option> mode)
!       will pass the contents of the file as options to the
!       <application>postmaster</application>, unless overridden
!       by the <option>-o</option> option. The contents of this file
!       are also displayed in <option>status</option> mode.
!      </para>
!     </listitem>
!    </varlistentry>
!
!    <varlistentry>
!     <term><filename>postgresql.conf</filename></term>
!
!     <listitem>
!      <para>This file, located in the data directory, is parsed to
!       find the proper port to send to the
!       <application>psql</application> when the <option>-w</option>
!       is given in <option>start</option> mode.
!      </para>
!     </listitem>
!    </varlistentry>
!
!   </variablelist>
   </refsect1>


***************
*** 268,274 ****
    <para>
     Waiting for complete start is not a well-defined operation and may
     fail if access control is set up so that a local client cannot
!    connect without manual interaction.  It should be avoided.
    </para>
   </refsect1>

--- 332,338 ----
    <para>
     Waiting for complete start is not a well-defined operation and may
     fail if access control is set up so that a local client cannot
!    connect without manual interaction (e.g. password authentication).
    </para>
   </refsect1>





-----BEGIN PGP SIGNATURE-----
Comment: http://www.turnstep.com/pgp.html

iD8DBQE+V0ZkvJuQZxSWSsgRAjA+AJ9eFCNSb3Kr4v8UxzRa+/nKSTg87wCeOtzz
oZlhuzlz19ctvswFMmoXPAo=
=HQEB
-----END PGP SIGNATURE-----



Re: pg_ctl -w port detection with docs

From
Bruce Momjian
Date:
Your patch has been added to the PostgreSQL unapplied patches list at:

    http://momjian.postgresql.org/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.

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


Greg Sabino Mullane wrote:
[ There is text before PGP section. ]
>
[ PGP not available, raw data follows ]
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> NotDashEscaped: You need GnuPG to verify this message
>
>
> (Now featuring documentation: fixed some typos, expanded the
> Envrironment and Files section, explained exactly what -w
> does)
>
> This is a patch which allows pg_ctl to make an intelligent
> guess as to the proper port when running 'psql -l' to
> determine if the database has started up (the -w flag).
>
> The environment variable PGPORT is used. If that is not found,
> it checks if a specific port has been set inside the postgresql.conf
> file. If it is has not, it uses the port that Postgres was
> compiled with.
>
> --
> Greg Sabino Mullane  greg@turnstep.com
> PGP Key: 0x14964AC8 200302230759
>
> Index: pg_ctl.sh
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_ctl/pg_ctl.sh,v
> retrieving revision 1.31
> diff -c -r1.31 pg_ctl.sh
> *** pg_ctl.sh    2003/02/14 22:18:25    1.31
> --- pg_ctl.sh    2003/02/22 14:47:09
> ***************
> *** 60,65 ****
> --- 60,66 ----
>   # Placed here during build
>   bindir='@bindir@'
>   VERSION='@VERSION@'
> + DEF_PGPORT='@DEF_PGPORT@'
>
>   # protect the log file
>   umask 077
> ***************
> *** 240,245 ****
> --- 241,247 ----
>   DEFPOSTOPTS=$PGDATA/postmaster.opts.default
>   POSTOPTSFILE=$PGDATA/postmaster.opts
>   PIDFILE=$PGDATA/postmaster.pid
> + CONFFILE=$PGDATA/postgresql.conf
>
>   if [ "$op" = "status" ];then
>       if [ -f "$PIDFILE" ];then
> ***************
> *** 356,367 ****
>           fi
>       fi
>
> -     # wait for postmaster to start
> -     if [ "$wait" = yes ];then
> -     cnt=0
> -     $silence_echo $ECHO_N "waiting for postmaster to start..."$ECHO_C
> -     while :
> -     do
>   # FIXME:  This is horribly misconceived.
>   # 1) If password authentication is set up, the connection will fail.
>   # 2) If a virtual host is set up, the connection may fail.
> --- 358,363 ----
> ***************
> *** 369,380 ****
>   #    may fail.
>   # 4) When no Unix domain sockets are available, the connection will
>   #    fail.  (Using TCP/IP by default ain't better.)
> ! # 5) When a different port is configured, the connection will fail
> ! #    or go to the wrong server.
> ! # 6) If the dynamic loader is not set up correctly (for this user/at
>   #    this time), psql will fail (to find libpq).
> ! # 7) If psql is misconfigured, this may fail.
> !         if "$PGPATH/psql" -l >/dev/null 2>&1
>           then
>           break;
>           else
> --- 365,390 ----
>   #    may fail.
>   # 4) When no Unix domain sockets are available, the connection will
>   #    fail.  (Using TCP/IP by default ain't better.)
> ! # 5) If the dynamic loader is not set up correctly (for this user/at
>   #    this time), psql will fail (to find libpq).
> ! # 6) If psql is misconfigured, this may fail.
> !
> !     # Attempt to use the right port
> !     # Use PGPORT if set, otherwise look in the configuration file
> !     if [ -z $PGPORT ];then
> !         PGPORT=`sed -ne 's/^[     ]*port[^=]*=[     ]\+\([0-9]\+\).*/\1/p' $CONFFILE 2>/dev/null`
> !         if [ -z $PGPORT ];then
> !             PGPORT=$DEF_PGPORT
> !         fi
> !     fi
> !
> !     # wait for postmaster to start
> !     if [ "$wait" = yes ];then
> !     cnt=0
> !     $silence_echo $ECHO_N "waiting for postmaster to start..."$ECHO_C
> !     while :
> !     do
> !         if "$PGPATH/psql" -p $PGPORT -l >/dev/null 2>&1
>           then
>           break;
>           else
> Index: Makefile
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_ctl/Makefile,v
> retrieving revision 1.10
> diff -c -r1.10 Makefile
> *** Makefile    2000/11/25 17:17:30    1.10
> --- Makefile    2003/02/22 14:47:40
> ***************
> *** 17,22 ****
> --- 17,23 ----
>   pg_ctl: pg_ctl.sh
>       sed -e 's/@VERSION@/$(VERSION)/g' \
>           -e 's,@bindir@,$(bindir),g' \
> +         -e 's,@DEF_PGPORT@,$(DEF_PGPORT),g' \
>         $< >$@
>       chmod a+x $@
>
>
>
>
> Index: pg_ctl-ref.sgml
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/ref/pg_ctl-ref.sgml,v
> retrieving revision 1.18
> diff -c -r1.18 pg_ctl-ref.sgml
> *** pg_ctl-ref.sgml    2003/01/19 00:13:30    1.18
> --- pg_ctl-ref.sgml    2003/02/23 12:56:04
> ***************
> *** 73,94 ****
>      <productname>PostgreSQL</productname> backend server, or displaying
>      the status of a running postmaster.  Although the postmaster can be
>      started manually, <application>pg_ctl</application> encapsulates
> !    tasks such as redirecting log output, properly detaching from the
> !    terminal and process group, and it provides convenient options for
>      controlled shutdown.
>     </para>
>
>     <para>
>      In <option>start</option> mode, a new postmaster is launched.  The
> !    server is started in the background, the standard input attached to
>      <filename>/dev/null</filename>.  The standard output and standard
> !    error are either appended to a log file, if the <option>-l</option>
> !    option is used, or are redirected to
> !    <application>pg_ctl</application>'s standard output (not standard
> !    error).  If no log file is chosen, the standard output of
> !    <application>pg_ctl</application> should be redirected to a file or
> !    piped to another process, for example a log rotating program,
> !    otherwise the postmaster will write its output the the controlling
>      terminal (from the background) and will not leave the shell's
>      process group.
>     </para>
> --- 73,93 ----
>      <productname>PostgreSQL</productname> backend server, or displaying
>      the status of a running postmaster.  Although the postmaster can be
>      started manually, <application>pg_ctl</application> encapsulates
> !    tasks such as redirecting log output and properly detaching from the
> !    terminal and process group. It also provides convenient options for
>      controlled shutdown.
>     </para>
>
>     <para>
>      In <option>start</option> mode, a new postmaster is launched.  The
> !    server is started in the background, and standard input is attached to
>      <filename>/dev/null</filename>.  The standard output and standard
> !    error are either appended to a log file (if the <option>-l</option>
> !    option is used), or redirected to  <application>pg_ctl</application>'s
> !    standard output (not standard error).  If no log file is chosen, the
> !    standard output of <application>pg_ctl</application> should be redirected
> !    to a file or piped to another process, for example a log rotating program,
> !    otherwise the postmaster will write its output to the controlling
>      terminal (from the background) and will not leave the shell's
>      process group.
>     </para>
> ***************
> *** 102,109 ****
>      not wait for clients to disconnect.  All active transactions are
>      rolled back and clients are forcibly disconnected, then the
>      database is shut down.  <quote>Immediate</quote> mode will abort
> !    all server processes without clean shutdown.  This will lead to a recovery
> !    run on restart.
>     </para>
>
>     <para>
> --- 101,108 ----
>      not wait for clients to disconnect.  All active transactions are
>      rolled back and clients are forcibly disconnected, then the
>      database is shut down.  <quote>Immediate</quote> mode will abort
> !    all server processes without a clean shutdown.  This will lead to
> !    a recovery run on restart.
>     </para>
>
>     <para>
> ***************
> *** 121,129 ****
>     </para>
>
>     <para>
> !    <option>status</option> mode checks whether a postmaster is running
> !    and if so displays the <acronym>PID</acronym> and the command line
> !    options that were used to invoke it.
>     </para>
>    </refsect1>
>
> --- 120,128 ----
>     </para>
>
>     <para>
> !    <option>status</option> mode checks whether a postmaster is running.
> !    If it is, the <acronym>PID</acronym> and the command line
> !    options that were used to invoke it are displayed.
>     </para>
>    </refsect1>
>
> ***************
> *** 188,194 ****
>          <para>
>       Specifies the location of the <filename>postmaster</filename>
>       executable.  By default the postmaster is taken from the same
> !     directory as <command>pg_ctl</>, or failing that, the hard-wired
>       installation directory.  It is not necessary to use this
>       option unless you are doing something unusual and get errors
>       that the postmaster was not found.
> --- 187,193 ----
>          <para>
>       Specifies the location of the <filename>postmaster</filename>
>       executable.  By default the postmaster is taken from the same
> !     directory as <command>pg_ctl</command>, or failing that, the hard-wired
>       installation directory.  It is not necessary to use this
>       option unless you are doing something unusual and get errors
>       that the postmaster was not found.
> ***************
> *** 210,216 ****
>         <listitem>
>          <para>
>       Wait for the start or shutdown to complete.  Times out after
> !     60 seconds.  This is the default for shutdowns.
>          </para>
>         </listitem>
>        </varlistentry>
> --- 209,224 ----
>         <listitem>
>          <para>
>       Wait for the start or shutdown to complete.  Times out after
> !     60 seconds.  This is the default for shutdowns. A successful
> !         shutdown is indicated by removal of the <acronym>PID</scronym>
> !         file. For starting up, a successful <command>psql -l</command>
> !         indicates success. <command>pg_ctl</command> will attempt to
> !         use the proper port for psql. If the environment variable
> !         PGPORT exists, that is used. Otherwise, it will see if a port
> !         has been set in the <filename>postgresql.conf</filename> file.
> !         If neither of those is used, it will use the default port that
> !         <productname>PostgreSQL</productname> was compiled with
> !         (5432 by default).
>          </para>
>         </listitem>
>        </varlistentry>
> ***************
> *** 238,247 ****
>
>       <listitem>
>        <para>
> !       Default data direction location
>        </para>
>       </listitem>
>      </varlistentry>
>     </variablelist>
>
>     <para>
> --- 246,265 ----
>
>       <listitem>
>        <para>
> !       Default data directory location.
>        </para>
>       </listitem>
>      </varlistentry>
> +
> +    <varlistentry>
> +     <term><envar>PGPORT</envar></term>
> +
> +     <listitem>
> +      <para>
> +       Default port for <xref linkend="app-psql"> (used by the -w option).
> +      </para>
> +     </listitem>
> +    </varlistentry>
>     </variablelist>
>
>     <para>
> ***************
> *** 253,264 ****
>    <refsect1>
>     <title>Files</title>
>
> !    <para>
> !     If the file <filename>postmaster.opts.default</filename> exists in
> !     the data directory, the contents of the file will be passed as
> !     options to the <application>postmaster</application>, unless
> !     overridden by the <option>-o</option> option.
> !    </para>
>    </refsect1>
>
>
> --- 271,328 ----
>    <refsect1>
>     <title>Files</title>
>
> !   <variablelist>
> !    <varlistentry>
> !     <term><filename>postmaster.pid</filename></term>
> !
> !     <listitem>
> !      <para>The existence of this file in the data directory is used to help
> !            <application>pg_ctl</application> determine if the server is
> !            currently running or not.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !    <varlistentry>
> !     <term><filename>postmaster.opts.default</filename></term>
> !
> !     <listitem>
> !      <para>If this file exists in the data directory,
> !       <application>pg_ctl</application> (in <option>start</option> mode)
> !       will pass the contents of the file as options to the
> !       <application>postmaster</application>, unless overridden
> !       by the <option>-o</option> option.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !    <varlistentry>
> !     <term><filename>postmaster.opts</filename></term>
> !
> !     <listitem>
> !      <para>If this file exists in the data directory,
> !       <application>pg_ctl</application> (in <option>restart</option> mode)
> !       will pass the contents of the file as options to the
> !       <application>postmaster</application>, unless overridden
> !       by the <option>-o</option> option. The contents of this file
> !       are also displayed in <option>status</option> mode.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !    <varlistentry>
> !     <term><filename>postgresql.conf</filename></term>
> !
> !     <listitem>
> !      <para>This file, located in the data directory, is parsed to
> !       find the proper port to send to the
> !       <application>psql</application> when the <option>-w</option>
> !       is given in <option>start</option> mode.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !   </variablelist>
>    </refsect1>
>
>
> ***************
> *** 268,274 ****
>     <para>
>      Waiting for complete start is not a well-defined operation and may
>      fail if access control is set up so that a local client cannot
> !    connect without manual interaction.  It should be avoided.
>     </para>
>    </refsect1>
>
> --- 332,338 ----
>     <para>
>      Waiting for complete start is not a well-defined operation and may
>      fail if access control is set up so that a local client cannot
> !    connect without manual interaction (e.g. password authentication).
>     </para>
>    </refsect1>
>
>
>
>
>
> -----BEGIN PGP SIGNATURE-----
> Comment: http://www.turnstep.com/pgp.html
>
> iD8DBQE+V0ZkvJuQZxSWSsgRAjA+AJ9eFCNSb3Kr4v8UxzRa+/nKSTg87wCeOtzz
> oZlhuzlz19ctvswFMmoXPAo=
> =HQEB
> -----END PGP SIGNATURE-----
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>
[ Decrypting message... End of raw data. ]

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

Re: pg_ctl -w port detection with docs

From
Bruce Momjian
Date:
Your patch has been added to the PostgreSQL unapplied patches list at:

    http://momjian.postgresql.org/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.

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


Greg Sabino Mullane wrote:
[ There is text before PGP section. ]
>
[ PGP not available, raw data follows ]
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> NotDashEscaped: You need GnuPG to verify this message
>
>
> (Now featuring documentation: fixed some typos, expanded the
> Envrironment and Files section, explained exactly what -w
> does)
>
> This is a patch which allows pg_ctl to make an intelligent
> guess as to the proper port when running 'psql -l' to
> determine if the database has started up (the -w flag).
>
> The environment variable PGPORT is used. If that is not found,
> it checks if a specific port has been set inside the postgresql.conf
> file. If it is has not, it uses the port that Postgres was
> compiled with.
>
> --
> Greg Sabino Mullane  greg@turnstep.com
> PGP Key: 0x14964AC8 200302230759
>
> Index: pg_ctl.sh
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_ctl/pg_ctl.sh,v
> retrieving revision 1.31
> diff -c -r1.31 pg_ctl.sh
> *** pg_ctl.sh    2003/02/14 22:18:25    1.31
> --- pg_ctl.sh    2003/02/22 14:47:09
> ***************
> *** 60,65 ****
> --- 60,66 ----
>   # Placed here during build
>   bindir='@bindir@'
>   VERSION='@VERSION@'
> + DEF_PGPORT='@DEF_PGPORT@'
>
>   # protect the log file
>   umask 077
> ***************
> *** 240,245 ****
> --- 241,247 ----
>   DEFPOSTOPTS=$PGDATA/postmaster.opts.default
>   POSTOPTSFILE=$PGDATA/postmaster.opts
>   PIDFILE=$PGDATA/postmaster.pid
> + CONFFILE=$PGDATA/postgresql.conf
>
>   if [ "$op" = "status" ];then
>       if [ -f "$PIDFILE" ];then
> ***************
> *** 356,367 ****
>           fi
>       fi
>
> -     # wait for postmaster to start
> -     if [ "$wait" = yes ];then
> -     cnt=0
> -     $silence_echo $ECHO_N "waiting for postmaster to start..."$ECHO_C
> -     while :
> -     do
>   # FIXME:  This is horribly misconceived.
>   # 1) If password authentication is set up, the connection will fail.
>   # 2) If a virtual host is set up, the connection may fail.
> --- 358,363 ----
> ***************
> *** 369,380 ****
>   #    may fail.
>   # 4) When no Unix domain sockets are available, the connection will
>   #    fail.  (Using TCP/IP by default ain't better.)
> ! # 5) When a different port is configured, the connection will fail
> ! #    or go to the wrong server.
> ! # 6) If the dynamic loader is not set up correctly (for this user/at
>   #    this time), psql will fail (to find libpq).
> ! # 7) If psql is misconfigured, this may fail.
> !         if "$PGPATH/psql" -l >/dev/null 2>&1
>           then
>           break;
>           else
> --- 365,390 ----
>   #    may fail.
>   # 4) When no Unix domain sockets are available, the connection will
>   #    fail.  (Using TCP/IP by default ain't better.)
> ! # 5) If the dynamic loader is not set up correctly (for this user/at
>   #    this time), psql will fail (to find libpq).
> ! # 6) If psql is misconfigured, this may fail.
> !
> !     # Attempt to use the right port
> !     # Use PGPORT if set, otherwise look in the configuration file
> !     if [ -z $PGPORT ];then
> !         PGPORT=`sed -ne 's/^[     ]*port[^=]*=[     ]\+\([0-9]\+\).*/\1/p' $CONFFILE 2>/dev/null`
> !         if [ -z $PGPORT ];then
> !             PGPORT=$DEF_PGPORT
> !         fi
> !     fi
> !
> !     # wait for postmaster to start
> !     if [ "$wait" = yes ];then
> !     cnt=0
> !     $silence_echo $ECHO_N "waiting for postmaster to start..."$ECHO_C
> !     while :
> !     do
> !         if "$PGPATH/psql" -p $PGPORT -l >/dev/null 2>&1
>           then
>           break;
>           else
> Index: Makefile
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_ctl/Makefile,v
> retrieving revision 1.10
> diff -c -r1.10 Makefile
> *** Makefile    2000/11/25 17:17:30    1.10
> --- Makefile    2003/02/22 14:47:40
> ***************
> *** 17,22 ****
> --- 17,23 ----
>   pg_ctl: pg_ctl.sh
>       sed -e 's/@VERSION@/$(VERSION)/g' \
>           -e 's,@bindir@,$(bindir),g' \
> +         -e 's,@DEF_PGPORT@,$(DEF_PGPORT),g' \
>         $< >$@
>       chmod a+x $@
>
>
>
>
> Index: pg_ctl-ref.sgml
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/ref/pg_ctl-ref.sgml,v
> retrieving revision 1.18
> diff -c -r1.18 pg_ctl-ref.sgml
> *** pg_ctl-ref.sgml    2003/01/19 00:13:30    1.18
> --- pg_ctl-ref.sgml    2003/02/23 12:56:04
> ***************
> *** 73,94 ****
>      <productname>PostgreSQL</productname> backend server, or displaying
>      the status of a running postmaster.  Although the postmaster can be
>      started manually, <application>pg_ctl</application> encapsulates
> !    tasks such as redirecting log output, properly detaching from the
> !    terminal and process group, and it provides convenient options for
>      controlled shutdown.
>     </para>
>
>     <para>
>      In <option>start</option> mode, a new postmaster is launched.  The
> !    server is started in the background, the standard input attached to
>      <filename>/dev/null</filename>.  The standard output and standard
> !    error are either appended to a log file, if the <option>-l</option>
> !    option is used, or are redirected to
> !    <application>pg_ctl</application>'s standard output (not standard
> !    error).  If no log file is chosen, the standard output of
> !    <application>pg_ctl</application> should be redirected to a file or
> !    piped to another process, for example a log rotating program,
> !    otherwise the postmaster will write its output the the controlling
>      terminal (from the background) and will not leave the shell's
>      process group.
>     </para>
> --- 73,93 ----
>      <productname>PostgreSQL</productname> backend server, or displaying
>      the status of a running postmaster.  Although the postmaster can be
>      started manually, <application>pg_ctl</application> encapsulates
> !    tasks such as redirecting log output and properly detaching from the
> !    terminal and process group. It also provides convenient options for
>      controlled shutdown.
>     </para>
>
>     <para>
>      In <option>start</option> mode, a new postmaster is launched.  The
> !    server is started in the background, and standard input is attached to
>      <filename>/dev/null</filename>.  The standard output and standard
> !    error are either appended to a log file (if the <option>-l</option>
> !    option is used), or redirected to  <application>pg_ctl</application>'s
> !    standard output (not standard error).  If no log file is chosen, the
> !    standard output of <application>pg_ctl</application> should be redirected
> !    to a file or piped to another process, for example a log rotating program,
> !    otherwise the postmaster will write its output to the controlling
>      terminal (from the background) and will not leave the shell's
>      process group.
>     </para>
> ***************
> *** 102,109 ****
>      not wait for clients to disconnect.  All active transactions are
>      rolled back and clients are forcibly disconnected, then the
>      database is shut down.  <quote>Immediate</quote> mode will abort
> !    all server processes without clean shutdown.  This will lead to a recovery
> !    run on restart.
>     </para>
>
>     <para>
> --- 101,108 ----
>      not wait for clients to disconnect.  All active transactions are
>      rolled back and clients are forcibly disconnected, then the
>      database is shut down.  <quote>Immediate</quote> mode will abort
> !    all server processes without a clean shutdown.  This will lead to
> !    a recovery run on restart.
>     </para>
>
>     <para>
> ***************
> *** 121,129 ****
>     </para>
>
>     <para>
> !    <option>status</option> mode checks whether a postmaster is running
> !    and if so displays the <acronym>PID</acronym> and the command line
> !    options that were used to invoke it.
>     </para>
>    </refsect1>
>
> --- 120,128 ----
>     </para>
>
>     <para>
> !    <option>status</option> mode checks whether a postmaster is running.
> !    If it is, the <acronym>PID</acronym> and the command line
> !    options that were used to invoke it are displayed.
>     </para>
>    </refsect1>
>
> ***************
> *** 188,194 ****
>          <para>
>       Specifies the location of the <filename>postmaster</filename>
>       executable.  By default the postmaster is taken from the same
> !     directory as <command>pg_ctl</>, or failing that, the hard-wired
>       installation directory.  It is not necessary to use this
>       option unless you are doing something unusual and get errors
>       that the postmaster was not found.
> --- 187,193 ----
>          <para>
>       Specifies the location of the <filename>postmaster</filename>
>       executable.  By default the postmaster is taken from the same
> !     directory as <command>pg_ctl</command>, or failing that, the hard-wired
>       installation directory.  It is not necessary to use this
>       option unless you are doing something unusual and get errors
>       that the postmaster was not found.
> ***************
> *** 210,216 ****
>         <listitem>
>          <para>
>       Wait for the start or shutdown to complete.  Times out after
> !     60 seconds.  This is the default for shutdowns.
>          </para>
>         </listitem>
>        </varlistentry>
> --- 209,224 ----
>         <listitem>
>          <para>
>       Wait for the start or shutdown to complete.  Times out after
> !     60 seconds.  This is the default for shutdowns. A successful
> !         shutdown is indicated by removal of the <acronym>PID</scronym>
> !         file. For starting up, a successful <command>psql -l</command>
> !         indicates success. <command>pg_ctl</command> will attempt to
> !         use the proper port for psql. If the environment variable
> !         PGPORT exists, that is used. Otherwise, it will see if a port
> !         has been set in the <filename>postgresql.conf</filename> file.
> !         If neither of those is used, it will use the default port that
> !         <productname>PostgreSQL</productname> was compiled with
> !         (5432 by default).
>          </para>
>         </listitem>
>        </varlistentry>
> ***************
> *** 238,247 ****
>
>       <listitem>
>        <para>
> !       Default data direction location
>        </para>
>       </listitem>
>      </varlistentry>
>     </variablelist>
>
>     <para>
> --- 246,265 ----
>
>       <listitem>
>        <para>
> !       Default data directory location.
>        </para>
>       </listitem>
>      </varlistentry>
> +
> +    <varlistentry>
> +     <term><envar>PGPORT</envar></term>
> +
> +     <listitem>
> +      <para>
> +       Default port for <xref linkend="app-psql"> (used by the -w option).
> +      </para>
> +     </listitem>
> +    </varlistentry>
>     </variablelist>
>
>     <para>
> ***************
> *** 253,264 ****
>    <refsect1>
>     <title>Files</title>
>
> !    <para>
> !     If the file <filename>postmaster.opts.default</filename> exists in
> !     the data directory, the contents of the file will be passed as
> !     options to the <application>postmaster</application>, unless
> !     overridden by the <option>-o</option> option.
> !    </para>
>    </refsect1>
>
>
> --- 271,328 ----
>    <refsect1>
>     <title>Files</title>
>
> !   <variablelist>
> !    <varlistentry>
> !     <term><filename>postmaster.pid</filename></term>
> !
> !     <listitem>
> !      <para>The existence of this file in the data directory is used to help
> !            <application>pg_ctl</application> determine if the server is
> !            currently running or not.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !    <varlistentry>
> !     <term><filename>postmaster.opts.default</filename></term>
> !
> !     <listitem>
> !      <para>If this file exists in the data directory,
> !       <application>pg_ctl</application> (in <option>start</option> mode)
> !       will pass the contents of the file as options to the
> !       <application>postmaster</application>, unless overridden
> !       by the <option>-o</option> option.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !    <varlistentry>
> !     <term><filename>postmaster.opts</filename></term>
> !
> !     <listitem>
> !      <para>If this file exists in the data directory,
> !       <application>pg_ctl</application> (in <option>restart</option> mode)
> !       will pass the contents of the file as options to the
> !       <application>postmaster</application>, unless overridden
> !       by the <option>-o</option> option. The contents of this file
> !       are also displayed in <option>status</option> mode.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !    <varlistentry>
> !     <term><filename>postgresql.conf</filename></term>
> !
> !     <listitem>
> !      <para>This file, located in the data directory, is parsed to
> !       find the proper port to send to the
> !       <application>psql</application> when the <option>-w</option>
> !       is given in <option>start</option> mode.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !   </variablelist>
>    </refsect1>
>
>
> ***************
> *** 268,274 ****
>     <para>
>      Waiting for complete start is not a well-defined operation and may
>      fail if access control is set up so that a local client cannot
> !    connect without manual interaction.  It should be avoided.
>     </para>
>    </refsect1>
>
> --- 332,338 ----
>     <para>
>      Waiting for complete start is not a well-defined operation and may
>      fail if access control is set up so that a local client cannot
> !    connect without manual interaction (e.g. password authentication).
>     </para>
>    </refsect1>
>
>
>
>
>
> -----BEGIN PGP SIGNATURE-----
> Comment: http://www.turnstep.com/pgp.html
>
> iD8DBQE+V0ZkvJuQZxSWSsgRAjA+AJ9eFCNSb3Kr4v8UxzRa+/nKSTg87wCeOtzz
> oZlhuzlz19ctvswFMmoXPAo=
> =HQEB
> -----END PGP SIGNATURE-----
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>
[ Decrypting message... End of raw data. ]

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

Re: pg_ctl -w port detection with docs

From
Bruce Momjian
Date:
Patch applied.  Thanks.

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



Greg Sabino Mullane wrote:
[ There is text before PGP section. ]
>
[ PGP not available, raw data follows ]
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> NotDashEscaped: You need GnuPG to verify this message
>
>
> (Now featuring documentation: fixed some typos, expanded the
> Envrironment and Files section, explained exactly what -w
> does)
>
> This is a patch which allows pg_ctl to make an intelligent
> guess as to the proper port when running 'psql -l' to
> determine if the database has started up (the -w flag).
>
> The environment variable PGPORT is used. If that is not found,
> it checks if a specific port has been set inside the postgresql.conf
> file. If it is has not, it uses the port that Postgres was
> compiled with.
>
> --
> Greg Sabino Mullane  greg@turnstep.com
> PGP Key: 0x14964AC8 200302230759
>
> Index: pg_ctl.sh
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_ctl/pg_ctl.sh,v
> retrieving revision 1.31
> diff -c -r1.31 pg_ctl.sh
> *** pg_ctl.sh    2003/02/14 22:18:25    1.31
> --- pg_ctl.sh    2003/02/22 14:47:09
> ***************
> *** 60,65 ****
> --- 60,66 ----
>   # Placed here during build
>   bindir='@bindir@'
>   VERSION='@VERSION@'
> + DEF_PGPORT='@DEF_PGPORT@'
>
>   # protect the log file
>   umask 077
> ***************
> *** 240,245 ****
> --- 241,247 ----
>   DEFPOSTOPTS=$PGDATA/postmaster.opts.default
>   POSTOPTSFILE=$PGDATA/postmaster.opts
>   PIDFILE=$PGDATA/postmaster.pid
> + CONFFILE=$PGDATA/postgresql.conf
>
>   if [ "$op" = "status" ];then
>       if [ -f "$PIDFILE" ];then
> ***************
> *** 356,367 ****
>           fi
>       fi
>
> -     # wait for postmaster to start
> -     if [ "$wait" = yes ];then
> -     cnt=0
> -     $silence_echo $ECHO_N "waiting for postmaster to start..."$ECHO_C
> -     while :
> -     do
>   # FIXME:  This is horribly misconceived.
>   # 1) If password authentication is set up, the connection will fail.
>   # 2) If a virtual host is set up, the connection may fail.
> --- 358,363 ----
> ***************
> *** 369,380 ****
>   #    may fail.
>   # 4) When no Unix domain sockets are available, the connection will
>   #    fail.  (Using TCP/IP by default ain't better.)
> ! # 5) When a different port is configured, the connection will fail
> ! #    or go to the wrong server.
> ! # 6) If the dynamic loader is not set up correctly (for this user/at
>   #    this time), psql will fail (to find libpq).
> ! # 7) If psql is misconfigured, this may fail.
> !         if "$PGPATH/psql" -l >/dev/null 2>&1
>           then
>           break;
>           else
> --- 365,390 ----
>   #    may fail.
>   # 4) When no Unix domain sockets are available, the connection will
>   #    fail.  (Using TCP/IP by default ain't better.)
> ! # 5) If the dynamic loader is not set up correctly (for this user/at
>   #    this time), psql will fail (to find libpq).
> ! # 6) If psql is misconfigured, this may fail.
> !
> !     # Attempt to use the right port
> !     # Use PGPORT if set, otherwise look in the configuration file
> !     if [ -z $PGPORT ];then
> !         PGPORT=`sed -ne 's/^[     ]*port[^=]*=[     ]\+\([0-9]\+\).*/\1/p' $CONFFILE 2>/dev/null`
> !         if [ -z $PGPORT ];then
> !             PGPORT=$DEF_PGPORT
> !         fi
> !     fi
> !
> !     # wait for postmaster to start
> !     if [ "$wait" = yes ];then
> !     cnt=0
> !     $silence_echo $ECHO_N "waiting for postmaster to start..."$ECHO_C
> !     while :
> !     do
> !         if "$PGPATH/psql" -p $PGPORT -l >/dev/null 2>&1
>           then
>           break;
>           else
> Index: Makefile
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/bin/pg_ctl/Makefile,v
> retrieving revision 1.10
> diff -c -r1.10 Makefile
> *** Makefile    2000/11/25 17:17:30    1.10
> --- Makefile    2003/02/22 14:47:40
> ***************
> *** 17,22 ****
> --- 17,23 ----
>   pg_ctl: pg_ctl.sh
>       sed -e 's/@VERSION@/$(VERSION)/g' \
>           -e 's,@bindir@,$(bindir),g' \
> +         -e 's,@DEF_PGPORT@,$(DEF_PGPORT),g' \
>         $< >$@
>       chmod a+x $@
>
>
>
>
> Index: pg_ctl-ref.sgml
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/ref/pg_ctl-ref.sgml,v
> retrieving revision 1.18
> diff -c -r1.18 pg_ctl-ref.sgml
> *** pg_ctl-ref.sgml    2003/01/19 00:13:30    1.18
> --- pg_ctl-ref.sgml    2003/02/23 12:56:04
> ***************
> *** 73,94 ****
>      <productname>PostgreSQL</productname> backend server, or displaying
>      the status of a running postmaster.  Although the postmaster can be
>      started manually, <application>pg_ctl</application> encapsulates
> !    tasks such as redirecting log output, properly detaching from the
> !    terminal and process group, and it provides convenient options for
>      controlled shutdown.
>     </para>
>
>     <para>
>      In <option>start</option> mode, a new postmaster is launched.  The
> !    server is started in the background, the standard input attached to
>      <filename>/dev/null</filename>.  The standard output and standard
> !    error are either appended to a log file, if the <option>-l</option>
> !    option is used, or are redirected to
> !    <application>pg_ctl</application>'s standard output (not standard
> !    error).  If no log file is chosen, the standard output of
> !    <application>pg_ctl</application> should be redirected to a file or
> !    piped to another process, for example a log rotating program,
> !    otherwise the postmaster will write its output the the controlling
>      terminal (from the background) and will not leave the shell's
>      process group.
>     </para>
> --- 73,93 ----
>      <productname>PostgreSQL</productname> backend server, or displaying
>      the status of a running postmaster.  Although the postmaster can be
>      started manually, <application>pg_ctl</application> encapsulates
> !    tasks such as redirecting log output and properly detaching from the
> !    terminal and process group. It also provides convenient options for
>      controlled shutdown.
>     </para>
>
>     <para>
>      In <option>start</option> mode, a new postmaster is launched.  The
> !    server is started in the background, and standard input is attached to
>      <filename>/dev/null</filename>.  The standard output and standard
> !    error are either appended to a log file (if the <option>-l</option>
> !    option is used), or redirected to  <application>pg_ctl</application>'s
> !    standard output (not standard error).  If no log file is chosen, the
> !    standard output of <application>pg_ctl</application> should be redirected
> !    to a file or piped to another process, for example a log rotating program,
> !    otherwise the postmaster will write its output to the controlling
>      terminal (from the background) and will not leave the shell's
>      process group.
>     </para>
> ***************
> *** 102,109 ****
>      not wait for clients to disconnect.  All active transactions are
>      rolled back and clients are forcibly disconnected, then the
>      database is shut down.  <quote>Immediate</quote> mode will abort
> !    all server processes without clean shutdown.  This will lead to a recovery
> !    run on restart.
>     </para>
>
>     <para>
> --- 101,108 ----
>      not wait for clients to disconnect.  All active transactions are
>      rolled back and clients are forcibly disconnected, then the
>      database is shut down.  <quote>Immediate</quote> mode will abort
> !    all server processes without a clean shutdown.  This will lead to
> !    a recovery run on restart.
>     </para>
>
>     <para>
> ***************
> *** 121,129 ****
>     </para>
>
>     <para>
> !    <option>status</option> mode checks whether a postmaster is running
> !    and if so displays the <acronym>PID</acronym> and the command line
> !    options that were used to invoke it.
>     </para>
>    </refsect1>
>
> --- 120,128 ----
>     </para>
>
>     <para>
> !    <option>status</option> mode checks whether a postmaster is running.
> !    If it is, the <acronym>PID</acronym> and the command line
> !    options that were used to invoke it are displayed.
>     </para>
>    </refsect1>
>
> ***************
> *** 188,194 ****
>          <para>
>       Specifies the location of the <filename>postmaster</filename>
>       executable.  By default the postmaster is taken from the same
> !     directory as <command>pg_ctl</>, or failing that, the hard-wired
>       installation directory.  It is not necessary to use this
>       option unless you are doing something unusual and get errors
>       that the postmaster was not found.
> --- 187,193 ----
>          <para>
>       Specifies the location of the <filename>postmaster</filename>
>       executable.  By default the postmaster is taken from the same
> !     directory as <command>pg_ctl</command>, or failing that, the hard-wired
>       installation directory.  It is not necessary to use this
>       option unless you are doing something unusual and get errors
>       that the postmaster was not found.
> ***************
> *** 210,216 ****
>         <listitem>
>          <para>
>       Wait for the start or shutdown to complete.  Times out after
> !     60 seconds.  This is the default for shutdowns.
>          </para>
>         </listitem>
>        </varlistentry>
> --- 209,224 ----
>         <listitem>
>          <para>
>       Wait for the start or shutdown to complete.  Times out after
> !     60 seconds.  This is the default for shutdowns. A successful
> !         shutdown is indicated by removal of the <acronym>PID</scronym>
> !         file. For starting up, a successful <command>psql -l</command>
> !         indicates success. <command>pg_ctl</command> will attempt to
> !         use the proper port for psql. If the environment variable
> !         PGPORT exists, that is used. Otherwise, it will see if a port
> !         has been set in the <filename>postgresql.conf</filename> file.
> !         If neither of those is used, it will use the default port that
> !         <productname>PostgreSQL</productname> was compiled with
> !         (5432 by default).
>          </para>
>         </listitem>
>        </varlistentry>
> ***************
> *** 238,247 ****
>
>       <listitem>
>        <para>
> !       Default data direction location
>        </para>
>       </listitem>
>      </varlistentry>
>     </variablelist>
>
>     <para>
> --- 246,265 ----
>
>       <listitem>
>        <para>
> !       Default data directory location.
>        </para>
>       </listitem>
>      </varlistentry>
> +
> +    <varlistentry>
> +     <term><envar>PGPORT</envar></term>
> +
> +     <listitem>
> +      <para>
> +       Default port for <xref linkend="app-psql"> (used by the -w option).
> +      </para>
> +     </listitem>
> +    </varlistentry>
>     </variablelist>
>
>     <para>
> ***************
> *** 253,264 ****
>    <refsect1>
>     <title>Files</title>
>
> !    <para>
> !     If the file <filename>postmaster.opts.default</filename> exists in
> !     the data directory, the contents of the file will be passed as
> !     options to the <application>postmaster</application>, unless
> !     overridden by the <option>-o</option> option.
> !    </para>
>    </refsect1>
>
>
> --- 271,328 ----
>    <refsect1>
>     <title>Files</title>
>
> !   <variablelist>
> !    <varlistentry>
> !     <term><filename>postmaster.pid</filename></term>
> !
> !     <listitem>
> !      <para>The existence of this file in the data directory is used to help
> !            <application>pg_ctl</application> determine if the server is
> !            currently running or not.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !    <varlistentry>
> !     <term><filename>postmaster.opts.default</filename></term>
> !
> !     <listitem>
> !      <para>If this file exists in the data directory,
> !       <application>pg_ctl</application> (in <option>start</option> mode)
> !       will pass the contents of the file as options to the
> !       <application>postmaster</application>, unless overridden
> !       by the <option>-o</option> option.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !    <varlistentry>
> !     <term><filename>postmaster.opts</filename></term>
> !
> !     <listitem>
> !      <para>If this file exists in the data directory,
> !       <application>pg_ctl</application> (in <option>restart</option> mode)
> !       will pass the contents of the file as options to the
> !       <application>postmaster</application>, unless overridden
> !       by the <option>-o</option> option. The contents of this file
> !       are also displayed in <option>status</option> mode.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !    <varlistentry>
> !     <term><filename>postgresql.conf</filename></term>
> !
> !     <listitem>
> !      <para>This file, located in the data directory, is parsed to
> !       find the proper port to send to the
> !       <application>psql</application> when the <option>-w</option>
> !       is given in <option>start</option> mode.
> !      </para>
> !     </listitem>
> !    </varlistentry>
> !
> !   </variablelist>
>    </refsect1>
>
>
> ***************
> *** 268,274 ****
>     <para>
>      Waiting for complete start is not a well-defined operation and may
>      fail if access control is set up so that a local client cannot
> !    connect without manual interaction.  It should be avoided.
>     </para>
>    </refsect1>
>
> --- 332,338 ----
>     <para>
>      Waiting for complete start is not a well-defined operation and may
>      fail if access control is set up so that a local client cannot
> !    connect without manual interaction (e.g. password authentication).
>     </para>
>    </refsect1>
>
>
>
>
>
> -----BEGIN PGP SIGNATURE-----
> Comment: http://www.turnstep.com/pgp.html
>
> iD8DBQE+V0ZkvJuQZxSWSsgRAjA+AJ9eFCNSb3Kr4v8UxzRa+/nKSTg87wCeOtzz
> oZlhuzlz19ctvswFMmoXPAo=
> =HQEB
> -----END PGP SIGNATURE-----
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>
[ Decrypting message... End of raw data. ]

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