From 50deb9ed6d65706595073e0c5982fe594925c53d Mon Sep 17 00:00:00 2001 From: shihao zhong Date: Wed, 11 Mar 2026 14:05:57 +0000 Subject: [PATCH] Add stats_reset column to pg_stat_database_conflicts view This commit adds the stats_reset column to pg_stat_database_conflicts, allowing users to see when the reset was last performed. This brings consistency with pg_stat_database and other statistics views. Includes: - system_views.sql: View definition update - monitoring.sgml: Documentation update - catversion.h: Mandatory catalog version bump - Regression tests: Updated rules.out and added stats.sql test case --- doc/src/sgml/monitoring.sgml | 8 ++++++++ src/backend/catalog/system_views.sql | 3 ++- src/test/regress/expected/rules.out | 3 ++- src/test/regress/expected/stats.out | 14 ++++++++++++++ src/test/regress/sql/stats.sql | 5 +++++ 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index cc014564c97..763f6731dee 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -4036,6 +4036,14 @@ description | Waiting for a newly initialized WAL file to reach durable storage on the primary + + + stats_reset timestamp with time zone + + + Time at which these statistics were last reset + + diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index 339c016e510..3361030d34c 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -1163,7 +1163,8 @@ CREATE VIEW pg_stat_database_conflicts AS pg_stat_get_db_conflict_snapshot(D.oid) AS confl_snapshot, pg_stat_get_db_conflict_bufferpin(D.oid) AS confl_bufferpin, pg_stat_get_db_conflict_startup_deadlock(D.oid) AS confl_deadlock, - pg_stat_get_db_conflict_logicalslot(D.oid) AS confl_active_logicalslot + pg_stat_get_db_conflict_logicalslot(D.oid) AS confl_active_logicalslot, + pg_stat_get_db_stat_reset_time(D.oid) AS stats_reset FROM pg_database D; CREATE VIEW pg_stat_user_functions AS diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index f373ad704b6..71d7262049e 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -1921,7 +1921,8 @@ pg_stat_database_conflicts| SELECT oid AS datid, pg_stat_get_db_conflict_snapshot(oid) AS confl_snapshot, pg_stat_get_db_conflict_bufferpin(oid) AS confl_bufferpin, pg_stat_get_db_conflict_startup_deadlock(oid) AS confl_deadlock, - pg_stat_get_db_conflict_logicalslot(oid) AS confl_active_logicalslot + pg_stat_get_db_conflict_logicalslot(oid) AS confl_active_logicalslot, + pg_stat_get_db_stat_reset_time(oid) AS stats_reset FROM pg_database d; pg_stat_gssapi| SELECT pid, gss_auth AS gss_authenticated, diff --git a/src/test/regress/expected/stats.out b/src/test/regress/expected/stats.out index cd00f35bf7a..0d634c3af42 100644 --- a/src/test/regress/expected/stats.out +++ b/src/test/regress/expected/stats.out @@ -1910,4 +1910,18 @@ SELECT * FROM check_estimated_rows('SELECT * FROM table_fillfactor'); (1 row) DROP TABLE table_fillfactor; +-- Test that the stats_reset column in pg_stat_database_conflicts is correctly maintained +SELECT pg_stat_reset(); + pg_stat_reset +--------------- + +(1 row) + +SELECT stats_reset IS NOT NULL AS has_stats_reset + FROM pg_stat_database_conflicts WHERE datname = current_database(); + has_stats_reset +----------------- + t +(1 row) + -- End of Stats Test diff --git a/src/test/regress/sql/stats.sql b/src/test/regress/sql/stats.sql index 8768e0f27fd..e5fb90cf0c3 100644 --- a/src/test/regress/sql/stats.sql +++ b/src/test/regress/sql/stats.sql @@ -944,4 +944,9 @@ SELECT * FROM check_estimated_rows('SELECT * FROM table_fillfactor'); DROP TABLE table_fillfactor; +-- Test that the stats_reset column in pg_stat_database_conflicts is correctly maintained +SELECT pg_stat_reset(); +SELECT stats_reset IS NOT NULL AS has_stats_reset + FROM pg_stat_database_conflicts WHERE datname = current_database(); + -- End of Stats Test -- 2.53.0.473.g4a7958ca14-goog