v2-0005-Make-pg_stat_reset_single_function_counters-retur.patch
application/octet-stream
Filename: v2-0005-Make-pg_stat_reset_single_function_counters-retur.patch
Type: application/octet-stream
Part: 4
From 380c722ed5cbb8261f103a7f9a9c457711472e49 Mon Sep 17 00:00:00 2001
From: Shinya Kato <shinya11.kato@gmail.com>
Date: Fri, 2 May 2025 16:42:00 +0900
Subject: [PATCH v2 5/9] Make pg_stat_reset_single_function_counters() return
the reset time
---
doc/src/sgml/monitoring.sgml | 4 ++--
src/backend/utils/adt/pgstatfuncs.c | 5 +++--
src/include/catalog/pg_proc.dat | 2 +-
src/test/isolation/expected/stats.out | 16 ++++++++--------
src/test/isolation/expected/stats_1.out | 16 ++++++++--------
src/test/isolation/specs/stats.spec | 4 ++--
6 files changed, 24 insertions(+), 23 deletions(-)
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index f48aefd054c..2aeb835a7ab 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -5133,11 +5133,11 @@ description | Waiting for a newly initialized WAL file to reach durable storage
<primary>pg_stat_reset_single_function_counters</primary>
</indexterm>
<function>pg_stat_reset_single_function_counters</function> ( <type>oid</type> )
- <returnvalue>void</returnvalue>
+ <returnvalue>timestamp with time zone</returnvalue>
</para>
<para>
Resets statistics for a single function in the current database to
- zero.
+ zero, and returns the time of the reset.
</para>
<para>
This function is restricted to superusers by default, but other users
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 8350233dcaf..f987d91d040 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -1933,10 +1933,11 @@ Datum
pg_stat_reset_single_function_counters(PG_FUNCTION_ARGS)
{
Oid funcoid = PG_GETARG_OID(0);
+ TimestampTz ts;
- pgstat_reset(PGSTAT_KIND_FUNCTION, MyDatabaseId, funcoid);
+ ts = pgstat_reset(PGSTAT_KIND_FUNCTION, MyDatabaseId, funcoid);
- PG_RETURN_VOID();
+ PG_RETURN_TIMESTAMPTZ(ts);
}
/*
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index f4fe2626ef3..c08ebb72b25 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -6166,7 +6166,7 @@
{ oid => '3777',
descr => 'statistics: reset collected statistics for a single function in the current database',
proname => 'pg_stat_reset_single_function_counters', provolatile => 'v',
- prorettype => 'void', proargtypes => 'oid',
+ prorettype => 'timestamptz', proargtypes => 'oid',
prosrc => 'pg_stat_reset_single_function_counters' },
{ oid => '6387', descr => 'statistics: reset statistics for a single backend',
proname => 'pg_stat_reset_backend_stats', provolatile => 'v',
diff --git a/src/test/isolation/expected/stats.out b/src/test/isolation/expected/stats.out
index be9dc186fef..132f8e55fc3 100644
--- a/src/test/isolation/expected/stats.out
+++ b/src/test/isolation/expected/stats.out
@@ -1137,10 +1137,10 @@ name |pg_stat_get_function_calls|total_above_zero|self_above_zero
test_stat_func| 3|t |t
(1 row)
-step s1_func_stats_reset: SELECT pg_stat_reset_single_function_counters('test_stat_func'::regproc);
-pg_stat_reset_single_function_counters
---------------------------------------
-
+step s1_func_stats_reset: SELECT pg_stat_reset_single_function_counters('test_stat_func'::regproc) IS NOT NULL AS t;
+t
+-
+t
(1 row)
step s1_func_stats:
@@ -1200,10 +1200,10 @@ pg_stat_get_function_calls
(1 row)
-step s1_func_stats_reset_nonexistent: SELECT pg_stat_reset_single_function_counters(12000);
-pg_stat_reset_single_function_counters
---------------------------------------
-
+step s1_func_stats_reset_nonexistent: SELECT pg_stat_reset_single_function_counters(12000) IS NOT NULL AS t;
+t
+-
+t
(1 row)
step s1_func_stats_nonexistent:
diff --git a/src/test/isolation/expected/stats_1.out b/src/test/isolation/expected/stats_1.out
index 3017c6f4619..2b16808fbb5 100644
--- a/src/test/isolation/expected/stats_1.out
+++ b/src/test/isolation/expected/stats_1.out
@@ -1137,10 +1137,10 @@ name |pg_stat_get_function_calls|total_above_zero|self_above_zero
test_stat_func| 3|t |t
(1 row)
-step s1_func_stats_reset: SELECT pg_stat_reset_single_function_counters('test_stat_func'::regproc);
-pg_stat_reset_single_function_counters
---------------------------------------
-
+step s1_func_stats_reset: SELECT pg_stat_reset_single_function_counters('test_stat_func'::regproc) IS NOT NULL AS t;
+t
+-
+t
(1 row)
step s1_func_stats:
@@ -1200,10 +1200,10 @@ pg_stat_get_function_calls
(1 row)
-step s1_func_stats_reset_nonexistent: SELECT pg_stat_reset_single_function_counters(12000);
-pg_stat_reset_single_function_counters
---------------------------------------
-
+step s1_func_stats_reset_nonexistent: SELECT pg_stat_reset_single_function_counters(12000) IS NOT NULL AS t;
+t
+-
+t
(1 row)
step s1_func_stats_nonexistent:
diff --git a/src/test/isolation/specs/stats.spec b/src/test/isolation/specs/stats.spec
index 22ef6d3206b..3893d3983f0 100644
--- a/src/test/isolation/specs/stats.spec
+++ b/src/test/isolation/specs/stats.spec
@@ -54,8 +54,8 @@ step s1_track_funcs_all { SET track_functions = 'all'; }
step s1_track_funcs_none { SET track_functions = 'none'; }
step s1_func_call { SELECT test_stat_func(); }
step s1_func_drop { DROP FUNCTION test_stat_func(); }
-step s1_func_stats_reset { SELECT pg_stat_reset_single_function_counters('test_stat_func'::regproc); }
-step s1_func_stats_reset_nonexistent { SELECT pg_stat_reset_single_function_counters(12000); }
+step s1_func_stats_reset { SELECT pg_stat_reset_single_function_counters('test_stat_func'::regproc) IS NOT NULL AS t; }
+step s1_func_stats_reset_nonexistent { SELECT pg_stat_reset_single_function_counters(12000) IS NOT NULL AS t; }
step s1_reset { SELECT pg_stat_reset() IS NOT NULL AS t; }
step s1_func_stats {
SELECT
--
2.47.3