Re: synchronized snapshots

Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>

From: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
To: Simon Riggs <simon@2ndQuadrant.com>
Cc: Joachim Wieland <joe@mcknight.de>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2011-08-15T07:51:42Z
Lists: pgsql-hackers
On 15.08.2011 10:40, Simon Riggs wrote:
> On Mon, Aug 15, 2011 at 2:31 AM, Joachim Wieland<joe@mcknight.de>  wrote:
>
>> In short, this is how it works:
>>
>> SELECT pg_export_snapshot();
>>   pg_export_snapshot
>> --------------------
>>   000003A1-1
>> (1 row)
>>
>>
>> (and then in a different session)
>>
>> BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ (SNAPSHOT = '000003A1-1');
>
> I don't see the need to change the BEGIN command, which is SQL
> Standard. We don't normally do that.
>
> If we have pg_export_snapshot() why not pg_import_snapshot() as well?

It would be nice a symmetry, but you'd need a limitation that 
pg_import_snapshot() must be the first thing you do in the session. And 
it might be hard to enforce that, as once you get control into the 
function, you've already acquired another snapshot in the transaction to 
run the "SELECT pg_import_snapshot()" query with. Specifying the 
snapshot in the BEGIN command makes sense.

-- 
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com