Re: [HACKERS] Pluggable storage - Mailing list pgsql-hackers

From Haribabu Kommi
Subject Re: [HACKERS] Pluggable storage
Date
Msg-id CAJrrPGd4GYvaFemBZQdFtFx3nq0j+jEZhTGUj_ndByYJ8VOHjQ@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] Pluggable storage  (Amit Kapila <amit.kapila16@gmail.com>)
List pgsql-hackers


On Mon, Aug 21, 2017 at 7:25 PM, Amit Kapila <amit.kapila16@gmail.com> wrote:
On Mon, Aug 21, 2017 at 12:58 PM, Haribabu Kommi
<kommi.haribabu@gmail.com> wrote:
>
> On Sun, Aug 13, 2017 at 5:17 PM, Amit Kapila <amit.kapila16@gmail.com>
> wrote:
>>
>>
>> Also, it is quite possible that some of the storage Am's don't even
>> want to return bool as a parameter from HeapTupleSatisfies* API's.  I
>> guess what we need here is to provide a way so that different storage
>> am's can register their function pointer for an equivalent to
>> satisfies function.  So, we need to change
>> SnapshotData.SnapshotSatisfiesFunc in some way so that different
>> handlers can register their function instead of using that directly.
>> I think that should address the problem you are planning to solve by
>> omitting buffer parameter.
>
>
> Thanks for your suggestion. Yes, it is better to go in the direction of
> SnapshotSatisfiesFunc.
>
> I verified the above idea of implementing the Tuple visibility functions
> and assign them into the snapshotData structure based on the snapshot.
>
> The Tuple visibility functions that are specific to the relation are
> available
> with the RelationData structure and this structure may not be available,
>

Which functions are you referring here?  I don't see anything in
tqual.h that uses RelationData.


With storage API's, the tuple visibility functions are available with RelationData
and those are needs used to update the SnapshotData structure 
SnapshotSatisfiesFunc member.

But the RelationData is not available everywhere, where the snapshot is created,
but it is available every place where the tuple visibility is checked. So I just changed
the way of checking the tuple visibility with the information of snapshot by calling
the corresponding tuple visibility function from RelationData.

If SnapshotData provides MVCC, then the MVCC specific tuple visibility function from
RelationData is called. The SnapshotSatisfiesFunc member is changed to a enum
that holds the tuple visibility type such as MVCC, DIRTY, SELF and etc. Whenever
the visibility check is needed, the corresponding function is called.


Regards,
Hari Babu
Fujitsu Australia

pgsql-hackers by date:

Previous
From: Haribabu Kommi
Date:
Subject: Re: [HACKERS] Pluggable storage
Next
From: Andres Freund
Date:
Subject: Re: [HACKERS] POC: Sharing record typmods between backends