154 errmsg(
"page verification failed, calculated checksum %u but expected %u",
216 errmsg(
"corrupted page pointers: lower = %u, upper = %u, special = %u",
292 elog(
WARNING,
"specified item offset is too large");
299 elog(
WARNING,
"can't put more than MaxHeapTuplesPerPage items in a heap page");
488#ifdef USE_ASSERT_CHECKING
723 pd_lower > pd_upper ||
724 pd_upper > pd_special ||
729 errmsg(
"corrupted page pointers: lower = %u, upper = %u, special = %u",
730 pd_lower, pd_upper, pd_special)));
737 nunused = totallen = 0;
758 errmsg(
"corrupted line pointer: %u",
785 if (totallen > (
Size) (pd_special - pd_lower))
788 errmsg(
"corrupted item lengths: total %zu, available space %u",
789 totallen, pd_special - pd_lower)));
882#ifdef CLOBBER_FREED_MEMORY
944 if (space < (
int) (ntups *
sizeof(
ItemIdData)))
1072 errmsg(
"corrupted page pointers: lower = %u, upper = %u, special = %u",
1076 if ((
int) offnum <= 0 || (
int) offnum >
nline)
1077 elog(
ERROR,
"invalid index offnum: %u", offnum);
1091 errmsg(
"corrupted line pointer: offset = %u, size = %zu",
1119 addr = (
char *) page + phdr->
pd_upper;
1201 pd_lower > pd_upper ||
1202 pd_upper > pd_special ||
1204 pd_special !=
MAXALIGN(pd_special))
1207 errmsg(
"corrupted page pointers: lower = %u, upper = %u, special = %u",
1208 pd_lower, pd_upper, pd_special)));
1227 if (offset < pd_upper ||
1228 (offset + size) > pd_special ||
1232 errmsg(
"corrupted line pointer: offset = %u, size = %zu",
1260 elog(
ERROR,
"incorrect index offsets supplied");
1262 if (totallen > (
Size) (pd_special - pd_lower))
1265 errmsg(
"corrupted item lengths: total %zu, available space %u",
1266 totallen, pd_special - pd_lower)));
1313 errmsg(
"corrupted page pointers: lower = %u, upper = %u, special = %u",
1317 if ((
int) offnum <= 0 || (
int) offnum >
nline)
1318 elog(
ERROR,
"invalid index offnum: %u", offnum);
1329 errmsg(
"corrupted line pointer: offset = %u, size = %zu",
1340 if ((
int) offnum <
nline)
1356 addr = (
char *) page + phdr->
pd_upper;
1425 errmsg(
"corrupted page pointers: lower = %u, upper = %u, special = %u",
1429 if ((
int) offnum <= 0 || (
int) offnum >
itemcount)
1430 elog(
ERROR,
"invalid index offnum: %u", offnum);
1441 errmsg(
"corrupted line pointer: offset = %u, size = %d",
1463 char *addr = (
char *) page + phdr->
pd_upper;
Size PageGetFreeSpace(const PageData *page)
static void compactify_tuples(itemIdCompact itemidbase, int nitems, Page page, bool presorted)
bool ignore_checksum_failure
void PageRestoreTempPage(Page tempPage, Page oldPage)
Size PageGetFreeSpaceForMultipleTuples(const PageData *page, int ntups)
Size PageGetHeapFreeSpace(const PageData *page)
itemIdCompactData * itemIdCompact
Page PageGetTempPage(const PageData *page)
Page PageGetTempPageCopy(const PageData *page)
void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems)
bool PageIndexTupleOverwrite(Page page, OffsetNumber offnum, const void *newtup, Size newsize)
void PageSetChecksumInplace(Page page, BlockNumber blkno)
OffsetNumber PageAddItemExtended(Page page, const void *item, Size size, OffsetNumber offsetNumber, int flags)
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)
bool PageIsVerified(PageData *page, BlockNumber blkno, int flags, bool *checksum_failure_p)
Page PageGetTempPageCopySpecial(const PageData *page)
void PageIndexTupleDeleteNoCompact(Page page, OffsetNumber offnum)
#define PD_VALID_FLAG_BITS
static bool PageIsEmpty(const PageData *page)
PageHeaderData * PageHeader
static void PageSetHasFreeLinePointers(Page page)
static uint16 PageGetSpecialSize(const PageData *page)
#define PageGetSpecialPointer(page)
static Size PageGetPageSize(const PageData *page)
static bool PageIsNew(const PageData *page)
#define SizeOfPageHeaderData
static ItemId PageGetItemId(Page page, OffsetNumber offsetNumber)
static void * PageGetItem(PageData *page, const ItemIdData *itemId)
static bool PageHasFreeLinePointers(const PageData *page)
#define PG_PAGE_LAYOUT_VERSION
static void PageClearHasFreeLinePointers(Page page)
static void PageSetPageSizeAndVersion(Page page, Size size, uint8 version)
#define PIV_IGNORE_CHECKSUM_FAILURE
static OffsetNumber PageGetMaxOffsetNumber(const PageData *page)
#define unconstify(underlying_type, expr)
#define Assert(condition)
#define MemSet(start, val, len)
uint16 pg_checksum_page(char *page, BlockNumber blkno)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define MaxHeapTuplesPerPage
#define ItemIdGetLength(itemId)
#define ItemIdGetOffset(itemId)
#define ItemIdSetNormal(itemId, off, len)
#define ItemIdIsUsed(itemId)
#define ItemIdSetUnused(itemId)
#define ItemIdHasStorage(itemId)
#define MaxIndexTuplesPerPage
void pfree(void *pointer)
void * MemoryContextAllocAligned(MemoryContext context, Size size, Size alignto, int flags)
MemoryContext TopMemoryContext
#define VALGRIND_CHECK_MEM_IS_DEFINED(addr, size)
static bool pg_memory_is_all_zeros(const void *ptr, size_t len)
#define InvalidOffsetNumber
#define OffsetNumberIsValid(offsetNumber)
#define OffsetNumberNext(offsetNumber)
#define FirstOffsetNumber
Datum lower(PG_FUNCTION_ARGS)
Datum upper(PG_FUNCTION_ARGS)
static bool checksum_failure
#define ERRCODE_DATA_CORRUPTED
bool DataChecksumsEnabled(void)