From 22d7f244b93285694465511092c1456dbdffd78e Mon Sep 17 00:00:00 2001
From: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Date: Mon, 6 Oct 2025 07:14:24 +0000
Subject: [PATCH v2] Add stats_reset to pg_stat_user_functions

It is possible to call pg_stat_reset_single_function_counters() on a function
but the reset time was missing from pg_stat_user_functions the system view showing
its statistics.

This commit adds the reset time as an attribute of pg_stat_user_functions.

Bump catalog version.
Bump PGSTAT_FILE_FORMAT_ID, as a result of the new field added to
PgStat_StatFuncEntry.
---
 doc/src/sgml/monitoring.sgml                 |   9 +
 src/backend/catalog/system_views.sql         |   3 +-
 src/backend/utils/activity/pgstat.c          |   1 +
 src/backend/utils/activity/pgstat_function.c |   6 +
 src/backend/utils/adt/pgstatfuncs.c          |  18 +
 src/include/catalog/pg_proc.dat              |   4 +
 src/include/pgstat.h                         |   1 +
 src/include/utils/pgstat_internal.h          |   1 +
 src/test/isolation/expected/stats.out        | 693 ++++++++++---------
 src/test/isolation/expected/stats_1.out      | 693 ++++++++++---------
 src/test/isolation/specs/stats.spec          |   9 +-
 src/test/regress/expected/rules.out          |   3 +-
 12 files changed, 820 insertions(+), 621 deletions(-)
  94.3% src/test/isolation/expected/
   4.8% src/

diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 786aa2ac5f6..10f72593fd5 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -4736,6 +4736,15 @@ description | Waiting for a newly initialized WAL file to reach durable storage
        other functions called by it, in milliseconds
       </para></entry>
      </row>
+
+     <row>
+      <entry role="catalog_table_entry"><para role="column_definition">
+        <structfield>stats_reset</structfield> <type>timestamp with time zone</type>
+       </para>
+       <para>
+        Time at which these statistics were last reset
+       </para></entry>
+     </row>
     </tbody>
    </tgroup>
   </table>
diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql
index 884b6a23817..c94f1f05f52 100644
--- a/src/backend/catalog/system_views.sql
+++ b/src/backend/catalog/system_views.sql
@@ -1131,7 +1131,8 @@ CREATE VIEW pg_stat_user_functions AS
             P.proname AS funcname,
             pg_stat_get_function_calls(P.oid) AS calls,
             pg_stat_get_function_total_time(P.oid) AS total_time,
-            pg_stat_get_function_self_time(P.oid) AS self_time
+            pg_stat_get_function_self_time(P.oid) AS self_time,
+            pg_stat_get_function_stat_reset_time(P.oid) AS stats_reset
     FROM pg_proc P LEFT JOIN pg_namespace N ON (N.oid = P.pronamespace)
     WHERE P.prolang != 12  -- fast check to eliminate built-in functions
           AND pg_stat_get_function_calls(P.oid) IS NOT NULL;
diff --git a/src/backend/utils/activity/pgstat.c b/src/backend/utils/activity/pgstat.c
index 48f57e408e1..7ef06150df7 100644
--- a/src/backend/utils/activity/pgstat.c
+++ b/src/backend/utils/activity/pgstat.c
@@ -328,6 +328,7 @@ static const PgStat_KindInfo pgstat_kind_builtin_infos[PGSTAT_KIND_BUILTIN_SIZE]
 		.pending_size = sizeof(PgStat_FunctionCounts),
 
 		.flush_pending_cb = pgstat_function_flush_cb,
+		.reset_timestamp_cb = pgstat_function_reset_timestamp_cb,
 	},
 
 	[PGSTAT_KIND_REPLSLOT] = {
diff --git a/src/backend/utils/activity/pgstat_function.c b/src/backend/utils/activity/pgstat_function.c
index 6214f93d36e..b5db9d15e07 100644
--- a/src/backend/utils/activity/pgstat_function.c
+++ b/src/backend/utils/activity/pgstat_function.c
@@ -214,6 +214,12 @@ pgstat_function_flush_cb(PgStat_EntryRef *entry_ref, bool nowait)
 	return true;
 }
 
