mirror of
https://github.com/postgres/postgres.git
synced 2025-10-21 02:52:47 +03:00
Move remaining code from tqual.[ch] to heapam.h / heapam_visibility.c.
Given these routines are heap specific, and that there will be more generic visibility support in via table AM, it makes sense to move the prototypes to heapam.h (routines like HeapTupleSatisfiesVacuum will not be exposed in a generic fashion, because they are too storage specific). Similarly, the code in tqual.c is specific to heap, so moving it into access/heap/ makes sense. Author: Andres Freund Discussion: https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de
This commit is contained in:
@@ -60,6 +60,15 @@ typedef struct HeapUpdateFailureData
|
||||
CommandId cmax;
|
||||
} HeapUpdateFailureData;
|
||||
|
||||
/* Result codes for HeapTupleSatisfiesVacuum */
|
||||
typedef enum
|
||||
{
|
||||
HEAPTUPLE_DEAD, /* tuple is dead and deletable */
|
||||
HEAPTUPLE_LIVE, /* tuple is live (committed, no deleter) */
|
||||
HEAPTUPLE_RECENTLY_DEAD, /* tuple is dead, but not deletable yet */
|
||||
HEAPTUPLE_INSERT_IN_PROGRESS, /* inserting xact is still in progress */
|
||||
HEAPTUPLE_DELETE_IN_PROGRESS /* deleting xact is still in progress */
|
||||
} HTSV_Result;
|
||||
|
||||
/* ----------------
|
||||
* function prototypes for heap access method
|
||||
@@ -178,4 +187,29 @@ extern Size SyncScanShmemSize(void);
|
||||
struct VacuumParams;
|
||||
extern void heap_vacuum_rel(Relation onerel, int options,
|
||||
struct VacuumParams *params, BufferAccessStrategy bstrategy);
|
||||
|
||||
/* in heap/heapam_visibility.c */
|
||||
extern bool HeapTupleSatisfiesVisibility(HeapTuple stup, Snapshot snapshot,
|
||||
Buffer buffer);
|
||||
extern HTSU_Result HeapTupleSatisfiesUpdate(HeapTuple stup, CommandId curcid,
|
||||
Buffer buffer);
|
||||
extern HTSV_Result HeapTupleSatisfiesVacuum(HeapTuple stup, TransactionId OldestXmin,
|
||||
Buffer buffer);
|
||||
extern void HeapTupleSetHintBits(HeapTupleHeader tuple, Buffer buffer,
|
||||
uint16 infomask, TransactionId xid);
|
||||
extern bool HeapTupleHeaderIsOnlyLocked(HeapTupleHeader tuple);
|
||||
extern bool XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot);
|
||||
extern bool HeapTupleIsSurelyDead(HeapTuple htup, TransactionId OldestXmin);
|
||||
|
||||
/*
|
||||
* To avoid leaking too much knowledge about reorderbuffer implementation
|
||||
* details this is implemented in reorderbuffer.c not heapam_visibility.c
|
||||
*/
|
||||
struct HTAB;
|
||||
extern bool ResolveCminCmaxDuringDecoding(struct HTAB *tuplecid_data,
|
||||
Snapshot snapshot,
|
||||
HeapTuple htup,
|
||||
Buffer buffer,
|
||||
CommandId *cmin, CommandId *cmax);
|
||||
|
||||
#endif /* HEAPAM_H */
|
||||
|
Reference in New Issue
Block a user