On Fri, Oct 13, 2017 at 1:58 PM, Haribabu Kommi <kommi.harib...@gmail.com> wrote: > > On Fri, Oct 13, 2017 at 11:55 AM, Robert Haas <robertmh...@gmail.com> wrote: >> >> On Thu, Oct 12, 2017 at 8:00 PM, Haribabu Kommi >> <kommi.harib...@gmail.com> wrote: >> > Currently I added a snapshot_satisfies API to find out whether the tuple >> > satisfies the visibility or not with different types of visibility >> > routines. >> > I feel these >> > are some how enough to develop a different storage methods like UNDO. >> > The storage methods can decide internally how to provide the visibility. >> > >> > + amroutine->snapshot_satisfies[MVCC_VISIBILITY] = >> > HeapTupleSatisfiesMVCC; >> > + amroutine->snapshot_satisfies[SELF_VISIBILITY] = >> > HeapTupleSatisfiesSelf; >> > + amroutine->snapshot_satisfies[ANY_VISIBILITY] = HeapTupleSatisfiesAny; >> > + amroutine->snapshot_satisfies[TOAST_VISIBILITY] = >> > HeapTupleSatisfiesToast; >> > + amroutine->snapshot_satisfies[DIRTY_VISIBILITY] = >> > HeapTupleSatisfiesDirty; >> > + amroutine->snapshot_satisfies[HISTORIC_MVCC_VISIBILITY] = >> > HeapTupleSatisfiesHistoricMVCC; >> > + amroutine->snapshot_satisfies[NON_VACUUMABLE_VISIBILTY] = >> > HeapTupleSatisfiesNonVacuumable; >> > + >> > + amroutine->snapshot_satisfiesUpdate = HeapTupleSatisfiesUpdate; >> > + amroutine->snapshot_satisfiesVacuum = HeapTupleSatisfiesVacuum; >> > >> > Currently no changes are carried out in snapshot logic as that is kept >> > seperate >> > from storage API. >> >> That seems like a strange choice of API. I think it should more >> integrated with the scan logic. For example, if I'm doing an index >> scan, and I get a TID, then I should be able to just say "here's a >> TID, give me any tuples associated with that TID that are visible to >> the scan snapshot". Then for the current heap it will do >> heap_hot_search_buffer, and for zheap it will walk the undo chain and >> return the relevant tuple from the chain. > > > OK, Understood. > I will check along these lines and come up with storage API's. >
I think what we need here is a way to register satisfies function (SnapshotSatisfiesFunc) in SnapshotData for different storage engines. That is the core API to decide visibility with respect to different storage engines. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers