postgresql/doc/src/sgml/ref/set.sgml
2000-08-29 20:02:09 +00:00

427 lines
10 KiB
Plaintext

<!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/set.sgml,v 1.48 2000/08/29 20:02:09 momjian Exp $
Postgres documentation
-->
<refentry id="SQL-SET">
<refmeta>
<refentrytitle id="SQL-SET-TITLE">SET</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>SET</refname>
<refpurpose>Set run-time parameters</refpurpose>
</refnamediv>
<refsynopsisdiv>
<synopsis>
SET <replaceable class="PARAMETER">variable</replaceable> { TO | = } { <replaceable class="PARAMETER">value</replaceable> | '<replaceable class="PARAMETER">value</replaceable>' | DEFAULT }
SET TIME ZONE { '<replaceable class="PARAMETER">timezone</replaceable>' | LOCAL | DEFAULT }
</synopsis>
<refsect2 id="R2-SQL-SET-1">
<title>Inputs</title>
<para>
<variablelist>
<varlistentry>
<term><replaceable class="PARAMETER">variable</replaceable></term>
<listitem>
<para>
A settable run-time parameter.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER">value</replaceable></term>
<listitem>
<para>
New value of parameter. <option>DEFAULT</option> can be
used to specify resetting the parameter to its default
value. Lists of strings are allowed, but more complex
constructs may need to be single or double quoted.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-SET-1">
<title>Description</title>
<para>
The <command>SET</command> command changes run-time configuration
parameters. The following parameters can be altered:
<variablelist>
<varlistentry>
<term>CLIENT_ENCODING</term>
<term>NAMES</term>
<listitem>
<para>
Sets the multi-byte client encoding. The specified encoding
must be supported by the backend.
</para>
<para>
This option is only available if
<productname>Postgres</productname> is build with multibyte
support.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>DATESTYLE</term>
<listitem>
<para>
Choose the date/time representation style. Two separate
settings are made: the default date/time output and the
interpretation of ambiguous input.
</para>
<para>
The following are date/time output styles:
<variablelist>
<varlistentry>
<term>ISO</term>
<listitem>
<para>
Use ISO 8601-style dates and times (<literal>YYYY-MM-DD
HH:MM:SS</literal>). This is the default.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>SQL</term>
<listitem>
<para>
Use Oracle/Ingres-style dates and times. Note that this
style has nothing to do with SQL (which mandates ISO 8601
style), the naming of this option is a historical accident.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Postgres</term>
<listitem>
<para>
Use traditional <productname>Postgres</productname> format.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>German</term>
<listitem>
<para>
Use <literal>dd.mm.yyyy</literal> for numeric date representations.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
The following two options determine both a substyle of the
<quote>SQL</quote> and <quote>Postgres</quote> output formats
and the preferred interpretation of ambiguous date input.
<variablelist>
<varlistentry>
<term>European</term>
<listitem>
<para>
Use <literal>dd/mm/yyyy</literal> for numeric date representations.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>NonEuropean</term>
<term>US</term>
<listitem>
<para>
Use <literal>mm/dd/yyyy</literal> for numeric date representations.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
A value for <command>SET DATESTYLE</command> can be one from
the first list (output styles), or one from the second list
(substyles), or one from each separated by a comma.
</para>
<para>
Date format initialization may be done by:
<simplelist>
<member>
Setting the <envar>PGDATESTYLE</envar> environment variable.
If PGDATESTYLE is set in the frontend environment of a client
based on libpq, libpq will automatically set DATESTYLE to the
value of PGDATESTYLE during connection start-up.
</member>
<member>
Running postmaster using the option <option>-o -e</option> to
set dates to the <literal>European</literal> convention.
</member>
</simplelist>
</para>
<para>
The <option>DateStyle</option> option is really only intended
for porting applications. To format your date/time values to
choice, use the <function>to_char</function> family of
functions.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>SEED</term>
<listitem>
<para>
Sets the internal seed for the random number generator.
<variablelist>
<varlistentry>
<term><replaceable class="parameter">value</replaceable></term>
<listitem>
<para>
The value for the seed to be used by the
<function>random</function> function. Allowed
values are floating point numbers between 0 and 1, which
are then multiplied by 2^31-1. This product will
silently overflow if a number outside the range is used.
</para>
<para>
The seed can also be set by invoking the
<function>setseed</function> SQL function:
<programlisting>
SELECT setseed(<replaceable>value</replaceable>);
</programlisting>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>SERVER_ENCODING</term>
<listitem>
<para>
Sets the multi-byte server encoding.
</para>
<para>
This option is only available if
<productname>Postgres</productname> was built with multibyte
support.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>TIME ZONE</term>
<term>TIMEZONE</term>
<listitem>
<para>
The possible values for timezone depends on your operating
system. For example, on Linux
<filename>/usr/share/zoneinfo</filename> contains the database
of time zones.
</para>
<para>
Here are some valid values for timezone:
<variablelist>
<varlistentry>
<term>PST8PDT</term>
<listitem>
<para>
Set the time zone for California.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Portugal</term>
<listitem>
<para>
Set time zone for Portugal.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>'Europe/Rome'</term>
<listitem>
<para>
Set time zone for Italy.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>LOCAL</term>
<term>DEFAULT</term>
<listitem>
<para>
Set the time zone to your local time zone (the one that
your operating system defaults to).
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
If an invalid time zone is specified, the time zone
becomes GMT (on most systems anyway).
</para>
<para>
If the PGTZ environment variable is set in the frontend
environment of a client based on libpq, libpq will automatically
set TIMEZONE to the value of PGTZ during connection start-up.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
An extended list of other run-time parameters can be found in the
<citetitle>Administrator's Guide</citetitle>.
</para>
<para>
Use <xref linkend="SQL-SHOW" endterm="SQL-SHOW-title"> to show the
current setting of a parameters.
</para>
</refsect1>
<refsect1>
<title>Diagnostics</title>
<para>
<variablelist>
<varlistentry>
<term><computeroutput>SET VARIABLE</computeroutput></term>
<listitem>
<para>
Message returned if successful.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>ERROR: not a valid option name: <replaceable>name</replaceable></computeroutput></term>
<listitem>
<para>
The parameter you tried to set does not exist.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>ERROR: permission denied</computeroutput></term>
<listitem>
<para>
You must be a superuser to have access to certain settings.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>ERROR: <replaceable>name</replaceable> can only be set at start-up</computeroutput></term>
<listitem>
<para>
Some parameters are fixed once the server is started.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1>
<title>Examples</title>
<para>
Set the style of date to traditional Postgres with European conventions:
<screen>
SET DATESTYLE TO Postgres,European;
</screen>
Set the timezone for Berkeley, California, using double quotes to
preserve the uppercase attributes of the time zone specifier (note
that the date/time format is ISO here):
<screen>
SET TIME ZONE "PST8PDT";
SELECT CURRENT_TIMESTAMP AS today;
today
------------------------
1998-03-31 07:41:21-08
</screen>
Set the timezone for Italy (note the required single or double quotes to handle
the special characters):
<screen>
SET TIME ZONE 'Europe/Rome';
SELECT CURRENT_TIMESTAMP AS today;
today
------------------------
1998-03-31 17:41:31+02
</screen>
</para>
</refsect1>
<refsect1 id="R1-SQL-SET-3">
<title>Compatibility</title>
<refsect2 id="R2-SQL-SET-4">
<title>
SQL92
</title>
<para>
The second syntax shown above (<literal>SET TIME ZONE</literal>)
attempts to mimic <acronym>SQL92</acronym>. However, SQL allows
only numeric time zone offsets. All other parameter settings as
well as the first syntax shown above are a
<productname>Postgres</productname> extension.
</para>
</refsect2>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode:sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->