1. MyProc->xid assignment is moved to GetNewTransactionId so newer
authorVadim B. Mikheev <vadim4o@yahoo.com>
Thu, 3 Jun 1999 04:41:41 +0000 (04:41 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Thu, 3 Jun 1999 04:41:41 +0000 (04:41 +0000)
commitc2391c0d11077602a54861aa0d2317047b39392f
tree13c58d3f16af23bd27a4cef711b989b583c79966
parent23ebf7d44725f13f192dd1f7f08a385922a49329
1. MyProc->xid assignment is moved to GetNewTransactionId so newer
   transactions will not assume that MyProc transaction was committed
   before snapshot calculations. With old MyProc->xid assignment
   (in xact.c:StartTransaction()) there was ability to see the same
   row twice (I used gdb for this)!...
2. Assignments of InvalidTransactionId to MyProc->xid and MyProc->xmin
   are moved from xact.c:CommitTransaction() to
   xact.c:RecordTransactionCommit() - this invalidation must be done
   before releasing transaction locks or bad (too high) XmaxRecent value
   might be used by vacuum ("ERROR:  Child itemid marked as unused"
   reported by "Hiroshi Inoue" <Inoue@tpf.co.jp>; once again, gdb
   allowed me reproduce this error).
src/backend/access/transam/varsup.c
src/backend/access/transam/xact.c