[9.3] Should we mention "set_config(...)" in 18.1.3 in Server Configuration?
Section 18.1.3 is named "18.1.3. Other Ways to Set Parameters" yet does not
reference the ability to use "set_config(...)" to make changes to
configuration parameters.
Something like (as a final sentence):
An alternative to the SQL "SET" command is to use the [link]set_config[link]
function.
Also, I would suggest modifying the function definitions in table 9-58 to
include the data types:
current_setting(setting_name text)
set_config(setting_name text, new_value text, is_local boolean)
David J.
--
View this message in context: http://postgresql.1045698.n5.nabble.com/9-3-Should-we-mention-set-config-in-18-1-3-in-Server-Configuration-tp5804655.html
Sent from the PostgreSQL - docs mailing list archive at Nabble.com.
--
Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-docs
David G Johnston <david.g.johnston@gmail.com> writes:
Section 18.1.3 is named "18.1.3. Other Ways to Set Parameters" yet does not
reference the ability to use "set_config(...)" to make changes to
configuration parameters.
Hm, yeah, seems like an oversight.
Another thing I've never been terribly happy about is that pg_settings is
mentioned only in the next sub-section. Could we merge that sub-section
with 18.1.3?
regards, tom lane
--
Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-docs
Re-sending to hopefully avoid admin moderation rule. Fixing top-post as
well.
On Wed, May 21, 2014 at 4:37 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
David G Johnston <david.g.johnston@gmail.com> writes:
Section 18.1.3 is named "18.1.3. Other Ways to Set Parameters" yet does
not
reference the ability to use "set_config(...)" to make changes to
configuration parameters.Hm, yeah, seems like an oversight.
Another thing I've never been terribly happy about is that pg_settings is
mentioned only in the next sub-section. Could we merge that sub-section
with 18.1.3?regards, tom lane
I am presuming that posting a doc-only patch here instead of -hackers is
acceptable.So I finally decided to setup a development environment and generate
actual patches. I have few in mind but I thought that these two changes
might be quick to implement. I thought wrong - mostly due to my desire to
improve things and not just "add and merge" some content.I focused my effort on 18.1.1 to 18.1.4 though the actual coverage of
sections 2-4 has changed considerably. I decided not to minimize
white-space changes in that region since because of the re-organization git
was unable, especially in a couple of instances, to match up before and
after anyway. The file itself does not have a consistent format and so I
just applied 2-space indentations at each level. I plan to go back and do
polishing but I first want to make sure that the end-user product is
acceptable.I've only hit this one file for the moment but figure on reviewing all of
the relevant cross-references for tweaks and consistency. I already did so
in passing and would not expect anything as invasive as what I am proposing
here - so if others feel these changes have merit I will plan on taking any
ideas and put forth a v2 patch that will hopefully be ready-to-commit.Thank you in advance for any attention and education you can provide.
David J.
Attachments:
config_sgml_18_1_1-4_v1.difftext/plain; charset=US-ASCII; name=config_sgml_18_1_1-4_v1.diffDownload
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 697cf99..6ac48d6 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -11,7 +11,7 @@
<para>
There are many configuration parameters that affect the behavior of
the database system. In the first section of this chapter, we
- describe how to set configuration parameters. The subsequent sections
+ describe how to interact with configuration parameters. The subsequent sections
discuss each parameter in detail.
</para>
@@ -24,46 +24,103 @@
<para>
All parameter names are case-insensitive. Every parameter takes a
value of one of five types: Boolean, integer, floating point,
- string or enum. Boolean values can be written as <literal>on</literal>,
- <literal>off</literal>, <literal>true</literal>,
- <literal>false</literal>, <literal>yes</literal>,
- <literal>no</literal>, <literal>1</literal>, <literal>0</literal>
- (all case-insensitive) or any unambiguous prefix of these.
+ string or enum.
</para>
+ <itemizedlist>
+
+ <listitem>
<para>
- Some settings specify a memory or time value. Each of these has an
- implicit unit, which is either kilobytes, blocks (typically eight
- kilobytes), milliseconds, seconds, or minutes. Default units can be
- found by referencing <structname>pg_settings</>.<structfield>unit</>.
- For convenience,
- a different unit can also be specified explicitly. Valid memory units
- are <literal>kB</literal> (kilobytes), <literal>MB</literal>
- (megabytes), <literal>GB</literal> (gigabytes), and <literal>TB</literal> (terabytes); valid time units
- are <literal>ms</literal> (milliseconds), <literal>s</literal>
- (seconds), <literal>min</literal> (minutes), <literal>h</literal>
- (hours), and <literal>d</literal> (days). Note that the multiplier
- for memory units is 1024, not 1000.
+ <emphasis>Boolean</emphasis>: Values can be written as
+ <literal>on</literal>,
+ <literal>off</literal>,
+ <literal>true</literal>,
+ <literal>false</literal>,
+ <literal>yes</literal>,
+ <literal>no</literal>,
+ <literal>1</literal>,
+ <literal>0</literal>
+ (all case-insensitive) or any unambiguous prefix of these.
</para>
+ </listitem>
+ <listitem>
<para>
- Parameters of type <quote>enum</> are specified in the same way as string
- parameters, but are restricted to a limited set of values. The allowed
- values can be found
- from <structname>pg_settings</>.<structfield>enumvals</>.
- Enum parameter values are case-insensitive.
+ <emphasis>String</emphasis>:
+ Enclose the value in single-quote. Values are case-insensitive.
+ If multiple values are allowed separate them with commas.
</para>
- </sect2>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis>Numeric</emphasis>
+ (integer and floating point): Do not use single-quotes
+ (unless otherwise required)
+ or thousand separators.
+ Typically memory or time related - see comments in that
+ section for detail.
+ </para>
+ </listitem>
- <sect2 id="config-setting-configuration-file">
- <title>Setting Parameters via the Configuration File</title>
+ <listitem>
+ <para>
+ <emphasis>Numeric or String with Unit</emphasis>: Memory & Time.
+ Both of these have an implicit unit, which is either kilobytes,
+ blocks (typically eight kilobytes), milliseconds, seconds, or minutes.
+ An numeric value will use the default, which can be
+ found by referencing <structname>pg_settings</>.<structfield>unit</>.
+ For convenience, a different unit can also be specified explicitly
+ via a string value. It is case-sensitive and
+ may include a space between the value and the unit
+ <itemizedlist>
+ <listitem>
+ <para>
+ Valid memory units are
+ <literal>kB</literal> (kilobytes),
+ <literal>MB</literal> (megabytes),
+ <literal>GB</literal> (gigabytes),
+ and <literal>TB</literal> (terabytes).
+ The multiplier for memory units is 1024, not 1000.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Valid time units are
+ <literal>ms</literal> (milliseconds),
+ <literal>s</literal> (seconds),
+ <literal>min</literal> (minutes),
+ <literal>h</literal> (hours),
+ and <literal>d</literal> (days).
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
<para>
- One way to set these parameters is to edit the file
- <filename>postgresql.conf</><indexterm><primary>postgresql.conf</></>,
- which is normally kept in the data directory. (A default copy is
- installed there when the database cluster directory is
- initialized.) An example of what this file might look like is:
+ <emphasis><quote>enum</></emphasis>: These specified in the same way as string
+ parameters, but are restricted to a limited set of values that can be queried
+ from <structname>pg_settings</>.<structfield>enumvals</>:
+<programlisting>
+SELECT name, setting, enumvals FROM pg_settings WHERE enumvals IS NOT NULL;
+</programlisting>
+ Enum parameter values are case-insensitive.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="config-setting-configuration-file">
+ <title>Parameter Interaction via Configuration File</title>
+
+ <para>
+ The primary way to set these parameters is to edit the file
+ <filename>postgresql.conf</><indexterm><primary>postgresql.conf</></>,
+ which is normally kept in the data directory. (A default copy is
+ installed there when the database cluster directory is
+ initialized.) An example of what this file might look like is:
<programlisting>
# This is a comment
log_connections = yes
@@ -71,129 +128,209 @@ log_destination = 'syslog'
search_path = '"$user", public'
shared_buffers = 128MB
</programlisting>
- One parameter is specified per line. The equal sign between name and
- value is optional. Whitespace is insignificant and blank lines are
- ignored. Hash marks (<literal>#</literal>) designate the remainder of the
- line as a comment. Parameter values that are not simple identifiers or
- numbers must be single-quoted. To embed a single quote in a parameter
- value, write either two quotes (preferred) or backslash-quote.
- </para>
+ One parameter is specified per line. The equal sign between name and
+ value is optional. Whitespace is insignificant and blank lines are
+ ignored. Hash marks (<literal>#</literal>) designate the remainder of the
+ line as a comment. Parameter values that are not simple identifiers or
+ numbers must be single-quoted. To embed a single quote in a parameter
+ value, write either two quotes (preferred) or backslash-quote.
+ </para>
- <para>
- <indexterm>
- <primary>SIGHUP</primary>
- </indexterm>
- The configuration file is reread whenever the main server process
- receives a <systemitem>SIGHUP</> signal; this is most easily done by
- running <literal>pg_ctl reload</> from the command-line or by calling
- the SQL function <function>pg_reload_conf()</function>. The main
- server process
- also propagates this signal to all currently running server
- processes so that existing sessions also get the new
- value. Alternatively, you can send the signal to a single server
- process directly. Some parameters can only be set at server start;
- any changes to their entries in the configuration file will be ignored
- until the server is restarted. Invalid parameter settings in the
- configuration file are likewise ignored (but logged) during
- <systemitem>SIGHUP</> processing.
- </para>
- </sect2>
+ <para>
+ Parameters set in this way provide the global default value for the cluster.
+ The setting actually seen by the connecting user or issued statement
+ will be this value unless it is overridden.
+ The next sections describe ways in which the administrator
+ or user can override these defaults.
+ </para>
- <sect2 id="config-setting-other-methods">
- <title>Other Ways to Set Parameters</title>
+ <para>
+ <indexterm>
+ <primary>SIGHUP</primary>
+ </indexterm>
+ The configuration file is reread whenever the main server process
+ receives a <systemitem>SIGHUP</> signal; this is most easily done by
+ running <literal>pg_ctl reload</> from the command-line or by calling
+ the SQL function <function>pg_reload_conf()</function>. The main
+ server process
+ also propagates this signal to all currently running server
+ processes so that existing sessions also get the new
+ value. Alternatively, you can send the signal to a single server
+ process directly. Some parameters can only be set at server start;
+ any changes to their entries in the configuration file will be ignored
+ until the server is restarted. Invalid parameter settings in the
+ configuration file are likewise ignored (but logged) during
+ <systemitem>SIGHUP</> processing.
+ </para>
+ </sect2>
- <para>
- A second way to set these configuration parameters is to give them
- as a command-line option to the <command>postgres</command> command,
- such as:
-<programlisting>
-postgres -c log_connections=yes -c log_destination='syslog'
-</programlisting>
- Command-line options override any conflicting settings in
- <filename>postgresql.conf</filename>. Note that this means you won't
- be able to change the value on-the-fly by editing
- <filename>postgresql.conf</filename>, so while the command-line
- method might be convenient, it can cost you flexibility later.
- </para>
+ <sect2 id="config-setting-sql-command-interaction">
+ <title>Parameter Interaction via SQL</title>
+ <para>
+ <productname>PostgreSQL</productname> provides three SQL commands
+ to establish configuration defaults
+ that override those configured globally.
+ The evaluation of these defaults occurs at the beginning of a
+ new session, upon the user issuing <xref linkend="SQL-DISCARD">,
+ or if the server forces the session to reload it configuration after a
+ <systemitem>SIGHUP</systemitem>
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <xref linkend="SQL-ALTERSYSTEM"> command provides
+ an SQL-accessible means
+ to change the global defaults. Since the server must
+ be running to execute SQL
+ the timing of when the actual value takes effect depends
+ on the variable being
+ changed - but in no case is the current session affected
+ nor will any change take
+ effect before the next configuration
+ reload (<systemitem>SIGHUP</>) by the server.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <xref linkend="sql-alterdatabase"> command allows the database
+ administrator to override global settings on a per-database basis.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <xref linkend="sql-alterrole"> command allows the database administrator
+ to override both global and per-database settings with user-specific values.
+ </para>
+ </listitem>
+ </itemizedlist>
- <para>
- Occasionally it is useful to give a command line option to
- one particular session only. The environment variable
- <envar>PGOPTIONS</envar> can be used for this purpose on the
- client side:
+ <para>
+ Once a client connects to the database PostgreSQL provides two
+ additional SQL commands
+ to interact with session-local system configuration.
+ Both of these commands have equivalent
+ system administration functions.
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <xref linkend="SQL-SHOW">
+ command allows inspection of the current value of all parameters.
+ The corresponding function
+ is <function>current_setting(setting_name text)</function>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <xref linkend="SQL-SET">
+ command allows modification of the current value some parameters.
+ The corresponding function is
+ <function>set_config(setting_name, new_value, is_local)</function>.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ Both <emphasis>SELECT</> and <emphasis>UPDATE</> can be issued against the
+ virtual table <structname>pg_settings</> to view and
+ affect the session-local configuration.
+ Its definition can be found in <xref linkend="view-pg-settings">.
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref linkend="SQL-SELECT">-ing against this relation
+ is the equivalent of issuing
+ SHOW but provides considerably more detail as well as
+ allowing for joining against other relations and specifying filter criteria.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="SQL-UPDATE">-ing against this relation,
+ specifically the <structname>setting</> column
+ is the equivalent of issuing SET though all values must be single-quoted.
+ </para>
+ <para>
+ Note that the eqivalent of
<programlisting>
-env PGOPTIONS='-c geqo=off' psql
+SET configuration_parameter TO DEFAULT;
+</>
+ would be:
+<programlisting>
+UPDATE pg_settings SET setting = reset_val WHERE name = 'configuration_parameter';
</programlisting>
- (This works for any <application>libpq</>-based client application, not
- just <application>psql</application>.) Note that this won't work for
- parameters that are fixed when the server is started or that must be
- specified in <filename>postgresql.conf</filename>.
- </para>
+ </para>
+ </listitem>
+ </itemizedlist>
- <para>
- Furthermore, it is possible to assign a set of parameter settings to
- a user or a database. Whenever a session is started, the default
- settings for the user and database involved are loaded. The
- commands <xref linkend="sql-alterrole">
- and <xref linkend="sql-alterdatabase">,
- respectively, are used to configure these settings. Per-database
- settings override anything received from the
- <command>postgres</command> command-line or the configuration
- file, and in turn are overridden by per-user settings; both are
- overridden by per-session settings.
- </para>
+ </sect2>
- <para>
- Some parameters can be changed in individual <acronym>SQL</acronym>
- sessions with the <xref linkend="SQL-SET">
- command, for example:
-<screen>
-SET ENABLE_SEQSCAN TO OFF;
-</screen>
- If <command>SET</> is allowed, it overrides all other sources of
- values for the parameter. Some parameters cannot be changed via
- <command>SET</command>: for example, if they control behavior that
- cannot be changed without restarting the entire
- <productname>PostgreSQL</productname> server. Also, some parameters
- require superuser permission to change via <command>SET</command> or
- <command>ALTER</>.
- </para>
+ <sect2>
+ <title>Parameter Interaction via Shell</title>
+ <para>
+ In addition to setting global defaults or attaching overrides
+ at the database or role scope
+ , you may choose to provide them to
+ <productname>PostgreSQL</productname> via shell facilities.
+ Both the server and <application>libpq</> client library
+ have defined ways to accept
+ parameter values via the shell.
+ </para>
+ <itemizedlist>
- <para>
- Another way to change configuration parameters persistently is by
- use of <xref linkend="SQL-ALTERSYSTEM">
- command, for example:
-<screen>
-ALTER SYSTEM SET checkpoint_timeout TO 600;
-</screen>
- This command will allow users to change values persistently
- through SQL command. The values will be effective after reload of server configuration
- (<acronym>SIGHUP</>) or server startup. The effect of this command is similar to when
- user manually changes values in <filename>postgresql.conf</filename>.
- </para>
- </sect2>
+ <listitem>
+ <para>
+ On the <emphasis>server</emphasis>, command-line options can passed to the
+ <command>postgres</command> command directly via the "-c" parameter.
+<programlisting>
+postgres -c log_connections=yes -c log_destination='syslog'
+</programlisting>
+ Settings provided this way override those resolved globally
+ (via postgresql.conf or ALTER SYSTEM)
+ but are otherwise treated as being global for the purpose of
+ database and role overriding.
+ </para>
- <sect2 id="config-setting-examining">
- <title>Examining Parameter Settings</title>
+ <para>
+ Typically, a production system will be adminstered via its
+ <filename>postgresql.conf</filename> file.
+ Use of this mechanism is suggested only for development and testing.
+ </para>
+ </listitem>
- <para>
- The <xref linkend="SQL-SHOW">
- command allows inspection of the current values of all parameters.
- </para>
+ <listitem>
+ <para>
+ On the <emphasis>libpq-client</emphasis>, command-line options are
+ specified using the
+ <envar>PGOPTIONS</envar> environment variable.
+ Upon connecting to a server the contents of this variable are sent
+ to the server as if they were being
+ executed via a SQL <xref linkend="SQL-SET"> at the beginning of the session.
+ </para>
- <para>
- The virtual table <structname>pg_settings</structname> also allows
- displaying and updating session run-time parameters; see <xref
- linkend="view-pg-settings"> for details and a description of the
- different variable types and when they can be changed.
- <structname>pg_settings</structname> is equivalent to <command>SHOW</>
- and <command>SET</>, but can be more convenient
- to use because it can be joined with other tables, or selected from using
- any desired selection condition. It also contains more information about
- each parameter than is available from <command>SHOW</>.
- </para>
+ <para>
+ However, the format for <envar>PGOPTIONS</envar> is similar to that provided when launching
+ <command>postgres</command> command.
+ Specifically, the '-c' flag specification is part of the value.
+<programlisting>
+env PGOPTIONS="-c geqo=off -c statement_timeout='5 min'" psql
+</programlisting>
+ </para>
- </sect2>
+ <para>
+ Other clients and libraries may provide their own mechanisms,
+ via the shell or otherwise, that allow the user
+ to setup the session configuration without requiring the user
+ to issue SQL commands. Please see their documentation
+ for details.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect2>
<sect2 id="config-includes">
<title>Configuration File Includes</title>
Import Notes
Reply to msg id not found: CAKFQuwbjqT7jHAULPM0YB7x+qpddH5bYnGmwZ+yVhNBb6SVnQ@mail.gmail.com
On Sun, Jun 8, 2014 at 10:49 AM, David Johnston <david.g.johnston@gmail.com>
wrote:
On Wed, May 21, 2014 at 4:37 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
David G Johnston <david.g.johnston@gmail.com> writes:
Section 18.1.3 is named "18.1.3. Other Ways to Set Parameters" yet
does not
reference the ability to use "set_config(...)" to make changes to
configuration parameters.Hm, yeah, seems like an oversight.
Another thing I've never been terribly happy about is that pg_settings is
mentioned only in the next sub-section. Could we merge that sub-section
with 18.1.3?regards, tom lane
I am presuming that posting a doc-only patch here instead of -hackers is
acceptable.So I finally decided to setup a development environment and generate
actual patches. I have few in mind but I thought that these two changes
might be quick to implement. I thought wrong - mostly due to my desire to
improve things and not just "add and merge" some content.I focused my effort on 18.1.1 to 18.1.4 though the actual coverage of
sections 2-4 has changed considerably. I decided not to minimize
white-space changes in that region since because of the re-organization git
was unable, especially in a couple of instances, to match up before and
after anyway. The file itself does not have a consistent format and so I
just applied 2-space indentations at each level. I plan to go back and do
polishing but I first want to make sure that the end-user product is
acceptable.I've only hit this one file for the moment but figure on reviewing all of
the relevant cross-references for tweaks and consistency. I already did so
in passing and would not expect anything as invasive as what I am proposing
here - so if others feel these changes have merit I will plan on taking any
ideas and put forth a v2 patch that will hopefully be ready-to-commit.Thank you in advance for any attention and education you can provide.
David J.
Updated the attached PDF (but not the patch) to include a suggested
wording to address floating point number rounding and zero treatment.
"disabling log_rotation_age feature."
/messages/by-id/23802.1402584095@sss.pgh.pa.us
This addition still needs some work as well as the patch as a whole (see my
comments above). The attached PDF is the page that results from "make
html"; the original patch has been re-attached as well and -hackers copied
given the lack of response on -doc.
I am hoping this change would be something that could be included in 9.4; I
believe the enhancements would be most beneficial to newcomers who are just
getting started with PostgreSQL and would be using 9.4 as their starting
point.
David J.
Attachments:
config_sgml_18_1_1-4_v1.difftext/plain; charset=US-ASCII; name=config_sgml_18_1_1-4_v1.diffDownload
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 697cf99..6ac48d6 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -11,7 +11,7 @@
<para>
There are many configuration parameters that affect the behavior of
the database system. In the first section of this chapter, we
- describe how to set configuration parameters. The subsequent sections
+ describe how to interact with configuration parameters. The subsequent sections
discuss each parameter in detail.
</para>
@@ -24,46 +24,103 @@
<para>
All parameter names are case-insensitive. Every parameter takes a
value of one of five types: Boolean, integer, floating point,
- string or enum. Boolean values can be written as <literal>on</literal>,
- <literal>off</literal>, <literal>true</literal>,
- <literal>false</literal>, <literal>yes</literal>,
- <literal>no</literal>, <literal>1</literal>, <literal>0</literal>
- (all case-insensitive) or any unambiguous prefix of these.
+ string or enum.
</para>
+ <itemizedlist>
+
+ <listitem>
<para>
- Some settings specify a memory or time value. Each of these has an
- implicit unit, which is either kilobytes, blocks (typically eight
- kilobytes), milliseconds, seconds, or minutes. Default units can be
- found by referencing <structname>pg_settings</>.<structfield>unit</>.
- For convenience,
- a different unit can also be specified explicitly. Valid memory units
- are <literal>kB</literal> (kilobytes), <literal>MB</literal>
- (megabytes), <literal>GB</literal> (gigabytes), and <literal>TB</literal> (terabytes); valid time units
- are <literal>ms</literal> (milliseconds), <literal>s</literal>
- (seconds), <literal>min</literal> (minutes), <literal>h</literal>
- (hours), and <literal>d</literal> (days). Note that the multiplier
- for memory units is 1024, not 1000.
+ <emphasis>Boolean</emphasis>: Values can be written as
+ <literal>on</literal>,
+ <literal>off</literal>,
+ <literal>true</literal>,
+ <literal>false</literal>,
+ <literal>yes</literal>,
+ <literal>no</literal>,
+ <literal>1</literal>,
+ <literal>0</literal>
+ (all case-insensitive) or any unambiguous prefix of these.
</para>
+ </listitem>
+ <listitem>
<para>
- Parameters of type <quote>enum</> are specified in the same way as string
- parameters, but are restricted to a limited set of values. The allowed
- values can be found
- from <structname>pg_settings</>.<structfield>enumvals</>.
- Enum parameter values are case-insensitive.
+ <emphasis>String</emphasis>:
+ Enclose the value in single-quote. Values are case-insensitive.
+ If multiple values are allowed separate them with commas.
</para>
- </sect2>
+ </listitem>
+
+ <listitem>
+ <para>
+ <emphasis>Numeric</emphasis>
+ (integer and floating point): Do not use single-quotes
+ (unless otherwise required)
+ or thousand separators.
+ Typically memory or time related - see comments in that
+ section for detail.
+ </para>
+ </listitem>
- <sect2 id="config-setting-configuration-file">
- <title>Setting Parameters via the Configuration File</title>
+ <listitem>
+ <para>
+ <emphasis>Numeric or String with Unit</emphasis>: Memory & Time.
+ Both of these have an implicit unit, which is either kilobytes,
+ blocks (typically eight kilobytes), milliseconds, seconds, or minutes.
+ An numeric value will use the default, which can be
+ found by referencing <structname>pg_settings</>.<structfield>unit</>.
+ For convenience, a different unit can also be specified explicitly
+ via a string value. It is case-sensitive and
+ may include a space between the value and the unit
+ <itemizedlist>
+ <listitem>
+ <para>
+ Valid memory units are
+ <literal>kB</literal> (kilobytes),
+ <literal>MB</literal> (megabytes),
+ <literal>GB</literal> (gigabytes),
+ and <literal>TB</literal> (terabytes).
+ The multiplier for memory units is 1024, not 1000.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Valid time units are
+ <literal>ms</literal> (milliseconds),
+ <literal>s</literal> (seconds),
+ <literal>min</literal> (minutes),
+ <literal>h</literal> (hours),
+ and <literal>d</literal> (days).
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
<para>
- One way to set these parameters is to edit the file
- <filename>postgresql.conf</><indexterm><primary>postgresql.conf</></>,
- which is normally kept in the data directory. (A default copy is
- installed there when the database cluster directory is
- initialized.) An example of what this file might look like is:
+ <emphasis><quote>enum</></emphasis>: These specified in the same way as string
+ parameters, but are restricted to a limited set of values that can be queried
+ from <structname>pg_settings</>.<structfield>enumvals</>:
+<programlisting>
+SELECT name, setting, enumvals FROM pg_settings WHERE enumvals IS NOT NULL;
+</programlisting>
+ Enum parameter values are case-insensitive.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="config-setting-configuration-file">
+ <title>Parameter Interaction via Configuration File</title>
+
+ <para>
+ The primary way to set these parameters is to edit the file
+ <filename>postgresql.conf</><indexterm><primary>postgresql.conf</></>,
+ which is normally kept in the data directory. (A default copy is
+ installed there when the database cluster directory is
+ initialized.) An example of what this file might look like is:
<programlisting>
# This is a comment
log_connections = yes
@@ -71,129 +128,209 @@ log_destination = 'syslog'
search_path = '"$user", public'
shared_buffers = 128MB
</programlisting>
- One parameter is specified per line. The equal sign between name and
- value is optional. Whitespace is insignificant and blank lines are
- ignored. Hash marks (<literal>#</literal>) designate the remainder of the
- line as a comment. Parameter values that are not simple identifiers or
- numbers must be single-quoted. To embed a single quote in a parameter
- value, write either two quotes (preferred) or backslash-quote.
- </para>
+ One parameter is specified per line. The equal sign between name and
+ value is optional. Whitespace is insignificant and blank lines are
+ ignored. Hash marks (<literal>#</literal>) designate the remainder of the
+ line as a comment. Parameter values that are not simple identifiers or
+ numbers must be single-quoted. To embed a single quote in a parameter
+ value, write either two quotes (preferred) or backslash-quote.
+ </para>
- <para>
- <indexterm>
- <primary>SIGHUP</primary>
- </indexterm>
- The configuration file is reread whenever the main server process
- receives a <systemitem>SIGHUP</> signal; this is most easily done by
- running <literal>pg_ctl reload</> from the command-line or by calling
- the SQL function <function>pg_reload_conf()</function>. The main
- server process
- also propagates this signal to all currently running server
- processes so that existing sessions also get the new
- value. Alternatively, you can send the signal to a single server
- process directly. Some parameters can only be set at server start;
- any changes to their entries in the configuration file will be ignored
- until the server is restarted. Invalid parameter settings in the
- configuration file are likewise ignored (but logged) during
- <systemitem>SIGHUP</> processing.
- </para>
- </sect2>
+ <para>
+ Parameters set in this way provide the global default value for the cluster.
+ The setting actually seen by the connecting user or issued statement
+ will be this value unless it is overridden.
+ The next sections describe ways in which the administrator
+ or user can override these defaults.
+ </para>
- <sect2 id="config-setting-other-methods">
- <title>Other Ways to Set Parameters</title>
+ <para>
+ <indexterm>
+ <primary>SIGHUP</primary>
+ </indexterm>
+ The configuration file is reread whenever the main server process
+ receives a <systemitem>SIGHUP</> signal; this is most easily done by
+ running <literal>pg_ctl reload</> from the command-line or by calling
+ the SQL function <function>pg_reload_conf()</function>. The main
+ server process
+ also propagates this signal to all currently running server
+ processes so that existing sessions also get the new
+ value. Alternatively, you can send the signal to a single server
+ process directly. Some parameters can only be set at server start;
+ any changes to their entries in the configuration file will be ignored
+ until the server is restarted. Invalid parameter settings in the
+ configuration file are likewise ignored (but logged) during
+ <systemitem>SIGHUP</> processing.
+ </para>
+ </sect2>
- <para>
- A second way to set these configuration parameters is to give them
- as a command-line option to the <command>postgres</command> command,
- such as:
-<programlisting>
-postgres -c log_connections=yes -c log_destination='syslog'
-</programlisting>
- Command-line options override any conflicting settings in
- <filename>postgresql.conf</filename>. Note that this means you won't
- be able to change the value on-the-fly by editing
- <filename>postgresql.conf</filename>, so while the command-line
- method might be convenient, it can cost you flexibility later.
- </para>
+ <sect2 id="config-setting-sql-command-interaction">
+ <title>Parameter Interaction via SQL</title>
+ <para>
+ <productname>PostgreSQL</productname> provides three SQL commands
+ to establish configuration defaults
+ that override those configured globally.
+ The evaluation of these defaults occurs at the beginning of a
+ new session, upon the user issuing <xref linkend="SQL-DISCARD">,
+ or if the server forces the session to reload it configuration after a
+ <systemitem>SIGHUP</systemitem>
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <xref linkend="SQL-ALTERSYSTEM"> command provides
+ an SQL-accessible means
+ to change the global defaults. Since the server must
+ be running to execute SQL
+ the timing of when the actual value takes effect depends
+ on the variable being
+ changed - but in no case is the current session affected
+ nor will any change take
+ effect before the next configuration
+ reload (<systemitem>SIGHUP</>) by the server.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <xref linkend="sql-alterdatabase"> command allows the database
+ administrator to override global settings on a per-database basis.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <xref linkend="sql-alterrole"> command allows the database administrator
+ to override both global and per-database settings with user-specific values.
+ </para>
+ </listitem>
+ </itemizedlist>
- <para>
- Occasionally it is useful to give a command line option to
- one particular session only. The environment variable
- <envar>PGOPTIONS</envar> can be used for this purpose on the
- client side:
+ <para>
+ Once a client connects to the database PostgreSQL provides two
+ additional SQL commands
+ to interact with session-local system configuration.
+ Both of these commands have equivalent
+ system administration functions.
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ The <xref linkend="SQL-SHOW">
+ command allows inspection of the current value of all parameters.
+ The corresponding function
+ is <function>current_setting(setting_name text)</function>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <xref linkend="SQL-SET">
+ command allows modification of the current value some parameters.
+ The corresponding function is
+ <function>set_config(setting_name, new_value, is_local)</function>.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ Both <emphasis>SELECT</> and <emphasis>UPDATE</> can be issued against the
+ virtual table <structname>pg_settings</> to view and
+ affect the session-local configuration.
+ Its definition can be found in <xref linkend="view-pg-settings">.
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref linkend="SQL-SELECT">-ing against this relation
+ is the equivalent of issuing
+ SHOW but provides considerably more detail as well as
+ allowing for joining against other relations and specifying filter criteria.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="SQL-UPDATE">-ing against this relation,
+ specifically the <structname>setting</> column
+ is the equivalent of issuing SET though all values must be single-quoted.
+ </para>
+ <para>
+ Note that the eqivalent of
<programlisting>
-env PGOPTIONS='-c geqo=off' psql
+SET configuration_parameter TO DEFAULT;
+</>
+ would be:
+<programlisting>
+UPDATE pg_settings SET setting = reset_val WHERE name = 'configuration_parameter';
</programlisting>
- (This works for any <application>libpq</>-based client application, not
- just <application>psql</application>.) Note that this won't work for
- parameters that are fixed when the server is started or that must be
- specified in <filename>postgresql.conf</filename>.
- </para>
+ </para>
+ </listitem>
+ </itemizedlist>
- <para>
- Furthermore, it is possible to assign a set of parameter settings to
- a user or a database. Whenever a session is started, the default
- settings for the user and database involved are loaded. The
- commands <xref linkend="sql-alterrole">
- and <xref linkend="sql-alterdatabase">,
- respectively, are used to configure these settings. Per-database
- settings override anything received from the
- <command>postgres</command> command-line or the configuration
- file, and in turn are overridden by per-user settings; both are
- overridden by per-session settings.
- </para>
+ </sect2>
- <para>
- Some parameters can be changed in individual <acronym>SQL</acronym>
- sessions with the <xref linkend="SQL-SET">
- command, for example:
-<screen>
-SET ENABLE_SEQSCAN TO OFF;
-</screen>
- If <command>SET</> is allowed, it overrides all other sources of
- values for the parameter. Some parameters cannot be changed via
- <command>SET</command>: for example, if they control behavior that
- cannot be changed without restarting the entire
- <productname>PostgreSQL</productname> server. Also, some parameters
- require superuser permission to change via <command>SET</command> or
- <command>ALTER</>.
- </para>
+ <sect2>
+ <title>Parameter Interaction via Shell</title>
+ <para>
+ In addition to setting global defaults or attaching overrides
+ at the database or role scope
+ , you may choose to provide them to
+ <productname>PostgreSQL</productname> via shell facilities.
+ Both the server and <application>libpq</> client library
+ have defined ways to accept
+ parameter values via the shell.
+ </para>
+ <itemizedlist>
- <para>
- Another way to change configuration parameters persistently is by
- use of <xref linkend="SQL-ALTERSYSTEM">
- command, for example:
-<screen>
-ALTER SYSTEM SET checkpoint_timeout TO 600;
-</screen>
- This command will allow users to change values persistently
- through SQL command. The values will be effective after reload of server configuration
- (<acronym>SIGHUP</>) or server startup. The effect of this command is similar to when
- user manually changes values in <filename>postgresql.conf</filename>.
- </para>
- </sect2>
+ <listitem>
+ <para>
+ On the <emphasis>server</emphasis>, command-line options can passed to the
+ <command>postgres</command> command directly via the "-c" parameter.
+<programlisting>
+postgres -c log_connections=yes -c log_destination='syslog'
+</programlisting>
+ Settings provided this way override those resolved globally
+ (via postgresql.conf or ALTER SYSTEM)
+ but are otherwise treated as being global for the purpose of
+ database and role overriding.
+ </para>
- <sect2 id="config-setting-examining">
- <title>Examining Parameter Settings</title>
+ <para>
+ Typically, a production system will be adminstered via its
+ <filename>postgresql.conf</filename> file.
+ Use of this mechanism is suggested only for development and testing.
+ </para>
+ </listitem>
- <para>
- The <xref linkend="SQL-SHOW">
- command allows inspection of the current values of all parameters.
- </para>
+ <listitem>
+ <para>
+ On the <emphasis>libpq-client</emphasis>, command-line options are
+ specified using the
+ <envar>PGOPTIONS</envar> environment variable.
+ Upon connecting to a server the contents of this variable are sent
+ to the server as if they were being
+ executed via a SQL <xref linkend="SQL-SET"> at the beginning of the session.
+ </para>
- <para>
- The virtual table <structname>pg_settings</structname> also allows
- displaying and updating session run-time parameters; see <xref
- linkend="view-pg-settings"> for details and a description of the
- different variable types and when they can be changed.
- <structname>pg_settings</structname> is equivalent to <command>SHOW</>
- and <command>SET</>, but can be more convenient
- to use because it can be joined with other tables, or selected from using
- any desired selection condition. It also contains more information about
- each parameter than is available from <command>SHOW</>.
- </para>
+ <para>
+ However, the format for <envar>PGOPTIONS</envar> is similar to that provided when launching
+ <command>postgres</command> command.
+ Specifically, the '-c' flag specification is part of the value.
+<programlisting>
+env PGOPTIONS="-c geqo=off -c statement_timeout='5 min'" psql
+</programlisting>
+ </para>
- </sect2>
+ <para>
+ Other clients and libraries may provide their own mechanisms,
+ via the shell or otherwise, that allow the user
+ to setup the session configuration without requiring the user
+ to issue SQL commands. Please see their documentation
+ for details.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect2>
<sect2 id="config-includes">
<title>Configuration File Includes</title>
config_sgml_18_1_setting_parameters.pdfapplication/pdf; name=config_sgml_18_1_setting_parameters.pdfDownload
%PDF-1.4
%����
10 0 obj
<</Type /Catalog
/Pages 1 0 R
>>
endobj
11 0 obj
<</Type /Page
/Parent 1 0 R
/Resources <</ProcSets [/PDF /Text /ImageB /ImageC /ImageI]
/ExtGState <</G0 12 0 R
/G1 13 0 R
>>
/Font <</F0 14 0 R
/F1 15 0 R
/F2 16 0 R
/F3 17 0 R
/F4 18 0 R
>>
>>
/MediaBox [0 0 612 792]
/Annots [<</Type /Annot
/Subtype /Link
/Border [0 0 0]
/Rect [182.2349 743.1786 430.7651 756.9011]
/A <</Type /Action
/S /URI
/URI (file:///E:/Linux1004Workarea/git-postgresql-org/postgresql/doc/src/sgml/html/index.html)
>>
>> <</Type /Annot
/Subtype /Link
/Border [0 0 0]
/Rect [35.0989 729.4561 61.7816 743.1786]
/A <</Type /Action
/S /URI
/URI (file:///E:/Linux1004Workarea/git-postgresql-org/postgresql/doc/src/sgml/html/runtime-config.html)
>>
>> <</Type /Annot
/Subtype /Link
/Border [0 0 0]
/Rect [89.989 729.4561 106.761 743.1786]
/A <</Type /Action
/S /URI
/URI (file:///E:/Linux1004Workarea/git-postgresql-org/postgresql/doc/src/sgml/html/runtime-config.html)
>>
>> <</Type /Annot
/Subtype /Link
/Border [0 0 0]
/Rect [548.9313 729.4561 577.9011 743.1786]
/A <</Type /Action
/S /URI
/URI (file:///E:/Linux1004Workarea/git-postgresql-org/postgresql/doc/src/sgml/html/runtime-config-file-locations.html)
>>
>>]
/Contents 19 0 R
>>
endobj
19 0 obj
<</Filter /FlateDecode
/Length 11054
>> stream
x��}��%�m��~������qb�N��<@0�1� ���)�����*���;�-�7QEQ���}�����>�]����o��M>�����w��e���������������{�y����G��%�����^�����������>����c����!�/_���/����������G?'j����R�����H)������{�jR��`E����>��5�g+����ZXO1.�)�<a����������s�����0��*��=P���f5f�G�70U��N,
��[4BNB�f��v�29`������IZ�L����W��5g���&�� j��`
)�G^������0�l
XBm�N�����uL�����1���������N�!��S3�[��p�:M]Z��M�mHq������*�����;�s2'�sND=sn���4��?zh'���yz�QRgf��p�z� B�fV����a�����BoL
}1������Lo�������jF����1�1�$��j7����Kb[R'����K.���`)�H��J8Y�,���y�9Y��*�:��u3z[e������l�+����Z����C�<*vy����o��N���Z�a�:�jM����nl�s�P3�a�a��T%2�f�y{u����k�d���K��9���(*�W�0;Y�����Y��^U���K]�^��P�"���� vf�M�n����_����� ����C������*�������}v�g��>Ou���?�W>�����>�F_�_��~�~������R����0��_g����������w�W;X����_��_�f��������8KQ�{=Z4����A����D��a�Y)�������N���Y��
d��0�lY����e&JX�N��o������:���0�5&���v�~�R�|�]t#L�#����$Z0��]Z�0a+M(n��f�C-k:������k6�!o0��3x��cN*m��}m��}m��S��6�Z�<�z��a��i�%uN����:XL��`���0�
�v����(G�?�&)t\���n��m:��2���!�
#���*��fE�w �zC12`i����YZ��V����0i�z��h �A��JT���'�N/1��/P,c��n�$��6&�0k��4�[�\������������j�sKc�zQ��gB�3V��y6o6����C�����)7��XZ�|Prs5��W>(�+�~�x�V��������e6���f>��a�� ^-�����a�y�S0�_����v��0?��O��]�`��7c�Xb��#}�tt���wK��)�2O�:X������6�$��*l!f�W��2k�>�6�-��������5_�?��O�}�N�����]4�/?C�~W��a������-�"-WW@�6[�j�4-��
���X��u[
�rjV��[�����,���U\U���(Jo��Jo������l�#C/ k�����J�������<�1���p�i����'[�������3��:�*�>�����!m�[#�z��i�gc7-���LZN
����n��:33U�4�J���1I�T[��V��l���(1����!��8/��f��=r�U���[��m�5)�b�6��a�5����U�?z� �-s0�,���`�s���������P�`m����z6���k(l� �QG�6��a��N���>��u���Xb8�l���R�>�ZV�#m��B�n0[�f%���o�����z*d��6����������p����&��W���s��k��w�hp�L�}��;�F�>}��|#?���g��y��a�5��2�����6��d+�����&RJt�i���y��~��kB1�����`���0�������D�DZ���\K�����X��d1��CV����E�UC!W�2��f��m�
��0������a��$NF<��D+���SF���#�B�V
'�2n���!�1�����X�����5����N�����$;�����|�F��2���+�1��F9��Z{��6������d{�B3[���w�Wax��_'��AEL��T�2��
b�� Riu�[+����W��!�@��i�;_�r}"�����������v(���%���0�����e�IyI�?��[m/�|:||8K�`�G������}��w�����7�&���o�^���;+��_��lW_}�m�k���<^�x��>>�?�;������I������j�������g�����W?��:�J��R���?��S��]M}�� !�[C��g� ������!%7#7SA}�P\��a*���A����Q s�4m}\gF�2XAb� �4���d�R4V>�F\����E���?��*�wh���<���X�t
F�f���q��
��>�RX��3s$pm������\U��YX���rol����ef����������������M��e# �������*�D��"�ft .��1��H��a�!2��P�:�x���h�H�)�,��=?��8dW&�1+����F�����q>�x56'z��9�����i|��<idc��"s��
���� ~$f��������������T���6�l�i�0��}�B��y/�yA{���a�EY�[���
�v�mN��+� ��?o�����>x��!=�jh�=�v���\/oQR��7*����z�2��2B�R�~����Is���r��[,������#C/x��H��Ko��i'�hM"��Y�jy'�L���y�}�]�5�L���Z����s��,�q!j1�f#���1�vb=ofZ2���'Z�� 3��2;(��jC43_!�Y$<Q�����hf�����h��B�*D#�?a���'�����[���B,��}�hf����9>����9>���{��=�P!�����������t�h.���/�����g���I���f��
�'����[��=
|��pY����}��?������_�, ���q�+�
i���=��>b#�������@�r�a3�s2����W���������x��$��-r����>��h���X���Fq����:; O���W&�-������57?���� '�.I��Z5� m����Z3��j�d.���B�=W�g���d�����6�G#�${FXB>�R7�U5��5f�CLQ�g�g3��a�l��2;y�@B���3d��A��e�=��,�,�x�u�~V��+�g�����eJ�d2S�^��0����g!�h}�\��P7��xk^<���|Kce b�
�N�XdN���h>���0Qk>�5�Tf�g~��4�{ `����H��C,dG�!�i����������g��Q R��C��xv<n��QR��Au[��(�al���P�&B���eT���*F
���$X�`�����l�����X���m������NRnT���*�`%�Lb�����(��jt(2:�����BM%�^7�F�:����F3�����a"��O���f#��D,j�>b!�L�Br����qG,�������Y���O@�]������X-m�B>��E-�G,���X�OL}%�\d����l#���W��X���_�����7�}���~��o�t�J�|`�M��
������H?�Y=�?����c(�|D����D��������+1N���1����L
�WNU[(�V�����G4j�P�Yl������(���Hn����S�����x�����g�o1 �Rq7��&A9 ��Q
���Um�WP(�WBo5R��r��3��'�����8�,��I@nd\I!��h�
'Fc!f������G#�!y1���E����g���)�IC!����}D�Xo��^�����|�Y#���%*��+P�fn��/�I}'"����Hl��i�(�A+�������E�Xd��a�5�4�5/c��~���aLb�y����"��xF����@�O�D��#�[G���!aK�PN
I
��P��
t�n��$�b<����i-
G�>5��y�a5'I^����}HVm��c��27$8�JJU�� E�T[8�������$���D�RI,��<��+��bn�������/��$���P)�p���]j#�s_�y�S(W�w K(�?[�Aw%��`LHC�}i�:*!
��1+#�sb]i�:C���(���K
t�z�\�L�F7����x��E~��M�jl�u��x ��^u��PE�3n�����������;�#3 �b$���hP���()n��B�� }�(��-��0���K6P(�V5�M�������pV�U��g��8>��1
r8)7�V���7���r�2+�i��|�XJ�����H�@�HE
��R)b��q}lJbq���@��b��T�K�6�g��s�tMB]��J�g9!QP�pW�6��G�a�}���S>[�ti $�u
�����5����5�x�:5�O�< q�B��`�4�h~��B��cS�I�#X���s3^���a����Rx���������p���>]B
\),!D� ���V������/7���8���D�^�T��v
�4b�T���L�_�|����8���u�
��p~HV�5�>E�q�NJ��8o6���A,��X�-n���
��V5��`��V�I�3E�c�3��E�8���]LF�h���=1�p���� vhU��v���At�o����J���
y��`=���au2��pv8�Fb8���s��
>�k��O3����l�h�^+�����d�>�����fZz����Ka3�uK��i(^��m�|�������M���'�j(���
U����+�k��;�q��+�'���W�M�2�kj\��#��������q:���"*�b��e$&�yW�^ c�W�����%������1}���+��^�?
�y2�\Ds�Z�UG���YK
5��{���5��p��lP�|o�����hp����fm�C1�XfRL4��nl=���F/�`%�b^uke��P���I<"��4P�+k�I�l�%[6QR>�D�CO|��|2��� �$�w�����Kx�y��~�9���Y!�������5�()L�dk�'J�'�(�$�����D���Ec������W�J���4QR��d��(y%%o�C��j��(��>$J*�_���j���=3�d��{>�������A����qc�}(~N���E[���2�������k����fj%X�^��������+^1���8�65��[����H�n��L�:�s��n�~KX;�3)������ E��Y���W��p��W%2;=��R� ��2PO���xZ4��������r,.d����������dG2�4z���.fG����^g9q�����(xF����7��n��PH]a����Z�ae4�5����Ez���32�#�Z
(�nz���f�v�������;i��1n,���������c%W.c�f6��o8?��F��
��w �P@_��n����D��HE�i��bz�+�t�j�����S�+e4��CC�O[��i��bR�,�h���Ds��uJ�g8�M[8
,��g�+������/F���z����Q8���y�:�7���KTRb���W�+r�EA��F�"Y��DO������������p���D
g�+�.��u�����JeLo3s�����j%2jF
X!}�jV
p��i���k{3s���f��vn����K���������3S�I���c����v��� ��h�Y�f��r�q�Z$�[)@�����0��WeV��Za`t* ^}�@?��n�� }N
���tO����*��+����}!��(��(�g�bx��jz�'2a�<���p��@!=����b��w�����7a�������~)B�]�P����p:8+�Y1�}z8������6����SBzk18��P�:
���`����������l��O4�`���H��*��c���nLo3R��5����4��F
����P�l����������h��@S&Zwz"!�%�)�`�����^�����[':)�tc)tc���0�|��z�Lc�f��0�K���x�N�==��g�[�2�y�����a��/,f����&��R���+�
�MI��3;���{S=��UK�<�����:�S7n)�V<h���-�/ ����nP~�fNz�
�o�!���� �K��t,\
���mh��.�pV�����.���Y��sV����������3��� 9#5t�
�z%F�z�V����r�J�[�2�����jY�8T,���Z+�����<q���}NWc������t5���0�G.��ef�ZavH��H�����L�D
r<�z~x'��5|WmN��e�0@.56���J����,LVODF�2{'�1�� 2�r I��pR�<��d�7/��nl8����6W���gq�������j�����<�|�������
�
:
��u
tj��z�k����ct:_7�!k(����s���O�� L��P��o#3z� L��<�V��������+|h&!'c!�@}�)3��sL�>�����52�Y!s��a!;3�����X�����X�n���~,�%�JN�b]�[��g(�����l�
�c��"#��Z)@�;��bs���'������z�CKA2��q[Y�������V:��7��hDc��v�yU��������ntc� O*1�����^:�Q��p�>Cn����G �
������n5��3
���am�w�2[��2�Z�a��?lL��3y����$u�Z!��
|p�.��4�W�b~�
�����>����Oo��|-�j��N���'��k������� �+���{��q��E/�M
�������Q�;�y$��LD
gx�nU�W��PFR�>������s�x�j�������^�=.�+5��� �s���K=�y���3�����u�p����+7}������#�����9P�r�G�8~���s~~_������~������B,����I�������V�����sE���t��B�p�^��7]/2�������������Bl\�����:����A}�u��/I�������Pt%��N�{}C��S�L��������D!���������4=�X�2P�t���O����s�x��8��B�� |��1�-T����D��p��Y��R�J.M�2:7�~��L�H���I��
}_!��L(���
��<NCJI��g����6��?0R��Q�vT*�j�[BcV����2�����W��T��.)B���oFJXs}�K:GlY�8��3�C}���d������J�X%L���'�7V RG�F?�d����
�-aH�������Ru=��$��2����g�?nKW�aWa57�,$��z�:��=;��\5��?,���w<�;q2�d��$t�k�0��K� M�v=8��J��v�gY���2�:�P�)�y����C����z���~
p4����#8��p^�����x]EA!95-�)������;\�fR9���;f���~:4������^�HE��������,��+d����_9�����]�|�Q��5��?0�����w"�:'��H/Y�s��W-/2c[��"�bk�T�PP��H_���:������d��m��;�y��O/��2��j�Z7P�-Q
^�1��������QL���u,�>7��xe������h��b�W����}R��m@J>���(���� H�c
���H���A���;p��}����B,��=R�T��& 5J�)�dR�0���R����bR���W�
H����� HI��{����
|
H)�C@JAR
����O��t�����n7�L[�������O7���)�Ep�{�1��WP�/�8)5�c��gTj��J����qP�3����j5��i��������pU,%�������\2�p���A�,��S����1����xW; \����*m90\�~A�����t����DtG\��b W�R�{���$;"��dG�R'-�R[���+�R�r������J��y�
�!�S�49���W���� �r��NnB�R��*A��2P� n�Y�I��KX\�X����G�*;
����Fc+�0V�KI�Za�j������b����JO;[���DN�O\�3��y��~F2M�*�����Ni�W���VP32��v�u��yh(������+����q�3�����mq�v��lq�Ov���{������|oq�6������]���
��������mq�v�3lq�Ov�sP��w�����6>�~/^�{�s!6.|j��>�U���YQ�9a.(��k�m�P�j�����B�P|�r��c0�esCA����4��n������(mO��I)r������5��>������L
���:����SA,���bLL��6$�w��mdw�&�Z}�X������m���D{cz��vH���������mn��I���,�8�����������)j�B���S-�^�����S-l����{\��V��t�I�o�������n<T��N���{%�#�^����-�s�L��;��J$:(���;l+�Pp���Y(��d6:��* ��������34�������������R-)8m6P�v��wfL�
��O}�����GQ�� �r���UP(�]��r[_q�������0�.}�C1�XF�3��dT&���=�w"ZWv'�����;f2�6c>�m��W�o���4d'3T��I�V
Pr�qg#|������r�|���W��mFFx2�7��RL��*
���Z&��k�d���#7�cN�M}������e��W�����p�7M��c�P�;
��w
kH3���
������
�����]��������
eM�P�7�qK1P�2ZDF��$m������V�@�-�|~x�����sM��F����Fc�
������`�(���3�cz%/����U]������<���X|��@�a�Ix%�|�����xE�z�^�uR�P4M[����k,>L��{6:��y1ha��g>cz%�:��r�K�����HA����$
]Ds�]�`����A�
k��� �WR�7�Hv��Fgi�E4V��gc~���W��u�5w��pv��E���j�4V����A��������Y�3������b=K,���������bd�s��=j�b,�H��+��b������7 �p�Q{�9=e2*VF��E�Z���L9��P�O�'���� ��f�m0*�jeXU����#��WF�4s���*����q�� �R�$��f9 1�B���$��0 ��3�=w�w[���dZ��>�v
��������h��n-?�|c|�����-2�����9�h(T~-d��5����oL�D�c��n@t�0�8��x����x[a=w��a�
3C�I�M�yX�ORi�y2u��y2u����<*���s5�d�|2O�Ny�^r�������;��n��u����!���B,��=�L�+����d�d��d
�d�|2O�>�&�d����1�'Su����d������O���z���]]Q�3@_:� }�K�k���7��!����
����4y�KIK���<o�)�'T7k;6��2�;4�9����R�
��EC�4FK�[*k[��(D����w�q��&�b� ��h��w���]�x\�nK�Z)�i�$�N�� Xu�U7X�(���1VKC�I���=�c��y*�J*�=K�ik,F������\hF������C�����Of)��#�YcG�&�����&��R/�B)���S
�F�����T*P��>��D�$�[a���A��nB�0��5���y-��x���`�JQ���7#x������h?��x�co���������&c�c�1-9(D�4����|��m����)���I�iX�}���g�p��fmK��S�� 1�X
�i��JU�XK�l���U�fd�1�|�����Va=/35}�c���d���������1���v��� E��B��j���(e�
>��X��b���������x�f�x)�gx�=)4��f��q��H_�3��������e�|I������~����ura�,y��g���1��x V��C�7(�~��n}1��[���A���@I�\a���
J���$B��M9�����GO�H�M�
���������B�D�-o�%�r���jy5������-)����O�[�W����8S���\*���'�����W7�q
J��i�0<����P���i����������
^{X���z
�q��
�D�+
�II�Um���nH:n�
���N�F��c��-F���2��)\F���S#��F�1I��@_��h{���4V�fj�|���)VF�!��h;$xm��\]�W���F��m��vpb��?u��6���j�24���G���������h���fM;8m����W�h;u&2���>e��m� ����b:�`���m���t��~�����a����W�2�k�F�|��h;u6���
�#�2�� 5��Nu�����d��2@���*�g������"��b��i�/����N0>}����Os��������p^�Uyz�����in��<r%��#���RM[5BQig��P(�1�fc�.#_H��X>�J����P���w����j����Ny��`e�bl��A�5�����)��3����������f�����������������e1e"����~]�^#�@��i �F��>I�C��?��H����&�������d�o(�������B�;
E[�Y���T�v��\��Y%�7��.�(���V<]��q{Hp��Y,��z��3�J�NU[�%���g���\���\�n�=^���7$q��kx��0b�bz����S�
+o��&5�9��2s���h���b^5c6���Fp�)^I`:�U7v85V~���dXu�3�jl��v�����a�5
endstream
endobj
12 0 obj
<</Type /ExtGState
/CA 1
/ca 1
/LC 0
/LJ 0
/LW 0
/ML 4
/SA true
/BM /Normal
>>
endobj
13 0 obj
<</Type /ExtGState
/CA 1
/ca 1
/LC 0
/LJ 0
/LW 1
/ML 4
/SA true
/BM /Normal
>>
endobj
14 0 obj
<</Type /Font
/Subtype /Type0
/BaseFont /Arial
/Encoding /Identity-H
/DescendantFonts [20 0 R]
/ToUnicode 21 0 R
>>
endobj
15 0 obj
<</Type /Font
/Subtype /Type0
/BaseFont /Verdana
/Encoding /Identity-H
/DescendantFonts [22 0 R]
/ToUnicode 23 0 R
>>
endobj
16 0 obj
<</Type /Font
/Subtype /Type0
/BaseFont /Verdana
/Encoding /Identity-H
/DescendantFonts [24 0 R]
/ToUnicode 25 0 R
>>
endobj
17 0 obj
<</Type /Font
/Subtype /Type0
/BaseFont /Verdana
/Encoding /Identity-H
/DescendantFonts [26 0 R]
/ToUnicode 27 0 R
>>
endobj
18 0 obj
<</Type /Font
/Subtype /Type0
/BaseFont /Courier#20New
/Encoding /Identity-H
/DescendantFonts [28 0 R]
/ToUnicode 29 0 R
>>
endobj
20 0 obj
<</Type /Font
/FontDescriptor 30 0 R
/BaseFont /Arial
/Subtype /CIDFontType2
/CIDToGIDMap /Identity
/CIDSystemInfo <</Registry (Adobe)
/Ordering (Identity)
/Supplement 0
>>
/W [0 [750 0 0 277.832] 16 [333.0078 277.832 277.832] 19 28 556.1523 29 [277.832] 40 [666.9922] 47 [556.1523] 48 57 666.9922 58 [943.8477] 68 [556.1523 0 500 556.1523 556.1523 277.832 556.1523 556.1523 222.168 0 500 222.168 833.0078] 81 84 556.1523 85 [333.0078 500 277.832 556.1523 0 0 500]]
>>
endobj
30 0 obj
<</Type /FontDescriptor
/FontFile2 31 0 R
/FontName /Arial
/Flags 4
/Ascent 905.2734
/Descent -211.9141
/StemV 87.8906
/CapHeight 500
/ItalicAngle 0
/FontBBox [-664.5508 -324.707 2000 1005.8594]
>>
endobj
31 0 obj
<</Length1 63064
/Filter /FlateDecode
/Length 26765
>> stream
x��� x��7~�z��I&�m��L��B ��$��� � YQ!�@���UBX��� (�"����+"��
$�?U=B����}���=���:U�U]U�N�s��g :� ���3t\���{ �����<f��k�p� K�����sl�'���;d�0W|`<�5>|���5���7�t���C;F$`���$L���g��F4�k��,�#:��@N��qw�y���e �����L��Y��y�Qu1�g����O���U���;��]�Z�y���g������VU��7�uuS�]vP����<�0TZVt��v����d;��+�ly,�_ �(�!pd��u����*4�%�c�C� ���J�'��\2�u0�A�������0��NV��E�Ad!�!��y]��Y��`u���}8� T7������b� C,��j�+X#g�L����� MY��X^K0�Y�>��#���*��z��qMY Q�"d�O��������4'_�X�������H�!:c�P�m���C��:R����f��l?������[a�$LO�x4�CF��G�� ���n��8����`8s�����>�f;W��"�f_#����:�WCG�!!��A���a���k��5(��O�����
���[�
�X��c�Q�+j�p�����bG!���
��!MN�i(_�x������qy(�>�~=�
����B���.��x���q^{a[�������q^��Y��t�s6��_E&�=�e2`~$���$�������r����Xf��,R�� �3?��~�OBF�!�!�F�F�B4GtF��������0�����!@b����cX���\3���b���`����l�0���l���)&3��{����8�LUR\{�yh���� �V��u�}f�a1�s�.C9��d��/@_��q������*c���R �/��4��J:^�{�w�NY ���Ax�/A����������%�<�R�BC����^Z�.aP����^�z��qxy:^<N��D���K@J��T������(C�k�i�zBZ�:s���t�0p<���P���O�b~)�QGM%K�Q�L�vmb�������{q~�Q��Z�����GX s�������q����`�u�EO�tv�����M2W]�4 ��)��~�r#�q����9?� ~C9��2�l���>��F�2���Z)��E���YMNGU�Oku��N�mA�X������3��t��L�1=(_�V�_L��3=|��u����_��>�a����!�3^��k��F���'�x�}�M�5*��4%`K�|�vTjc����o~�'�������`�t
�u ��J�D~b�G���e0�%��������'|. ��.0�(<�|f�hLN����6�n/ZA��A��6�Q�'����y������l��8X�����M
G=q�k�L8X��J�������.�B
�l7,����������8/x}�E�3^�=�p������B��q
�R�`���\8��{������`�hn����q}�A�4up�`\��x�G����G��)!G��g���������LF��P3�)(S!G0o��z���y3p����;���z�������b���zQ|*q? x������*��A9n�>�|� i(��it!����~�7���&%��b��!|�-� ��;��a��2��vC M� �������C��X�YZ��B �+��,��`��CL/�b��w��`��e�#���p����(�I�����
�pm�����V������ v�4^�
x_��g��?� XY���b_+�����������2�3���q
�l���t�G���A[�+<@�;�����C����LA�����1^���Mf}��p1���-l_�@�@F1o9b �����`��]~UH1������� �ec'C����&�^�6c'�b'y�)� L���.�W--��z�I���O�
�W�
}U����NU�F��������i�|��� ��!"'�SH��`�ED`:
��~� ������e���WOW��[��T9���E��Al�����Ah� �����kZ|� u�e�O(������C-��}�fup�!*�GPG XY^����e�[q�����r��� ���������T���O|:"�"�D�i� ��f����y]�we�����t����k�� b������"���!���<����0�u��t�K��� ���zW� l����>p�7�����MT���~�2
��������6�_{��e�&���u��������H�@�����f }��^>���1}���_�4i]D(���30�/���u�������2��fg^H�T�C��40���������rfP��|�=�����T����=N��|VT���(G����h��2����~��o���v�����e�3�_���g�O_����������\��;"�OGa�?i-�}�=�(�����L!��0���
F[���oHc:�o�������i�����F�65��A��O�4��#Cu[���V������`�����i:`��ZB��3v2T�K���"}+?�?MW�;��t5�$����\�.{&�+Qm���`{q�
�?�����r�������@=P�oCW��@���C��2a�T�:d�!��h7+. -d��� ���Q��G0m���~�J���-����<�zp!�?�#Z ���1��f{Hl�S�V��s��o���j>�-ic����`L�.�CPo��ev���������3>�\���t�g��������������* X���(�����t�ggC����e��������j�v`���3�Q";���t���!������Wr=��s����_Aq d#Z��s����E��?������n���|����k`�Z��i�y�b�Y��y�*���r*��7`W�M���?v�]y��su���o ta�1U�
�S��-���C�����m��#
�����?�4���{���I�6��9�@�)L�}_�L�%�'�q����} ��|)�'_(��`�??�3���3��*���q>���#�3��k8����C4������������?�cg����S,�����VP�'�3�~`Y�%^o���L��h������gG��0��}������i���=�]��1��,0J�}����g�N�6?��-�A��#�t��r^��^0�����\= ��
-�g������N�����N�I�X�_�����������/�%6�!B2�v���<R�����)��1���~w�����p���
��\��t��?'�����8�e�v��=��KU���/����v(�e��J��#�q�U������v���q������uM��g4�:����������o�7���r�����V�{���O�M��O���\���?��?�9�:0?�_��[u`~���@�������7������i�(}�0��c�?�������K�W6���:�`{��HD����y����i�1�@�A�3�bu+v�ms����b�/����j��7f{�m�{w"MD,��o�����O�(_k���+�C@���n��o�b� �-�� ����X������^7�\���( @[��3�� t�:��M�j��_����}Y�!��y�0���pi(/?O*D�������F�gA��(�k$�
��v������6�s�7�����BWV�� �g'��l�V����L��-�w)��=�)���z�^�v}�/=��1�G��}=��^��A�)={[yh��?U���.����
�j���;
=�gMmW>�W �_2�W��!��"��>c�qoxo@�G���t������{t�.����
}�t��9a�|�!���������>{���
���
���s��>` P�<.p���*q8�����<�������|��Du�&�GU��3��3��x�2�Y9~?��o�g
{�?
�T����T��>��x{Q�����:)��`�<zK]�/��[yJ{p2�LQ�_7��h�O�E{�������`k���O���������k�����G"� F���5c�/�h��_�b�/�uh�gp��Y�|���������z��=��v����[�����y�_�>�tx �~�\����!���T4�O�jR�2���>�d��z�i��W��}�����,@o~�%@��So�{9��U���A
���w���gn��7��gr7����SU������N�9?{7�_���GPnF?�>��AFK����~?�!?����:�_���0������{i��xu�r���u��s�.BM3�4����(��U�2����e0(���a0��c�/8�op��+�h����<�O��k����U�G/@��{������W�]�u���|��X�8���V���J�P����}��:���7e������2zv��\����w�Q�����2����1}��q6�;����/I�������nA���y}�
v��g�6���j����&B;����4u�%�i�lk��Xi�~�&�{�2x��
���Xlo�E�����{LT|k���W@�
�8�A�����=���Q�y���{�$���fM��b����_��=�Fj��|�!������5��'���~���~^?������F�? n��^����=��N�/pG!uG���e{K�v������~0���4a��������c1�D��C<��
x�5���X!��~��{{ ���c� v����C!���x?��q^����M�V�����(���(�p\��3��s���Xy~-PF�QF� �,�����k��Z;���%��S�1�������� �[�rL���<'�Si#��n�4���S(g!K��H������`����v�����]������� �\����8����P��^������0�m����������\%��:n����{��|}P\{���jm�E�3�8���@nl=�F�Py��({���������!��M��
�������n�K
v^�$��Y>[���b����o�j����y�������I���T���q�w9n�����V��PV�����y�q��"G������GMm������{����?e��.�_.q>?��e�BQ7�1������9��Tv6��R�����^�'��-��D�9m#��t-���f�w�q������z���"�9��"~.����S�u�:�
h�!�� B�q��� Sg ��+c�������hS��LDOc� .#~`�j�~�����k�m�j�I��9$���Q��S0[��{0�������jtW���/��Y������g7hKB�M>