1 /*-------------------------------------------------------------------------
4 * POSTGRES free space map for quickly finding free space in relations
7 * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
10 * $Id: freespace.h,v 1.11 2003/08/04 00:43:32 momjian Exp $
12 *-------------------------------------------------------------------------
17 #include "storage/block.h"
18 #include "storage/relfilenode.h"
24 typedef struct PageFreeSpaceInfo
26 BlockNumber blkno; /* which page in relation */
27 Size avail; /* space available on this page */
32 extern int MaxFSMRelations;
33 extern int MaxFSMPages;
39 extern void InitFreeSpaceMap(void);
40 extern int FreeSpaceShmemSize(void);
42 extern BlockNumber GetPageWithFreeSpace(RelFileNode *rel, Size spaceNeeded);
43 extern BlockNumber RecordAndGetPageWithFreeSpace(RelFileNode *rel,
47 extern Size GetAvgFSMRequestSize(RelFileNode *rel);
48 extern void RecordRelationFreeSpace(RelFileNode *rel,
50 PageFreeSpaceInfo * pageSpaces);
52 extern BlockNumber GetFreeIndexPage(RelFileNode *rel);
53 extern void RecordIndexFreeSpace(RelFileNode *rel,
57 extern void FreeSpaceMapTruncateRel(RelFileNode *rel, BlockNumber nblocks);
58 extern void FreeSpaceMapForgetRel(RelFileNode *rel);
59 extern void FreeSpaceMapForgetDatabase(Oid dbid);
61 extern void PrintFreeSpaceMapStatistics(int elevel);
63 extern void DumpFreeSpaceMap(void);
64 extern void LoadFreeSpaceMap(void);
66 #ifdef FREESPACE_DEBUG
67 extern void DumpFreeSpace(void);
70 #endif /* FREESPACE_H */