139 errmsg(
"array must not contain nulls")));
144 errmsg(
"argument must be empty or one-dimensional array")));
231 elog(
ERROR,
"missing TID with block %u, offset %u",
244 if (
i > 0 && blkno == prevblkno)
295 elog(
ERROR,
"TID iter array doesn't match verification array, got (%u,%u) expected (%u,%u)",
301 elog(
ERROR,
"TID lookup array doesn't match verification array, got (%u,%u) expected (%u,%u)",
Datum idx(PG_FUNCTION_ARGS)
#define PG_GETARG_ARRAYTYPE_P_COPY(n)
bool array_contains_nulls(const ArrayType *array)
int ArrayGetNItems(int ndim, const int *dims)
#define Assert(condition)
void dsa_pin_mapping(dsa_area *area)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define PG_RETURN_INT64(x)
#define PG_GETARG_INT64(n)
#define PG_FUNCTION_INFO_V1(funcname)
#define PG_GETARG_BOOL(n)
#define PG_RETURN_BOOL(x)
static void ItemPointerSet(ItemPointerData *pointer, BlockNumber blockNumber, OffsetNumber offNum)
static OffsetNumber ItemPointerGetOffsetNumber(const ItemPointerData *pointer)
static BlockNumber ItemPointerGetBlockNumber(const ItemPointerData *pointer)
int LWLockNewTrancheId(const char *name)
void * repalloc(void *pointer, Size size)
void pfree(void *pointer)
void * palloc0(Size size)
MemoryContext TopMemoryContext
#define FirstOffsetNumber
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
#define qsort(a, b, c, d)
ItemPointerData * insert_tids
ItemPointerData * lookup_tids
ItemPointerData * iter_tids
static void sanity_check_array(ArrayType *ta)
static void check_tidstore_available(void)
static int itemptr_cmp(const void *left, const void *right)
Datum do_set_block_offsets(PG_FUNCTION_ARGS)
Datum test_create(PG_FUNCTION_ARGS)
static TidStore * tidstore
static void purge_from_verification_array(BlockNumber blkno)
Datum check_set_block_offsets(PG_FUNCTION_ARGS)
Datum test_destroy(PG_FUNCTION_ARGS)
Datum test_is_full(PG_FUNCTION_ARGS)
static size_t tidstore_empty_size
dsa_area * TidStoreGetDSA(TidStore *ts)
bool TidStoreIsMember(TidStore *ts, const ItemPointerData *tid)
TidStoreIter * TidStoreBeginIterate(TidStore *ts)
void TidStoreEndIterate(TidStoreIter *iter)
TidStoreIterResult * TidStoreIterateNext(TidStoreIter *iter)
void TidStoreLockShare(TidStore *ts)
TidStore * TidStoreCreateLocal(size_t max_bytes, bool insert_only)
void TidStoreDestroy(TidStore *ts)
void TidStoreUnlock(TidStore *ts)
int TidStoreGetBlockOffsets(TidStoreIterResult *result, OffsetNumber *offsets, int max_offsets)
void TidStoreLockExclusive(TidStore *ts)
void TidStoreSetBlockOffsets(TidStore *ts, BlockNumber blkno, OffsetNumber *offsets, int num_offsets)
size_t TidStoreMemoryUsage(TidStore *ts)
TidStore * TidStoreCreateShared(size_t max_bytes, int tranche_id)