From 94ae50199802c1a28044658106f7d2a0b44ad655 Mon Sep 17 00:00:00 2001
From: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Date: Fri, 3 Oct 2025 09:13:14 +0000
Subject: [PATCH v3 1/2] Add basic coverage for
 pg_stat_reset_single_table_counters() on index

While stats.sql is already doing some tests coverage on index stats (through
retrieving idx_scan and friends in pg_stat_all_tables), the
pg_stat_reset_single_table_counters() function is not tested on indexes.

Adding a basic test coverage and retrieving the index stats from pg_stat_all_indexes
in passing (to add even more coverage).
---
 src/test/regress/expected/stats.out | 23 +++++++++++++++++++++++
 src/test/regress/sql/stats.sql      | 11 +++++++++++
 2 files changed, 34 insertions(+)
  59.0% src/test/regress/expected/
  40.9% src/test/regress/sql/

diff --git a/src/test/regress/expected/stats.out b/src/test/regress/expected/stats.out
index 605f5070376..f190361228a 100644
--- a/src/test/regress/expected/stats.out
+++ b/src/test/regress/expected/stats.out
@@ -850,6 +850,29 @@ FROM pg_stat_all_tables WHERE relid = 'test_last_scan'::regclass;
         2 | t      |        3 | t
 (1 row)
 
+-- also check from pg_stat_all_indexes
+SELECT indexrelid AS idx_relid FROM pg_stat_all_indexes WHERE relid = 'test_last_scan'::regclass \gset
+SELECT idx_scan, :'test_last_idx' < last_idx_scan AS idx_ok
+FROM pg_stat_all_indexes WHERE indexrelid = :idx_relid;
+ idx_scan | idx_ok 
+----------+--------
+        3 | t
+(1 row)
+
+-- check that the stats are reset
+SELECT pg_stat_reset_single_table_counters(:idx_relid);
+ pg_stat_reset_single_table_counters 
+-------------------------------------
+ 
+(1 row)
+
+SELECT idx_scan
+FROM pg_stat_all_indexes WHERE indexrelid = :idx_relid;
+ idx_scan 
+----------
+        0
+(1 row)
+
 -----
 -- Test reset of some stats for shared table
 -----
diff --git a/src/test/regress/sql/stats.sql b/src/test/regress/sql/stats.sql
index 54e72866344..bb7c2999b79 100644
--- a/src/test/regress/sql/stats.sql
+++ b/src/test/regress/sql/stats.sql
@@ -382,6 +382,17 @@ COMMIT;
 SELECT seq_scan, :'test_last_seq' = last_seq_scan AS seq_ok, idx_scan, :'test_last_idx' < last_idx_scan AS idx_ok
 FROM pg_stat_all_tables WHERE relid = 'test_last_scan'::regclass;
 
+-- also check from pg_stat_all_indexes
+SELECT indexrelid AS idx_relid FROM pg_stat_all_indexes WHERE relid = 'test_last_scan'::regclass \gset
+SELECT idx_scan, :'test_last_idx' < last_idx_scan AS idx_ok
+FROM pg_stat_all_indexes WHERE indexrelid = :idx_relid;
+
+-- check that the stats are reset
+SELECT pg_stat_reset_single_table_counters(:idx_relid);
+
+SELECT idx_scan
+FROM pg_stat_all_indexes WHERE indexrelid = :idx_relid;
+
 -----
 -- Test reset of some stats for shared table
 -----
-- 
2.34.1

