Thanks, Jeff. That helps understanding it 50%. *Session 2* fails to UPDATE the record which is in *(0,2)* and this tuple is marked for deletion. It means that *(0,2) never exists* when Session 2 is trying to perform the update. In that case, how *Session 3's new row (0,4)* contains the xmax as *Session 2's txid*. ----- -- Thanks, Rajan. -- View this message in context: http://www.postgresql-archive.org/Re-have-trouble-understanding-xmin-and-xmax-with-update-operations-from-two-different-sessions-tp5969644p5969661.html Sent from the PostgreSQL - general mailing list archive at Nabble.com. -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general