]> granicus.if.org Git - postgresql/commitdiff
Avoid losing track of data for shared tables in pgstats. Report by Michael
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 7 Jun 2007 19:07:11 +0000 (19:07 +0000)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 7 Jun 2007 19:07:11 +0000 (19:07 +0000)
Fuhr, patch from Tom Lane after a messier suggestion by me.

src/backend/postmaster/pgstat.c

index d41d5c54cba4619b3e25d7ce6c8d7466bbb73c33..23dd081ae990b4cf31d97bbce316ecf3d32bac3b 100644 (file)
@@ -13,7 +13,7 @@
  *
  *     Copyright (c) 2001-2005, PostgreSQL Global Development Group
  *
- *     $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.111.2.7 2007/01/11 23:06:16 tgl Exp $
+ *     $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.111.2.8 2007/06/07 19:07:11 alvherre Exp $
  * ----------
  */
 #include "postgres.h"
@@ -919,7 +919,9 @@ pgstat_vacuum_tabstat(void)
 
                CHECK_FOR_INTERRUPTS();
 
-               if (hash_search(htab, (void *) &dbid, HASH_FIND, NULL) == NULL)
+               /* the DB entry for shared tables (with InvalidOid) is never dropped */
+               if (OidIsValid(dbid) &&
+                       hash_search(htab, (void *) &dbid, HASH_FIND, NULL) == NULL)
                        pgstat_drop_database(dbid);
        }