codekingpro/portable-devtools
115k
1/*-------------------------------------------------------------------------2 *3 * freespace.h4 * POSTGRES free space map for quickly finding free space in relations5 *6 *7 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group8 * Portions Copyright (c) 1994, Regents of the University of California9 *10 * src/include/storage/freespace.h11 *12 *-------------------------------------------------------------------------13 */14#ifndef FREESPACE_H_15#define FREESPACE_H_16 17#include "storage/block.h"18#include "storage/relfilelocator.h"19#include "utils/relcache.h"20 21/* prototypes for public functions in freespace.c */22extern Size GetRecordedFreeSpace(Relation rel, BlockNumber heapBlk);23extern BlockNumber GetPageWithFreeSpace(Relation rel, Size spaceNeeded);24extern BlockNumber RecordAndGetPageWithFreeSpace(Relation rel,25 BlockNumber oldPage,26 Size oldSpaceAvail,27 Size spaceNeeded);28extern void RecordPageWithFreeSpace(Relation rel, BlockNumber heapBlk,29 Size spaceAvail);30extern void XLogRecordPageWithFreeSpace(RelFileLocator rlocator, BlockNumber heapBlk,31 Size spaceAvail);32 33extern BlockNumber FreeSpaceMapPrepareTruncateRel(Relation rel,34 BlockNumber nblocks);35extern void FreeSpaceMapVacuum(Relation rel);36extern void FreeSpaceMapVacuumRange(Relation rel, BlockNumber start,37 BlockNumber end);38 39#endif /* FREESPACE_H_ */40 