- <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>-o -e</option> option 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:
- -->