Change local_preload_libraries to PGC_USERSET
authorPeter Eisentraut <[email protected]>
Tue, 23 Dec 2014 04:05:46 +0000 (23:05 -0500)
committerPeter Eisentraut <[email protected]>
Tue, 23 Dec 2014 04:05:46 +0000 (23:05 -0500)
This allows it to be used with ALTER ROLE SET.

Although the old setting of PGC_BACKEND prevented changes after session
start, after discussion it was more useful to allow ALTER ROLE SET
instead and just document that changes during a session have no effect.
This is similar to how session_preload_libraries works already.

An alternative would be to change things to allow PGC_BACKEND and
PGC_SU_BACKEND settings to be changed by ALTER ROLE SET.  But that might
need further research (e.g., log_connections would probably not work).

based on patch by Kyotaro Horiguchi

doc/src/sgml/config.sgml
src/backend/utils/misc/guc.c

index 48ae3e41f9c05f081115f134346efdca2b0c3a7e..6bcb106518e4eefe33c9b69129d737f93a1646be 100644 (file)
@@ -6292,8 +6292,9 @@ SET XML OPTION { DOCUMENT | CONTENT };
       <listitem>
        <para>
         This variable specifies one or more shared libraries that are to be
-        preloaded at connection start.  This parameter cannot be changed after
-        the start of a particular session.  If a specified library is not
+        preloaded at connection start.
+        The parameter value only takes effect at the start of the connection.
+        Subsequent changes have no effect.  If a specified library is not
         found, the connection attempt will fail.
        </para>
 
@@ -6311,7 +6312,17 @@ SET XML OPTION { DOCUMENT | CONTENT };
        </para>
 
        <para>
-        Unless a module is specifically designed to be used in this way by
+        The intent of this feature is to allow unprivileged users to load
+        debugging or performance-measurement libraries into specific sessions
+        without requiring an explicit <command>LOAD</> command.  To that end,
+        it would be typical to set this parameter using
+        the <envar>PGOPTIONS</envar> environment variable on the client or by
+        using
+        <command>ALTER ROLE SET</>.
+       </para>
+
+       <para>
+        However, unless a module is specifically designed to be used in this way by
         non-superusers, this is usually not the right setting to use.  Look
         at <xref linkend="guc-session-preload-libraries"> instead.
        </para>
index b1bff7f35008c4eb8f5957bc0ef4b896a7ab37a6..77c34949d692184ae1e112fede814b37e25d23b6 100644 (file)
@@ -2920,7 +2920,7 @@ static struct config_string ConfigureNamesString[] =
    },
 
    {
-       {"local_preload_libraries", PGC_BACKEND, CLIENT_CONN_PRELOAD,
+       {"local_preload_libraries", PGC_USERSET, CLIENT_CONN_PRELOAD,
            gettext_noop("Lists unprivileged shared libraries to preload into each backend."),
            NULL,
            GUC_LIST_INPUT | GUC_LIST_QUOTE