Re: advancing snapshot's xmin

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Gregory Stark <stark@enterprisedb.com>
Cc: "Heikki Linnakangas" <heikki@enterprisedb.com>, "Neil Conway" <neilc@samurai.com>, "Alvaro Herrera" <alvherre@commandprompt.com>, "Pg Hackers" <pgsql-hackers@postgresql.org>
Date: 2008-03-26T15:58:52Z
Lists: pgsql-hackers
Gregory Stark <stark@enterprisedb.com> writes:
> Uhm, yeah, I somehow didn't write was I was thinking. I didn't mean to say we
> would be taking a new snapshot for each INSERT but that we would be resetting
> xmin for each INSERT. Whereas currently we only set xmin once when we set the
> serializable snapshot.

Right, but setting xmin within GetSnapshotData is essentially free.
What I'm envisioning is that we lose the notion of "this is a
serializable snapshot" that that function currently has, and just
give it the rule "if MyProc->xmin is currently zero, then set it".
Then the only additional mechanism needed is for the snapshot
manager to detect when all snapshots are gone and zero out
MyProc->xmin --- that would happen sometime during command shutdown,
and per current discussion it shouldn't need a lock.

			regards, tom lane