]> granicus.if.org Git - postgresql/commitdiff
Clamp last_anl_tuples to n_live_tuples, in case we vacuum a table without
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 27 Jun 2006 03:45:16 +0000 (03:45 +0000)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 27 Jun 2006 03:45:16 +0000 (03:45 +0000)
analyzing, so that future analyze threshold calculations don't get confused.
Also, make sure we correctly track the decrease of live tuples cause by
deletes.

Per report from Dylan Hansen, patches by Tom Lane and me.

src/backend/postmaster/pgstat.c

index a340a91fed288fd82aa906d50805f223d353ca7c..f300b142dcc16660af7b4d1fb7f311cb33031b3e 100644 (file)
@@ -13,7 +13,7 @@
  *
  *     Copyright (c) 2001-2006, PostgreSQL Global Development Group
  *
- *     $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.130 2006/06/20 22:52:00 tgl Exp $
+ *     $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.131 2006/06/27 03:45:16 alvherre Exp $
  * ----------
  */
 #include "postgres.h"
@@ -2635,7 +2635,8 @@ pgstat_recv_tabstat(PgStat_MsgTabstat *msg, int len)
                        tabentry->tuples_updated += tabmsg[i].t_tuples_updated;
                        tabentry->tuples_deleted += tabmsg[i].t_tuples_deleted;
 
-                       tabentry->n_live_tuples += tabmsg[i].t_tuples_inserted;
+                       tabentry->n_live_tuples += tabmsg[i].t_tuples_inserted -
+                               tabmsg[i].t_tuples_deleted;
                        tabentry->n_dead_tuples += tabmsg[i].t_tuples_updated +
                                tabmsg[i].t_tuples_deleted;
 
@@ -2830,6 +2831,12 @@ pgstat_recv_vacuum(PgStat_MsgVacuum *msg, int len)
                else
                        tabentry->analyze_timestamp = msg->m_vacuumtime;
        }
+       else
+       {
+               /* last_anl_tuples must never exceed n_live_tuples */
+               tabentry->last_anl_tuples = Min(tabentry->last_anl_tuples,
+                                                                               msg->m_tuples);
+       }
 }
 
 /* ----------