diff --git a/doc/src/sgml/environ.sgml b/doc/src/sgml/environ.sgml
index 830502a696d..dc5741a95d8 100644
--- a/doc/src/sgml/environ.sgml
+++ b/doc/src/sgml/environ.sgml
@@ -47,17 +47,16 @@ $ export PATH
-
-If your site administrator has not set things up in the default way,
-you may have some more work to do. For example, if the database server
-machine is a remote machine, you will need to set the
-PGHOST environment variable to the name of the
-database server machine. The environment variable
-PGPORT or PGUNIXSOCKET may also have
-to be set. The bottom line is this: if you try to start an application
-program and it complains that it cannot connect to the
-postmaster, you should immediately consult
-your site administrator to make sure that your environment is properly
-set up.
+If your site administrator has not set things up in the
+default way, you may have some more work to do. For example, if the database
+ server machine is a remote machine, you
+will need to set the PGHOST environment variable to the name
+of the database server machine. The environment variable
+PGPORT may also have to be set. The bottom line is this: if
+you try to start an application program and it complains
+that it cannot connect to the postmaster,
+ you should immediately consult your site administrator to make sure that your
+environment is properly set up.
+
diff --git a/doc/src/sgml/libpq++.sgml b/doc/src/sgml/libpq++.sgml
index 43cf4ad1d50..eb71a508ed0 100644
--- a/doc/src/sgml/libpq++.sgml
+++ b/doc/src/sgml/libpq++.sgml
@@ -1,5 +1,5 @@
@@ -80,22 +80,16 @@ $Header: /cvsroot/pgsql/doc/src/sgml/Attic/libpq++.sgml,v 1.19 2000/11/22 01:41:
PGHOST sets the default server name.
- If it begins with a slash, it is used
- as the directory for the unix domain socket.
+ If this begins with a slash, it specifies Unix-domain communication
+ rather than TCP/IP communication; the value is the name of the
+ directory in which the socket file is stored (default "/tmp").
- PGPORT sets the default port or local Unix domain socket
- file extension for communicating with the Postgres
- backend.
-
-
-
-
- PGUNIXSOCKET sets the Unix domain socket
- directory for communicating with the Postgres
- backend.
+ PGPORT sets the default TCP port number or Unix-domain
+ socket file extension for communicating with the
+ Postgres backend.
diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
index dc8d539f0d8..8366f193848 100644
--- a/doc/src/sgml/libpq.sgml
+++ b/doc/src/sgml/libpq.sgml
@@ -1,5 +1,5 @@
@@ -88,9 +88,11 @@ PGconn *PQconnectdb(const char *conninfo)
Name of host to connect to.
- Using this parameter causes a hostname look-up. See hostaddr.
- If it begins with a slash, it is used
- as the directory for the unix domain socket.
+ If this begins with a slash, it specifies Unix-domain communication
+ rather than TCP/IP communication; the value is the name of the
+ directory in which the socket file is stored.
+ The default is to connect to a Unix-domain socket in
+ /tmp.
@@ -118,7 +120,7 @@ PGconn *PQconnectdb(const char *conninfo)
machine at hostaddr.
- 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.
@@ -1820,14 +1822,16 @@ application programs.
PGHOST sets the default server name.
-If it beings with a slash, it is used as the directory for the unix domain
-socket.
+If this begins with a slash, it specifies Unix-domain communication
+rather than TCP/IP communication; the value is the name of the
+directory in which the socket file is stored (default "/tmp").
-PGPORT sets the default port for communicating with
-the Postgres backend.
+PGPORT sets the default TCP port number or Unix-domain
+socket file extension for communicating with the
+Postgres backend.
diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml
index 925e5c72cf8..465043a9a41 100644
--- a/doc/src/sgml/ref/pg_dump.sgml
+++ b/doc/src/sgml/ref/pg_dump.sgml
@@ -1,5 +1,5 @@
@@ -371,8 +371,9 @@ pg_dump [ -h host ]
Connection to database 'template1' failed.
-connectDB() failed: Is the postmaster running and accepting connections
- at 'UNIX Socket' on port 'port'?
+connectDBStart() -- connect() failed: No such file or directory
+ Is the postmaster running locally
+ and accepting connections on Unix socket '/tmp/.s.PGSQL.5432'?
diff --git a/doc/src/sgml/ref/pg_dumpall.sgml b/doc/src/sgml/ref/pg_dumpall.sgml
index 907dcbb3b2d..ac61de92b96 100644
--- a/doc/src/sgml/ref/pg_dumpall.sgml
+++ b/doc/src/sgml/ref/pg_dumpall.sgml
@@ -1,5 +1,5 @@
@@ -192,7 +192,9 @@ pg_dumpall [ -h host ] [ -p
Connection to database 'template1' failed.
-connectDB() failed: Is the postmaster running and accepting connections at 'UNIX Socket' on port 'port'?
+connectDBStart() -- connect() failed: No such file or directory
+ Is the postmaster running locally
+ and accepting connections on Unix socket '/tmp/.s.PGSQL.5432'?
diff --git a/doc/src/sgml/ref/pg_restore.sgml b/doc/src/sgml/ref/pg_restore.sgml
index 8af8226d948..f04a6a62c89 100644
--- a/doc/src/sgml/ref/pg_restore.sgml
+++ b/doc/src/sgml/ref/pg_restore.sgml
@@ -345,8 +345,9 @@ pg_restore [ archive-file ]
Connection to database 'template1' failed.
-connectDB() failed: Is the postmaster running and accepting connections
- at 'UNIX Socket' on port 'port'?
+connectDBStart() -- connect() failed: No such file or directory
+ Is the postmaster running locally
+ and accepting connections on Unix socket '/tmp/.s.PGSQL.5432'?
diff --git a/doc/src/sgml/ref/postmaster.sgml b/doc/src/sgml/ref/postmaster.sgml
index 5bf5e4cb92b..8168ada6f4e 100644
--- a/doc/src/sgml/ref/postmaster.sgml
+++ b/doc/src/sgml/ref/postmaster.sgml
@@ -1,11 +1,11 @@
- 2000-11-12
+ 2000-11-30
@@ -30,7 +30,7 @@ Postgres documentation
-F-h hostname-i
- -k filename
+ -k directory-l-N max-connections-o extra-options
@@ -70,10 +70,10 @@ Postgres documentation
starts it needs to know the location of the database cluster files
(data area). This is done with the
invocation option or the PGDATA
- 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
- use different data areas and different port numbers (see below). A
- data area is created with .
@@ -165,10 +165,8 @@ Postgres documentation
Specifies the TCP/IP hostname or address on which the
postmaster is to listen for
- connections from client applications. Defaults to the value
- of the PGHOST environment variable, or if
- PGHOST is not set, it defaults to listening on
- all configured addresses (including localhost).
+ connections from client applications. Defaults to
+ listening on all configured addresses (including localhost).
@@ -185,15 +183,13 @@ Postgres documentation
- -k filename
+ -k directoryname
- Specifies the directory for Unix domain socket on which the
+ Specifies the directory of the Unix-domain socket on which the
postmaster is to listen for
- connections from client applications. Defaults to the value
- of the PGUNIXSOCKET environment variable, or if
- PGUNIXSOCKET is not set, then defaults to a
- file in /tmp.
+ connections from client applications. The default is normally
+ /tmp, but can be changed at build time.
diff --git a/doc/src/sgml/runtime.sgml b/doc/src/sgml/runtime.sgml
index 3447cc694f5..bb65624859a 100644
--- a/doc/src/sgml/runtime.sgml
+++ b/doc/src/sgml/runtime.sgml
@@ -1,5 +1,5 @@
@@ -347,7 +347,7 @@ IpcSemaphoreCreate: semget(key=5440026, num=16, 01600) failed: No space left on
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?
This is the generic I couldn't find a server to talk
to 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:
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'?
@@ -1082,15 +1082,13 @@ env PGOPTIONS='-c geqo=off' psql
- UNIXSOCKET (string)
+ UNIX_SOCKET_DIRECTORY (string)
- Specifies the directory of the Unix domain socket on which the
+ Specifies the directory of the Unix-domain socket on which the
postmaster is to listen for
- connections from client applications. Defaults to the value
- of the PGUNIXSOCKET environment variable, or if
- PGUNIXSOCKET is not set, then defaults to
- /tmp.
+ connections from client applications. The default is normally
+ /tmp, but can be changed at build time.
@@ -1151,23 +1149,8 @@ env PGOPTIONS='-c geqo=off' psql
Specifies the TCP/IP hostname or address on which the
postmaster is to listen for
- connections from client applications. Defaults to the value
- of the PGHOST environment variable, or if
- PGHOST is not set, it defaults to listening on
- all configured addresses (including localhost).
-
-
- If you use a hostname do not try to run multiple instances of
- postmaster 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
- postmaster instances are listening
- must be distinct in the two last octets.
-
-
- If you do not use this option, then each instance must listen
- on a different port.
+ connections from client applications. Defaults to
+ listening on all configured addresses (including localhost).
@@ -1220,6 +1203,11 @@ env PGOPTIONS='-c geqo=off' psql
tcpip_socket = on
+
+ -k x
+ unix_socket_directory = x
+
+ -lssl = on
diff --git a/doc/src/sgml/start.sgml b/doc/src/sgml/start.sgml
index 3b484f50f95..12a413d7ec3 100644
--- a/doc/src/sgml/start.sgml
+++ b/doc/src/sgml/start.sgml
@@ -1,5 +1,5 @@
@@ -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 PGHOST environment
variable to the name
of the database server machine. The environment variable
- PGPORT or PGUNIXSOCKET may also have to be set.
+ PGPORT may also have to be set.
The bottom line is this: if
you try to start an application program and it complains
that it cannot connect to the postmaster,
@@ -154,18 +154,18 @@ $Header: /cvsroot/pgsql/doc/src/sgml/start.sgml,v 1.14 2000/11/13 15:18:07 momji
% psql template1
-Connection to database 'postgres' failed.
-connectDB() failed: Is the postmaster running and accepting connections
- at 'UNIX Socket' on port '5432'?
+psql: connectDBStart() -- connect() failed: No such file or directory
+ Is the postmaster running locally
+ and accepting connections on Unix socket '/tmp/.s.PGSQL.5432'?
or
% psql -h localhost template1
-Connection to database 'postgres' failed.
-connectDB() failed: Is the postmaster running and accepting TCP/IP
- (with -i) connections at 'localhost' on port '5432'?
+psql: PQconnectPoll() -- connect() failed: Connection refused
+ Is the postmaster running (with -i) at 'localhost'
+ and accepting connections on TCP/IP port 5432?
it is usually because
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 618228364ce..4def9996f14 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -11,7 +11,7 @@
*
*
* 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
*
@@ -432,7 +432,6 @@ PostmasterMain(int argc, char *argv[])
NetServer = true;
break;
case 'k':
- /* Set PGUNIXSOCKET by hand. */
UnixSocketDir = optarg;
break;
#ifdef USE_SSL
@@ -732,7 +731,7 @@ usage(const char *progname)
printf(" -F turn fsync off\n");
printf(" -h HOSTNAME host name or IP address to listen on\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
printf(" -l enable SSL connections\n");
#endif
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index b2a4c2c0dc4..173ab6c659e 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -8,7 +8,7 @@
*
*
* 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 -
* Start to make a connection to the backend so it is ready to receive
@@ -911,17 +941,7 @@ connectDBStart(PGconn *conn)
else
{
/* Something's gone wrong */
- printfPQExpBuffer(&conn->errorMessage,
- "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);
+ connectFailureMessage(conn, "connectDBStart()", errno);
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
* friendly error message.
*/
- printfPQExpBuffer(&conn->errorMessage,
- "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);
+ connectFailureMessage(conn, "PQconnectPoll()", optval);
goto error_return;
}