+void
+pgstat_function_reset_timestamp_cb(PgStatShared_Common *header, TimestampTz ts)
+{
+	((PgStatShared_Function *) header)->stats.stat_reset_timestamp = ts;
+}
+
 /*
  * find any existing PgStat_FunctionCounts entry for specified function
  *
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index 7e89a8048d5..3802a4cb888 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -203,6 +203,24 @@ PG_STAT_GET_FUNCENTRY_FLOAT8_MS(total_time)
 /* pg_stat_get_function_self_time */
 PG_STAT_GET_FUNCENTRY_FLOAT8_MS(self_time)
 
+Datum
+pg_stat_get_function_stat_reset_time(PG_FUNCTION_ARGS)
+{
+	Oid			funcid = PG_GETARG_OID(0);
+	TimestampTz result;
+	PgStat_StatFuncEntry *funcentry;
+
+	if ((funcentry = pgstat_fetch_stat_funcentry(funcid)) == NULL)
+		result = 0;
+	else
+		result = funcentry->stat_reset_timestamp;
+
+	if (result == 0)
+		PG_RETURN_NULL();
+	else
+		PG_RETURN_TIMESTAMPTZ(result);
+}
+
 Datum
 pg_stat_get_backend_idset(PG_FUNCTION_ARGS)
 {
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 7c20180637f..6bb31892d1d 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -6071,6 +6071,10 @@
   proname => 'pg_stat_get_function_self_time', provolatile => 's',
   proparallel => 'r', prorettype => 'float8', proargtypes => 'oid',
   prosrc => 'pg_stat_get_function_self_time' },
+{ oid => '8745', descr => 'statistics: last reset for a function',
+  proname => 'pg_stat_get_function_stat_reset_time', provolatile => 's',
+  proparallel => 'r', prorettype => 'timestamptz', proargtypes => 'oid',
+  prosrc => 'pg_stat_get_function_stat_reset_time' },
 
 { oid => '3037',
   descr => 'statistics: number of scans done for table/index in current transaction',
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index 8e8adb01176..eab131e4f18 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -384,6 +384,7 @@ typedef struct PgStat_StatFuncEntry
 
 	PgStat_Counter total_time;	/* times in microseconds */
 	PgStat_Counter self_time;
+	TimestampTz stat_reset_timestamp;
 } PgStat_StatFuncEntry;
 
 typedef struct PgStat_StatReplSlotEntry
