aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2013-02-07 14:44:15 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2013-02-07 14:44:15 -0500
commitd6f9b2cac36da23373946ff382db0e6217c813a1 (patch)
tree37b675007d8dd240a3f4692a2d11a6b344c06048 /src
parent69c026512f1141a92dca118768d858e59d76a994 (diff)
downloadpostgresql-d6f9b2cac36da23373946ff382db0e6217c813a1.tar.gz
postgresql-d6f9b2cac36da23373946ff382db0e6217c813a1.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/backend/postmaster/pgstat.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 1d80c311d87..77e195e554d 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -682,8 +682,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;
/*