Change local_preload_libraries to PGC_USERSET

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
This commit is contained in:
Peter Eisentraut 2014-12-22 23:05:46 -05:00
parent 2a3f2743f2
commit 584e35d17c
2 changed files with 15 additions and 4 deletions

View File

@ -6292,8 +6292,9 @@ SET XML OPTION { DOCUMENT | CONTENT };
<listitem> <listitem>
<para> <para>
This variable specifies one or more shared libraries that are to be This variable specifies one or more shared libraries that are to be
preloaded at connection start. This parameter cannot be changed after preloaded at connection start.
the start of a particular session. If a specified library is not 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. found, the connection attempt will fail.
</para> </para>
@ -6311,7 +6312,17 @@ SET XML OPTION { DOCUMENT | CONTENT };
</para> </para>
<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 non-superusers, this is usually not the right setting to use. Look
at <xref linkend="guc-session-preload-libraries"> instead. at <xref linkend="guc-session-preload-libraries"> instead.
</para> </para>

View 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."), gettext_noop("Lists unprivileged shared libraries to preload into each backend."),
NULL, NULL,
GUC_LIST_INPUT | GUC_LIST_QUOTE GUC_LIST_INPUT | GUC_LIST_QUOTE