106#ifdef WORDS_BIGENDIAN
127 return (tmp.
lsn << 32) | (tmp.
lsn >> 32);
133 ptr->
lsn = (lsn << 32) | (lsn >> 32);
213#define PD_HAS_FREE_LINES 0x0001
214#define PD_PAGE_FULL 0x0002
215#define PD_ALL_VISIBLE 0x0004
218#define PD_VALID_FLAG_BITS 0x0007
232#define PG_PAGE_LAYOUT_VERSION 4
233#define PG_DATA_CHECKSUM_VERSION 1
243#define SizeOfPageHeaderData (offsetof(PageHeaderData, pd_linp))
315 return (((
const PageHeaderData *) page)->pd_pagesize_version & 0x00FF);
328 Assert((size & 0xFF00) == size);
329 Assert((version & 0x00FF) == version);
331 ((
PageHeader) page)->pd_pagesize_version = size | version;
365#define PageGetSpecialPointer(page) \
367 PageValidateSpecialPointer(page), \
368 ((page) + ((PageHeader) (page))->pd_special) \
480#define PageSetPrunable(page, xid) \
482 Assert(TransactionIdIsNormal(xid)); \
483 if (!TransactionIdIsValid(((PageHeader) (page))->pd_prune_xid) || \
484 TransactionIdPrecedes(xid, ((PageHeader) (page))->pd_prune_xid)) \
485 ((PageHeader) (page))->pd_prune_xid = (xid); \
487#define PageClearPrunable(page) \
488 (((PageHeader) (page))->pd_prune_xid = InvalidTransactionId)
497#define PAI_OVERWRITE (1 << 0)
498#define PAI_IS_HEAP (1 << 1)
501#define PIV_LOG_WARNING (1 << 0)
502#define PIV_LOG_LOG (1 << 1)
503#define PIV_IGNORE_CHECKSUM_FAILURE (1 << 2)
505#define PageAddItem(page, item, size, offsetNumber, overwrite, is_heap) \
506 PageAddItemExtended(page, item, size, offsetNumber, \
507 ((overwrite) ? PAI_OVERWRITE : 0) | \
508 ((is_heap) ? PAI_IS_HEAP : 0))
518 "BLCKSZ has to be a multiple of sizeof(size_t)");
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 void PageXLogRecPtrSet(volatile PageXLogRecPtr *ptr, XLogRecPtr lsn)
static bool PageIsAllVisible(const PageData *page)
static uint16 PageGetSpecialSize(const PageData *page)
static void PageClearAllVisible(Page page)
static TransactionId PageGetPruneXid(const PageData *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)
static void PageClearFull(Page page)
static bool PageIsNew(const PageData *page)
#define SizeOfPageHeaderData
static char * PageGetContents(Page page)
static XLogRecPtr PageXLogRecPtrGet(const volatile PageXLogRecPtr *val)
bool PageIndexTupleOverwrite(Page page, OffsetNumber offnum, const void *newtup, Size newsize)
static void PageSetAllVisible(Page page)
static uint8 PageGetPageLayoutVersion(const PageData *page)
static ItemId PageGetItemId(Page page, OffsetNumber offsetNumber)
static void * PageGetItem(PageData *page, const ItemIdData *itemId)
void PageSetChecksumInplace(Page page, BlockNumber blkno)
static void PageSetFull(Page page)
static bool PageHasFreeLinePointers(const PageData *page)
OffsetNumber PageAddItemExtended(Page page, const void *item, Size size, OffsetNumber offsetNumber, int flags)
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)
#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)
static bool PageIsFull(const PageData *page)
static OffsetNumber PageGetMaxOffsetNumber(const PageData *page)
#define Assert(condition)
#define FLEXIBLE_ARRAY_MEMBER
#define StaticAssertDecl(condition, errmessage)
#define ItemIdGetOffset(itemId)
#define ItemIdHasStorage(itemId)