31 bool isCommit,
int nestDepth);
48 if (xact_state != NULL)
70 int not_freed_count = 0;
104 if (not_freed_count > 0)
118 if (xact_state != NULL &&
136 bool isCommit,
int nestDepth)
140 int not_freed_count = 0;
181 if (not_freed_count > 0)
194 if (xact_state != NULL)
218 if (xact_state != NULL)
241 if (xact_state == NULL || xact_state->
nest_level != nest_level)
249 xact_state->
first = NULL;
276 if (xact_state == NULL)
284 Assert(!isCommit || xact_state->
prev == NULL);
314 int not_freed_count = 0;
319 for (
int i = 0;
i < ndrops;
i++)
327 if (not_freed_count > 0)
362 errmsg(
"resetting existing statistics for kind %s, db=%u, oid=%u",
#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)
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)