<literal>'120 ms'</literal> for a time value, and they will be
converted to whatever the parameter's actual unit is. Note that the
value must be written as a string (with quotes) to use this feature.
The unit name is case-sensitive, and there can be whitespace between
the numeric value and the unit.
<itemizedlist>
<listitem>
<para>
Valid memory units are <literal>B</literal> (bytes),
<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>us</literal> (microseconds),
<literal>ms</literal> (milliseconds),
<literal>s</literal> (seconds), <literal>min</literal> (minutes),
<literal>h</literal> (hours), and <literal>d</literal> (days).
</para>
</listitem>
</itemizedlist>
If a fractional value is specified with a unit, it will be rounded
to a multiple of the next smaller unit if there is one.
For example, <literal>30.1 GB</literal> will be converted
to <literal>30822 MB</literal> not <literal>32319628902 B</literal>.
If the parameter is of integer type, a final rounding to integer
occurs after any unit conversion.
</para>
</listitem>
<listitem>
<para>
<emphasis>Enumerated:</emphasis>
Enumerated-type parameters are written in the same way as string
parameters, but are restricted to have one of a limited set of
values. The values allowable for such a parameter can be found from
<structname>pg_settings</structname>.<structfield>enumvals</structfield>.
Enum parameter values are case-insensitive.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="config-setting-configuration-file">
<title>Parameter Interaction via the Configuration File</title>
<para>
The most fundamental way to set these parameters is to edit the file
<filename>postgresql.conf</filename><indexterm><primary>postgresql.conf</primary></indexterm>,
which is normally kept in the data directory. A default copy is
installed when the database cluster directory is initialized.
An example of what this file might look like is:
<programlisting>
# This is a comment
log_connections = all
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 (except within a quoted
parameter value) 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.
If the file contains multiple entries for the same parameter,
all but the last one are ignored.
</para>
<para>
Parameters set in this way provide default values for the cluster.
The settings seen by active sessions will be these values unless they
are overridden. The following sections describe ways in which the
administrator or user can override these defaults.
</para>
<para>
<indexterm>
<primary>SIGHUP</primary>
</indexterm>
The configuration file is reread whenever the main server process
receives a <systemitem>SIGHUP</systemitem> signal; this signal is most easily
sent by running <literal>pg_ctl reload</literal> from the command line or by
calling the SQL function <function>pg_reload_conf()</function>. The main
server process also propagates this