From d509560d1fbfeac79abb6593cc9c0df2be2792b6 Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Sat, 15 Aug 2015 14:31:04 -0400 Subject: [PATCH] Add docs about postgres_fdw's setting of search_path and other GUCs. This behavior wasn't documented, but it should be because it's user-visible in triggers and other functions executed on the remote server. Per question from Adam Fuchs. Back-patch to 9.3 where postgres_fdw was added. --- doc/src/sgml/postgres-fdw.sgml | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/doc/src/sgml/postgres-fdw.sgml b/doc/src/sgml/postgres-fdw.sgml index e6f6e205815..ecf3b862f9e 100644 --- a/doc/src/sgml/postgres-fdw.sgml +++ b/doc/src/sgml/postgres-fdw.sgml @@ -355,6 +355,41 @@ </para> </sect2> + <sect2> + <title>Remote Query Execution Environment</title> + + <para> + In the remote sessions opened by <filename>postgres_fdw</>, + the <xref linkend="guc-search-path"> parameter is set to + just <literal>pg_catalog</>, so that only built-in objects are visible + without schema qualification. This is not an issue for queries + generated by <filename>postgres_fdw</> itself, because it always + supplies such qualification. However, this can pose a hazard for + functions that are executed on the remote server via triggers or rules + on remote tables. For example, if a remote table is actually a view, + any functions used in that view will be executed with the restricted + search path. It is recommended to schema-qualify all names in such + functions, or else attach <literal>SET search_path</> options + (see <xref linkend="sql-createfunction">) to such functions + to establish their expected search path environment. + </para> + + <para> + <filename>postgres_fdw</> likewise establishes remote session settings + for the parameters <xref linkend="guc-timezone">, + <xref linkend="guc-datestyle">, <xref linkend="guc-intervalstyle">, + and <xref linkend="guc-extra-float-digits">. These are less likely + to be problematic than <varname>search_path</>, but can be handled + with function <literal>SET</> options if the need arises. + </para> + + <para> + It is <emphasis>not</> recommended that you override this behavior by + changing the session-level settings of these parameters; that is likely + to cause <filename>postgres_fdw</> to malfunction. + </para> + </sect2> + <sect2> <title>Cross-Version Compatibility</title> -- GitLab