On Wed, Jul 13, 2016 at 12:48 PM, Andres Freund <and...@anarazel.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.kapil...@gmail.com> wrote:
>>> On Tue, Jul 12, 2016 at 8:34 PM, Kevin Grittner <kgri...@gmail.com> wrote:
>>>> On Fri, Jul 8, 2016 at 1:52 PM, Andres Freund <and...@anarazel.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

Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to