aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2003-11-06 22:08:15 +0000
committerPeter Eisentraut <peter_e@gmx.net>2003-11-06 22:08:15 +0000
commit96889392e915e5c77384d274db2a2c42b684c274 (patch)
tree06f115dec005a18d591bf4a389391a84cf6cef00 /src/backend/commands
parent144a2ecd57590c6cce9981a2b28cee5f5805bd5d (diff)
downloadpostgresql-96889392e915e5c77384d274db2a2c42b684c274.tar.gz
postgresql-96889392e915e5c77384d274db2a2c42b684c274.zip
Implement isolation levels read uncommitted and repeatable read as acting
like the next higher one.
Diffstat (limited to 'src/backend/commands')
-rw-r--r--src/backend/commands/trigger.c4
-rw-r--r--src/backend/commands/variable.c29
2 files changed, 26 insertions, 7 deletions
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index d2cc87e43d5..9a603a6f042 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.159 2003/10/02 06:34:03 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.160 2003/11/06 22:08:14 petere Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1576,7 +1576,7 @@ ltrmark:;
case HeapTupleUpdated:
ReleaseBuffer(buffer);
- if (XactIsoLevel == XACT_SERIALIZABLE)
+ if (IsXactIsoLevelSerializable)
ereport(ERROR,
(errcode(ERRCODE_T_R_SERIALIZATION_FAILURE),
errmsg("could not serialize access due to concurrent update")));
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c
index 7c862a5b3ac..f763163957e 100644
--- a/src/backend/commands/variable.c
+++ b/src/backend/commands/variable.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.88 2003/09/25 06:57:59 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.89 2003/11/06 22:08:14 petere Exp $
*
*-------------------------------------------------------------------------
*/
@@ -640,11 +640,21 @@ assign_XactIsoLevel(const char *value, bool doit, bool interactive)
if (doit)
XactIsoLevel = XACT_SERIALIZABLE;
}
+ else if (strcmp(value, "repeatable read") == 0)
+ {
+ if (doit)
+ XactIsoLevel = XACT_REPEATABLE_READ;
+ }
else if (strcmp(value, "read committed") == 0)
{
if (doit)
XactIsoLevel = XACT_READ_COMMITTED;
}
+ else if (strcmp(value, "read uncommitted") == 0)
+ {
+ if (doit)
+ XactIsoLevel = XACT_READ_UNCOMMITTED;
+ }
else if (strcmp(value, "default") == 0)
{
if (doit)
@@ -659,10 +669,19 @@ assign_XactIsoLevel(const char *value, bool doit, bool interactive)
const char *
show_XactIsoLevel(void)
{
- if (XactIsoLevel == XACT_SERIALIZABLE)
- return "serializable";
- else
- return "read committed";
+ switch (XactIsoLevel)
+ {
+ case XACT_READ_UNCOMMITTED:
+ return "read uncommitted";
+ case XACT_READ_COMMITTED:
+ return "read committed";
+ case XACT_REPEATABLE_READ:
+ return "repeatable read";
+ case XACT_SERIALIZABLE:
+ return "serializable";
+ default:
+ return "bogus";
+ }
}