Commit 02c4e353 authored by Tom Lane's avatar Tom Lane

Doc: extend warnings about collation-mismatch hazards in postgres_fdw.

Be a little more vocal about the risks of remote collations not
matching local ones.  Actually fixing these risks seems hard,
and I've given up on the idea that it might be back-patchable.
So the best we can do for the back branches is add documentation.

Per discussion of bug #16583 from Jiří Fejfar.

Discussion: https://postgr.es/m/2438715.1632510693@sss.pgh.pa.us
parent 6d0001aa
......@@ -95,8 +95,8 @@
referenced columns of the remote table. Although <filename>postgres_fdw</filename>
is currently rather forgiving about performing data type conversions at
need, surprising semantic anomalies may arise when types or collations do
not match, due to the remote server interpreting <literal>WHERE</literal> clauses
slightly differently from the local server.
not match, due to the remote server interpreting query conditions
differently from the local server.
</para>
<para>
......@@ -537,6 +537,17 @@ OPTIONS (ADD password_required 'false');
need to turn this off if the remote server has a different set of
collation names than the local server does, which is likely to be the
case if it's running on a different operating system.
If you do so, however, there is a very severe risk that the imported
table columns' collations will not match the underlying data, resulting
in anomalous query behavior.
</para>
<para>
Even when this parameter is set to <literal>true</literal>, importing
columns whose collation is the remote server's default can be risky.
They will be imported with <literal>COLLATE "default"</literal>, which
will select the local server's default collation, which could be
different.
</para>
</listitem>
</varlistentry>
......@@ -614,9 +625,9 @@ OPTIONS (ADD password_required 'false');
establishes to foreign servers are kept open in the local session
for re-use.
</para>
<variablelist>
<varlistentry>
<term><literal>keep_connections</literal></term>
<listitem>
......@@ -630,7 +641,7 @@ OPTIONS (ADD password_required 'false');
</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment