diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 5b9989d4814f921c96e6bc756b92d60708525662..4097787ec69721e2619dea22a46ee1c87f69d56e 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.160 2007/06/28 00:02:38 tgl Exp $
+ *	$PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.161 2007/07/08 22:23:16 tgl Exp $
  * ----------
  */
 #include "postgres.h"
@@ -964,8 +964,12 @@ pgstat_drop_database(Oid databaseid)
  *	Tell the collector that we just dropped a relation.
  *	(If the message gets lost, we will still clean the dead entry eventually
  *	via future invocations of pgstat_vacuum_tabstat().)
+ *
+ *	Currently not used for lack of any good place to call it; we rely
+ *	entirely on pgstat_vacuum_tabstat() to clean out stats for dead rels.
  * ----------
  */
+#ifdef NOT_USED
 void
 pgstat_drop_relation(Oid relid)
 {
@@ -984,6 +988,7 @@ pgstat_drop_relation(Oid relid)
 	msg.m_databaseid = MyDatabaseId;
 	pgstat_send(&msg, len);
 }
+#endif /* NOT_USED */
 
 
 /* ----------
diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c
index 3c351161888fe90825c708857b8b5b3a4a0aaf8c..240329ae66d409b4e1e8ba8a8b75733ecf59d7ac 100644
--- a/src/backend/storage/smgr/smgr.c
+++ b/src/backend/storage/smgr/smgr.c
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/storage/smgr/smgr.c,v 1.103 2007/01/05 22:19:39 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/storage/smgr/smgr.c,v 1.104 2007/07/08 22:23:16 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -20,11 +20,11 @@
 #include "access/xact.h"
 #include "access/xlogutils.h"
 #include "commands/tablespace.h"
-#include "pgstat.h"
 #include "storage/bufmgr.h"
 #include "storage/freespace.h"
 #include "storage/ipc.h"
 #include "storage/smgr.h"
+#include "utils/hsearch.h"
 #include "utils/memutils.h"
 
 
@@ -452,13 +452,11 @@ smgr_internal_unlink(RelFileNode rnode, int which, bool isTemp, bool isRedo)
 	FreeSpaceMapForgetRel(&rnode);
 
 	/*
-	 * Tell the stats collector to forget it immediately, too.	Skip this in
-	 * recovery mode, since the stats collector likely isn't running (and if
-	 * it is, pgstat.c will get confused because we aren't a real backend
-	 * process).
+	 * It'd be nice to tell the stats collector to forget it immediately, too.
+	 * But we can't because we don't know the OID (and in cases involving
+	 * relfilenode swaps, it's not always clear which table OID to forget,
+	 * anyway).
 	 */
-	if (!InRecovery)
-		pgstat_drop_relation(rnode.relNode);
 
 	/*
 	 * And delete the physical files.
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index acdd039b3e4ae49b0060d8a378065c4fd0690e76..960daac50007ff3101468255c861afc8a78ea6c9 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -5,7 +5,7 @@
  *
  *	Copyright (c) 2001-2007, PostgreSQL Global Development Group
  *
- *	$PostgreSQL: pgsql/src/include/pgstat.h,v 1.63 2007/06/28 00:02:40 tgl Exp $
+ *	$PostgreSQL: pgsql/src/include/pgstat.h,v 1.64 2007/07/08 22:23:16 tgl Exp $
  * ----------
  */
 #ifndef PGSTAT_H
@@ -486,7 +486,6 @@ extern void pgstat_ping(void);
 extern void pgstat_report_tabstat(bool force);
 extern void pgstat_vacuum_tabstat(void);
 extern void pgstat_drop_database(Oid databaseid);
-extern void pgstat_drop_relation(Oid relid);
 
 extern void pgstat_clear_snapshot(void);
 extern void pgstat_reset_counters(void);