diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2003-11-06 22:08:15 +0000 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2003-11-06 22:08:15 +0000 |
commit | 96889392e915e5c77384d274db2a2c42b684c274 (patch) | |
tree | 06f115dec005a18d591bf4a389391a84cf6cef00 /src/backend/commands | |
parent | 144a2ecd57590c6cce9981a2b28cee5f5805bd5d (diff) | |
download | postgresql-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.c | 4 | ||||
-rw-r--r-- | src/backend/commands/variable.c | 29 |
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"; + } } |