Thread: transaction abort
<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
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