/*------------------------------------------------------------------------- * * tidstore.h * TidStore interface. * * * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/access/tidstore.h * *------------------------------------------------------------------------- */ #ifndef TIDSTORE_H #define TIDSTORE_H #include "storage/itemptr.h" #include "utils/dsa.h" typedef struct TidStore TidStore; typedef struct TidStoreIter TidStoreIter; /* Result struct for TidStoreIterateNext */ typedef struct TidStoreIterResult { BlockNumber blkno; int max_offset; int num_offsets; OffsetNumber *offsets; } TidStoreIterResult; extern TidStore *TidStoreCreate(size_t max_bytes, dsa_area *dsa, int tranche_id); extern TidStore *TidStoreAttach(dsa_area *dsa, dsa_pointer rt_dp); extern void TidStoreDetach(TidStore *ts); extern void TidStoreLockExclusive(TidStore *ts); extern void TidStoreLockShare(TidStore *ts); extern void TidStoreUnlock(TidStore *ts); extern void TidStoreDestroy(TidStore *ts); extern void TidStoreSetBlockOffsets(TidStore *ts, BlockNumber blkno, OffsetNumber *offsets, int num_offsets); extern bool TidStoreIsMember(TidStore *ts, ItemPointer tid); extern TidStoreIter *TidStoreBeginIterate(TidStore *ts); extern TidStoreIterResult *TidStoreIterateNext(TidStoreIter *iter); extern void TidStoreEndIterate(TidStoreIter *iter); extern size_t TidStoreMemoryUsage(TidStore *ts); extern dsa_pointer TidStoreGetHandle(TidStore *ts); #endif /* TIDSTORE_H */