diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c
index 2ab1268ba1dcb68484561c8b5504d5cbb4e8f7a5..ef7c3994feff0244567aefcb8d7e76cd4ef2acf4 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.97 2006/03/24 04:32:13 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/storage/smgr/smgr.c,v 1.98 2006/03/30 22:11:55 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -470,8 +470,14 @@ smgr_internal_unlink(RelFileNode rnode, int which, bool isTemp, bool isRedo)
 	 */
 	FreeSpaceMapForgetRel(&rnode);
 
-	/* Tell the stats collector to forget it immediately, too. */
-	pgstat_drop_relation(rnode.relNode);
+	/*
+	 * 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).
+	 */
+	if (!InRecovery)
+		pgstat_drop_relation(rnode.relNode);
 
 	/*
 	 * And delete the physical files.