From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "Zeugswetter Andreas SB SD" <ZeugswetterA(at)spardat(dot)at> |
Cc: | "Hiroshi Inoue" <Inoue(at)tpf(dot)co(dot)jp>, "Mikheev, Vadim" <vmikheev(at)SECTORBASE(dot)COM>, pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: CURRENT OF cursor without OIDs |
Date: | 2001-08-23 15:01:13 |
Message-ID: | 792.998578873@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
"Zeugswetter Andreas SB SD" <ZeugswetterA(at)spardat(dot)at> writes:
> Hiroshi wrote:
>> In addtion, xmin wouldn't be so reliable
>> in the near future because it would be updated to FrozenXID
>> (=2) by vacuum.
> I thought concurrent vacuum with an open cursor is not at all possible.
> If it were, it would not be allowed to change ctid (location of row)
> and could be made to not change xmin.
New-style vacuum can certainly run concurrently with an open cursor
(wouldn't be of much use if it couldn't). However, new-style vacuum
never changes ctid, period. It could change the xmin of a tuple though,
under my not-yet-implemented proposal for freezing tuples.
AFAICS, if you are holding an open SQL cursor, it is sufficient to check
that ctid hasn't changed to know that you have the same, un-updated
tuple. Under MVCC rules, VACUUM will be unable to delete any tuple that
is visible to your open transaction, and so new-style VACUUM cannot
recycle the ctid. Old-style VACUUM might move the tuple and make the
ctid available for reuse, but your open cursor will prevent old-style
VACUUM from running on that table. So, there's no need to look at xmin.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2001-08-23 15:11:03 | Re: A couple items on TODO |
Previous Message | Bruce Momjian | 2001-08-23 14:44:10 | Re: A couple items on TODO |