From 2d9d7a6bf56801e38ba93e22346a5ef3b9ac73ea Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: Thu, 7 Jun 2007 18:53:17 +0000
Subject: [PATCH] Avoid losing track of data for shared tables in pgstats. 
 Report by Michael Fuhr, patch from Tom Lane after a messier suggestion by me.

---
 src/backend/postmaster/pgstat.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index e23a665cd2b..b419af2ac30 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -13,7 +13,7 @@
  *
  *	Copyright (c) 2001-2007, PostgreSQL Global Development Group
  *
- *	$PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.158 2007/05/27 17:28:35 tgl Exp $
+ *	$PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.159 2007/06/07 18:53:17 alvherre Exp $
  * ----------
  */
 #include "postgres.h"
@@ -813,7 +813,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);
 	}
 
-- 
GitLab