From 5b2147d9fcc1f3d09701c548ebebf55cad0d403d Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Mon, 30 Oct 2023 17:19:24 +0900 Subject: [PATCH] Expand regression tests for pg_stat_reset_shared() This commit adds coverage for the stats reset of recovery_prefetch, and for the case where an invalid value is given in input of the function. Author: Bharath Rupireddy Discussion: https://postgr.es/m/CALj2ACW9Uk7x61oSix9qK0xR4Jhy3cgg6pobQ-Q3GNsUbFrn8A@mail.gmail.com --- src/test/regress/expected/stats.out | 25 +++++++++++++++++++++++++ src/test/regress/sql/stats.sql | 10 ++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/test/regress/expected/stats.out b/src/test/regress/expected/stats.out index 32ad7f3dcc..494cef07d3 100644 --- a/src/test/regress/expected/stats.out +++ b/src/test/regress/expected/stats.out @@ -945,6 +945,21 @@ SELECT stats_reset > :'checkpointer_reset_ts'::timestamptz FROM pg_stat_checkpoi (1 row) SELECT stats_reset AS checkpointer_reset_ts FROM pg_stat_checkpointer \gset +-- Test that reset_shared with recovery_prefetch specified as the stats type works +SELECT stats_reset AS recovery_prefetch_reset_ts FROM pg_stat_recovery_prefetch \gset +SELECT pg_stat_reset_shared('recovery_prefetch'); + pg_stat_reset_shared +---------------------- + +(1 row) + +SELECT stats_reset > :'recovery_prefetch_reset_ts'::timestamptz FROM pg_stat_recovery_prefetch; + ?column? +---------- + t +(1 row) + +SELECT stats_reset AS recovery_prefetch_reset_ts FROM pg_stat_recovery_prefetch \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'); @@ -985,12 +1000,22 @@ SELECT stats_reset = :'checkpointer_reset_ts'::timestamptz FROM pg_stat_checkpoi t (1 row) +SELECT stats_reset = :'recovery_prefetch_reset_ts'::timestamptz FROM pg_stat_recovery_prefetch; + ?column? +---------- + t +(1 row) + SELECT stats_reset = :'wal_reset_ts'::timestamptz FROM pg_stat_wal; ?column? ---------- t (1 row) +-- Test error case for reset_shared with unknown stats type +SELECT pg_stat_reset_shared('unknown'); +ERROR: unrecognized reset target: "unknown" +HINT: Target must be "archiver", "bgwriter", "checkpointer", "io", "recovery_prefetch", or "wal". -- Test that reset works for pg_stat_database -- Since pg_stat_database stats_reset starts out as NULL, reset it once first so we have something to compare it to SELECT pg_stat_reset(); diff --git a/src/test/regress/sql/stats.sql b/src/test/regress/sql/stats.sql index 8bfeed607f..7ae8b8a276 100644 --- a/src/test/regress/sql/stats.sql +++ b/src/test/regress/sql/stats.sql @@ -476,6 +476,12 @@ 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 recovery_prefetch specified as the stats type works +SELECT stats_reset AS recovery_prefetch_reset_ts FROM pg_stat_recovery_prefetch \gset +SELECT pg_stat_reset_shared('recovery_prefetch'); +SELECT stats_reset > :'recovery_prefetch_reset_ts'::timestamptz FROM pg_stat_recovery_prefetch; +SELECT stats_reset AS recovery_prefetch_reset_ts FROM pg_stat_recovery_prefetch \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'); @@ -487,8 +493,12 @@ 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 = :'recovery_prefetch_reset_ts'::timestamptz FROM pg_stat_recovery_prefetch; SELECT stats_reset = :'wal_reset_ts'::timestamptz FROM pg_stat_wal; +-- Test error case for reset_shared with unknown stats type +SELECT pg_stat_reset_shared('unknown'); + -- Test that reset works for pg_stat_database -- Since pg_stat_database stats_reset starts out as NULL, reset it once first so we have something to compare it to -- 2.30.2