Re: Missing CONCURRENT VACUUM (Was: Release notes for
Hannu Krosing <hannu@tm.ee>
From: Hannu Krosing <hannu@tm.ee>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Bruce Momjian <pgman@candle.pha.pa.us>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2005-08-17T21:25:29Z
Lists: pgsql-hackers
On K, 2005-08-17 at 23:58 +0300, Hannu Krosing wrote: > On K, 2005-08-17 at 16:45 -0400, Tom Lane wrote: > > Hannu Krosing <hannu@skype.net> writes: > > > On K, 2005-08-17 at 14:48 -0400, Tom Lane wrote: > > >> While testing this I realized that it does not in fact work as > > >> advertised. It will only exclude long-running VACUUMs from other > > >> VACUUMs' OldestXmin if *all* the transactions in the system are lazy > > >> VACUUMs. If there is even one regular transaction in the system, > > >> that transaction will include the VACUUMs in its MyProc->xmin, and > > >> thence GetOldestXmin will have to include them in its result. > > > > > Only if these regular transactions are running in SERIALIZABLE isolation > > > level, else MyProc->xmin is not set inside GetSnapshotData. > > > > Better read the code again. The first snap in *any* transaction sets > > MyProc->xmin. > > Can't find the place :( > > Could you point to the file / function that does this. Nevermind. Found it - GetTransactionSnapshot() always gets a serializable snapshot first. -- Hannu Krosing <hannu@tm.ee>