Re: snapshot too old, configured by time - Mailing list pgsql-hackers

From Michael Paquier
Subject Re: snapshot too old, configured by time
Date
Msg-id CAB7nPqS4X_nqZqW2CCdywWSLk+h_WQoenrwD_PcE9K8UeYUZdA@mail.gmail.com
Whole thread Raw
In response to Re: snapshot too old, configured by time  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Responses Re: snapshot too old, configured by time
List pgsql-hackers
On Fri, Apr 1, 2016 at 11:45 PM, Alvaro Herrera
<alvherre@2ndquadrant.com> wrote:
> Kevin Grittner wrote:
>
>> Attached is what I think you're talking about for the first patch.
>> AFAICS this should generate identical executable code to unpatched.
>> Then the patch to actually implement the feature would, instead
>> of adding 30-some lines with TestForOldSnapshot() would implement
>> that as the behavior for the other enum value, and alter those
>> 30-some BufferGetPage() calls.
>>
>> Álvaro and Michael, is this what you were looking for?
>
> Yes, this is what I was thinking, thanks.

A small thing:
$ git diff master --check
src/include/storage/bufmgr.h:181: trailing whitespace.
+#define BufferGetPage(buffer, snapshot, relation, agetest)
((Page)BufferGetBlock(buffer))

-   Page        page = BufferGetPage(buf);
+   Page        page = BufferGetPage(buf, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
Having a BufferGetPageExtended() with some flags and a default
corresponding to NO_SNAPSHOT_TEST would reduce the diff impact. And as
long as the check is integrated with BufferGetPage[Extended]() I would
not complain, the patch as proposed being 174kB...
--
Michael



pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: Speed up Clog Access by increasing CLOG buffers
Next
From: David Rowley
Date:
Subject: Re: Performance improvement for joins where outer side is unique