1
/*-------------------------------------------------------------------------
4
* POSTGRES free space map for quickly finding free space in relations
7
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
8
* Portions Copyright (c) 1994, Regents of the University of California
10
* $PostgreSQL: pgsql/src/include/storage/freespace.h,v 1.17 2004-12-31 22:03:42 pgsql 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(int code, Datum arg);
64
extern void LoadFreeSpaceMap(void);
66
#ifdef FREESPACE_DEBUG
67
extern void DumpFreeSpace(void);
70
#endif /* FREESPACE_H */