diff --git a/src/backend/storage/freespace/freespace.c b/src/backend/storage/freespace/freespace.c index f666ce9f69..d0f289a29c 100644 --- a/src/backend/storage/freespace/freespace.c +++ b/src/backend/storage/freespace/freespace.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/freespace/freespace.c,v 1.39 2005/03/14 20:15:09 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/freespace/freespace.c,v 1.40 2005/04/23 15:20:39 momjian Exp $ * * * NOTES: @@ -699,6 +699,7 @@ PrintFreeSpaceMapStatistics(int elevel) fsmrel != NULL; fsmrel = fsmrel->nextPhysical) storedPages += fsmrel->storedPages; + /* Copy other stats before dropping lock */ numRels = FreeSpaceMap->numRels; sumRequests = FreeSpaceMap->sumRequests; @@ -708,11 +709,20 @@ PrintFreeSpaceMapStatistics(int elevel) needed = (sumRequests + numRels) * CHUNKPAGES; ereport(elevel, - (errmsg("free space map: %d relations, %d pages stored; %.0f total pages used", - numRels, storedPages, needed), - errdetail("FSM size: %d relations + %d pages = %.0f kB shared memory.", - MaxFSMRelations, MaxFSMPages, - (double) FreeSpaceShmemSize() / 1024.0))); + (errmsg("free space map contains information about:"))); + + ereport(elevel, + (errmsg("%d relations, limit %d relations", + numRels, MaxFSMRelations))); + + ereport(elevel, + (errmsg("%d pages with free space, %.0f pages (with overhead)", + storedPages, Min(needed, MaxFSMPages)))); + + ereport(elevel, + (errmsg("%.0f pages required to track all freespace, limit %d pages (%.0f kB)", + needed, MaxFSMPages, + (double) FreeSpaceShmemSize() / 1024.0))); CheckFreeSpaceMapStatistics(NOTICE, numRels, needed); /* Print to server logs too because is deals with a config variable. */