diff --git a/src/include/utils/pgstat_internal.h b/src/include/utils/pgstat_internal.h
index dc42d8043b5..4d2b8aa6081 100644
--- a/src/include/utils/pgstat_internal.h
+++ b/src/include/utils/pgstat_internal.h
@@ -691,6 +691,7 @@ extern void pgstat_database_reset_timestamp_cb(PgStatShared_Common *header, Time
  */
 
 extern bool pgstat_function_flush_cb(PgStat_EntryRef *entry_ref, bool nowait);
+extern void pgstat_function_reset_timestamp_cb(PgStatShared_Common *header, TimestampTz ts);
 
 
 /*
diff --git a/src/test/isolation/expected/stats.out b/src/test/isolation/expected/stats.out
index 8c7fe60217e..bbd0bc36ecf 100644
--- a/src/test/isolation/expected/stats.out
+++ b/src/test/isolation/expected/stats.out
@@ -12,13 +12,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_func_call: SELECT test_stat_func();
@@ -44,13 +45,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -66,13 +68,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_func_call: SELECT test_stat_func();
@@ -98,13 +101,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 
@@ -121,13 +125,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -135,13 +140,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_func_call: SELECT test_stat_func();
@@ -191,13 +197,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 step s2_func_stats: 
@@ -205,13 +212,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 
@@ -228,13 +236,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -242,13 +251,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_func_call: SELECT test_stat_func();
@@ -286,13 +296,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 step s2_func_stats: 
@@ -300,13 +311,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 
@@ -323,13 +335,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -337,13 +350,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_begin: BEGIN;
@@ -371,13 +385,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s2_func_stats: 
@@ -385,13 +400,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 
@@ -408,13 +424,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -422,13 +439,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_begin: BEGIN;
@@ -462,13 +480,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s1_commit: COMMIT;
@@ -483,13 +502,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -497,13 +517,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -520,13 +541,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -534,13 +556,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_begin: BEGIN;
@@ -574,13 +597,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s1_rollback: ROLLBACK;
@@ -595,13 +619,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 step s2_func_stats: 
@@ -609,13 +634,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 
@@ -652,13 +678,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_commit: COMMIT;
@@ -673,13 +700,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -687,13 +715,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -718,13 +747,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_commit: COMMIT;
@@ -739,13 +769,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -753,13 +784,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -803,13 +835,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -817,13 +850,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -859,13 +893,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s1_func_drop: DROP FUNCTION test_stat_func();
@@ -875,13 +910,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_call_ifexists: SELECT test_stat_func_ifexists();
@@ -902,13 +938,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -916,13 +953,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -958,13 +996,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s1_func_drop: DROP FUNCTION test_stat_func();
@@ -974,13 +1013,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_call_ifexists: SELECT test_stat_func_ifexists();
@@ -1001,13 +1041,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -1015,13 +1056,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -1068,13 +1110,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s2_func_call: SELECT test_stat_func()
@@ -1100,13 +1143,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 step s1_func_stats2: 
@@ -1114,13 +1158,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         2|t               |t              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         2|t               |t              |f              
 (1 row)
 
 step s1_func_stats: 
@@ -1128,13 +1173,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 step s1_func_stats_reset: SELECT pg_stat_reset_single_function_counters('test_stat_func'::regproc);
@@ -1148,13 +1194,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         0|f               |f              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         0|f               |f              |t              
 (1 row)
 
 step s1_func_stats2: 
@@ -1162,13 +1209,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         2|t               |t              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         2|t               |t              |f              
 (1 row)
 
 step s1_func_stats: 
@@ -1176,13 +1224,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         0|f               |f              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         0|f               |f              |t              
 (1 row)
 
 
@@ -1258,13 +1307,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s1_func_stats2: 
@@ -1272,13 +1322,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         1|t               |t              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         1|t               |t              |f              
 (1 row)
 
 step s1_func_stats: 
@@ -1286,13 +1337,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s1_reset: SELECT pg_stat_reset();
@@ -1306,13 +1358,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         0|f               |f              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         0|f               |f              |t              
 (1 row)
 
 step s1_func_stats2: 
@@ -1320,13 +1373,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         0|f               |f              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         0|f               |f              |t              
 (1 row)
 
 step s1_func_stats: 
@@ -1334,13 +1388,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         0|f               |f              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         0|f               |f              |t              
 (1 row)
 
 
@@ -1369,13 +1424,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 
@@ -1404,13 +1460,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 
@@ -1439,13 +1496,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 
@@ -1476,13 +1534,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s2_func_call: SELECT test_stat_func()
@@ -1502,13 +1561,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s1_commit: COMMIT;
@@ -1546,13 +1606,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s2_func_call: SELECT test_stat_func()
@@ -1578,13 +1639,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s1_func_stats2: 
@@ -1592,13 +1654,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         2|t               |t              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         2|t               |t              |f              
 (1 row)
 
 step s1_commit: COMMIT;
@@ -1636,13 +1699,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s2_func_call: SELECT test_stat_func()
@@ -1668,13 +1732,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s1_func_stats2: 
@@ -1682,13 +1747,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         1|t               |t              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         1|t               |t              |f              
 (1 row)
 
 step s1_commit: COMMIT;
@@ -1835,13 +1901,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 step s1_commit_prepared_a: COMMIT PREPARED 'a';
@@ -1850,13 +1917,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -1924,13 +1992,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 step s1_rollback_prepared_a: ROLLBACK PREPARED 'a';
@@ -1939,13 +2008,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 
@@ -2013,13 +2083,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 step s2_commit_prepared_a: COMMIT PREPARED 'a';
@@ -2028,13 +2099,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -2102,13 +2174,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 step s2_rollback_prepared_a: ROLLBACK PREPARED 'a';
@@ -2117,13 +2190,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 
@@ -3606,13 +3680,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_big_notify: SELECT pg_notify('stats_test_use',
@@ -3703,13 +3778,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_clear_snapshot: SELECT pg_stat_clear_snapshot();
@@ -3723,13 +3799,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s1_commit: COMMIT;
diff --git a/src/test/isolation/expected/stats_1.out b/src/test/isolation/expected/stats_1.out
index 6b965bb9553..fb42885a897 100644
--- a/src/test/isolation/expected/stats_1.out
+++ b/src/test/isolation/expected/stats_1.out
@@ -12,13 +12,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_func_call: SELECT test_stat_func();
@@ -44,13 +45,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -66,13 +68,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_func_call: SELECT test_stat_func();
@@ -98,13 +101,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 
@@ -121,13 +125,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -135,13 +140,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_func_call: SELECT test_stat_func();
@@ -191,13 +197,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 step s2_func_stats: 
@@ -205,13 +212,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 
@@ -228,13 +236,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -242,13 +251,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_func_call: SELECT test_stat_func();
@@ -286,13 +296,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 step s2_func_stats: 
@@ -300,13 +311,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 
@@ -323,13 +335,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -337,13 +350,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_begin: BEGIN;
@@ -371,13 +385,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s2_func_stats: 
@@ -385,13 +400,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 
@@ -408,13 +424,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -422,13 +439,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_begin: BEGIN;
@@ -462,13 +480,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s1_commit: COMMIT;
@@ -483,13 +502,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -497,13 +517,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -520,13 +541,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -534,13 +556,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_begin: BEGIN;
@@ -574,13 +597,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s1_rollback: ROLLBACK;
@@ -595,13 +619,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 step s2_func_stats: 
@@ -609,13 +634,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 
@@ -652,13 +678,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_commit: COMMIT;
@@ -673,13 +700,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -687,13 +715,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -718,13 +747,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_commit: COMMIT;
@@ -739,13 +769,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -753,13 +784,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -803,13 +835,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -817,13 +850,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -859,13 +893,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s1_func_drop: DROP FUNCTION test_stat_func();
@@ -875,13 +910,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_call_ifexists: SELECT test_stat_func_ifexists();
@@ -902,13 +938,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -916,13 +953,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -958,13 +996,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s1_func_drop: DROP FUNCTION test_stat_func();
@@ -974,13 +1013,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_call_ifexists: SELECT test_stat_func_ifexists();
@@ -1001,13 +1041,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_func_stats: 
@@ -1015,13 +1056,14 @@ step s2_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 
@@ -1068,13 +1110,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s2_func_call: SELECT test_stat_func()
@@ -1100,13 +1143,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 step s1_func_stats2: 
@@ -1114,13 +1158,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         2|t               |t              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         2|t               |t              |f              
 (1 row)
 
 step s1_func_stats: 
@@ -1128,13 +1173,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         3|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         3|t               |t              |f              
 (1 row)
 
 step s1_func_stats_reset: SELECT pg_stat_reset_single_function_counters('test_stat_func'::regproc);
@@ -1148,13 +1194,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         0|f               |f              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         0|f               |f              |t              
 (1 row)
 
 step s1_func_stats2: 
@@ -1162,13 +1209,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         2|t               |t              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         2|t               |t              |f              
 (1 row)
 
 step s1_func_stats: 
@@ -1176,13 +1224,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         0|f               |f              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         0|f               |f              |t              
 (1 row)
 
 
@@ -1258,13 +1307,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s1_func_stats2: 
@@ -1272,13 +1322,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         1|t               |t              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         1|t               |t              |f              
 (1 row)
 
 step s1_func_stats: 
@@ -1286,13 +1337,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s1_reset: SELECT pg_stat_reset();
@@ -1306,13 +1358,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         0|f               |f              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         0|f               |f              |t              
 (1 row)
 
 step s1_func_stats2: 
@@ -1320,13 +1373,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         0|f               |f              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         0|f               |f              |t              
 (1 row)
 
 step s1_func_stats: 
@@ -1334,13 +1388,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         0|f               |f              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         0|f               |f              |t              
 (1 row)
 
 
@@ -1369,13 +1424,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 
@@ -1404,13 +1460,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 
@@ -1439,13 +1496,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 
@@ -1476,13 +1534,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s2_func_call: SELECT test_stat_func()
@@ -1502,13 +1561,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         2|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         2|t               |t              |f              
 (1 row)
 
 step s1_commit: COMMIT;
@@ -1546,13 +1606,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s2_func_call: SELECT test_stat_func()
@@ -1578,13 +1639,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s1_func_stats2: 
@@ -1592,13 +1654,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         2|t               |t              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         2|t               |t              |f              
 (1 row)
 
 step s1_commit: COMMIT;
@@ -1636,13 +1699,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s2_func_call: SELECT test_stat_func()
@@ -1668,13 +1732,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s1_func_stats2: 
@@ -1682,13 +1747,14 @@ step s1_func_stats2:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 
-name           |pg_stat_get_function_calls|total_above_zero|self_above_zero
----------------+--------------------------+----------------+---------------
-test_stat_func2|                         1|t               |t              
+name           |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+---------------+--------------------------+----------------+---------------+---------------
+test_stat_func2|                         1|t               |t              |f              
 (1 row)
 
 step s1_commit: COMMIT;
@@ -1836,13 +1902,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 step s1_commit_prepared_a: COMMIT PREPARED 'a';
@@ -1852,13 +1919,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 
@@ -1927,13 +1995,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 step s1_rollback_prepared_a: ROLLBACK PREPARED 'a';
@@ -1943,13 +2012,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 
@@ -2018,13 +2088,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 step s2_commit_prepared_a: COMMIT PREPARED 'a';
@@ -2034,13 +2105,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 
@@ -2109,13 +2181,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 step s2_rollback_prepared_a: ROLLBACK PREPARED 'a';
@@ -2125,13 +2198,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         5|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         5|t               |t              |f              
 (1 row)
 
 
@@ -3630,13 +3704,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s2_big_notify: SELECT pg_notify('stats_test_use',
@@ -3727,13 +3802,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                          |                |               
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                          |                |               |f              
 (1 row)
 
 step s1_clear_snapshot: SELECT pg_stat_clear_snapshot();
@@ -3747,13 +3823,14 @@ step s1_func_stats:
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 
-name          |pg_stat_get_function_calls|total_above_zero|self_above_zero
---------------+--------------------------+----------------+---------------
-test_stat_func|                         1|t               |t              
+name          |pg_stat_get_function_calls|total_above_zero|self_above_zero|has_stats_reset
+--------------+--------------------------+----------------+---------------+---------------
+test_stat_func|                         1|t               |t              |f              
 (1 row)
 
 step s1_commit: COMMIT;
diff --git a/src/test/isolation/specs/stats.spec b/src/test/isolation/specs/stats.spec
index e6d29749915..4969499a1aa 100644
--- a/src/test/isolation/specs/stats.spec
+++ b/src/test/isolation/specs/stats.spec
@@ -65,7 +65,8 @@ step s1_func_stats {
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 }
@@ -74,7 +75,8 @@ step s1_func_stats2 {
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func2'
 }
@@ -146,7 +148,8 @@ step s2_func_stats {
         tso.name,
         pg_stat_get_function_calls(tso.oid),
         pg_stat_get_function_total_time(tso.oid) > 0 total_above_zero,
-        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero
+        pg_stat_get_function_self_time(tso.oid) > 0 self_above_zero,
+        pg_stat_get_function_stat_reset_time(tso.oid) IS NOT NULL has_stats_reset
     FROM test_stat_oid AS tso
     WHERE tso.name = 'test_stat_func'
 }
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index 7f1cb3bb4af..8859a5a885f 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -2244,7 +2244,8 @@ pg_stat_user_functions| SELECT p.oid AS funcid,
     p.proname AS funcname,
     pg_stat_get_function_calls(p.oid) AS calls,
     pg_stat_get_function_total_time(p.oid) AS total_time,
-    pg_stat_get_function_self_time(p.oid) AS self_time
+    pg_stat_get_function_self_time(p.oid) AS self_time,
+    pg_stat_get_function_stat_reset_time(p.oid) AS stats_reset
    FROM (pg_proc p
      LEFT JOIN pg_namespace n ON ((n.oid = p.pronamespace)))
   WHERE ((p.prolang <> (12)::oid) AND (pg_stat_get_function_calls(p.oid) IS NOT NULL));
-- 
2.34.1

