Обсуждение: 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