31 bool isCommit,
int nestDepth);
48 if (xact_state != NULL)
70 int not_freed_count = 0;
105 if (not_freed_count > 0)
119 if (xact_state != NULL &&
137 bool isCommit,
int nestDepth)
141 int not_freed_count = 0;
183 if (not_freed_count > 0)
196 if (xact_state != NULL)
220 if (xact_state != NULL)
243 if (xact_state == NULL || xact_state->
nest_level != nest_level)
251 xact_state->
first = NULL;
278 if (xact_state == NULL)
286 Assert(!isCommit || xact_state->
prev == NULL);
316 int not_freed_count = 0;
321 for (
int i = 0;
i < ndrops;
i++)
330 if (not_freed_count > 0)
366 errmsg(
"resetting existing statistics for kind %s, db=%u, oid=%llu",
368 (
unsigned long long) objid));
#define Assert(condition)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define dclist_container(type, membername, ptr)
static void dclist_push_tail(dclist_head *head, dlist_node *node)
static uint32 dclist_count(const dclist_head *head)
static void dclist_delete_from(dclist_head *head, dlist_node *node)
static void dclist_init(dclist_head *head)
#define dclist_foreach_modify(iter, lhead)
#define dclist_foreach(iter, lhead)
void * MemoryContextAlloc(MemoryContext context, Size size)
MemoryContext TopTransactionContext
void pfree(void *pointer)
void pgstat_reset(PgStat_Kind kind, Oid dboid, uint64 objid)
const PgStat_KindInfo * pgstat_get_kind_info(PgStat_Kind kind)
void pgstat_clear_snapshot(void)
void AtEOXact_PgStat_Database(bool isCommit, bool parallel)
void AtPrepare_PgStat_Relations(PgStat_SubXactStatus *xact_state)
void AtEOXact_PgStat_Relations(PgStat_SubXactStatus *xact_state, bool isCommit)
void PostPrepare_PgStat_Relations(PgStat_SubXactStatus *xact_state)
void AtEOSubXact_PgStat_Relations(PgStat_SubXactStatus *xact_state, bool isCommit, int nestDepth)
void pgstat_request_entry_refs_gc(void)
PgStat_EntryRef * pgstat_get_entry_ref(PgStat_Kind kind, Oid dboid, uint64 objid, bool create, bool *created_entry)
bool pgstat_drop_entry(PgStat_Kind kind, Oid dboid, uint64 objid)
static PgStat_SubXactStatus * pgStatXactStack
void AtPrepare_PgStat(void)
void pgstat_execute_transactional_drops(int ndrops, struct xl_xact_stats_item *items, bool is_redo)
void AtEOXact_PgStat(bool isCommit, bool parallel)
static void AtEOSubXact_PgStat_DroppedStats(PgStat_SubXactStatus *xact_state, bool isCommit, int nestDepth)
void pgstat_drop_transactional(PgStat_Kind kind, Oid dboid, uint64 objid)
void pgstat_create_transactional(PgStat_Kind kind, Oid dboid, uint64 objid)
struct PgStat_PendingDroppedStatsItem PgStat_PendingDroppedStatsItem
void PostPrepare_PgStat(void)
PgStat_SubXactStatus * pgstat_get_xact_stack_level(int nest_level)
static void create_drop_transactional_internal(PgStat_Kind kind, Oid dboid, uint64 objid, bool is_create)
int pgstat_get_transactional_drops(bool isCommit, xl_xact_stats_item **items)
void AtEOSubXact_PgStat(bool isCommit, int nestDepth)
static void AtEOXact_PgStat_DroppedStats(PgStat_SubXactStatus *xact_state, bool isCommit)
PgStat_TableXactStatus * first
struct PgStat_SubXactStatus * prev
dclist_head pending_drops
int GetCurrentTransactionNestLevel(void)