Repair residual sillinesses from UUNET virtual host/socket path patch.

I hope all the dust has settled out now ...
This commit is contained in:
Tom Lane 2000-11-30 23:20:51 +00:00
parent 73d0514dea
commit b7c3784417
11 changed files with 111 additions and 117 deletions

View File

@ -47,17 +47,16 @@ $ export PATH
</Para> </Para>
<Para> <Para>
If your site administrator has not set things up in the
If your site administrator has not set things up in the default way, default way, you may have some more work to do. For example, if the database
you may have some more work to do. For example, if the database server server machine is a remote machine, you
machine is a remote machine, you will need to set the will need to set the <Acronym>PGHOST</Acronym> environment variable to the name
<Acronym>PGHOST</Acronym> environment variable to the name of the of the database server machine. The environment variable
database server machine. The environment variable <Acronym>PGPORT</Acronym> may also have to be set. The bottom line is this: if
<Acronym>PGPORT</Acronym> or <envar>PGUNIXSOCKET</envar> may also have you try to start an application program and it complains
to be set. The bottom line is this: if you try to start an application that it cannot connect to the <Application>postmaster</Application>,
program and it complains that it cannot connect to the you should immediately consult your site administrator to make sure that your
<Application>postmaster</Application>, you should immediately consult environment is properly set up.
your site administrator to make sure that your environment is properly </Para>
set up. </Para>
</Chapter> </Chapter>

View File

@ -1,5 +1,5 @@
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/Attic/libpq++.sgml,v 1.19 2000/11/22 01:41:12 momjian Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/Attic/libpq++.sgml,v 1.20 2000/11/30 23:20:50 tgl Exp $
--> -->
<chapter id="libpqplusplus"> <chapter id="libpqplusplus">
@ -80,22 +80,16 @@ $Header: /cvsroot/pgsql/doc/src/sgml/Attic/libpq++.sgml,v 1.19 2000/11/22 01:41:
<listitem> <listitem>
<para> <para>
<envar>PGHOST</envar> sets the default server name. <envar>PGHOST</envar> sets the default server name.
If it begins with a slash, it is used If this begins with a slash, it specifies Unix-domain communication
as the directory for the unix domain socket. rather than TCP/IP communication; the value is the name of the
directory in which the socket file is stored (default "/tmp").
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<envar>PGPORT</envar> sets the default port or local Unix domain socket <envar>PGPORT</envar> sets the default TCP port number or Unix-domain
file extension for communicating with the <productname>Postgres</productname> socket file extension for communicating with the
backend. <productname>Postgres</productname> backend.
</para>
</listitem>
<listitem>
<para>
<envar>PGUNIXSOCKET</envar> sets the Unix domain socket
directory for communicating with the <productname>Postgres</productname>
backend.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>

View File

@ -1,5 +1,5 @@
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.50 2000/11/30 18:34:36 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.51 2000/11/30 23:20:50 tgl Exp $
--> -->
<chapter id="libpq-chapter"> <chapter id="libpq-chapter">
@ -88,9 +88,11 @@ PGconn *PQconnectdb(const char *conninfo)
<listitem> <listitem>
<para> <para>
Name of host to connect to. Name of host to connect to.
Using this parameter causes a hostname look-up. See hostaddr. If this begins with a slash, it specifies Unix-domain communication
If it begins with a slash, it is used rather than TCP/IP communication; the value is the name of the
as the directory for the unix domain socket. directory in which the socket file is stored.
The default is to connect to a Unix-domain socket in
<filename>/tmp</filename>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@ -118,7 +120,7 @@ PGconn *PQconnectdb(const char *conninfo)
machine at hostaddr. machine at hostaddr.
</para> </para>
<para> <para>
Without both a host name and host address, libpq will connect using a Without either a host name or host address, libpq will connect using a
local Unix domain socket. local Unix domain socket.
</para> </para>
</listitem> </listitem>
@ -1820,14 +1822,16 @@ application programs.
<listitem> <listitem>
<para> <para>
<envar>PGHOST</envar> sets the default server name. <envar>PGHOST</envar> sets the default server name.
If it beings with a slash, it is used as the directory for the unix domain If this begins with a slash, it specifies Unix-domain communication
socket. rather than TCP/IP communication; the value is the name of the
directory in which the socket file is stored (default "/tmp").
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<envar>PGPORT</envar> sets the default port for communicating with <envar>PGPORT</envar> sets the default TCP port number or Unix-domain
the <productname>Postgres</productname> backend. socket file extension for communicating with the
<productname>Postgres</productname> backend.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>

