1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-24 14:22:24 +03:00

Adding new PgStat_WalCounters structure in pgstat.h

This new structure contains the counters and the data related to the WAL
activity statistics gathered from WalUsage, separated into its own
structure so as it can be shared across more than one Stats structure in
pg_stat.h.

This refactoring will be used by an upcoming patch introducing
backend-level WAL statistics.

Bump PGSTAT_FILE_FORMAT_ID.

Author: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Discussion: https://postgr.es/m/Z3zqc4o09dM/Ezyz@ip-10-97-1-34.eu-west-3.compute.internal
This commit is contained in:
Michael Paquier
2025-02-26 16:48:54 +09:00
parent d7cbeaf261
commit 0e42d31b0b
4 changed files with 27 additions and 7 deletions

View File

@ -1643,6 +1643,7 @@ pg_stat_get_wal(PG_FUNCTION_ARGS)
bool nulls[PG_STAT_GET_WAL_COLS] = {0};
char buf[256];
PgStat_WalStats *wal_stats;
PgStat_WalCounters wal_counters;
/* Initialise attributes information in the tuple descriptor */
tupdesc = CreateTemplateTupleDesc(PG_STAT_GET_WAL_COLS);
@ -1661,19 +1662,20 @@ pg_stat_get_wal(PG_FUNCTION_ARGS)
/* Get statistics about WAL activity */
wal_stats = pgstat_fetch_stat_wal();
wal_counters = wal_stats->wal_counters;
/* Fill values and NULLs */
values[0] = Int64GetDatum(wal_stats->wal_records);
values[1] = Int64GetDatum(wal_stats->wal_fpi);
values[0] = Int64GetDatum(wal_counters.wal_records);
values[1] = Int64GetDatum(wal_counters.wal_fpi);
/* Convert to numeric. */
snprintf(buf, sizeof buf, UINT64_FORMAT, wal_stats->wal_bytes);
snprintf(buf, sizeof buf, UINT64_FORMAT, wal_counters.wal_bytes);
values[2] = DirectFunctionCall3(numeric_in,
CStringGetDatum(buf),
ObjectIdGetDatum(0),
Int32GetDatum(-1));
values[3] = Int64GetDatum(wal_stats->wal_buffers_full);
values[3] = Int64GetDatum(wal_counters.wal_buffers_full);
values[4] = TimestampTzGetDatum(wal_stats->stat_reset_timestamp);