Gregory Stark wrote:
>
> With all this code to handle ignoring vacuum transactions in calculating the
> global xmin it just occurred to me to wonder: Does lazy vacuum need a
> transaction at all? It doesn't do the tuple moving tricks with xvac that
> vacuum full does so does lazy vacuum's xid ever make it into tables? Couldn't
> it just use GetTopTransactionId instead of its own xid? Would this cause any
> problems?
Two points:
1. it needs to get locks
2. GetTopTransactionId returns "its own Xid" anyway ...
The point of getting locks is that it needs the lock manager to be able
to release the lock if the transaction rolls back. (The lock object
itself does not hold anything about the transaction itself AFAIR.)
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.