diff options
Diffstat (limited to 'src/backend/utils/time/tqual.c')
-rw-r--r-- | src/backend/utils/time/tqual.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/backend/utils/time/tqual.c b/src/backend/utils/time/tqual.c index a5843004733..1fcf3679fe4 100644 --- a/src/backend/utils/time/tqual.c +++ b/src/backend/utils/time/tqual.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.3 1997/08/19 21:36:12 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.4 1997/08/29 09:04:54 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -580,6 +580,13 @@ HeapTupleSatisfiesItself(HeapTuple tuple) * (Xmax is not committed && the row was deleted by another transaction * Xmax != my-transaction)))) that has not been committed * + * XXX + * CommandId stuff didn't work properly if one used SQL-functions in + * UPDATE/INSERT(fromSELECT)/DELETE scans: SQL-funcs call + * CommandCounterIncrement and made tuples changed/inserted by + * current command visible to command itself (so we had multiple + * update of updated tuples, etc). - vadim 08/29/97 + * * mao says 17 march 1993: the tests in this routine are correct; * if you think they're not, you're wrong, and you should think * about it again. i know, it happened to me. we don't need to @@ -615,13 +622,13 @@ HeapTupleSatisfiesNow(HeapTuple tuple) if (!AbsoluteTimeIsBackwardCompatiblyValid(tuple->t_tmin)) { if (TransactionIdIsCurrentTransactionId((TransactionId)tuple->t_xmin) - && CommandIdIsCurrentCommandId(tuple->t_cmin)) { + && CommandIdGEScanCommandId(tuple->t_cmin)) { return (false); } if (TransactionIdIsCurrentTransactionId((TransactionId)tuple->t_xmin) - && !CommandIdIsCurrentCommandId(tuple->t_cmin)) { + && !CommandIdGEScanCommandId(tuple->t_cmin)) { if (!TransactionIdIsValid((TransactionId)tuple->t_xmax)) { return (true); @@ -629,7 +636,7 @@ HeapTupleSatisfiesNow(HeapTuple tuple) Assert(TransactionIdIsCurrentTransactionId((TransactionId)tuple->t_xmax)); - if (CommandIdIsCurrentCommandId(tuple->t_cmax)) { + if (CommandIdGEScanCommandId(tuple->t_cmax)) { return (true); } } @@ -813,13 +820,13 @@ HeapTupleSatisfiesUpperUnboundedInternalTimeQual(HeapTuple tuple, if (!AbsoluteTimeIsBackwardCompatiblyValid(tuple->t_tmin)) { if (TransactionIdIsCurrentTransactionId((TransactionId)tuple->t_xmin) && - CommandIdIsCurrentCommandId(tuple->t_cmin)) { + CommandIdGEScanCommandId(tuple->t_cmin)) { return (false); } if (TransactionIdIsCurrentTransactionId((TransactionId)tuple->t_xmin) && - !CommandIdIsCurrentCommandId(tuple->t_cmin)) { + !CommandIdGEScanCommandId(tuple->t_cmin)) { if (!TransactionIdIsValid((TransactionId)tuple->t_xmax)) { return (true); @@ -827,7 +834,7 @@ HeapTupleSatisfiesUpperUnboundedInternalTimeQual(HeapTuple tuple, Assert(TransactionIdIsCurrentTransactionId((TransactionId)tuple->t_xmax)); - return ((bool) !CommandIdIsCurrentCommandId(tuple->t_cmax)); + return ((bool) !CommandIdGEScanCommandId(tuple->t_cmax)); } if (!TransactionIdDidCommit((TransactionId)tuple->t_xmin)) { @@ -849,7 +856,8 @@ HeapTupleSatisfiesUpperUnboundedInternalTimeQual(HeapTuple tuple, } if (TransactionIdIsCurrentTransactionId((TransactionId)tuple->t_xmax)) { - return (CommandIdIsCurrentCommandId(tuple->t_cmin)); + return (CommandIdGEScanCommandId(tuple->t_cmin)); + /* it looks like error ^^^^ */ } if (!TransactionIdDidCommit((TransactionId)tuple->t_xmax)) { |