Index: doc/src/sgml/ref/begin.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/begin.sgml,v
retrieving revision 1.26
diff -c -c -r1.26 begin.sgml
*** doc/src/sgml/ref/begin.sgml 9 Sep 2003 18:28:52 -0000 1.26
--- doc/src/sgml/ref/begin.sgml 10 Nov 2003 03:08:31 -0000
***************
*** 21,26 ****
--- 21,28 ----
BEGIN [ WORK | TRANSACTION ]
+ [ ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE } ]
+ [ READ WRITE | READ ONLY ]
***************
*** 49,54 ****
--- 51,63 ----
other sessions will be unable to see the intermediate states
wherein not all the related updates have been done.
+
+
+ If the isolation level or read/write mode is specified, the new
+ transaction has those characteristics, as if
+
+ was executed.
+
***************
*** 65,70 ****
--- 74,85 ----
+
+
+ See under about the meaning of the
+ other parameters.
+
Index: doc/src/sgml/ref/start_transaction.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/start_transaction.sgml,v
retrieving revision 1.8
diff -c -c -r1.8 start_transaction.sgml
*** doc/src/sgml/ref/start_transaction.sgml 6 Nov 2003 22:08:14 -0000 1.8
--- doc/src/sgml/ref/start_transaction.sgml 10 Nov 2003 03:08:31 -0000
***************
*** 33,41 ****
This command begins a new transaction. If the isolation level or
read/write mode is specified, the new transaction has those
characteristics, as if was executed. In all other
! respects, the behavior of this command is identical to the command.
--- 33,40 ----
This command begins a new transaction. If the isolation level or
read/write mode is specified, the new transaction has those
characteristics, as if was executed. It is the same
! as the command.
Index: src/backend/parser/gram.y
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/parser/gram.y,v
retrieving revision 2.437
diff -c -c -r2.437 gram.y
*** src/backend/parser/gram.y 6 Nov 2003 22:08:14 -0000 2.437
--- src/backend/parser/gram.y 10 Nov 2003 03:08:38 -0000
***************
*** 3607,3617 ****
n->options = NIL;
$$ = (Node *)n;
}
! | BEGIN_P opt_transaction
{
TransactionStmt *n = makeNode(TransactionStmt);
n->kind = TRANS_STMT_BEGIN;
! n->options = NIL;
$$ = (Node *)n;
}
| START TRANSACTION transaction_mode_list_or_empty
--- 3607,3617 ----
n->options = NIL;
$$ = (Node *)n;
}
! | BEGIN_P opt_transaction transaction_mode_list_or_empty
{
TransactionStmt *n = makeNode(TransactionStmt);
n->kind = TRANS_STMT_BEGIN;
! n->options = $3;
$$ = (Node *)n;
}
| START TRANSACTION transaction_mode_list_or_empty
Index: src/bin/psql/tab-complete.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/bin/psql/tab-complete.c,v
retrieving revision 1.93
diff -c -c -r1.93 tab-complete.c
*** src/bin/psql/tab-complete.c 8 Nov 2003 20:54:24 -0000 1.93
--- src/bin/psql/tab-complete.c 10 Nov 2003 03:08:45 -0000
***************
*** 725,730 ****
--- 725,742 ----
else if (strcasecmp(prev2_wd, "ANALYZE") == 0)
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 */
/* If the previous word is CLUSTER, produce list of indexes. */
else if (strcasecmp(prev_wd, "CLUSTER") == 0)
***************
*** 1101,1109 ****
strcasecmp(prev_wd, "SHOW") == 0)
COMPLETE_WITH_LIST(pgsql_variables);
/* Complete "SET TRANSACTION" */
! else if ((strcasecmp(prev2_wd, "SET") == 0
! && strcasecmp(prev_wd, "TRANSACTION") == 0)
|| (strcasecmp(prev2_wd, "START") == 0
&& strcasecmp(prev_wd, "TRANSACTION") == 0)
|| (strcasecmp(prev4_wd, "SESSION") == 0
&& strcasecmp(prev3_wd, "CHARACTERISTICS") == 0
--- 1113,1125 ----
strcasecmp(prev_wd, "SHOW") == 0)
COMPLETE_WITH_LIST(pgsql_variables);
/* Complete "SET TRANSACTION" */
! else if ((strcasecmp(prev2_wd, "SET") == 0 &&
! strcasecmp(prev_wd, "TRANSACTION") == 0)
|| (strcasecmp(prev2_wd, "START") == 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(prev3_wd, "CHARACTERISTICS") == 0