From: | Kevin Grittner <kgrittn(at)gmail(dot)com> |
---|---|
To: | Andres Freund <andres(at)anarazel(dot)de> |
Cc: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Noah Misch <noah(at)leadboat(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Ants Aasma <ants(dot)aasma(at)eesti(dot)ee>, Kevin Grittner <kgrittn(at)postgresql(dot)org>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Re: [COMMITTERS] pgsql: Avoid extra locks in GetSnapshotData if old_snapshot_threshold < |
Date: | 2016-07-13 20:57:02 |
Message-ID: | CACjxUsM=QefOrSyO3ReKJu+7_HMLsF4mL=eKVTT=J-9PPzdz8A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers pgsql-hackers |
On Wed, Jul 13, 2016 at 12:48 PM, Andres Freund <andres(at)anarazel(dot)de> wrote:
> On 2016-07-13 10:06:52 -0500, Kevin Grittner wrote:
>> On Wed, Jul 13, 2016 at 7:57 AM, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
>>> On Tue, Jul 12, 2016 at 8:34 PM, Kevin Grittner <kgrittn(at)gmail(dot)com> wrote:
>>>> On Fri, Jul 8, 2016 at 1:52 PM, Andres Freund <andres(at)anarazel(dot)de> wrote:
>>>>
>>>>> I'm a bit confused, why aren't we simply adding LSN interlock
>>>>> checks for toast? Doesn't look that hard? Seems like a much more
>>>>> natural course of fixing this issue?
>>>>
>>>> I took some time trying to see what you have in mind, and I'm
>>>> really not "getting it".
>>>
>>> Isn't it possible if we initialize lsn and whenTaken in SnapshotToast
>>> when old_snapshot_threshold > 0 and add a check for
>>> HeapTupleSatisfiesToast in TestForOldSnapshot()?
>>
>> With that approach, how will we know *not* to generate an error
>> when reading the chain of tuples for a value we are deleting. Or
>> positioning to modify an index on toast data. Etc., etc. etc.
>
> I'm not following. How is that different in the toast case than in the
> heap case?
A short answer is that a normal table's heap doesn't go through
systable_getnext_ordered(). That function is used both for cases
where the check should not be made, like toast_delete_datum(), and
cases where it should, like toast_fetch_datum().
Since this keeps coming up, I'll produce a patch this way. I'm
skeptical, but maybe it will look better than I think it will. I
should be able to post that by Friday.
--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2016-07-13 21:05:25 | Re: Re: [COMMITTERS] pgsql: Avoid extra locks in GetSnapshotData if old_snapshot_threshold < |
Previous Message | Tom Lane | 2016-07-13 19:36:38 | pgsql: Minor test adjustment. |
From | Date | Subject | |
---|---|---|---|
Next Message | David G. Johnston | 2016-07-13 20:57:24 | Re: unexpected psql "feature" |
Previous Message | Andres Freund | 2016-07-13 20:49:46 | Re: rethinking dense_alloc (HashJoin) as a memory context |