mirror of
https://github.com/postgres/postgres.git
synced 2025-07-24 14:22:24 +03:00
786 lines
16 KiB
Plaintext
786 lines
16 KiB
Plaintext
<refentry id="SQL-SET">
|
|
<refmeta>
|
|
<refentrytitle>
|
|
SET
|
|
</refentrytitle>
|
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
|
</refmeta>
|
|
<refnamediv>
|
|
<refname id="SQL-SET-TITLE">
|
|
SET
|
|
</refname>
|
|
<refpurpose>
|
|
Set run-time parameters for session
|
|
</refpurpose>
|
|
</refnamediv>
|
|
<refsynopsisdiv>
|
|
<refsynopsisdivinfo>
|
|
<date>1998-09-24</date>
|
|
</refsynopsisdivinfo>
|
|
<synopsis>
|
|
SET <replaceable class="PARAMETER">variable</replaceable> { TO | = } { '<replaceable class="PARAMETER">value</replaceable>' | DEFAULT }
|
|
SET TIME ZONE { '<replaceable class="PARAMETER">timezone</replaceable>' | LOCAL | DEFAULT }
|
|
SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZED }
|
|
</synopsis>
|
|
|
|
<refsect2 id="R2-SQL-SET-1">
|
|
<refsect2info>
|
|
<date>1998-09-24</date>
|
|
</refsect2info>
|
|
<title>
|
|
Inputs
|
|
</title>
|
|
<para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<replaceable class="PARAMETER">variable</replaceable>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Settable global parameter.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<replaceable class="PARAMETER">value</replaceable>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
New value of parameter.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>
|
|
The possible variables and allowed values are:
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
CLIENT_ENCODING | NAMES
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the multi-byte client encoding. Parameters are:
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<replaceable class="parameter">value</replaceable>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the multi-byte client encoding to
|
|
<replaceable class="parameter">value</replaceable>.
|
|
The specified encoding must be supported by the backend.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
DEFAULT
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the multi-byte client encoding to the default value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>
|
|
This is only enabled if multi-byte was specified to configure.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
DateStyle
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Set the date/time representation style. Affects the output format,
|
|
and in some cases it can affect the interpretation of input.
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
ISO
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
use ISO 8601-style dates and times
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
SQL
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
use Oracle/Ingres-style dates and times
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
Postgres
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
use traditional <productname>Postgres</productname> format
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
European
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
use dd/mm/yyyy for numeric date representations.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
NonEuropean
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
use mm/dd/yyyy for numeric date representations.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
German
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
use dd.mm.yyyy for numeric date representations.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
US
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
same as 'NonEuropean'
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
default
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
restores the default values ('US,Postgres')
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>
|
|
Date format initialization may be done by:
|
|
<simplelist>
|
|
<member>
|
|
Setting the <envar>PGDATESTYLE</envar> environment variable.
|
|
</member>
|
|
<member>
|
|
Running postmaster using the <option>-oe</option> parameter to set
|
|
dates to the <literal>European</literal> convention.
|
|
Note that this affects only the some combinations of date styles; for example
|
|
the ISO style is not affected by this parameter.
|
|
</member>
|
|
<member>
|
|
Changing variables in
|
|
<filename>src/backend/utils/init/globals.c</filename>.
|
|
</member>
|
|
</simplelist>
|
|
</para>
|
|
<para>
|
|
The variables in <filename>globals.c</filename> which can be changed are:
|
|
<simplelist>
|
|
<member>
|
|
bool EuroDates = false | true
|
|
</member>
|
|
<member>
|
|
int DateStyle = USE_ISO_DATES | USE_POSTGRES_DATES | USE_SQL_DATES | USE_GERMAN_DATES
|
|
</member>
|
|
</simplelist>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
SERVER_ENCODING
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the multi-byte server encoding
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<replaceable class="parameter">value</replaceable>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the multi-byte server encoding.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
DEFAULT
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the multi-byte server encoding.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
<para>
|
|
This is only enabled if multi-byte was specified to configure.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
TIMEZONE
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
The possible values for timezone depends on your operating
|
|
system. For example on Linux /usr/lib/zoneinfo contains the
|
|
database of timezones.
|
|
</para>
|
|
<para>
|
|
Here are some valid values for timezone:
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
'PST8PDT'
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
set the timezone 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>
|
|
DEFAULT
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
set time zone to your local timezone
|
|
(value of the TZ environment variable).
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
<para>
|
|
If an invalid time zone is specified, the time zone
|
|
becomes GMT (on most systems anyway).
|
|
</para>
|
|
<para>
|
|
A frontend which uses libpq may be initialized by setting the PGTZ
|
|
environment variable.
|
|
</para>
|
|
<para>
|
|
The second syntax shown above, allows one to set the timezone
|
|
with a syntax similar to SQL92 <command>SET TIME ZONE</command>.
|
|
The LOCAL keyword is just an alternate form
|
|
of DEFAULT for SQL92 compatibility.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
TRANSACTION ISOLATION LEVEL
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the isolation level for the current transaction.
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
READ COMMITTED
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
The current transaction queries read only rows committed
|
|
before a query began. READ COMMITTED is the default.
|
|
</para>
|
|
|
|
<note>
|
|
<para>
|
|
<acronym>SQL92</acronym> standard requires
|
|
SERIALIZABLE to be the default isolation level.
|
|
</para>
|
|
</note>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
SERIALIZABLE
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
The current transaction queries read only rows committed
|
|
before first DML statement
|
|
(<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>)
|
|
was executed in this transaction.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>
|
|
There are also several internal or optimization
|
|
parameters which can be specified
|
|
by the <command>SET</command> command:
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
COST_HEAP
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the default cost of a heap scan for use by the optimizer.
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<replaceable class="parameter">float4</replaceable>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Set the cost of a heap scan to the specified floating point value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
DEFAULT
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the cost of a heap scan to the default value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
<para>
|
|
The frontend may be initialized by setting the PGCOSTHEAP
|
|
environment variable.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
COST_INDEX
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the default cost of an index scan for use by the optimizer.
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<replaceable class="parameter">float4</replaceable>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Set the cost of an index scan to the specified floating point value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
DEFAULT
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the cost of an index scan to the default value.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>
|
|
The frontend may be initialized by setting the PGCOSTINDEX
|
|
environment variable.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
GEQO
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Sets the threshold for using the genetic optimizer algorithm.
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
ON
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
enables the genetic optimizer algorithm
|
|
for statements with 6 or more tables.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
ON=<replaceable class="parameter">#</replaceable>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Takes an integer argument to enable the genetic optimizer algorithm
|
|
for statements with <replaceable class="parameter">#</replaceable>
|
|
or more tables in the query.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
OFF
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
disables the genetic optimizer algorithm.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
DEFAULT
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Equivalent to specifying <command>SET GEQO='ON'</command>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>
|
|
This algorithm is on by default, which used GEQO for
|
|
statements of eleven or more tables.
|
|
(See the chapter on GEQO in the Programmer's Guide
|
|
for more information).
|
|
</para>
|
|
<para>
|
|
The frontend may be initialized by setting PGGEQO
|
|
environment variable.
|
|
</para>
|
|
<para>
|
|
It may be useful when joining big relations with
|
|
small ones. This algorithm is off by default.
|
|
It's not used by GEQO anyway.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
KSQO
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
<firstterm>Key Set Query Optimizer</firstterm> forces the query optimizer
|
|
to optimize repetative OR clauses such as generated by
|
|
<productname>MicroSoft Access</productname>:
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
ON
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
enables this optimization.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
OFF
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
disables this optimization.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
DEFAULT
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Equivalent to specifying <command>SET KSQO='OFF'</command>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>
|
|
It may be useful when joining big relations with
|
|
small ones. This algorithm is off by default.
|
|
It's not used by GEQO anyway.
|
|
</para>
|
|
<para>
|
|
The frontend may be initialized by setting the PGKSQO
|
|
environment variable.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</refsect2>
|
|
|
|
<refsect2 id="R2-SQL-SET-2">
|
|
<refsect2info>
|
|
<date>1998-09-24</date>
|
|
</refsect2info>
|
|
<title>
|
|
Outputs
|
|
</title>
|
|
<para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<returnvalue>SET VARIABLE</returnvalue>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Message returned if successfully.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<returnvalue>WARN: Bad value for <replaceable class="parameter">variable</replaceable> (<replaceable class="parameter">value</replaceable>)</returnvalue>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
If the command fails to set the specified variable.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
</refsect2>
|
|
</refsynopsisdiv>
|
|
|
|
<refsect1 id="R1-SQL-SET-1">
|
|
<refsect1info>
|
|
<date>1998-09-24</date>
|
|
</refsect1info>
|
|
<title>
|
|
Description
|
|
</title>
|
|
<para>
|
|
<command>SET</command> will modify configuration parameters for variable during
|
|
a session.
|
|
</para>
|
|
<para>
|
|
Current values can be obtained using <command>SHOW</command>, and values
|
|
can be restored to the defaults using <command>RESET</command>.
|
|
Parameters and values are case-insensitive. Note that the value
|
|
field is always specified as a string, so is enclosed in
|
|
single-quotes.
|
|
</para>
|
|
<para>
|
|
<command>SET TIME ZONE</command> changes the session's
|
|
default time zone offset.
|
|
An SQL-session always begins with an initial default time zone
|
|
offset.
|
|
The <command>SET TIME ZONE</command> statement is used to change the default
|
|
time zone offset for the current SQL session.
|
|
</para>
|
|
|
|
<refsect2 id="R2-SQL-SET-3">
|
|
<refsect2info>
|
|
<date>1998-09-24</date>
|
|
</refsect2info>
|
|
<title>
|
|
Notes
|
|
</title>
|
|
<para>
|
|
The <command>SET <replaceable class="parameter">variable</replaceable></command>
|
|
statement is a <productname>Postgres</productname> language extension.
|
|
</para>
|
|
<para>
|
|
Refer to <command>SHOW</command> and <command>RESET</command> to
|
|
display or reset the current values.
|
|
</para>
|
|
</refsect2>
|
|
</refsect1>
|
|
|
|
<refsect1 id="R1-SQL-SET-2">
|
|
<title>
|
|
Usage
|
|
</title>
|
|
<para>
|
|
Set the style of date to ISO:
|
|
|
|
<programlisting>
|
|
SET DATESTYLE TO 'ISO';
|
|
</programlisting>
|
|
|
|
Enable GEQO for queries with 4 or more tables:
|
|
|
|
<programlisting>
|
|
SET GEQO ON=4;
|
|
</programlisting>
|
|
|
|
Set GEQO to default:
|
|
|
|
<programlisting>
|
|
SET GEQO = DEFAULT;
|
|
</programlisting>
|
|
|
|
Set the timezone for Berkeley, California:
|
|
|
|
<programlisting>
|
|
SET TIME ZONE 'PST8PDT';
|
|
SELECT CURRENT_TIMESTAMP AS today;
|
|
|
|
today
|
|
----------------------
|
|
1998-03-31 07:41:21-08
|
|
</programlisting>
|
|
|
|
Set the timezone for Italy:
|
|
|
|
<programlisting>
|
|
SET TIME ZONE 'Europe/Rome';
|
|
SELECT CURRENT_TIMESTAMP AS today;
|
|
|
|
today
|
|
----------------------
|
|
1998-03-31 17:41:31+02
|
|
</programlisting>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 id="R1-SQL-SET-3">
|
|
<title>
|
|
Compatibility
|
|
</title>
|
|
<para>
|
|
</para>
|
|
|
|
<refsect2 id="R2-SQL-SET-4">
|
|
<refsect2info>
|
|
<date>1998-09-24</date>
|
|
</refsect2info>
|
|
<title>
|
|
SQL92
|
|
</title>
|
|
<para>
|
|
There is no
|
|
<command>SET <replaceable class="parameter">variable</replaceable></command>
|
|
in <acronym>SQL92</acronym> (except for SET TRANSACTION ISOLATION LEVEL).
|
|
|
|
The <acronym>SQL92</acronym> syntax for <command>SET TIME ZONE</command>
|
|
is slightly different,
|
|
allowing only a single integer value for time zone specification:
|
|
|
|
<programlisting>
|
|
SET TIME ZONE { interval_value_expression | LOCAL }
|
|
</programlisting>
|
|
</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:
|
|
-->
|