284 errmsg(
"out of overflow pages in hash index \"%s\"",
343 metap->hashm_nmaps++;
461 elog(
ERROR,
"firstfreebit found no free bit");
653 xlrec.nextblkno = nextblkno;
665 if (!
xlrec.is_prim_bucket_same_wrt)
684 else if (
xlrec.is_prim_bucket_same_wrt ||
xlrec.is_prev_bucket_same_wrt)
697 if (!
xlrec.is_prev_bucket_same_wrt)
1003 if (!
xlrec.is_prim_bucket_same_wrt)
#define InvalidBlockNumber
static bool BlockNumberIsValid(BlockNumber blockNumber)
BlockNumber BufferGetBlockNumber(Buffer buffer)
void MarkBufferDirty(Buffer buffer)
static Page BufferGetPage(Buffer buffer)
static Size BufferGetPageSize(Buffer buffer)
static void LockBuffer(Buffer buffer, BufferLockMode mode)
static bool BufferIsValid(Buffer bufnum)
Size PageGetFreeSpaceForMultipleTuples(const PageData *page, int ntups)
void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems)
static bool PageIsEmpty(const PageData *page)
PageHeaderData * PageHeader
static ItemId PageGetItemId(Page page, OffsetNumber offsetNumber)
static void * PageGetItem(PageData *page, const ItemIdData *itemId)
static void PageSetLSN(Page page, XLogRecPtr lsn)
static OffsetNumber PageGetMaxOffsetNumber(const PageData *page)
#define PG_USED_FOR_ASSERTS_ONLY
#define Assert(condition)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define HashPageGetOpaque(page)
#define HashPageGetBitmap(page)
#define HashPageGetMeta(page)
#define BMPGSZ_BIT(metap)
#define BMPG_SHIFT(metap)
#define HASH_XLOG_FREE_OVFL_BUFS
#define XLOG_HASH_SQUEEZE_PAGE
#define SizeOfHashAddOvflPage
#define XLOG_HASH_ADD_OVFL_PAGE
#define SizeOfHashSqueezePage
#define SizeOfHashMovePageContents
#define XLOG_HASH_MOVE_PAGE_CONTENTS
void _hash_pgaddmultitup(Relation rel, Buffer buf, IndexTuple *itups, OffsetNumber *itup_offsets, uint16 nitups)
void _hash_squeezebucket(Relation rel, Bucket bucket, BlockNumber bucket_blkno, Buffer bucket_buf, BufferAccessStrategy bstrategy)
static uint32 _hash_firstfreebit(uint32 map)
uint32 _hash_ovflblkno_to_bitno(HashMetaPage metap, BlockNumber ovflblkno)
BlockNumber _hash_freeovflpage(Relation rel, Buffer bucketbuf, Buffer ovflbuf, Buffer wbuf, IndexTuple *itups, OffsetNumber *itup_offsets, Size *tups_size, uint16 nitups, BufferAccessStrategy bstrategy)
void _hash_initbitmapbuffer(Buffer buf, uint16 bmsize, bool initpage)
Buffer _hash_addovflpage(Relation rel, Buffer metabuf, Buffer buf, bool retain_pin)
static BlockNumber bitno_to_blkno(HashMetaPage metap, uint32 ovflbitnum)
Buffer _hash_getinitbuf(Relation rel, BlockNumber blkno)
void _hash_relbuf(Relation rel, Buffer buf)
void _hash_pageinit(Page page, Size size)
Buffer _hash_getbuf(Relation rel, BlockNumber blkno, int access, int flags)
Buffer _hash_getbuf_with_strategy(Relation rel, BlockNumber blkno, int access, int flags, BufferAccessStrategy bstrategy)
Buffer _hash_getnewbuf(Relation rel, BlockNumber blkno, ForkNumber forkNum)
uint32 _hash_get_totalbuckets(uint32 splitpoint_phase)
void _hash_checkpage(Relation rel, Buffer buf, int flags)
IndexTuple CopyIndexTuple(IndexTuple source)
#define ItemIdIsDead(itemId)
IndexTupleData * IndexTuple
static Size IndexTupleSize(const IndexTupleData *itup)
#define MaxIndexTuplesPerPage
void pfree(void *pointer)
#define START_CRIT_SECTION()
#define END_CRIT_SECTION()
#define OffsetNumberNext(offsetNumber)
#define FirstOffsetNumber
static char buf[DEFAULT_XLOG_SEG_SIZE]
#define RelationGetRelationName(relation)
#define RelationNeedsWAL(relation)
BlockNumber hasho_nextblkno
BlockNumber hasho_prevblkno
Datum bit(PG_FUNCTION_ARGS)
XLogRecPtr XLogInsert(RmgrId rmid, uint8 info)
void XLogRegisterBufData(uint8 block_id, const void *data, uint32 len)
void XLogRegisterData(const void *data, uint32 len)
void XLogRegisterBuffer(uint8 block_id, Buffer buffer, uint8 flags)
void XLogBeginInsert(void)
void XLogEnsureRecordSpace(int max_block_id, int ndatas)