1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-27 12:41:57 +03:00

postgres_fdw: Add option to control whether to keep connections open.

This commit adds a new option keep_connections that controls
whether postgres_fdw keeps the connections to the foreign server open
so that the subsequent queries can re-use them. This option can only be
specified for a foreign server. The default is on. If set to off,
all connections to the foreign server will be discarded
at the end of transaction. Closed connections will be re-established
when they are necessary by future queries using a foreign table.

This option is useful, for example, when users want to prevent
the connections from eating up the foreign servers connections
capacity.

Author: Bharath Rupireddy
Reviewed-by: Alexey Kondratov, Vignesh C, Fujii Masao
Discussion: https://postgr.es/m/CALj2ACVvrp5=AVp2PupEm+nAC8S4buqR3fJMmaCoc7ftT0aD2A@mail.gmail.com
This commit is contained in:
Fujii Masao
2021-04-02 19:45:42 +09:00
parent 9c5f67fd62
commit b1be3074ac
5 changed files with 101 additions and 9 deletions

View File

@ -518,6 +518,33 @@ OPTIONS (ADD password_required 'false');
</para>
</sect3>
<sect3>
<title>Connection Management Options</title>
<para>
By default all the open connections that <filename>postgres_fdw</filename>
established to the foreign servers are kept in local session for re-use.
</para>
<variablelist>
<varlistentry>
<term><literal>keep_connections</literal></term>
<listitem>
<para>
This option controls whether <filename>postgres_fdw</filename> keeps
the connections to the foreign server open so that the subsequent
queries can re-use them. It can only be specified for a foreign server.
The default is <literal>on</literal>. If set to <literal>off</literal>,
all connections to this foreign server will be discarded at the end of
transaction.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
<sect2>
@ -605,8 +632,10 @@ postgres=# SELECT postgres_fdw_disconnect_all();
<para>
<filename>postgres_fdw</filename> establishes a connection to a
foreign server during the first query that uses a foreign table
associated with the foreign server. This connection is kept and
re-used for subsequent queries in the same session. However, if
associated with the foreign server. By default this connection
is kept and re-used for subsequent queries in the same session.
This behavior can be controlled using
<literal>keep_connections</literal> option for a foreign server. If
multiple user identities (user mappings) are used to access the foreign
server, a connection is established for each user mapping.
</para>
@ -622,8 +651,10 @@ postgres=# SELECT postgres_fdw_disconnect_all();
<para>
Once a connection to a foreign server has been established,
it's usually kept until the local or corresponding remote
it's by default kept until the local or corresponding remote
session exits. To disconnect a connection explicitly,
<literal>keep_connections</literal> option for a foreign server
may be disabled, or
<function>postgres_fdw_disconnect</function> and
<function>postgres_fdw_disconnect_all</function> functions
may be used. For example, these are useful to close