Move pgstat_report_tabstat() call so that stats are not reported to the
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 20 Nov 2004 00:48:58 +0000 (00:48 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 20 Nov 2004 00:48:58 +0000 (00:48 +0000)
collector until the transaction commits.  Per recent discussion, this
should avoid confusing autovacuum when an updating transaction runs for
a long time.

src/backend/tcop/postgres.c

index fe6475f83ea68790e40aafd7652c4ff401d66d10..9b3c14399c978e83fbf88f4136b3a1a819115a62 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.437 2004/11/14 19:35:31 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.438 2004/11/20 00:48:58 tgl Exp $
  *
  * NOTES
  *   this is the "main" module of the postgres backend and
@@ -2904,12 +2904,11 @@ PostgresMain(int argc, char *argv[], const char *username)
         * This is also a good time to send collected statistics to the
         * collector, and to update the PS stats display.  We avoid doing
         * those every time through the message loop because it'd slow
-        * down processing of batched messages.
+        * down processing of batched messages, and because we don't want
+        * to report uncommitted updates (that confuses autovacuum).
         */
        if (send_rfq)
        {
-           pgstat_report_tabstat();
-
            if (IsTransactionOrTransactionBlock())
            {
                set_ps_display("idle in transaction");
@@ -2917,6 +2916,8 @@ PostgresMain(int argc, char *argv[], const char *username)
            }
            else
            {
+               pgstat_report_tabstat();
+
                set_ps_display("idle");
                pgstat_report_activity("<IDLE>");
            }