Add support for new checkpointer statistics for PostgreSQL.

Introduced logic to check the existence of `pg_stat_checkpointer` and fetch corresponding statistics when available. This ensures compatibility with newer PostgreSQL versions while maintaining backward support using `pg_stat_bgwriter`.
This commit is contained in:
2026-02-12 14:15:14 +01:00
parent 55f5652572
commit 528a720329
2 changed files with 49 additions and 9 deletions

View File

@@ -106,12 +106,31 @@ async def collect_overview(
errors,
"pg_stat_database_perf",
)
bgwriter = await _safe_fetchrow(
checkpointer_view_exists = await _safe_fetchval(
conn,
"SELECT checkpoints_timed, checkpoints_req FROM pg_stat_bgwriter",
"SELECT to_regclass('pg_catalog.pg_stat_checkpointer') IS NOT NULL",
errors,
"pg_stat_bgwriter",
"checkpointer_view_exists",
)
if checkpointer_view_exists:
bgwriter = await _safe_fetchrow(
conn,
"""
SELECT
num_timed AS checkpoints_timed,
num_requested AS checkpoints_req
FROM pg_stat_checkpointer
""",
errors,
"pg_stat_checkpointer",
)
else:
bgwriter = await _safe_fetchrow(
conn,
"SELECT checkpoints_timed, checkpoints_req FROM pg_stat_bgwriter",
errors,
"pg_stat_bgwriter",
)
autovac_workers = await _safe_fetchval(
conn,
"""