Thread: transaction abort

transaction abort

From
postgresql
Date:
<p>Hi all.<p>    I have read some codes on transaction abort operation.  When the transaction abort, it seem that
<p>allthe tuples related in the transaction have not been deal with. it XMIN equals to the tuple create
transaction <p>ID.Its XMAX equals null.  Of cource , It make some records on the pg_log.<p>So I have one question, how
thesystem know which tuple is valid? do it need the help of pg_log? That is<p>,we check for a tuple with XMIN is valid
andthe sign in pg_log means COMMIT?<p>Thank for any comments<p>Josh 

Re: transaction abort

From
Tom Lane
Date:
postgresql <postgresql@db.pku.edu.cn> writes:
> SGkgYWxsLg0KICAgIEkgaGF2ZSByZWFkIHNvbWUgY29kZXMgb24gdHJhbnNh
> Y3Rpb24gYWJvcnQgb3BlcmF0aW9uLiAgV2hlbiB0aGUgdHJhbnNhY3Rpb24g
> YWJvcnQsIGl0IHNlZW0gdGhhdCANCmFsbCB0aGUgdHVwbGVzIHJlbGF0ZWQg
> aW4gdGhlIHRyYW5zYWN0aW9uIGhhdmUgbm90IGJlZW4gZGVhbCB3aXRoLiBp
> dCBYTUlOIGVxdWFscyB0byB0aGUgdHVwbGUgY3JlYXRlIHRyYW5zYWN0aW9u
> [snip]

Please don't MIME-encode your mail unnecessarily.  It makes it difficult
to quote it :-(

Anyway, to answer your question: tuples inserted by a failed transaction
need not be deleted right away.  No other transaction will consider them
good, since their XMIN isn't committed (and yes, we need pg_log for that).
The next VACUUM will get rid of them.
        regards, tom lane