diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index faf7a5ed9d..e068f7e247 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -451,6 +451,15 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser + + pg_stat_checkpointerpg_stat_checkpointer + One row only, showing statistics about the + checkpointer process's activity. See + + pg_stat_checkpointer for details. + + + pg_stat_databasepg_stat_database One row per database, showing database-wide statistics. See @@ -2868,7 +2877,7 @@ description | Waiting for a newly initialized WAL file to reach durable storage The pg_stat_bgwriter view will always have a - single row, containing global data for the cluster. + single row, containing data about the background writer of the cluster. @@ -2886,54 +2895,6 @@ description | Waiting for a newly initialized WAL file to reach durable storage - - - checkpoints_timed bigint - - - Number of scheduled checkpoints that have been performed - - - - - - checkpoints_req bigint - - - Number of requested checkpoints that have been performed - - - - - - checkpoint_write_time double precision - - - Total amount of time that has been spent in the portion of - checkpoint processing where files are written to disk, in milliseconds - - - - - - checkpoint_sync_time double precision - - - Total amount of time that has been spent in the portion of - checkpoint processing where files are synchronized to disk, in - milliseconds - - - - - - buffers_checkpoint bigint - - - Number of buffers written during checkpoints - - - buffers_clean bigint @@ -2976,6 +2937,95 @@ description | Waiting for a newly initialized WAL file to reach durable storage + + <structname>pg_stat_checkpointer</structname> + + + pg_stat_checkpointer + + + + The pg_stat_checkpointer view will always have a + single row, containing data about the checkpointer process of the cluster. + + +
+ <structname>pg_stat_checkpointer</structname> View + + + + + Column Type + + + Description + + + + + + + + num_timed bigint + + + Number of scheduled checkpoints that have been performed + + + + + + num_requested bigint + + + Number of requested checkpoints that have been performed + + + + + + write_time double precision + + + Total amount of time that has been spent in the portion of + checkpoint processing where files are written to disk, in milliseconds + + + + + + sync_time double precision + + + Total amount of time that has been spent in the portion of + checkpoint processing where files are synchronized to disk, in + milliseconds + + + + + + buffers_written bigint + + + Number of buffers written during checkpoints + + + + + + stats_reset timestamp with time zone + + + Time at which these statistics were last reset + + + + +
+ + + <structname>pg_stat_wal</structname> @@ -4669,8 +4719,10 @@ description | Waiting for a newly initialized WAL file to reach durable storage Resets some cluster-wide statistics counters to zero, depending on the argument. The argument can be bgwriter to reset all the counters shown in - the pg_stat_bgwriter - view, archiver to reset all the counters shown in + the pg_stat_bgwriter view, + checkpointer to reset all the counters shown in + the pg_stat_checkpointer view, + archiver to reset all the counters shown in the pg_stat_archiver view, io to reset all the counters shown in the pg_stat_io view, diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 40461923ea..b541be8eec 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -6349,8 +6349,8 @@ LogCheckpointEnd(bool restartpoint) CheckpointStats.ckpt_sync_end_t); /* Accumulate checkpoint timing summary data, in milliseconds. */ - PendingCheckpointerStats.checkpoint_write_time += write_msecs; - PendingCheckpointerStats.checkpoint_sync_time += sync_msecs; + PendingCheckpointerStats.write_time += write_msecs; + PendingCheckpointerStats.sync_time += sync_msecs; /* * All of the published timing statistics are accounted for. Only diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index 886f175fc2..b65f6b5249 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -1111,16 +1111,20 @@ CREATE VIEW pg_stat_archiver AS CREATE VIEW pg_stat_bgwriter AS SELECT - pg_stat_get_bgwriter_timed_checkpoints() AS checkpoints_timed, - pg_stat_get_bgwriter_requested_checkpoints() AS checkpoints_req, - pg_stat_get_checkpoint_write_time() AS checkpoint_write_time, - pg_stat_get_checkpoint_sync_time() AS checkpoint_sync_time, - pg_stat_get_bgwriter_buf_written_checkpoints() AS buffers_checkpoint, pg_stat_get_bgwriter_buf_written_clean() AS buffers_clean, pg_stat_get_bgwriter_maxwritten_clean() AS maxwritten_clean, pg_stat_get_buf_alloc() AS buffers_alloc, pg_stat_get_bgwriter_stat_reset_time() AS stats_reset; +CREATE VIEW pg_stat_checkpointer AS + SELECT + pg_stat_get_checkpointer_num_timed() AS num_timed, + pg_stat_get_checkpointer_num_requested() AS num_requested, + pg_stat_get_checkpointer_write_time() AS write_time, + pg_stat_get_checkpointer_sync_time() AS sync_time, + pg_stat_get_checkpointer_buffers_written() AS buffers_written, + pg_stat_get_checkpointer_stat_reset_time() AS stats_reset; + CREATE VIEW pg_stat_io AS SELECT b.backend_type, diff --git a/src/backend/postmaster/checkpointer.c b/src/backend/postmaster/checkpointer.c index 4fe403c9a8..a3c1aba24e 100644 --- a/src/backend/postmaster/checkpointer.c +++ b/src/backend/postmaster/checkpointer.c @@ -358,7 +358,7 @@ CheckpointerMain(void) if (((volatile CheckpointerShmemStruct *) CheckpointerShmem)->ckpt_flags) { do_checkpoint = true; - PendingCheckpointerStats.requested_checkpoints++; + PendingCheckpointerStats.num_requested++; } /* @@ -372,7 +372,7 @@ CheckpointerMain(void) if (elapsed_secs >= CheckPointTimeout) { if (!do_checkpoint) - PendingCheckpointerStats.timed_checkpoints++; + PendingCheckpointerStats.num_timed++; do_checkpoint = true; flags |= CHECKPOINT_CAUSE_TIME; } @@ -569,7 +569,7 @@ HandleCheckpointerInterrupts(void) * updates the statistics, increment the checkpoint request and flush * out pending statistic. */ - PendingCheckpointerStats.requested_checkpoints++; + PendingCheckpointerStats.num_requested++; ShutdownXLOG(0, 0); pgstat_report_checkpointer(); pgstat_report_wal(true); diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index 21a29f9081..dc504a1ae0 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -2751,7 +2751,7 @@ BufferSync(int flags) if (SyncOneBuffer(buf_id, false, &wb_context) & BUF_WRITTEN) { TRACE_POSTGRESQL_BUFFER_SYNC_WRITTEN(buf_id); - PendingCheckpointerStats.buf_written_checkpoints++; + PendingCheckpointerStats.buffers_written++; num_written++; } } diff --git a/src/backend/utils/activity/pgstat_checkpointer.c b/src/backend/utils/activity/pgstat_checkpointer.c index 03ed5dddda..301a0bc7bd 100644 --- a/src/backend/utils/activity/pgstat_checkpointer.c +++ b/src/backend/utils/activity/pgstat_checkpointer.c @@ -47,11 +47,11 @@ pgstat_report_checkpointer(void) pgstat_begin_changecount_write(&stats_shmem->changecount); #define CHECKPOINTER_ACC(fld) stats_shmem->stats.fld += PendingCheckpointerStats.fld - CHECKPOINTER_ACC(timed_checkpoints); - CHECKPOINTER_ACC(requested_checkpoints); - CHECKPOINTER_ACC(checkpoint_write_time); - CHECKPOINTER_ACC(checkpoint_sync_time); - CHECKPOINTER_ACC(buf_written_checkpoints); + CHECKPOINTER_ACC(num_timed); + CHECKPOINTER_ACC(num_requested); + CHECKPOINTER_ACC(write_time); + CHECKPOINTER_ACC(sync_time); + CHECKPOINTER_ACC(buffers_written); #undef CHECKPOINTER_ACC pgstat_end_changecount_write(&stats_shmem->changecount); @@ -92,6 +92,7 @@ pgstat_checkpointer_reset_all_cb(TimestampTz ts) &stats_shmem->stats, sizeof(stats_shmem->stats), &stats_shmem->changecount); + stats_shmem->stats.stat_reset_timestamp = ts; LWLockRelease(&stats_shmem->lock); } @@ -113,10 +114,10 @@ pgstat_checkpointer_snapshot_cb(void) /* compensate by reset offsets */ #define CHECKPOINTER_COMP(fld) pgStatLocal.snapshot.checkpointer.fld -= reset.fld; - CHECKPOINTER_COMP(timed_checkpoints); - CHECKPOINTER_COMP(requested_checkpoints); - CHECKPOINTER_COMP(checkpoint_write_time); - CHECKPOINTER_COMP(checkpoint_sync_time); - CHECKPOINTER_COMP(buf_written_checkpoints); + CHECKPOINTER_COMP(num_timed); + CHECKPOINTER_COMP(num_requested); + CHECKPOINTER_COMP(write_time); + CHECKPOINTER_COMP(sync_time); + CHECKPOINTER_COMP(buffers_written); #undef CHECKPOINTER_COMP } diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 998c69e241..28ee97968b 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -1182,21 +1182,21 @@ PG_STAT_GET_DBENTRY_FLOAT8_MS(idle_in_transaction_time) PG_STAT_GET_DBENTRY_FLOAT8_MS(session_time) Datum -pg_stat_get_bgwriter_timed_checkpoints(PG_FUNCTION_ARGS) +pg_stat_get_checkpointer_num_timed(PG_FUNCTION_ARGS) { - PG_RETURN_INT64(pgstat_fetch_stat_checkpointer()->timed_checkpoints); + PG_RETURN_INT64(pgstat_fetch_stat_checkpointer()->num_timed); } Datum -pg_stat_get_bgwriter_requested_checkpoints(PG_FUNCTION_ARGS) +pg_stat_get_checkpointer_num_requested(PG_FUNCTION_ARGS) { - PG_RETURN_INT64(pgstat_fetch_stat_checkpointer()->requested_checkpoints); + PG_RETURN_INT64(pgstat_fetch_stat_checkpointer()->num_requested); } Datum -pg_stat_get_bgwriter_buf_written_checkpoints(PG_FUNCTION_ARGS) +pg_stat_get_checkpointer_buffers_written(PG_FUNCTION_ARGS) { - PG_RETURN_INT64(pgstat_fetch_stat_checkpointer()->buf_written_checkpoints); + PG_RETURN_INT64(pgstat_fetch_stat_checkpointer()->buffers_written); } Datum @@ -1212,19 +1212,25 @@ pg_stat_get_bgwriter_maxwritten_clean(PG_FUNCTION_ARGS) } Datum -pg_stat_get_checkpoint_write_time(PG_FUNCTION_ARGS) +pg_stat_get_checkpointer_write_time(PG_FUNCTION_ARGS) { /* time is already in msec, just convert to double for presentation */ PG_RETURN_FLOAT8((double) - pgstat_fetch_stat_checkpointer()->checkpoint_write_time); + pgstat_fetch_stat_checkpointer()->write_time); } Datum -pg_stat_get_checkpoint_sync_time(PG_FUNCTION_ARGS) +pg_stat_get_checkpointer_sync_time(PG_FUNCTION_ARGS) { /* time is already in msec, just convert to double for presentation */ PG_RETURN_FLOAT8((double) - pgstat_fetch_stat_checkpointer()->checkpoint_sync_time); + pgstat_fetch_stat_checkpointer()->sync_time); +} + +Datum +pg_stat_get_checkpointer_stat_reset_time(PG_FUNCTION_ARGS) +{ + PG_RETURN_TIMESTAMPTZ(pgstat_fetch_stat_checkpointer()->stat_reset_timestamp); } Datum @@ -1684,14 +1690,9 @@ pg_stat_reset_shared(PG_FUNCTION_ARGS) if (strcmp(target, "archiver") == 0) pgstat_reset_of_kind(PGSTAT_KIND_ARCHIVER); else if (strcmp(target, "bgwriter") == 0) - { - /* - * Historically checkpointer was part of bgwriter, continue to reset - * both for now. - */ pgstat_reset_of_kind(PGSTAT_KIND_BGWRITER); + else if (strcmp(target, "checkpointer") == 0) pgstat_reset_of_kind(PGSTAT_KIND_CHECKPOINTER); - } else if (strcmp(target, "io") == 0) pgstat_reset_of_kind(PGSTAT_KIND_IO); else if (strcmp(target, "recovery_prefetch") == 0) @@ -1702,7 +1703,7 @@ pg_stat_reset_shared(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("unrecognized reset target: \"%s\"", target), - errhint("Target must be \"archiver\", \"bgwriter\", \"io\", \"recovery_prefetch\", or \"wal\"."))); + errhint("Target must be \"archiver\", \"bgwriter\", \"checkpointer\", \"io\", \"recovery_prefetch\", or \"wal\"."))); PG_RETURN_VOID(); } diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index d75acb3b08..bee21befda 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -57,6 +57,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 202310271 +#define CATALOG_VERSION_NO 202310301 #endif diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index bc41e92677..568aa80d92 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -5700,20 +5700,24 @@ proargnames => '{archived_count,last_archived_wal,last_archived_time,failed_count,last_failed_wal,last_failed_time,stats_reset}', prosrc => 'pg_stat_get_archiver' }, { oid => '2769', - descr => 'statistics: number of timed checkpoints started by the bgwriter', - proname => 'pg_stat_get_bgwriter_timed_checkpoints', provolatile => 's', + descr => 'statistics: number of timed checkpoints started by the checkpointer', + proname => 'pg_stat_get_checkpointer_num_timed', provolatile => 's', proparallel => 'r', prorettype => 'int8', proargtypes => '', - prosrc => 'pg_stat_get_bgwriter_timed_checkpoints' }, + prosrc => 'pg_stat_get_checkpointer_num_timed' }, { oid => '2770', - descr => 'statistics: number of backend requested checkpoints started by the bgwriter', - proname => 'pg_stat_get_bgwriter_requested_checkpoints', provolatile => 's', + descr => 'statistics: number of backend requested checkpoints started by the checkpointer', + proname => 'pg_stat_get_checkpointer_num_requested', provolatile => 's', proparallel => 'r', prorettype => 'int8', proargtypes => '', - prosrc => 'pg_stat_get_bgwriter_requested_checkpoints' }, + prosrc => 'pg_stat_get_checkpointer_num_requested' }, { oid => '2771', - descr => 'statistics: number of buffers written by the bgwriter during checkpoints', - proname => 'pg_stat_get_bgwriter_buf_written_checkpoints', provolatile => 's', + descr => 'statistics: number of buffers written by the checkpointer', + proname => 'pg_stat_get_checkpointer_buffers_written', provolatile => 's', proparallel => 'r', prorettype => 'int8', proargtypes => '', - prosrc => 'pg_stat_get_bgwriter_buf_written_checkpoints' }, + prosrc => 'pg_stat_get_checkpointer_buffers_written' }, +{ oid => '8206', descr => 'statistics: last reset for the checkpointer', + proname => 'pg_stat_get_checkpointer_stat_reset_time', provolatile => 's', + proparallel => 'r', prorettype => 'timestamptz', proargtypes => '', + prosrc => 'pg_stat_get_checkpointer_stat_reset_time' }, { oid => '2772', descr => 'statistics: number of buffers written by the bgwriter for cleaning dirty buffers', proname => 'pg_stat_get_bgwriter_buf_written_clean', provolatile => 's', @@ -5730,14 +5734,14 @@ prosrc => 'pg_stat_get_bgwriter_stat_reset_time' }, { oid => '3160', descr => 'statistics: checkpoint time spent writing buffers to disk, in milliseconds', - proname => 'pg_stat_get_checkpoint_write_time', provolatile => 's', + proname => 'pg_stat_get_checkpointer_write_time', provolatile => 's', proparallel => 'r', prorettype => 'float8', proargtypes => '', - prosrc => 'pg_stat_get_checkpoint_write_time' }, + prosrc => 'pg_stat_get_checkpointer_write_time' }, { oid => '3161', descr => 'statistics: checkpoint time spent synchronizing buffers to disk, in milliseconds', - proname => 'pg_stat_get_checkpoint_sync_time', provolatile => 's', + proname => 'pg_stat_get_checkpointer_sync_time', provolatile => 's', proparallel => 'r', prorettype => 'float8', proargtypes => '', - prosrc => 'pg_stat_get_checkpoint_sync_time' }, + prosrc => 'pg_stat_get_checkpointer_sync_time' }, { oid => '2859', descr => 'statistics: number of buffer allocations', proname => 'pg_stat_get_buf_alloc', provolatile => 's', proparallel => 'r', prorettype => 'int8', proargtypes => '', prosrc => 'pg_stat_get_buf_alloc' }, diff --git a/src/include/pgstat.h b/src/include/pgstat.h index e6fd20f1ce..f95d8db0c4 100644 --- a/src/include/pgstat.h +++ b/src/include/pgstat.h @@ -260,11 +260,12 @@ typedef struct PgStat_BgWriterStats typedef struct PgStat_CheckpointerStats { - PgStat_Counter timed_checkpoints; - PgStat_Counter requested_checkpoints; - PgStat_Counter checkpoint_write_time; /* times in milliseconds */ - PgStat_Counter checkpoint_sync_time; - PgStat_Counter buf_written_checkpoints; + PgStat_Counter num_timed; + PgStat_Counter num_requested; + PgStat_Counter write_time; /* times in milliseconds */ + PgStat_Counter sync_time; + PgStat_Counter buffers_written; + TimestampTz stat_reset_timestamp; } PgStat_CheckpointerStats; diff --git a/src/test/recovery/t/029_stats_restart.pl b/src/test/recovery/t/029_stats_restart.pl index 742bd57e28..f6368ab1d3 100644 --- a/src/test/recovery/t/029_stats_restart.pl +++ b/src/test/recovery/t/029_stats_restart.pl @@ -173,7 +173,7 @@ is($wal_start->{reset}, $wal_restart->{reset}, ## Check that checkpoint stats are reset, WAL stats aren't affected -$node->safe_psql($connect_db, "SELECT pg_stat_reset_shared('bgwriter')"); +$node->safe_psql($connect_db, "SELECT pg_stat_reset_shared('checkpointer')"); $sect = "post ckpt reset"; my $ckpt_reset = checkpoint_stats(); @@ -323,9 +323,9 @@ sub checkpoint_stats my %results; $results{count} = $node->safe_psql($connect_db, - "SELECT checkpoints_timed + checkpoints_req FROM pg_stat_bgwriter"); + "SELECT num_timed + num_requested FROM pg_stat_checkpointer"); $results{reset} = $node->safe_psql($connect_db, - "SELECT stats_reset FROM pg_stat_bgwriter"); + "SELECT stats_reset FROM pg_stat_checkpointer"); return \%results; } diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index 798d1610f2..1442c43d9c 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -1816,15 +1816,16 @@ pg_stat_archiver| SELECT archived_count, last_failed_time, stats_reset FROM pg_stat_get_archiver() s(archived_count, last_archived_wal, last_archived_time, failed_count, last_failed_wal, last_failed_time, stats_reset); -pg_stat_bgwriter| SELECT pg_stat_get_bgwriter_timed_checkpoints() AS checkpoints_timed, - pg_stat_get_bgwriter_requested_checkpoints() AS checkpoints_req, - pg_stat_get_checkpoint_write_time() AS checkpoint_write_time, - pg_stat_get_checkpoint_sync_time() AS checkpoint_sync_time, - pg_stat_get_bgwriter_buf_written_checkpoints() AS buffers_checkpoint, - pg_stat_get_bgwriter_buf_written_clean() AS buffers_clean, +pg_stat_bgwriter| SELECT pg_stat_get_bgwriter_buf_written_clean() AS buffers_clean, pg_stat_get_bgwriter_maxwritten_clean() AS maxwritten_clean, pg_stat_get_buf_alloc() AS buffers_alloc, pg_stat_get_bgwriter_stat_reset_time() AS stats_reset; +pg_stat_checkpointer| SELECT pg_stat_get_checkpointer_num_timed() AS num_timed, + pg_stat_get_checkpointer_num_requested() AS num_requested, + pg_stat_get_checkpointer_write_time() AS write_time, + pg_stat_get_checkpointer_sync_time() AS sync_time, + pg_stat_get_checkpointer_buffers_written() AS buffers_written, + pg_stat_get_checkpointer_stat_reset_time() AS stats_reset; pg_stat_database| SELECT oid AS datid, datname, CASE diff --git a/src/test/regress/expected/stats.out b/src/test/regress/expected/stats.out index 94187e59cf..32ad7f3dcc 100644 --- a/src/test/regress/expected/stats.out +++ b/src/test/regress/expected/stats.out @@ -828,8 +828,8 @@ SELECT sessions > :db_stat_sessions FROM pg_stat_database WHERE datname = (SELEC t (1 row) --- Test pg_stat_bgwriter checkpointer-related stats, together with pg_stat_wal -SELECT checkpoints_req AS rqst_ckpts_before FROM pg_stat_bgwriter \gset +-- Test pg_stat_checkpointer checkpointer-related stats, together with pg_stat_wal +SELECT num_requested AS rqst_ckpts_before FROM pg_stat_checkpointer \gset -- Test pg_stat_wal (and make a temp table so our temp schema exists) SELECT wal_bytes AS wal_bytes_before FROM pg_stat_wal \gset CREATE TEMP TABLE test_stats_temp AS SELECT 17; @@ -839,7 +839,7 @@ DROP TABLE test_stats_temp; -- results of the first. CHECKPOINT; CHECKPOINT; -SELECT checkpoints_req > :rqst_ckpts_before FROM pg_stat_bgwriter; +SELECT num_requested > :rqst_ckpts_before FROM pg_stat_checkpointer; ?column? ---------- t @@ -930,6 +930,21 @@ SELECT stats_reset > :'bgwriter_reset_ts'::timestamptz FROM pg_stat_bgwriter; (1 row) SELECT stats_reset AS bgwriter_reset_ts FROM pg_stat_bgwriter \gset +-- Test that reset_shared with checkpointer specified as the stats type works +SELECT stats_reset AS checkpointer_reset_ts FROM pg_stat_checkpointer \gset +SELECT pg_stat_reset_shared('checkpointer'); + pg_stat_reset_shared +---------------------- + +(1 row) + +SELECT stats_reset > :'checkpointer_reset_ts'::timestamptz FROM pg_stat_checkpointer; + ?column? +---------- + t +(1 row) + +SELECT stats_reset AS checkpointer_reset_ts FROM pg_stat_checkpointer \gset -- Test that reset_shared with wal specified as the stats type works SELECT stats_reset AS wal_reset_ts FROM pg_stat_wal \gset SELECT pg_stat_reset_shared('wal'); @@ -964,6 +979,12 @@ SELECT stats_reset = :'bgwriter_reset_ts'::timestamptz FROM pg_stat_bgwriter; t (1 row) +SELECT stats_reset = :'checkpointer_reset_ts'::timestamptz FROM pg_stat_checkpointer; + ?column? +---------- + t +(1 row) + SELECT stats_reset = :'wal_reset_ts'::timestamptz FROM pg_stat_wal; ?column? ---------- diff --git a/src/test/regress/sql/stats.sql b/src/test/regress/sql/stats.sql index 1e21e55c6d..8bfeed607f 100644 --- a/src/test/regress/sql/stats.sql +++ b/src/test/regress/sql/stats.sql @@ -417,8 +417,8 @@ SELECT sessions AS db_stat_sessions FROM pg_stat_database WHERE datname = (SELEC SELECT pg_stat_force_next_flush(); SELECT sessions > :db_stat_sessions FROM pg_stat_database WHERE datname = (SELECT current_database()); --- Test pg_stat_bgwriter checkpointer-related stats, together with pg_stat_wal -SELECT checkpoints_req AS rqst_ckpts_before FROM pg_stat_bgwriter \gset +-- Test pg_stat_checkpointer checkpointer-related stats, together with pg_stat_wal +SELECT num_requested AS rqst_ckpts_before FROM pg_stat_checkpointer \gset -- Test pg_stat_wal (and make a temp table so our temp schema exists) SELECT wal_bytes AS wal_bytes_before FROM pg_stat_wal \gset @@ -432,7 +432,7 @@ DROP TABLE test_stats_temp; CHECKPOINT; CHECKPOINT; -SELECT checkpoints_req > :rqst_ckpts_before FROM pg_stat_bgwriter; +SELECT num_requested > :rqst_ckpts_before FROM pg_stat_checkpointer; SELECT wal_bytes > :wal_bytes_before FROM pg_stat_wal; -- Test pg_stat_get_backend_idset() and some allied functions. @@ -470,6 +470,12 @@ SELECT pg_stat_reset_shared('bgwriter'); SELECT stats_reset > :'bgwriter_reset_ts'::timestamptz FROM pg_stat_bgwriter; SELECT stats_reset AS bgwriter_reset_ts FROM pg_stat_bgwriter \gset +-- Test that reset_shared with checkpointer specified as the stats type works +SELECT stats_reset AS checkpointer_reset_ts FROM pg_stat_checkpointer \gset +SELECT pg_stat_reset_shared('checkpointer'); +SELECT stats_reset > :'checkpointer_reset_ts'::timestamptz FROM pg_stat_checkpointer; +SELECT stats_reset AS checkpointer_reset_ts FROM pg_stat_checkpointer \gset + -- Test that reset_shared with wal specified as the stats type works SELECT stats_reset AS wal_reset_ts FROM pg_stat_wal \gset SELECT pg_stat_reset_shared('wal'); @@ -480,6 +486,7 @@ SELECT stats_reset AS wal_reset_ts FROM pg_stat_wal \gset SELECT pg_stat_reset_shared(NULL); SELECT stats_reset = :'archiver_reset_ts'::timestamptz FROM pg_stat_archiver; SELECT stats_reset = :'bgwriter_reset_ts'::timestamptz FROM pg_stat_bgwriter; +SELECT stats_reset = :'checkpointer_reset_ts'::timestamptz FROM pg_stat_checkpointer; SELECT stats_reset = :'wal_reset_ts'::timestamptz FROM pg_stat_wal; -- Test that reset works for pg_stat_database