mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
Allow BEGIN WORK to specify transaction isolation level, like START
TRANSACTION.
This commit is contained in:
parent
e439fef6fc
commit
a620a760ed
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/begin.sgml,v 1.27 2003/11/29 19:51:38 pgsql Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/begin.sgml,v 1.28 2004/01/10 02:21:08 momjian Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -21,6 +21,8 @@ PostgreSQL documentation
|
|||||||
<refsynopsisdiv>
|
<refsynopsisdiv>
|
||||||
<synopsis>
|
<synopsis>
|
||||||
BEGIN [ WORK | TRANSACTION ]
|
BEGIN [ WORK | TRANSACTION ]
|
||||||
|
[ ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE } ]
|
||||||
|
[ READ WRITE | READ ONLY ]
|
||||||
</synopsis>
|
</synopsis>
|
||||||
</refsynopsisdiv>
|
</refsynopsisdiv>
|
||||||
|
|
||||||
@ -49,6 +51,13 @@ BEGIN [ WORK | TRANSACTION ]
|
|||||||
other sessions will be unable to see the intermediate states
|
other sessions will be unable to see the intermediate states
|
||||||
wherein not all the related updates have been done.
|
wherein not all the related updates have been done.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
If the isolation level or read/write mode is specified, the new
|
||||||
|
transaction has those characteristics, as if
|
||||||
|
<xref linkend="sql-set-transaction" endterm="sql-set-transaction-title">
|
||||||
|
was executed.
|
||||||
|
</para>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
<refsect1>
|
<refsect1>
|
||||||
@ -65,6 +74,12 @@ BEGIN [ WORK | TRANSACTION ]
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
See under <xref linkend="sql-set-transaction"
|
||||||
|
endterm="sql-set-transaction-title"> about the meaning of the
|
||||||
|
other parameters.
|
||||||
|
</para>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
<refsect1>
|
<refsect1>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/start_transaction.sgml,v 1.9 2003/11/29 19:51:39 pgsql Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/start_transaction.sgml,v 1.10 2004/01/10 02:21:08 momjian Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
@ -33,9 +33,8 @@ START TRANSACTION
|
|||||||
This command begins a new transaction. If the isolation level or
|
This command begins a new transaction. If the isolation level or
|
||||||
read/write mode is specified, the new transaction has those
|
read/write mode is specified, the new transaction has those
|
||||||
characteristics, as if <xref linkend="sql-set-transaction"
|
characteristics, as if <xref linkend="sql-set-transaction"
|
||||||
endterm="sql-set-transaction-title"> was executed. In all other
|
endterm="sql-set-transaction-title"> was executed. It is the same
|
||||||
respects, the behavior of this command is identical to the <xref
|
as the <xref linkend="sql-begin" endterm="sql-begin-title"> command.
|
||||||
linkend="sql-begin" endterm="sql-begin-title"> command.
|
|
||||||
</para>
|
</para>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.443 2004/01/07 18:56:27 neilc Exp $
|
* $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.444 2004/01/10 02:21:08 momjian Exp $
|
||||||
*
|
*
|
||||||
* HISTORY
|
* HISTORY
|
||||||
* AUTHOR DATE MAJOR EVENT
|
* AUTHOR DATE MAJOR EVENT
|
||||||
@ -3674,11 +3674,11 @@ TransactionStmt:
|
|||||||
n->options = NIL;
|
n->options = NIL;
|
||||||
$$ = (Node *)n;
|
$$ = (Node *)n;
|
||||||
}
|
}
|
||||||
| BEGIN_P opt_transaction
|
| BEGIN_P opt_transaction transaction_mode_list_or_empty
|
||||||
{
|
{
|
||||||
TransactionStmt *n = makeNode(TransactionStmt);
|
TransactionStmt *n = makeNode(TransactionStmt);
|
||||||
n->kind = TRANS_STMT_BEGIN;
|
n->kind = TRANS_STMT_BEGIN;
|
||||||
n->options = NIL;
|
n->options = $3;
|
||||||
$$ = (Node *)n;
|
$$ = (Node *)n;
|
||||||
}
|
}
|
||||||
| START TRANSACTION transaction_mode_list_or_empty
|
| START TRANSACTION transaction_mode_list_or_empty
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
|
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.97 2003/12/01 22:21:54 momjian Exp $
|
* $PostgreSQL: pgsql/src/bin/psql/tab-complete.c,v 1.98 2004/01/10 02:21:08 momjian Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
@ -723,6 +723,18 @@ psql_completion(char *text, int start, int end)
|
|||||||
else if (strcasecmp(prev2_wd, "ANALYZE") == 0)
|
else if (strcasecmp(prev2_wd, "ANALYZE") == 0)
|
||||||
COMPLETE_WITH_CONST(";");
|
COMPLETE_WITH_CONST(";");
|
||||||
|
|
||||||
|
/* BEGIN, COMMIT, ROLLBACK, ABORT, */
|
||||||
|
else if (strcasecmp(prev_wd, "BEGIN") == 0 ||
|
||||||
|
strcasecmp(prev_wd, "END") == 0 ||
|
||||||
|
strcasecmp(prev_wd, "COMMIT") == 0 ||
|
||||||
|
strcasecmp(prev_wd, "ROLLBACK") == 0 ||
|
||||||
|
strcasecmp(prev_wd, "ABORT") == 0)
|
||||||
|
{
|
||||||
|
static const char * const list_TRANS[] =
|
||||||
|
{"WORK", "TRANSACTION", NULL};
|
||||||
|
|
||||||
|
COMPLETE_WITH_LIST(list_TRANS);
|
||||||
|
}
|
||||||
/* CLUSTER */
|
/* CLUSTER */
|
||||||
/* If the previous word is CLUSTER, produce list of indexes. */
|
/* If the previous word is CLUSTER, produce list of indexes. */
|
||||||
else if (strcasecmp(prev_wd, "CLUSTER") == 0)
|
else if (strcasecmp(prev_wd, "CLUSTER") == 0)
|
||||||
@ -1099,10 +1111,14 @@ psql_completion(char *text, int start, int end)
|
|||||||
strcasecmp(prev_wd, "SHOW") == 0)
|
strcasecmp(prev_wd, "SHOW") == 0)
|
||||||
COMPLETE_WITH_LIST(pgsql_variables);
|
COMPLETE_WITH_LIST(pgsql_variables);
|
||||||
/* Complete "SET TRANSACTION" */
|
/* Complete "SET TRANSACTION" */
|
||||||
else if ((strcasecmp(prev2_wd, "SET") == 0
|
else if ((strcasecmp(prev2_wd, "SET") == 0 &&
|
||||||
&& strcasecmp(prev_wd, "TRANSACTION") == 0)
|
strcasecmp(prev_wd, "TRANSACTION") == 0)
|
||||||
|| (strcasecmp(prev2_wd, "START") == 0
|
|| (strcasecmp(prev2_wd, "START") == 0
|
||||||
&& strcasecmp(prev_wd, "TRANSACTION") == 0)
|
&& strcasecmp(prev_wd, "TRANSACTION") == 0)
|
||||||
|
|| (strcasecmp(prev2_wd, "BEGIN") == 0
|
||||||
|
&& strcasecmp(prev_wd, "WORK") == 0)
|
||||||
|
|| (strcasecmp(prev2_wd, "BEGIN") == 0
|
||||||
|
&& strcasecmp(prev_wd, "TRANSACTION") == 0)
|
||||||
|| (strcasecmp(prev4_wd, "SESSION") == 0
|
|| (strcasecmp(prev4_wd, "SESSION") == 0
|
||||||
&& strcasecmp(prev3_wd, "CHARACTERISTICS") == 0
|
&& strcasecmp(prev3_wd, "CHARACTERISTICS") == 0
|
||||||
&& strcasecmp(prev2_wd, "AS") == 0
|
&& strcasecmp(prev2_wd, "AS") == 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user