diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2020-11-25 08:14:23 +0100 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2020-11-25 08:33:57 +0100 |
commit | c9f0624bc2f544baacafa38e3797d5323401d039 (patch) | |
tree | 4425354e0eb7391059df513989a9aa62cd237b65 /doc/src | |
parent | a7e65dc88b6f088fc2fcf5a660d866de644b1300 (diff) | |
download | postgresql-c9f0624bc2f544baacafa38e3797d5323401d039.tar.gz postgresql-c9f0624bc2f544baacafa38e3797d5323401d039.zip |
Add support for abstract Unix-domain sockets
This is a variant of the normal Unix-domain sockets that don't use the
file system but a separate "abstract" namespace. At the user
interface, such sockets are represented by names starting with "@".
Supported on Linux and Windows right now.
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://www.postgresql.org/message-id/flat/6dee8574-b0ad-fc49-9c8c-2edc796f0033@2ndquadrant.com
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/config.sgml | 24 | ||||
-rw-r--r-- | doc/src/sgml/libpq.sgml | 5 |
2 files changed, 27 insertions, 2 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 3795c570048..f810789ea82 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -749,6 +749,21 @@ include_dir 'conf.d' An empty value specifies not listening on any Unix-domain sockets, in which case only TCP/IP sockets can be used to connect to the server. + </para> + + <para> + A value that starts with <literal>@</literal> specifies that a + Unix-domain socket in the abstract namespace should be created + (currently supported on Linux and Windows). In that case, this value + does not specify a <quote>directory</quote> but a prefix from which + the actual socket name is computed in the same manner as for the + file-system namespace. While the abstract socket name prefix can be + chosen freely, since it is not a file-system location, the convention + is to nonetheless use file-system-like values such as + <literal>@/tmp</literal>. + </para> + + <para> The default value is normally <filename>/tmp</filename>, but that can be changed at build time. On Windows, the default is empty, which means no Unix-domain socket is @@ -763,6 +778,7 @@ include_dir 'conf.d' named <literal>.s.PGSQL.<replaceable>nnnn</replaceable>.lock</literal> will be created in each of the <varname>unix_socket_directories</varname> directories. Neither file should ever be removed manually. + For sockets in the abstract namespace, no lock file is created. </para> </listitem> </varlistentry> @@ -787,7 +803,8 @@ include_dir 'conf.d' <para> This parameter is not supported on Windows. Any setting will be - ignored. + ignored. Also, sockets in the abstract namespace have no file owner, + so this setting is also ignored in that case. </para> </listitem> </varlistentry> @@ -834,6 +851,11 @@ include_dir 'conf.d' similar effect by pointing <varname>unix_socket_directories</varname> to a directory having search permission limited to the desired audience. </para> + + <para> + Sockets in the abstract namespace have no file permissions, so this + setting is also ignored in that case. + </para> </listitem> </varlistentry> diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index 9d4b6ab4a89..06bd412044c 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -1031,7 +1031,10 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname communication; the value is the name of the directory in which the socket file is stored. (On Unix, an absolute path name begins with a slash. On Windows, paths starting with drive letters are also - recognized.) The default behavior when <literal>host</literal> is not + recognized.) If the host name starts with <literal>@</literal>, it is + taken as a Unix-domain socket in the abstract namespace (currently + supported on Linux and Windows). + The default behavior when <literal>host</literal> is not specified, or is empty, is to connect to a Unix-domain socket<indexterm><primary>Unix domain socket</primary></indexterm> in <filename>/tmp</filename> (or whatever socket directory was specified |