<!--
$PostgreSQL: pgsql/doc/src/sgml/ref/reset.sgml,v 1.34 2007/04/12 22:34:45 neilc Exp $
PostgreSQL documentation
-->

<refentry id="SQL-RESET">
 <refmeta>
  <refentrytitle id="SQL-RESET-TITLE">RESET</refentrytitle>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>RESET</refname>
  <refpurpose>restore the value of a run-time parameter to the default value</refpurpose>
 </refnamediv>

 <indexterm zone="sql-reset">
  <primary>RESET</primary>
 </indexterm>

 <refsynopsisdiv>
<synopsis>
RESET <replaceable class="PARAMETER">configuration_parameter</replaceable>
RESET ALL
RESET { PLANS | SESSION | TEMP | TEMPORARY }
</synopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>

  <para>
   <command>RESET</command> restores run-time parameters to their
   default values.  <command>RESET</command> is an alternative
   spelling for
<synopsis>
SET <replaceable class="parameter">configuration_parameter</replaceable> TO DEFAULT
</synopsis>
   Refer to <xref linkend="sql-set" endterm="sql-set-title"> for
   details.
  </para>

  <para>
   The default value is defined as the value that the parameter would
   have had, if no <command>SET</> had ever been issued for it in the
   current session.  The actual source of this value might be a
   compiled-in default, the configuration file, command-line options,
   or per-database or per-user default settings.  See <xref
   linkend="runtime-config"> for details.
  </para>

  <para>
   See the <command>SET</> reference page for details on the
   transaction behavior of <command>RESET</>.
  </para>

  <para>
   <command>RESET</> can also be used to release internal resources
   that are usually released at the end of session.  <command>RESET
   TEMP</> drops all temporary tables created in the current session.
   <command>RESET PLANS</> releases all internally cached plans.
   <command>RESET SESSION</> releases all externally visible temporary
   resources associated with the current session.
  </para>
 </refsect1>

 <refsect1>
  <title>Parameters</title>

  <variablelist>
   <varlistentry>
    <term><replaceable class="PARAMETER">configuration_parameter</replaceable></term>
    <listitem>
     <para>
      The name of a run-time parameter. See <xref linkend="sql-set"
      endterm="sql-set-title"> for a list.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>ALL</literal></term>
    <listitem>
     <para>
      Resets all settable run-time parameters to default values.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>TEMP, TEMPORARY</literal></term>
    <listitem>
     <para>
      Drops all temporary tables created in the current session.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>PLANS</literal></term>
    <listitem>
     <para>
      Releases all cached query plans.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><literal>SESSION</literal></term>
    <listitem>
     <para>
      Releases all temporary resources associated with the current
      session. This has the same effect as executing the following
      command sequence:
<programlisting>
SET SESSION AUTHORIZATION DEFAULT;
RESET ALL;
DEALLOCATE ALL;
CLOSE ALL;
UNLISTEN *;
RESET PLANS;
RESET TEMP;
</programlisting>
     </para>
    </listitem>
   </varlistentry>

  </variablelist>
 </refsect1>

 <refsect1>
  <title>Notes</title>

   <para>
    <command>RESET SESSION</> cannot be executed inside a transaction block.
   </para>
 </refsect1>

 <refsect1>
  <title>Examples</title>

  <para>
   Set the <varname>geqo</> configuration variable to its default value:
<screen>
RESET geqo;
</screen>
  </para>
 </refsect1>

 <refsect1>
  <title>Compatibility</title>

  <para>
   <command>RESET</command> is a <productname>PostgreSQL</productname> extension.
  </para>
 </refsect1>
</refentry>
