Re: PushActiveSnapshot(GetTransactionSnapshot()) - Mailing list pgsql-hackers

From Simon Riggs
Subject Re: PushActiveSnapshot(GetTransactionSnapshot())
Date
Msg-id CA+U5nMKtnyxh5f_zkxtMiFQKKYFpuE+RWypse8--LBdq4DjBbA@mail.gmail.com
Whole thread Raw
In response to Re: PushActiveSnapshot(GetTransactionSnapshot())  (Alvaro Herrera <alvherre@commandprompt.com>)
Responses Re: PushActiveSnapshot(GetTransactionSnapshot())
List pgsql-hackers
On Mon, Aug 22, 2011 at 7:07 PM, Alvaro Herrera
<alvherre@commandprompt.com> wrote:
> Excerpts from Simon Riggs's message of dom ago 21 16:23:39 -0300 2011:
>> In common cases of snapshot use we run GetSnapshotData() into a
>> statically allocated snapshot, then immediately copy the static struct
>> into a dynamically allocated copy.
>>
>> The static allocation was designed to remove the overhead of dynamic
>> allocation, but then we do it anyway.
>>
>> The snapmgr code does this explicitly, but the reason isn't
>> documented, it just says we must do this.
>
> IIRC the active snapshot is scribbled onto by some operations, which is
> why the copy is mandatory.  Maybe there's some way to optimize things so
> that the copy is done only when necessary.  IIRC the copying of the
> ActiveSnapshot was only introduced because some subtle bugs were
> detected in the code without copy.  When I introduced the mandatory
> copy, I don't remember thinking about the statically allocated struct.

"Some operations", "subtle bugs".

Do you have any further information on those?

--
 Simon Riggs                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services


pgsql-hackers by date:

Previous
From: Pavel Stehule
Date:
Subject: Re: VIP: plpgsql - early embedded sql plan preparation
Next
From: Alvaro Herrera
Date:
Subject: Re: PushActiveSnapshot(GetTransactionSnapshot())