View File

@ -1,5 +1,5 @@
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/pg_dump.sgml,v 1.25 2000/11/22 01:41:13 momjian Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/pg_dump.sgml,v 1.26 2000/11/30 23:20:50 tgl Exp $
Postgres documentation Postgres documentation
--> -->
@ -371,8 +371,9 @@ pg_dump [ -h <replaceable class="parameter">host</replaceable> ]
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>
Connection to database 'template1' failed. Connection to database 'template1' failed.
connectDB() failed: Is the postmaster running and accepting connections connectDBStart() -- connect() failed: No such file or directory
at 'UNIX Socket' on port '<replaceable class="parameter">port</replaceable>'? Is the postmaster running locally
and accepting connections on Unix socket '/tmp/.s.PGSQL.5432'?
</computeroutput></term> </computeroutput></term>
<listitem> <listitem>
<para> <para>

View File

@ -1,5 +1,5 @@
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v 1.15 2000/11/22 01:41:13 momjian Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v 1.16 2000/11/30 23:20:50 tgl Exp $
Postgres documentation Postgres documentation
--> -->
@ -192,7 +192,9 @@ pg_dumpall [ -h <replaceable class="parameter">host</replaceable> ] [ -p <replac
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>
Connection to database 'template1' failed. Connection to database 'template1' failed.
connectDB() failed: Is the postmaster running and accepting connections at 'UNIX Socket' on port '<replaceable class="parameter">port</replaceable>'? connectDBStart() -- connect() failed: No such file or directory
Is the postmaster running locally
and accepting connections on Unix socket '/tmp/.s.PGSQL.5432'?
</computeroutput></term> </computeroutput></term>
<listitem> <listitem>
<para> <para>

View File

@ -345,8 +345,9 @@ pg_restore [ <replaceable class="parameter">archive-file</replaceable> ]
<varlistentry> <varlistentry>
<term><computeroutput> <term><computeroutput>
Connection to database 'template1' failed. Connection to database 'template1' failed.
connectDB() failed: Is the postmaster running and accepting connections connectDBStart() -- connect() failed: No such file or directory
at 'UNIX Socket' on port '<replaceable class="parameter">port</replaceable>'? Is the postmaster running locally
and accepting connections on Unix socket '/tmp/.s.PGSQL.5432'?
</computeroutput></term> </computeroutput></term>
<listitem> <listitem>
<para> <para>

View File

@ -1,11 +1,11 @@
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/postmaster.sgml,v 1.17 2000/11/28 23:27:54 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/postmaster.sgml,v 1.18 2000/11/30 23:20:50 tgl Exp $
Postgres documentation Postgres documentation
--> -->
<refentry id="APP-POSTMASTER"> <refentry id="APP-POSTMASTER">
<docinfo> <docinfo>
<date>2000-11-12</date> <date>2000-11-30</date>
</docinfo> </docinfo>
<refmeta> <refmeta>
@ -30,7 +30,7 @@ Postgres documentation
<arg>-F</arg> <arg>-F</arg>
<arg>-h <replaceable>hostname</replaceable></arg> <arg>-h <replaceable>hostname</replaceable></arg>
<arg>-i</arg> <arg>-i</arg>
<arg>-k <replaceable>filename</replaceable></arg> <arg>-k <replaceable>directory</replaceable></arg>
<arg>-l</arg> <arg>-l</arg>
<arg>-N <replaceable>max-connections</replaceable></arg> <arg>-N <replaceable>max-connections</replaceable></arg>
<arg>-o <replaceable>extra-options</replaceable></arg> <arg>-o <replaceable>extra-options</replaceable></arg>
@ -70,10 +70,10 @@ Postgres documentation
starts it needs to know the location of the database cluster files starts it needs to know the location of the database cluster files
(<quote>data area</quote>). This is done with the (<quote>data area</quote>). This is done with the
<option>-D</option> invocation option or the <envar>PGDATA</envar> <option>-D</option> invocation option or the <envar>PGDATA</envar>
environment variable, there is no default. More than one environment variable; there is no default. More than one
postmaster process can run on a system at one time, as long as they postmaster process can run on a system at one time, as long as they
use different data areas and different port numbers (see below). A use different data areas and different communication ports (see below).
data area is created with <xref linkend="app-initdb" A data area is created with <xref linkend="app-initdb"
endterm="app-initdb-title">. endterm="app-initdb-title">.
</para> </para>
@ -165,10 +165,8 @@ Postgres documentation
<para> <para>
Specifies the TCP/IP hostname or address on which the Specifies the TCP/IP hostname or address on which the
<application>postmaster</application> is to listen for <application>postmaster</application> is to listen for
connections from client applications. Defaults to the value connections from client applications. Defaults to
of the <envar>PGHOST</envar> environment variable, or if listening on all configured addresses (including localhost).
<envar>PGHOST</envar> is not set, it defaults to listening on
all configured addresses (including localhost).
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@ -185,15 +183,13 @@ Postgres documentation
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>-k <replaceable class="parameter">filename</replaceable></term> <term>-k <replaceable class="parameter">directoryname</replaceable></term>
<listitem> <listitem>
<para> <para>
Specifies the directory for Unix domain socket on which the Specifies the directory of the Unix-domain socket on which the
<application>postmaster</application> is to listen for <application>postmaster</application> is to listen for
connections from client applications. Defaults to the value connections from client applications. The default is normally
of the <envar>PGUNIXSOCKET</envar> environment variable, or if <filename>/tmp</filename>, but can be changed at build time.
<envar>PGUNIXSOCKET</envar> is not set, then defaults to a
file in <filename>/tmp</filename>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -1,5 +1,5 @@
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.39 2000/11/25 20:33:47 tgl Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.40 2000/11/30 23:20:50 tgl Exp $
--> -->
<Chapter Id="runtime"> <Chapter Id="runtime">
@ -347,7 +347,7 @@ IpcSemaphoreCreate: semget(key=5440026, num=16, 01600) failed: No space left on
<para> <para>
<screen> <screen>
connectDB() -- connect() failed: Connection refused connectDB() -- connect() failed: Connection refused
Is the postmaster running (with -i) at 'server.joe.com' and accepting connections on TCP/IP port '5432'? Is the postmaster running (with -i) at 'server.joe.com' and accepting connections on TCP/IP port 5432?
</screen> </screen>
This is the generic <quote>I couldn't find a server to talk This is the generic <quote>I couldn't find a server to talk
to</quote> failure. It looks like the above when TCP/IP to</quote> failure. It looks like the above when TCP/IP
@ -361,7 +361,7 @@ Is the postmaster running (with -i) at 'server.joe.com' and accepting connection
Unix-socket communication to a local postmaster: Unix-socket communication to a local postmaster:
<screen> <screen>
connectDB() -- connect() failed: No such file or directory connectDB() -- connect() failed: No such file or directory
Is the postmaster running at 'localhost' and accepting connections on Unix socket '5432'? Is the postmaster running locally and accepting connections on Unix socket '/tmp/.s.PGSQL.5432'?
</screen> </screen>
</para> </para>
@ -1082,15 +1082,13 @@ env PGOPTIONS='-c geqo=off' psql
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>UNIXSOCKET (<type>string</type>)</term> <term>UNIX_SOCKET_DIRECTORY (<type>string</type>)</term>
<listitem> <listitem>
<para> <para>
Specifies the directory of the Unix domain socket on which the Specifies the directory of the Unix-domain socket on which the
<application>postmaster</application> is to listen for <application>postmaster</application> is to listen for
connections from client applications. Defaults to the value connections from client applications. The default is normally
of the <envar>PGUNIXSOCKET</envar> environment variable, or if <filename>/tmp</filename>, but can be changed at build time.
<envar>PGUNIXSOCKET</envar> is not set, then defaults to
<filename>/tmp</filename>.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@ -1151,23 +1149,8 @@ env PGOPTIONS='-c geqo=off' psql
<para> <para>
Specifies the TCP/IP hostname or address on which the Specifies the TCP/IP hostname or address on which the
<application>postmaster</application> is to listen for <application>postmaster</application> is to listen for
connections from client applications. Defaults to the value connections from client applications. Defaults to
of the <envar>PGHOST</envar> environment variable, or if listening on all configured addresses (including localhost).
<envar>PGHOST</envar> is not set, it defaults to listening on
all configured addresses (including localhost).
</para>
<para>
If you use a hostname do not try to run multiple instances of
<application>postmaster</application> on the same IP address
but different ports. Doing so will result in them attempting
(incorrectly) to use the same shared memory segments. Also,
if you use a hostname, all of the host's IP addresses on which
<application>postmaster</application> instances are listening
must be distinct in the two last octets.
</para>
<para>
If you do not use this option, then each instance must listen
on a different port.
</para> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@ -1220,6 +1203,11 @@ env PGOPTIONS='-c geqo=off' psql
<entry>tcpip_socket = on</entry> <entry>tcpip_socket = on</entry>
<entry></entry> <entry></entry>
</row> </row>
<row>
<entry>-k <replaceable>x</replaceable></entry>
<entry>unix_socket_directory = <replaceable>x</replaceable></entry>
<entry></entry>
</row>
<row> <row>
<entry>-l</entry> <entry>-l</entry>
<entry>ssl = on</entry> <entry>ssl = on</entry>

View File

@ -1,5 +1,5 @@
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/start.sgml,v 1.14 2000/11/13 15:18:07 momjian Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/start.sgml,v 1.15 2000/11/30 23:20:50 tgl Exp $
--> -->
<chapter id="start"> <chapter id="start">
@ -110,7 +110,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/start.sgml,v 1.14 2000/11/13 15:18:07 momji
will need to set the <acronym>PGHOST</acronym> environment will need to set the <acronym>PGHOST</acronym> environment
variable to the name variable to the name
of the database server machine. The environment variable of the database server machine. The environment variable
<acronym>PGPORT</acronym> or <acronym>PGUNIXSOCKET</acronym> may also have to be set. <acronym>PGPORT</acronym> may also have to be set.
The bottom line is this: if The bottom line is this: if
you try to start an application program and it complains you try to start an application program and it complains
that it cannot connect to the <application>postmaster</application>, that it cannot connect to the <application>postmaster</application>,
@ -154,18 +154,18 @@ $Header: /cvsroot/pgsql/doc/src/sgml/start.sgml,v 1.14 2000/11/13 15:18:07 momji
<programlisting> <programlisting>
% psql template1 % psql template1
Connection to database 'postgres' failed. psql: connectDBStart() -- connect() failed: No such file or directory
connectDB() failed: Is the postmaster running and accepting connections Is the postmaster running locally
at 'UNIX Socket' on port '5432'? and accepting connections on Unix socket '/tmp/.s.PGSQL.5432'?
</programlisting> </programlisting>
or or
<programlisting> <programlisting>
% psql -h localhost template1 % psql -h localhost template1
Connection to database 'postgres' failed. psql: PQconnectPoll() -- connect() failed: Connection refused
connectDB() failed: Is the postmaster running and accepting TCP/IP Is the postmaster running (with -i) at 'localhost'
(with -i) connections at 'localhost' on port '5432'? and accepting connections on TCP/IP port 5432?
</programlisting> </programlisting>
it is usually because it is usually because

View File

@ -11,7 +11,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.196 2000/11/29 22:04:04 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.197 2000/11/30 23:20:51 tgl Exp $
* *
* NOTES * NOTES
* *
@ -432,7 +432,6 @@ PostmasterMain(int argc, char *argv[])
NetServer = true; NetServer = true;
break; break;
case 'k': case 'k':
/* Set PGUNIXSOCKET by hand. */
UnixSocketDir = optarg; UnixSocketDir = optarg;
break; break;
#ifdef USE_SSL #ifdef USE_SSL
@ -732,7 +731,7 @@ usage(const char *progname)
printf(" -F turn fsync off\n"); printf(" -F turn fsync off\n");
printf(" -h HOSTNAME host name or IP address to listen on\n"); printf(" -h HOSTNAME host name or IP address to listen on\n");
printf(" -i enable TCP/IP connections\n"); printf(" -i enable TCP/IP connections\n");
printf(" -k FILENAME Unix domain socket location\n"); printf(" -k DIRECTORY Unix-domain socket location\n");
#ifdef USE_SSL #ifdef USE_SSL
printf(" -l enable SSL connections\n"); printf(" -l enable SSL connections\n");
#endif #endif

View File

@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.151 2000/11/30 18:32:52 petere Exp $ * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.152 2000/11/30 23:20:51 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -741,6 +741,36 @@ connectNoDelay(PGconn *conn)
} }
/* ----------
* connectFailureMessage -
* create a friendly error message on connection failure.
* ----------
*/
static void
connectFailureMessage(PGconn *conn, const char *caller, int errorno)
{
#ifdef HAVE_UNIX_SOCKETS
if (conn->raddr.sa.sa_family == AF_UNIX)
printfPQExpBuffer(&conn->errorMessage,
"%s -- connect() failed: %s\n"
"\tIs the postmaster running locally\n"
"\tand accepting connections on Unix socket '%s'?\n",
caller,
strerror(errorno),
conn->raddr.un.sun_path);
else
#endif
printfPQExpBuffer(&conn->errorMessage,
"%s -- connect() failed: %s\n"
"\tIs the postmaster running (with -i) at '%s'\n"
"\tand accepting connections on TCP/IP port %s?\n",
caller,
strerror(errorno),
conn->pghost ? conn->pghost : "localhost",
conn->pgport);
}
/* ---------- /* ----------
* connectDBStart - * connectDBStart -
* Start to make a connection to the backend so it is ready to receive * Start to make a connection to the backend so it is ready to receive
@ -911,17 +941,7 @@ connectDBStart(PGconn *conn)
else else
{ {
/* Something's gone wrong */ /* Something's gone wrong */
printfPQExpBuffer(&conn->errorMessage, connectFailureMessage(conn, "connectDBStart()", errno);
"connectDBStart() -- connect() failed: %s\n"
"\tIs the postmaster running%s at '%s'\n"
"\tand accepting connections on %s '%s'?\n",
strerror(errno),
(family == AF_INET) ? " (with -i)" : "",
conn->pghost ? conn->pghost : "localhost",
(family == AF_INET) ?
"TCP/IP port" : "Unix socket",
(family == AF_UNIX && conn->pgunixsocket) ?
conn->pgunixsocket : conn->pgport);
goto connect_errReturn; goto connect_errReturn;
} }
} }
@ -1213,17 +1233,7 @@ keep_going: /* We will come back to here until there
* see connect failures at this point, so provide a * see connect failures at this point, so provide a
* friendly error message. * friendly error message.
*/ */
printfPQExpBuffer(&conn->errorMessage, connectFailureMessage(conn, "PQconnectPoll()", optval);
"PQconnectPoll() -- connect() failed: %s\n"
"\tIs the postmaster running%s at '%s'\n"
"\tand accepting connections on %s '%s'?\n",
strerror(optval),
(conn->raddr.sa.sa_family == AF_INET) ? " (with -i)" : "",
conn->pghost ? conn->pghost : "localhost",
(conn->raddr.sa.sa_family == AF_INET) ?
"TCP/IP port" : "Unix socket",
(conn->raddr.sa.sa_family == AF_UNIX && conn->pgunixsocket) ?
conn->pgunixsocket : conn->pgport);
goto error_return; goto error_return;
} }