mirror of
https://github.com/postgres/postgres.git
synced 2025-08-05 07:41:25 +03:00
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
This commit is contained in:
@@ -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>
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user