From 19c115cb9aa6b4348849402827be45086ebc8a43 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 7 Feb 2013 14:44:24 -0500 Subject: [PATCH] Fix possible failure to send final transaction counts to stats collector. Normally, we suppress sending a tabstats message to the collector unless there were some actual table stats to send. However, during backend exit we should force out the message if there are any transaction commit/abort counts to send, else the session's last few commit/abort counts will never get reported at all. We had logic for this, but the short-circuit test at the top of pgstat_report_stat() ignored the "force" flag, with the consequence that session-ending transactions that touched no database-local tables would not get counted. Seems to be an oversight in my commit 641912b4d17fd214a5e5bae4e7bb9ddbc28b144b, which added the "force" flag. That was back in 8.3, so back-patch to all supported versions. --- src/backend/postmaster/pgstat.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index 19b1f18316..cf9492ed3f 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -675,8 +675,8 @@ pgstat_report_stat(bool force) int i; /* Don't expend a clock check if nothing to do */ - if ((pgStatTabList == NULL || pgStatTabList->tsa_used == 0) - && !have_function_stats) + if ((pgStatTabList == NULL || pgStatTabList->tsa_used == 0) && + !have_function_stats && !force) return; /* -- 2.40.0