110#define PageXLogRecPtrSet(ptr, lsn) \
111 ((ptr).xlogid = (uint32) ((lsn) >> 32), (ptr).xrecoff = (uint32) (lsn))
188#define PD_HAS_FREE_LINES 0x0001
189#define PD_PAGE_FULL 0x0002
190#define PD_ALL_VISIBLE 0x0004
193#define PD_VALID_FLAG_BITS 0x0007
207#define PG_PAGE_LAYOUT_VERSION 4
208#define PG_DATA_CHECKSUM_VERSION 1
218#define SizeOfPageHeaderData (offsetof(PageHeaderData, pd_linp))
247 return &((
PageHeader) page)->pd_linp[offsetNumber - 1];
290 return (((
const PageHeaderData *) page)->pd_pagesize_version & 0x00FF);
303 Assert((size & 0xFF00) == size);
304 Assert((version & 0x00FF) == version);
306 ((
PageHeader) page)->pd_pagesize_version = size | version;
340#define PageGetSpecialPointer(page) \
342 PageValidateSpecialPointer(page), \
343 ((page) + ((PageHeader) (page))->pd_special) \
410 ((
PageHeader) page)->pd_flags &= ~PD_HAS_FREE_LINES;
426 ((
PageHeader) page)->pd_flags &= ~PD_PAGE_FULL;
442 ((
PageHeader) page)->pd_flags &= ~PD_ALL_VISIBLE;
448#define PageSetPrunable(page, xid) \
450 Assert(TransactionIdIsNormal(xid)); \
451 if (!TransactionIdIsValid(((PageHeader) (page))->pd_prune_xid) || \
452 TransactionIdPrecedes(xid, ((PageHeader) (page))->pd_prune_xid)) \
453 ((PageHeader) (page))->pd_prune_xid = (xid); \
455#define PageClearPrunable(page) \
456 (((PageHeader) (page))->pd_prune_xid = InvalidTransactionId)
465#define PAI_OVERWRITE (1 << 0)
466#define PAI_IS_HEAP (1 << 1)
469#define PIV_LOG_WARNING (1 << 0)
470#define PIV_LOG_LOG (1 << 1)
471#define PIV_IGNORE_CHECKSUM_FAILURE (1 << 2)
473#define PageAddItem(page, item, size, offsetNumber, overwrite, is_heap) \
474 PageAddItemExtended(page, item, size, offsetNumber, \
475 ((overwrite) ? PAI_OVERWRITE : 0) | \
476 ((is_heap) ? PAI_IS_HEAP : 0))
486 "BLCKSZ has to be a multiple of sizeof(size_t)");
490 bool *checksum_failure_p);
struct PageHeaderData PageHeaderData
Size PageGetFreeSpace(const PageData *page)
static bool PageIsEmpty(const PageData *page)
PageHeaderData * PageHeader
PGDLLIMPORT bool ignore_checksum_failure
void PageRestoreTempPage(Page tempPage, Page oldPage)
static void PageSetHasFreeLinePointers(Page page)
Size PageGetFreeSpaceForMultipleTuples(const PageData *page, int ntups)
Size PageGetHeapFreeSpace(const PageData *page)
static bool PageIsAllVisible(const PageData *page)
static uint16 PageGetSpecialSize(const PageData *page)
static void PageClearAllVisible(Page page)
Page PageGetTempPage(const PageData *page)
static Size PageGetPageSize(const PageData *page)
Page PageGetTempPageCopy(const PageData *page)
void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems)
OffsetNumber PageAddItemExtended(Page page, Item item, Size size, OffsetNumber offsetNumber, int flags)
static void PageClearFull(Page page)
static Item PageGetItem(const PageData *page, const ItemIdData *itemId)
static XLogRecPtr PageXLogRecPtrGet(PageXLogRecPtr val)
static bool PageIsNew(const PageData *page)
#define SizeOfPageHeaderData
static char * PageGetContents(Page page)
static void PageSetAllVisible(Page page)
static uint8 PageGetPageLayoutVersion(const PageData *page)
static ItemId PageGetItemId(Page page, OffsetNumber offsetNumber)
bool PageIndexTupleOverwrite(Page page, OffsetNumber offnum, Item newtup, Size newsize)
void PageSetChecksumInplace(Page page, BlockNumber blkno)
static void PageSetFull(Page page)
static bool PageHasFreeLinePointers(const PageData *page)
static void PageSetLSN(Page page, XLogRecPtr lsn)
void PageIndexTupleDelete(Page page, OffsetNumber offnum)
char * PageSetChecksumCopy(Page page, BlockNumber blkno)
void PageRepairFragmentation(Page page)
Size PageGetExactFreeSpace(const PageData *page)
void PageTruncateLinePointerArray(Page page)
void PageInit(Page page, Size pageSize, Size specialSize)
static void PageClearHasFreeLinePointers(Page page)
bool PageIsVerified(PageData *page, BlockNumber blkno, int flags, bool *checksum_failure_p)
StaticAssertDecl(BLCKSZ==((BLCKSZ/sizeof(size_t)) *sizeof(size_t)), "BLCKSZ has to be a multiple of sizeof(size_t)")
#define PD_HAS_FREE_LINES
Page PageGetTempPageCopySpecial(const PageData *page)
static void PageValidateSpecialPointer(const PageData *page)
void PageIndexTupleDeleteNoCompact(Page page, OffsetNumber offnum)
static XLogRecPtr PageGetLSN(const PageData *page)
static void PageSetPageSizeAndVersion(Page page, Size size, uint8 version)
#define PageXLogRecPtrSet(ptr, lsn)
static bool PageIsFull(const PageData *page)
static OffsetNumber PageGetMaxOffsetNumber(const PageData *page)
#define FLEXIBLE_ARRAY_MEMBER
Assert(PointerIsAligned(start, uint64))
#define ItemIdGetOffset(itemId)
struct ItemIdData ItemIdData
#define ItemIdHasStorage(itemId)