75 mres->kind->nreleased++;
92 return psprintf(
"many-test resource from %s",
mres->kind->desc.name);
176 elog(
ERROR,
"could not find a test resource to forget");
189 ntotal += kinds[
i].nremembered - kinds[
i].nforgotten - kinds[
i].nreleased;
220 elog(
ERROR,
"nremember_bl must be >= 0");
222 elog(
ERROR,
"nforget_bl must between 0 and 'nremember_bl'");
224 elog(
ERROR,
"nremember_al must be greater than zero");
226 elog(
ERROR,
"nforget_al must between 0 and 'nremember_al'");
274 elog(
NOTICE,
"releasing resources before locks");
285 elog(
NOTICE,
"releasing resources after locks");
#define Assert(condition)
#define palloc_object(type)
#define PG_FUNCTION_INFO_V1(funcname)
#define PG_GETARG_INT32(n)
static void dlist_init(dlist_head *head)
#define dlist_head_element(type, membername, lhead)
static void dlist_delete(dlist_node *node)
static bool dlist_is_empty(const dlist_head *head)
static void dlist_push_tail(dlist_head *head, dlist_node *node)
static void dlist_node_init(dlist_node *node)
void pfree(void *pointer)
static Datum PointerGetDatum(const void *X)
static Pointer DatumGetPointer(Datum X)
char * psprintf(const char *fmt,...)
ResourceOwner ResourceOwnerCreate(ResourceOwner parent, const char *name)
ResourceOwner CurrentResourceOwner
void ResourceOwnerRelease(ResourceOwner owner, ResourceReleasePhase phase, bool isCommit, bool isTopLevel)
void ResourceOwnerForget(ResourceOwner owner, Datum value, const ResourceOwnerDesc *kind)
void ResourceOwnerDelete(ResourceOwner owner)
void ResourceOwnerRemember(ResourceOwner owner, Datum value, const ResourceOwnerDesc *kind)
void ResourceOwnerEnlarge(ResourceOwner owner)
@ RESOURCE_RELEASE_BEFORE_LOCKS
@ RESOURCE_RELEASE_AFTER_LOCKS
#define RELEASE_PRIO_FIRST
dlist_head current_resources
ManyTestResourceKind * kind
char *(* DebugPrint)(Datum res)
ResourceReleasePhase release_phase
void(* ReleaseResource)(Datum res)
ResourceReleasePriority release_priority
static int GetTotalResourceCount(ManyTestResourceKind *kinds, int nkinds)
static void InitManyTestResourceKind(ManyTestResourceKind *kind, char *name, ResourceReleasePhase phase, uint32 priority)
static void ForgetManyTestResources(ResourceOwner owner, ManyTestResourceKind *kinds, int nkinds, int nresources)
static void ReleaseManyTestResource(Datum res)
static ResourceReleasePhase current_release_phase
static void RememberManyTestResources(ResourceOwner owner, ManyTestResourceKind *kinds, int nkinds, int nresources)
Datum test_resowner_many(PG_FUNCTION_ARGS)
static char * PrintManyTest(Datum res)
static uint32 last_release_priority