103 return (uint64)
val.xlogid << 32 |
val.xrecoff;
106 #define PageXLogRecPtrSet(ptr, lsn) \
107 ((ptr).xlogid = (uint32) ((lsn) >> 32), (ptr).xrecoff = (uint32) (lsn))
184 #define PD_HAS_FREE_LINES 0x0001
185 #define PD_PAGE_FULL 0x0002
186 #define PD_ALL_VISIBLE 0x0004
189 #define PD_VALID_FLAG_BITS 0x0007
203 #define PG_PAGE_LAYOUT_VERSION 4
204 #define PG_DATA_CHECKSUM_VERSION 1
214 #define SizeOfPageHeaderData (offsetof(PageHeaderData, pd_linp))
243 return &((
PageHeader) page)->pd_linp[offsetNumber - 1];
286 return (((
PageHeader) page)->pd_pagesize_version & 0x00FF);
299 Assert((size & 0xFF00) == size);
300 Assert((version & 0x00FF) == version);
302 ((
PageHeader) page)->pd_pagesize_version = size | version;
340 return (
char *) page + ((
PageHeader) page)->pd_special;
445 #define PageSetPrunable(page, xid) \
447 Assert(TransactionIdIsNormal(xid)); \
448 if (!TransactionIdIsValid(((PageHeader) (page))->pd_prune_xid) || \
449 TransactionIdPrecedes(xid, ((PageHeader) (page))->pd_prune_xid)) \
450 ((PageHeader) (page))->pd_prune_xid = (xid); \
452 #define PageClearPrunable(page) \
453 (((PageHeader) (page))->pd_prune_xid = InvalidTransactionId)
462 #define PAI_OVERWRITE (1 << 0)
463 #define PAI_IS_HEAP (1 << 1)
466 #define PIV_LOG_WARNING (1 << 0)
467 #define PIV_REPORT_STAT (1 << 1)
469 #define PageAddItem(page, item, size, offsetNumber, overwrite, is_heap) \
470 PageAddItemExtended(page, item, size, offsetNumber, \
471 ((overwrite) ? PAI_OVERWRITE : 0) | \
472 ((is_heap) ? PAI_IS_HEAP : 0))
474 #define PageIsVerified(page, blkno) \
475 PageIsVerifiedExtended(page, blkno, \
476 PIV_LOG_WARNING | PIV_REPORT_STAT)
486 "BLCKSZ has to be a multiple of sizeof(size_t)");
struct PageHeaderData PageHeaderData
PageHeaderData * PageHeader
static bool PageIsEmpty(Page page)
static char * PageGetContents(Page page)
void PageRestoreTempPage(Page tempPage, Page oldPage)
Size PageGetFreeSpaceForMultipleTuples(Page page, int ntups)
static void PageSetHasFreeLinePointers(Page page)
static Item PageGetItem(Page page, ItemId itemId)
static void PageClearAllVisible(Page page)
void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems)
OffsetNumber PageAddItemExtended(Page page, Item item, Size size, OffsetNumber offsetNumber, int flags)
static Size PageGetPageSize(Page page)
Size PageGetHeapFreeSpace(Page page)
static void PageClearFull(Page page)
static XLogRecPtr PageXLogRecPtrGet(PageXLogRecPtr val)
#define SizeOfPageHeaderData
static void PageSetAllVisible(Page page)
static ItemId PageGetItemId(Page page, OffsetNumber offsetNumber)
Page PageGetTempPageCopySpecial(Page page)
static bool PageIsNew(Page page)
static bool PageIsAllVisible(Page page)
bool PageIsVerifiedExtended(Page page, BlockNumber blkno, int flags)
bool PageIndexTupleOverwrite(Page page, OffsetNumber offnum, Item newtup, Size newsize)
void PageSetChecksumInplace(Page page, BlockNumber blkno)
static void PageSetFull(Page page)
static void PageSetLSN(Page page, XLogRecPtr lsn)
static void PageValidateSpecialPointer(Page page)
static XLogRecPtr PageGetLSN(Page page)
char * PageSetChecksumCopy(Page page, BlockNumber blkno)
void PageIndexTupleDelete(Page page, OffsetNumber offnum)
void PageRepairFragmentation(Page page)
static char * PageGetSpecialPointer(Page page)
void PageTruncateLinePointerArray(Page page)
void PageInit(Page page, Size pageSize, Size specialSize)
static void PageClearHasFreeLinePointers(Page page)
Page PageGetTempPageCopy(Page page)
StaticAssertDecl(BLCKSZ==((BLCKSZ/sizeof(size_t)) *sizeof(size_t)), "BLCKSZ has to be a multiple of sizeof(size_t)")
static bool PageHasFreeLinePointers(Page page)
Page PageGetTempPage(Page page)
#define PD_HAS_FREE_LINES
void PageIndexTupleDeleteNoCompact(Page page, OffsetNumber offnum)
static bool PageIsFull(Page page)
static uint8 PageGetPageLayoutVersion(Page page)
static void PageSetPageSizeAndVersion(Page page, Size size, uint8 version)
#define PageXLogRecPtrSet(ptr, lsn)
static OffsetNumber PageGetMaxOffsetNumber(Page page)
Size PageGetExactFreeSpace(Page page)
static uint16 PageGetSpecialSize(Page page)
Size PageGetFreeSpace(Page page)
#define FLEXIBLE_ARRAY_MEMBER
#define ItemIdGetOffset(itemId)
struct ItemIdData ItemIdData
#define ItemIdHasStorage(itemId)
Assert(fmt[strlen(fmt) - 1] !='\n')