32 bool isCommit,
int nestDepth);
49 if (xact_state != NULL)
71 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;
182 if (not_freed_count > 0)
195 if (xact_state != NULL)
219 if (xact_state != NULL)
242 if (xact_state == NULL || xact_state->
nest_level != nest_level)
250 xact_state->
first = NULL;
277 if (xact_state == NULL)
285 Assert(!isCommit || xact_state->
prev == NULL);
315 int not_freed_count = 0;
320 for (
int i = 0;
i < ndrops;
i++)
328 if (not_freed_count > 0)
363 errmsg(
"resetting existing statistics for kind %s, db=%u, oid=%u",
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)
Assert(fmt[strlen(fmt) - 1] !='\n')
MemoryContext TopTransactionContext
void pfree(void *pointer)
void * MemoryContextAlloc(MemoryContext context, Size size)
void pgstat_reset(PgStat_Kind kind, Oid dboid, Oid objoid)
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, Oid objoid, bool create, bool *created_entry)
bool pgstat_drop_entry(PgStat_Kind kind, Oid dboid, Oid objoid)
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_create_transactional(PgStat_Kind kind, Oid dboid, Oid objoid)
void pgstat_drop_transactional(PgStat_Kind kind, Oid dboid, Oid objoid)
struct PgStat_PendingDroppedStatsItem PgStat_PendingDroppedStatsItem
void PostPrepare_PgStat(void)
int pgstat_get_transactional_drops(bool isCommit, xl_xact_stats_item **items)
void AtEOSubXact_PgStat(bool isCommit, int nestDepth)
PgStat_SubXactStatus * pgstat_get_xact_stack_level(int nest_level)
static void create_drop_transactional_internal(PgStat_Kind kind, Oid dboid, Oid objoid, bool is_create)
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)