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. Regards, Hari Babu Fujitsu Australia