243 elog(
ERROR,
"encountered tuple with HEAP_MOVED considered current");
246 elog(
ERROR,
"encountered tuple with HEAP_MOVED considered in-progress");
871 snapshot->
xmax = xmax;
1557 if (cmin >= snapshot->
curcid)
1643 if (cmax >= snapshot->
curcid)
1699 for (
int i = 0;
i < ntups;
i++)
bool BufferSetHintBits16(uint16 *ptr, uint16 val, Buffer buffer)
void BufferFinishSetHintBits(Buffer buffer, bool mark_dirty, bool buffer_std)
bool BufferIsLockedByMeInMode(Buffer buffer, BufferLockMode mode)
bool BufferIsPermanent(Buffer buffer)
XLogRecPtr BufferGetLSNAtomic(Buffer buffer)
bool BufferBeginSetHintBits(Buffer buffer)
#define Assert(condition)
CommandId HeapTupleHeaderGetCmin(const HeapTupleHeaderData *tup)
CommandId HeapTupleHeaderGetCmax(const HeapTupleHeaderData *tup)
TransactionId HeapTupleGetUpdateXid(const HeapTupleHeaderData *tup)
@ HEAPTUPLE_RECENTLY_DEAD
@ HEAPTUPLE_INSERT_IN_PROGRESS
@ HEAPTUPLE_DELETE_IN_PROGRESS
static void SetHintBits(HeapTupleHeader tuple, Buffer buffer, uint16 infomask, TransactionId xid)
void HeapTupleSetHintBits(HeapTupleHeader tuple, Buffer buffer, uint16 infomask, TransactionId xid)
static bool HeapTupleSatisfiesMVCC(HeapTuple htup, Snapshot snapshot, Buffer buffer, SetHintBitsState *state)
bool HeapTupleSatisfiesVisibility(HeapTuple htup, Snapshot snapshot, Buffer buffer)
HTSV_Result HeapTupleSatisfiesVacuumHorizon(HeapTuple htup, Buffer buffer, TransactionId *dead_after)
static bool HeapTupleSatisfiesAny(HeapTuple htup, Snapshot snapshot, Buffer buffer)
static bool HeapTupleCleanMoved(HeapTupleHeader tuple, Buffer buffer)
static bool HeapTupleSatisfiesNonVacuumable(HeapTuple htup, Snapshot snapshot, Buffer buffer)
static bool HeapTupleSatisfiesToast(HeapTuple htup, Snapshot snapshot, Buffer buffer)
bool HeapTupleIsSurelyDead(HeapTuple htup, GlobalVisState *vistest)
static bool HeapTupleSatisfiesDirty(HeapTuple htup, Snapshot snapshot, Buffer buffer)
HTSV_Result HeapTupleSatisfiesVacuum(HeapTuple htup, TransactionId OldestXmin, Buffer buffer)
static void SetHintBitsExt(HeapTupleHeader tuple, Buffer buffer, uint16 infomask, TransactionId xid, SetHintBitsState *state)
int HeapTupleSatisfiesMVCCBatch(Snapshot snapshot, Buffer buffer, int ntups, BatchMVCCState *batchmvcc, OffsetNumber *vistuples_dense)
static bool TransactionIdInArray(TransactionId xid, TransactionId *xip, Size num)
bool HeapTupleHeaderIsOnlyLocked(HeapTupleHeader tuple)
TM_Result HeapTupleSatisfiesUpdate(HeapTuple htup, CommandId curcid, Buffer buffer)
static bool HeapTupleSatisfiesSelf(HeapTuple htup, Snapshot snapshot, Buffer buffer)
static bool HeapTupleSatisfiesHistoricMVCC(HeapTuple htup, Snapshot snapshot, Buffer buffer)
static bool HeapTupleHeaderXminFrozen(const HeapTupleHeaderData *tup)
#define HEAP_XMIN_COMMITTED
static bool HEAP_XMAX_IS_LOCKED_ONLY(uint16 infomask)
static bool HeapTupleHeaderXminInvalid(const HeapTupleHeaderData *tup)
static TransactionId HeapTupleHeaderGetXvac(const HeapTupleHeaderData *tup)
#define HEAP_XMAX_LOCK_ONLY
static CommandId HeapTupleHeaderGetRawCommandId(const HeapTupleHeaderData *tup)
static TransactionId HeapTupleHeaderGetRawXmax(const HeapTupleHeaderData *tup)
#define HEAP_XMAX_IS_MULTI
#define HEAP_XMAX_COMMITTED
static TransactionId HeapTupleHeaderGetXmin(const HeapTupleHeaderData *tup)
#define HEAP_XMIN_INVALID
static BlockNumber HeapTupleHeaderGetSpeculativeToken(const HeapTupleHeaderData *tup)
#define HEAP_XMAX_INVALID
static TransactionId HeapTupleHeaderGetRawXmin(const HeapTupleHeaderData *tup)
static bool HeapTupleHeaderIsSpeculative(const HeapTupleHeaderData *tup)
static TransactionId HeapTupleHeaderGetUpdateXid(const HeapTupleHeaderData *tup)
static bool HEAP_LOCKED_UPGRADED(uint16 infomask)
static bool HeapTupleHeaderXminCommitted(const HeapTupleHeaderData *tup)
bool ItemPointerEquals(const ItemPointerData *pointer1, const ItemPointerData *pointer2)
static bool ItemPointerIsValid(const ItemPointerData *pointer)
bool MultiXactIdIsRunning(MultiXactId multi, bool isLockOnly)
bool GlobalVisTestIsRemovableXid(GlobalVisState *state, TransactionId xid)
bool TransactionIdIsInProgress(TransactionId xid)
bool ResolveCminCmaxDuringDecoding(HTAB *tuplecid_data, Snapshot snapshot, HeapTuple htup, Buffer buffer, CommandId *cmin, CommandId *cmax)
bool XidInMVCCSnapshot(TransactionId xid, Snapshot snapshot)
HTAB * HistoricSnapshotGetTupleCids(void)
#define IsMVCCSnapshot(snapshot)
@ SNAPSHOT_NON_VACUUMABLE
struct GlobalVisState * vistest
SnapshotType snapshot_type
bool TransactionIdDidCommit(TransactionId transactionId)
XLogRecPtr TransactionIdGetCommitLSN(TransactionId xid)
#define InvalidTransactionId
static bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2)
#define TransactionIdIsValid(xid)
static bool TransactionIdPrecedes(TransactionId id1, TransactionId id2)
bool TransactionIdIsCurrentTransactionId(TransactionId xid)
int xidComparator(const void *arg1, const void *arg2)
bool XLogNeedsFlush(XLogRecPtr record)