"Jan Wieck" <JanWieck@Yahoo.com> writes:
> backend1: select publish_snapshot(); -- will block
>
> backend2: start transaction;
> backend2: set transaction isolation level serializable;
> backend2: select clone_snapshot(<pid>); -- will unblock backend1
It seems simpler to have a current_snapshot() function that returns an bytea
or a new snapshot data type which set_current_snapshot(bytea) took to change
your snapshot. Then you could use tables or out-of-band communication to pass
around your snapshots however you please.
set_current_snapshot() would have to sanity check that the xmin of the new
snapshot isn't older than the current globaloldestxmin.
That could be handy for debugging purposes too.
-- Gregory Stark EnterpriseDB http://www.enterprisedb.com