Skip to content

Commit 1618b87

Browse files
committed
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 641912b, which added the "force" flag. That was back in 8.3, so back-patch to all supported versions.
1 parent 3da04a0 commit 1618b87

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/backend/postmaster/pgstat.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -680,8 +680,8 @@ pgstat_report_stat(bool force)
680680
int i;
681681

682682
/* Don't expend a clock check if nothing to do */
683-
if ((pgStatTabList == NULL || pgStatTabList->tsa_used == 0)
684-
&& !have_function_stats)
683+
if ((pgStatTabList == NULL || pgStatTabList->tsa_used == 0) &&
684+
!have_function_stats && !force)
685685
return;
686686

687687
/*

0 commit comments

Comments
 (0)