diff options
author | Vadim B. Mikheev <vadim4o@yahoo.com> | 1997-08-29 09:05:25 +0000 |
---|---|---|
committer | Vadim B. Mikheev <vadim4o@yahoo.com> | 1997-08-29 09:05:25 +0000 |
commit | 3152996ffb8e9954927268b12f11814902e90166 (patch) | |
tree | 57c1a6cad6fc4a1839d1d9b86add0017da60bf5d /src/backend/access/transam/xact.c | |
parent | e06099c6076a3cee2b8fc39284744239d772ff2f (diff) |
Fix very old bug which made tuples changed/inserted by a commnd
visible to command itself (so we had multiple update of updated tuples,
etc).
Diffstat (limited to 'src/backend/access/transam/xact.c')
-rw-r--r-- | src/backend/access/transam/xact.c | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 903cca41130..5ac4a42c7c7 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.12 1997/08/19 21:30:19 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.13 1997/08/29 09:02:11 vadim Exp $ * * NOTES * Transaction aborts can now occur two ways: @@ -377,6 +377,22 @@ GetCurrentCommandId() return s->commandId; } +CommandId +GetScanCommandId() +{ + TransactionState s = CurrentTransactionState; + + /* ---------------- + * if the transaction system is disabled, we return + * the special "disabled" command id. + * ---------------- + */ + if (s->state == TRANS_DISABLED) + return (CommandId) DisabledCommandId; + + return s->scanCommandId; +} + /* -------------------------------- * GetCurrentTransactionStartTime @@ -432,6 +448,18 @@ CommandIdIsCurrentCommandId(CommandId cid) (cid == s->commandId) ? true : false; } +bool +CommandIdGEScanCommandId(CommandId cid) +{ + TransactionState s = CurrentTransactionState; + + if (AMI_OVERRIDE) + return false; + + return + (cid >= s->scanCommandId) ? true : false; +} + /* -------------------------------- * ClearCommandIdCounterOverflowFlag @@ -458,11 +486,22 @@ CommandCounterIncrement() elog(WARN, "You may only have 65535 commands per transaction"); } + CurrentTransactionStateData.scanCommandId = + CurrentTransactionStateData.commandId; + /* make cache changes visible to me */ AtCommit_Cache(); AtStart_Cache(); } +void +SetScanCommandId (CommandId savedId) +{ + + CurrentTransactionStateData.scanCommandId = savedId; + +} + /* ---------------------------------------------------------------- * initialization stuff * ---------------------------------------------------------------- @@ -757,6 +796,7 @@ StartTransaction() * ---------------- */ s->commandId = FirstCommandId; + s->scanCommandId = FirstCommandId; s->startTime = GetCurrentAbsoluteTime(); /* ---------------- |