1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-27 12:41:57 +03:00

Have SET not start transaction when autocommit off, with doc updates.

This commit is contained in:
Bruce Momjian
2002-10-09 04:59:38 +00:00
parent eb949720ad
commit d015dcbe4e
4 changed files with 62 additions and 21 deletions

View File

@ -1,5 +1,5 @@
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/reset.sgml,v 1.15 2002/09/21 18:32:54 petere Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/ref/reset.sgml,v 1.16 2002/10/09 04:59:38 momjian Exp $
PostgreSQL documentation
-->
@ -66,6 +66,12 @@ SET <replaceable class="parameter">variable</replaceable> TO DEFAULT
switches, or per-database or per-user default settings. See the
<citetitle>Administrator's Guide</citetitle> for details.
</para>
<para>
See the <command>SHOW</> manual page for details on the transaction
behavior of <command>RESET</>.
</para>
</refsect1>
<refsect1>

View File

@ -1,5 +1,5 @@
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/set.sgml,v 1.65 2002/09/21 18:32:54 petere Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/ref/set.sgml,v 1.66 2002/10/09 04:59:38 momjian Exp $
PostgreSQL documentation
-->
@ -108,6 +108,12 @@ SET [ SESSION | LOCAL ] TIME ZONE { <replaceable class="PARAMETER">timezone</rep
is committed) the <command>SET</command> value will take effect.
</para>
<para>
With <literal>autocommit</> set to <literal>off</>, <command>SET</>
does not start a new transaction block. See the
<literal>autocommit</> section of the documentation for details.
</para>
<para>
Here are additional details about a few of the parameters that can be set:

View File

@ -1,5 +1,5 @@
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.143 2002/10/03 02:26:49 momjian Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/runtime.sgml,v 1.144 2002/10/09 04:59:38 momjian Exp $
-->
<Chapter Id="runtime">
@ -1235,16 +1235,32 @@ env PGOPTIONS='-c geqo=off' psql
that is not inside an explicit transaction block (that is, unless a
<command>BEGIN</> with no matching <command>COMMIT</> has been
given).
If set to false, <productname>PostgreSQL</productname> will commit
the effects of commands only on receiving an explicit
<command>COMMIT</> command. This mode can also be thought of as
implicitly issuing <command>BEGIN</> whenever a command is received
and <productname>PostgreSQL</productname> is not already inside
a transaction block.
The default is true, for compatibility with historical
<productname>PostgreSQL</productname> behavior. But for maximum
compatibility with the SQL specification, set it to false.
If set to false, <productname>PostgreSQL</productname> will
commit the commands only when receiving an explicit
<command>COMMIT</> command. This mode can also be thought of as
implicitly issuing <command>BEGIN</> whenever a command is
received that is not already inside a transaction block. The
default is true, for compatibility with historical
<productname>PostgreSQL</productname> behavior. However, for
maximum compatibility with the SQL specification, set it to
false.
</para>
<note>
<para>
With <varname>autocommit</> set to false, <command>SET</>,
<command>SHOW</>, and <command>RESET</> do not start new
transaction blocks. They are run in their own transactions.
Once another command is issued, multi-statement transaction
behavior begins and any <command>SET</>, <command>SHOW</>, or
<command>RESET</> commands are considered to be part of the
transaction, i.e. they are committed or rolled back depending
on the completion status of the transaction. To have
<command>SET</>, <command>SHOW</>, and <command>RESET</>
commands at the start of a transaction, use <command>BEGIN</>
first.
</para>
</note>
</listitem>
</varlistentry>