[pgpool-hackers: 1455] proposal to add set command to configure session level configuration parameters for pgpool 3.6 item#8
Muhammad Usama
m.usama at gmail.com
Tue Mar 8 19:45:08 JST 2016
Overview
------------
Currently pgpool-II only supports global configuration parameters and their
value can only be set through pgpool.conf file. This system has few
limitations.
-- Since the configuration parameter scope is global so it is not possible
to have a changed parameter value for a particular user session.
-- Changing the value of a configuration parameter is not very simple.
Since the only way currently available is to change the parameter value in
the configuration file and then reload it.
Setting the value of a configuration parameter
This proposal seeks a enhancements to pgpool configuration systems for
providing
a way to alter the value of certain configuration parameters for a user
session. More specific the proposal is for making the pgpool configuration
system work like GUC (Grand Unified Configuration) of PostgreSQL.
Which config parameter can be changed in the session.
--------------------------------------------
Currently pgpool-II has two types of configuration parameters. One that can
only be set at startup, and changing its value requires a
pgpool-II restart. While, others are a little more flexible and can be
changed by reloading the pgpool-II configuration file. This new
configuration system will add another type for the configuration
parameters, The variables belonging to that type can also be changed by
session user and will not require pgpool-II restart. The scope of these
variables will not be global means different sessions can have different
values of the same variable at any time.
Security
-------------
There will be no individual setting for each configuration parameter to
allow or disallow it being changed for a session, and we will provide new
boolean pgpool config parameter "*allow_set_command"* which will
enable/disable the session level config parameters setting. And this new
*allow_set_command *can only be changed from pgpool config file.
Syntax
--------------
We will use the PostgreSQL's SET command syntax, used to alter the value of
a PostgreSQL GUC variable.
SET configuration_parameter TO value;
But since this SET command is used by PostgreSQL clients to change the
PostgreSQL's GUC so we will use "*pool_"* prefix for setting the
pgpool-II configuration parameters.
SET *pool_*configuration_parameter TO value;
This pool_ prefix will only be required when changing the parameter value
using the SET command and pgpool.conf will keep using the same existing
configuration parameter names. For example, to change the value pgpool-II's
*client_min_message* value we will issue the following SET command
-> SET pool_client_min_message TO default;
What will happen to the configuration parameters changed in the session
during reload config.
------------------------------------------------------------------
Reload config will not change the value of variable changed by the user in
the session, but the once the user session disconnects the variable will be
reset to new reloaded value.
Overview of what is needed to be done in the code for this task:
------------------------------------------------------------------
-- Enhance the configuration scanner so that we do not require a
separate if statement for each configuration parameter in the
"pool_config.l" file. This will require a comprehensive POOL_CONFIG
structure that will contain all the information regarding the configuration
parameter including its context, default value and config name.
-- Define a new config context in the config scanner for the variables
which can be changed by the SET command.
-- Add the mechanism to reset the configuration parameters to their
original value after user session disconnects. So that the configuration
parameter value changed in one user session should not affect the other
user's session served by the same child process.
-- Add new *allow_set_command *parameter as described above.
Comments, opinions?
Regards
Muhammad Usama
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.sraoss.jp/pipermail/pgpool-hackers/attachments/20160308/494f2733/attachment.html>
More information about the pgpool-hackers
mailing list