Move information about pgstats kinds into its own header pgstat_kind.h
This includes all the definitions for the various PGSTAT_KIND_* values, the range allowed for custom stats kinds and some macros related all that. One use-case behind this split is the possibility to use this information for frontend tools, without having to rely on pgstat.h and a backend footprint. Author: Michael Paquier Reviewed-by: Bertrand Drouvot Discussion: https://postgr.es/m/Z24fyb3ipXKR38oS@paquier.xyz
This commit is contained in:
parent
d2181b3218
commit
d35ea27e51
@ -18,6 +18,7 @@
|
|||||||
#include "replication/conflict.h"
|
#include "replication/conflict.h"
|
||||||
#include "utils/backend_progress.h" /* for backward compatibility */
|
#include "utils/backend_progress.h" /* for backward compatibility */
|
||||||
#include "utils/backend_status.h" /* for backward compatibility */
|
#include "utils/backend_status.h" /* for backward compatibility */
|
||||||
|
#include "utils/pgstat_kind.h"
|
||||||
#include "utils/relcache.h"
|
#include "utils/relcache.h"
|
||||||
#include "utils/wait_event.h" /* for backward compatibility */
|
#include "utils/wait_event.h" /* for backward compatibility */
|
||||||
|
|
||||||
@ -33,62 +34,6 @@
|
|||||||
/* Default directory to store temporary statistics data in */
|
/* Default directory to store temporary statistics data in */
|
||||||
#define PG_STAT_TMP_DIR "pg_stat_tmp"
|
#define PG_STAT_TMP_DIR "pg_stat_tmp"
|
||||||
|
|
||||||
/* The types of statistics entries */
|
|
||||||
#define PgStat_Kind uint32
|
|
||||||
|
|
||||||
/* Range of IDs allowed, for built-in and custom kinds */
|
|
||||||
#define PGSTAT_KIND_MIN 1 /* Minimum ID allowed */
|
|
||||||
#define PGSTAT_KIND_MAX 256 /* Maximum ID allowed */
|
|
||||||
|
|
||||||
/* use 0 for INVALID, to catch zero-initialized data */
|
|
||||||
#define PGSTAT_KIND_INVALID 0
|
|
||||||
|
|
||||||
/* stats for variable-numbered objects */
|
|
||||||
#define PGSTAT_KIND_DATABASE 1 /* database-wide statistics */
|
|
||||||
#define PGSTAT_KIND_RELATION 2 /* per-table statistics */
|
|
||||||
#define PGSTAT_KIND_FUNCTION 3 /* per-function statistics */
|
|
||||||
#define PGSTAT_KIND_REPLSLOT 4 /* per-slot statistics */
|
|
||||||
#define PGSTAT_KIND_SUBSCRIPTION 5 /* per-subscription statistics */
|
|
||||||
#define PGSTAT_KIND_BACKEND 6 /* per-backend statistics */
|
|
||||||
|
|
||||||
/* stats for fixed-numbered objects */
|
|
||||||
#define PGSTAT_KIND_ARCHIVER 7
|
|
||||||
#define PGSTAT_KIND_BGWRITER 8
|
|
||||||
#define PGSTAT_KIND_CHECKPOINTER 9
|
|
||||||
#define PGSTAT_KIND_IO 10
|
|
||||||
#define PGSTAT_KIND_SLRU 11
|
|
||||||
#define PGSTAT_KIND_WAL 12
|
|
||||||
|
|
||||||
#define PGSTAT_KIND_BUILTIN_MIN PGSTAT_KIND_DATABASE
|
|
||||||
#define PGSTAT_KIND_BUILTIN_MAX PGSTAT_KIND_WAL
|
|
||||||
#define PGSTAT_KIND_BUILTIN_SIZE (PGSTAT_KIND_BUILTIN_MAX + 1)
|
|
||||||
|
|
||||||
/* Custom stats kinds */
|
|
||||||
|
|
||||||
/* Range of IDs allowed for custom stats kinds */
|
|
||||||
#define PGSTAT_KIND_CUSTOM_MIN 128
|
|
||||||
#define PGSTAT_KIND_CUSTOM_MAX PGSTAT_KIND_MAX
|
|
||||||
#define PGSTAT_KIND_CUSTOM_SIZE (PGSTAT_KIND_CUSTOM_MAX - PGSTAT_KIND_CUSTOM_MIN + 1)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* PgStat_Kind to use for extensions that require an ID, but are still in
|
|
||||||
* development and have not reserved their own unique kind ID yet. See:
|
|
||||||
* https://wiki.postgresql.org/wiki/CustomCumulativeStats
|
|
||||||
*/
|
|
||||||
#define PGSTAT_KIND_EXPERIMENTAL 128
|
|
||||||
|
|
||||||
static inline bool
|
|
||||||
pgstat_is_kind_builtin(PgStat_Kind kind)
|
|
||||||
{
|
|
||||||
return kind >= PGSTAT_KIND_BUILTIN_MIN && kind <= PGSTAT_KIND_BUILTIN_MAX;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool
|
|
||||||
pgstat_is_kind_custom(PgStat_Kind kind)
|
|
||||||
{
|
|
||||||
return kind >= PGSTAT_KIND_CUSTOM_MIN && kind <= PGSTAT_KIND_CUSTOM_MAX;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Values for track_functions GUC variable --- order is significant! */
|
/* Values for track_functions GUC variable --- order is significant! */
|
||||||
typedef enum TrackFunctionsLevel
|
typedef enum TrackFunctionsLevel
|
||||||
{
|
{
|
||||||
|
72
src/include/utils/pgstat_kind.h
Normal file
72
src/include/utils/pgstat_kind.h
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
/* ----------
|
||||||
|
* pgstat_kind.h
|
||||||
|
*
|
||||||
|
* Definitions related to the statistics kinds for the PostgreSQL
|
||||||
|
* cumulative statistics system. Can be included in backend or
|
||||||
|
* frontend code.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2001-2025, PostgreSQL Global Development Group
|
||||||
|
*
|
||||||
|
* src/include/utils/pgstat_kind.h
|
||||||
|
* ----------
|
||||||
|
*/
|
||||||
|
#ifndef PGSTAT_KIND_H
|
||||||
|
#define PGSTAT_KIND_H
|
||||||
|
|
||||||
|
/* The types of statistics entries */
|
||||||
|
#define PgStat_Kind uint32
|
||||||
|
|
||||||
|
/* Range of IDs allowed, for built-in and custom kinds */
|
||||||
|
#define PGSTAT_KIND_MIN 1 /* Minimum ID allowed */
|
||||||
|
#define PGSTAT_KIND_MAX 256 /* Maximum ID allowed */
|
||||||
|
|
||||||
|
/* use 0 for INVALID, to catch zero-initialized data */
|
||||||
|
#define PGSTAT_KIND_INVALID 0
|
||||||
|
|
||||||
|
/* stats for variable-numbered objects */
|
||||||
|
#define PGSTAT_KIND_DATABASE 1 /* database-wide statistics */
|
||||||
|
#define PGSTAT_KIND_RELATION 2 /* per-table statistics */
|
||||||
|
#define PGSTAT_KIND_FUNCTION 3 /* per-function statistics */
|
||||||
|
#define PGSTAT_KIND_REPLSLOT 4 /* per-slot statistics */
|
||||||
|
#define PGSTAT_KIND_SUBSCRIPTION 5 /* per-subscription statistics */
|
||||||
|
#define PGSTAT_KIND_BACKEND 6 /* per-backend statistics */
|
||||||
|
|
||||||
|
/* stats for fixed-numbered objects */
|
||||||
|
#define PGSTAT_KIND_ARCHIVER 7
|
||||||
|
#define PGSTAT_KIND_BGWRITER 8
|
||||||
|
#define PGSTAT_KIND_CHECKPOINTER 9
|
||||||
|
#define PGSTAT_KIND_IO 10
|
||||||
|
#define PGSTAT_KIND_SLRU 11
|
||||||
|
#define PGSTAT_KIND_WAL 12
|
||||||
|
|
||||||
|
#define PGSTAT_KIND_BUILTIN_MIN PGSTAT_KIND_DATABASE
|
||||||
|
#define PGSTAT_KIND_BUILTIN_MAX PGSTAT_KIND_WAL
|
||||||
|
#define PGSTAT_KIND_BUILTIN_SIZE (PGSTAT_KIND_BUILTIN_MAX + 1)
|
||||||
|
|
||||||
|
/* Custom stats kinds */
|
||||||
|
|
||||||
|
/* Range of IDs allowed for custom stats kinds */
|
||||||
|
#define PGSTAT_KIND_CUSTOM_MIN 128
|
||||||
|
#define PGSTAT_KIND_CUSTOM_MAX PGSTAT_KIND_MAX
|
||||||
|
#define PGSTAT_KIND_CUSTOM_SIZE (PGSTAT_KIND_CUSTOM_MAX - PGSTAT_KIND_CUSTOM_MIN + 1)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PgStat_Kind to use for extensions that require an ID, but are still in
|
||||||
|
* development and have not reserved their own unique kind ID yet. See:
|
||||||
|
* https://wiki.postgresql.org/wiki/CustomCumulativeStats
|
||||||
|
*/
|
||||||
|
#define PGSTAT_KIND_EXPERIMENTAL 128
|
||||||
|
|
||||||
|
static inline bool
|
||||||
|
pgstat_is_kind_builtin(PgStat_Kind kind)
|
||||||
|
{
|
||||||
|
return kind >= PGSTAT_KIND_BUILTIN_MIN && kind <= PGSTAT_KIND_BUILTIN_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool
|
||||||
|
pgstat_is_kind_custom(PgStat_Kind kind)
|
||||||
|
{
|
||||||
|
return kind >= PGSTAT_KIND_CUSTOM_MIN && kind <= PGSTAT_KIND_CUSTOM_MAX;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* PGSTAT_KIND_H */
|
Loading…
x
Reference in New Issue
Block a user