mirror of https://github.com/postgres/postgres
Add helper routines to retrieve data for custom fixed-numbered pgstats
This is useful for extensions to get snapshot and shmem data for custom cumulative statistics when these have a fixed number of objects, so as these do not need to know about the snapshot internals, aka pgStatLocal. An upcoming commit introducing an example template for custom cumulative stats with fixed-numbered objects will make use of these. I have noticed that this is useful for extension developers while hacking my own example, actually. Author: Michael Paquier Reviewed-by: Dmitry Dolgov, Bertrand Drouvot Discussion: https://postgr.es/m/Zmqm9j5EO0I4W8dx@paquier.xyz
This commit is contained in:
parent
8036d73ae3
commit
2eff9e678d
|
@ -525,6 +525,8 @@ static inline int pgstat_cmp_hash_key(const void *a, const void *b, size_t size,
|
|||
static inline uint32 pgstat_hash_hash_key(const void *d, size_t size, void *arg);
|
||||
static inline size_t pgstat_get_entry_len(PgStat_Kind kind);
|
||||
static inline void *pgstat_get_entry_data(PgStat_Kind kind, PgStatShared_Common *entry);
|
||||
static inline void *pgstat_get_custom_shmem_data(PgStat_Kind kind);
|
||||
static inline void *pgstat_get_custom_snapshot_data(PgStat_Kind kind);
|
||||
|
||||
|
||||
/*
|
||||
|
@ -842,4 +844,34 @@ pgstat_get_entry_data(PgStat_Kind kind, PgStatShared_Common *entry)
|
|||
return ((char *) (entry)) + off;
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns a pointer to the shared memory area of custom stats for
|
||||
* fixed-numbered statistics.
|
||||
*/
|
||||
static inline void *
|
||||
pgstat_get_custom_shmem_data(PgStat_Kind kind)
|
||||
{
|
||||
int idx = kind - PGSTAT_KIND_CUSTOM_MIN;
|
||||
|
||||
Assert(pgstat_is_kind_custom(kind));
|
||||
Assert(pgstat_get_kind_info(kind)->fixed_amount);
|
||||
|
||||
return pgStatLocal.shmem->custom_data[idx];
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns a pointer to the portion of custom data for fixed-numbered
|
||||
* statistics in the current snapshot.
|
||||
*/
|
||||
static inline void *
|
||||
pgstat_get_custom_snapshot_data(PgStat_Kind kind)
|
||||
{
|
||||
int idx = kind - PGSTAT_KIND_CUSTOM_MIN;
|
||||
|
||||
Assert(pgstat_is_kind_custom(kind));
|
||||
Assert(pgstat_get_kind_info(kind)->fixed_amount);
|
||||
|
||||
return pgStatLocal.snapshot.custom_data[idx];
|
||||
}
|
||||
|
||||
#endif /* PGSTAT_INTERNAL_H */
|
||||
|
|
Loading…
Reference in New Issue