83 (
errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
84 errmsg(
"index row size %zu exceeds hash maximum %zu",
86 errhint(
"Values larger than a buffer page cannot be indexed.")));
163 if (
buf != bucket_buf)
247 if (
buf != bucket_buf)
291 #ifdef USE_ASSERT_CHECKING
315 elog(
ERROR,
"failed to add index item to \"%s\"",
342 for (
i = 0;
i < nitups;
i++)
353 itup_offsets[
i] = itup_off;
357 elog(
ERROR,
"failed to add index item to \"%s\"",
389 deletable[ndeletable++] = offnum;
396 snapshotConflictHorizon =
398 deletable, ndeletable);
static bool BlockNumberIsValid(BlockNumber blockNumber)
BlockNumber BufferGetBlockNumber(Buffer buffer)
bool IsBufferCleanupOK(Buffer buffer)
void MarkBufferDirty(Buffer buffer)
void LockBuffer(Buffer buffer, int mode)
#define BUFFER_LOCK_UNLOCK
static Page BufferGetPage(Buffer buffer)
#define BUFFER_LOCK_EXCLUSIVE
void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems)
Size PageGetFreeSpace(Page page)
static Item PageGetItem(Page page, ItemId itemId)
static ItemId PageGetItemId(Page page, OffsetNumber offsetNumber)
static void PageSetLSN(Page page, XLogRecPtr lsn)
static OffsetNumber PageGetMaxOffsetNumber(Page page)
#define PageAddItem(page, item, size, offsetNumber, overwrite, is_heap)
#define Assert(condition)
int errhint(const char *fmt,...)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
TransactionId index_compute_xid_horizon_for_tuples(Relation irel, Relation hrel, Buffer ibuf, OffsetNumber *itemnos, int nitems)
#define HashPageGetOpaque(page)
#define H_BUCKET_BEING_SPLIT(opaque)
#define HashPageGetMeta(page)
#define H_HAS_DEAD_TUPLES(opaque)
#define HashMaxItemSize(page)
#define LH_PAGE_HAS_DEAD_TUPLES
#define XLOG_HASH_VACUUM_ONE_PAGE
#define SizeOfHashVacuumOnePage
void _hash_doinsert(Relation rel, IndexTuple itup, Relation heapRel, bool sorted)
OffsetNumber _hash_pgaddtup(Relation rel, Buffer buf, Size itemsize, IndexTuple itup, bool appendtup)
void _hash_pgaddmultitup(Relation rel, Buffer buf, IndexTuple *itups, OffsetNumber *itup_offsets, uint16 nitups)
static void _hash_vacuum_one_page(Relation rel, Relation hrel, Buffer metabuf, Buffer buf)
Buffer _hash_addovflpage(Relation rel, Buffer metabuf, Buffer buf, bool retain_pin)
void _hash_relbuf(Relation rel, Buffer buf)
void _hash_dropbuf(Relation rel, Buffer buf)
Buffer _hash_getbuf(Relation rel, BlockNumber blkno, int access, int flags)
void _hash_finish_split(Relation rel, Buffer metabuf, Buffer obuf, Bucket obucket, uint32 maxbucket, uint32 highmask, uint32 lowmask)
Buffer _hash_getbucketbuf_from_hashkey(Relation rel, uint32 hashkey, int access, HashMetaPage *cachedmetap)
void _hash_expandtable(Relation rel, Buffer metabuf)
uint32 _hash_get_indextuple_hashkey(IndexTuple itup)
OffsetNumber _hash_binsearch(Page page, uint32 hash_value)
void _hash_checkpage(Relation rel, Buffer buf, int flags)
#define ItemIdIsDead(itemId)
IndexTupleData * IndexTuple
#define IndexTupleSize(itup)
#define START_CRIT_SECTION()
#define END_CRIT_SECTION()
#define InvalidOffsetNumber
#define OffsetNumberNext(offsetNumber)
#define FirstOffsetNumber
void CheckForSerializableConflictIn(Relation relation, ItemPointer tid, BlockNumber blkno)
#define RelationGetRelationName(relation)
#define RelationIsAccessibleInLogicalDecoding(relation)
#define RelationNeedsWAL(relation)
BlockNumber hasho_nextblkno
TransactionId snapshotConflictHorizon
void XLogRegisterBufData(uint8 block_id, const char *data, uint32 len)
XLogRecPtr XLogInsert(RmgrId rmid, uint8 info)
void XLogRegisterData(const char *data, uint32 len)
void XLogRegisterBuffer(uint8 block_id, Buffer buffer, uint8 flags)
void XLogBeginInsert(void)