1 /*------------------------------------------------------------------------- 2 * 3 * freespace.h 4 * POSTGRES free space map for quickly finding free space in relations 5 * 6 * 7 * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group 8 * Portions Copyright (c) 1994, Regents of the University of California 9 * 10 * src/include/storage/freespace.h 11 * 12 *------------------------------------------------------------------------- 13 */ 14 #ifndef FREESPACE_H_ 15 #define FREESPACE_H_ 16 17 #include "storage/block.h" 18 #include "storage/relfilenode.h" 19 #include "utils/relcache.h" 20 21 /* prototypes for public functions in freespace.c */ 22 extern Size GetRecordedFreeSpace(Relation rel, BlockNumber heapBlk); 23 extern BlockNumber GetPageWithFreeSpace(Relation rel, Size spaceNeeded); 24 extern BlockNumber RecordAndGetPageWithFreeSpace(Relation rel, 25 BlockNumber oldPage, 26 Size oldSpaceAvail, 27 Size spaceNeeded); 28 extern void RecordPageWithFreeSpace(Relation rel, BlockNumber heapBlk, 29 Size spaceAvail); 30 extern void XLogRecordPageWithFreeSpace(RelFileNode rnode, BlockNumber heapBlk, 31 Size spaceAvail); 32 33 extern void FreeSpaceMapTruncateRel(Relation rel, BlockNumber nblocks); 34 extern void FreeSpaceMapVacuum(Relation rel); 35 extern void FreeSpaceMapVacuumRange(Relation rel, BlockNumber start, 36 BlockNumber end); 37 38 #endif /* FREESPACE_H_ */ 39