On Wed, 2009-01-07 at 20:30 -0500, Bruce Momjian wrote:
> > The only way is to document it.
>
> Sorry, I am just getting back to this. Why would we not know if
> something is a subtransaction or if subtransactions are supported? Are
> you assuming txid_visible_in_snapshot() will be used on different
> servers? What are these txid_* functions for anyway?
You can derive a snapshot and export it using txid_current_snapshot().
http://developer.postgresql.org/pgdocs/postgres/functions-info.html
You can then check whether an xid is in that snapshot by running
txid_visible_in_snapshot(). However, the check is done assuming that the
xid you are checking is a top-level xid and the answer you get is either
yes or no.
There is no allowance made that the xid supplied as a parameter value
may have been a subtrans of one of the top-level xids listed. So the
answer *ought* to have been true, whereas the function will always
return false.
We cannot extend txid_visible_in_snapshot() to answer correctly because
that information is not held within the snapshot datatype, nor is it
held in regular snapshots currently. So the only way to handle this is
to document the limited scope of the answer this function provides.
--
Simon Riggs www.2ndQuadrant.com
PostgreSQL Training, Services and Support