diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 65b7b32..a0b0eec 100644
*** a/src/backend/postmaster/pgstat.c
--- b/src/backend/postmaster/pgstat.c
*************** pgstat_read_statsfiles(Oid onlydb, bool 
*** 4947,4962 ****
--- 4947,4974 ----
  	{
  		ereport(pgStatRunningInCollector ? LOG : WARNING,
  				(errmsg("corrupted statistics file \"%s\"", statfile)));
+ 		memset(&globalStats, 0, sizeof(globalStats));
  		goto done;
  	}
  
  	/*
+ 	 * In the collector, disregard the timestamp we read from the permanent
+ 	 * stats file; we should be willing to write a temp stats file immediately
+ 	 * upon the first request from any backend.  This only matters if the old
+ 	 * file's timestamp is less than PGSTAT_STAT_INTERVAL ago, but that's not
+ 	 * an unusual scenario.
+ 	 */
+ 	if (pgStatRunningInCollector)
+ 		globalStats.stats_timestamp = 0;
+ 
+ 	/*
  	 * Read archiver stats struct
  	 */
  	if (fread(&archiverStats, 1, sizeof(archiverStats), fpin) != sizeof(archiverStats))
  	{
  		ereport(pgStatRunningInCollector ? LOG : WARNING,
  				(errmsg("corrupted statistics file \"%s\"", statfile)));
+ 		memset(&archiverStats, 0, sizeof(archiverStats));
  		goto done;
  	}
  
*************** pgstat_read_statsfiles(Oid onlydb, bool 
*** 5002,5007 ****
--- 5014,5028 ----
  				dbentry->functions = NULL;
  
  				/*
+ 				 * In the collector, disregard the timestamp we read from the
+ 				 * permanent stats file; we should be willing to write a temp
+ 				 * stats file immediately upon the first request from any
+ 				 * backend.
+ 				 */
+ 				if (pgStatRunningInCollector)
+ 					dbentry->stats_timestamp = 0;
+ 
+ 				/*
  				 * Don't create tables/functions hashtables for uninteresting
  				 * databases.
  				 */
