142 elog(
PANIC,
"hash_xlog_insert: failed to add item");
188 bool new_bmpage =
false;
247 SETBIT(freep, *bitmap_page_bit);
277 uint32 *firstfree_ovflpage;
433 elog(
ERROR,
"Hash split record did not contain a full-page image");
543 if (xldata->
ntups > 0)
560 l =
PageAddItem(writepage, (
Item) itup, itemsz, towrite[ninserted],
false,
false);
562 elog(
ERROR,
"hash_xlog_move_page_contents: failed to add item to hash index page, size %d bytes",
597 if ((unend - unused) > 0)
669 bool mod_wbuf =
false;
675 if (xldata->
ntups > 0)
692 l =
PageAddItem(writepage, (
Item) itup, itemsz, towrite[ninserted],
false,
false);
694 elog(
ERROR,
"hash_xlog_squeeze_page: failed to add item to hash index page, size %d bytes",
821 CLRBIT(freep, *bitmap_page_bit);
839 uint32 *firstfree_ovflpage;
908 if ((unend - unused) > 0)
922 pageopaque->
hasho_flag &= ~LH_PAGE_HAS_DEAD_TUPLES;
952 bucket_opaque->
hasho_flag &= ~LH_BUCKET_NEEDS_SPLIT_CLEANUP;
1041 pageopaque->
hasho_flag &= ~LH_PAGE_HAS_DEAD_TUPLES;
1113 elog(
PANIC,
"hash_redo: unknown op code %u", info);
1157 opaque->
hasho_flag &= ~LH_PAGE_HAS_DEAD_TUPLES;
#define InvalidBlockNumber
static bool BlockNumberIsValid(BlockNumber blockNumber)
void mask_lp_flags(Page page)
void mask_page_content(Page page)
void mask_page_lsn_and_checksum(Page page)
void mask_unused_space(Page page)
void mask_page_hint_bits(Page page)
BlockNumber BufferGetBlockNumber(Buffer buffer)
void UnlockReleaseBuffer(Buffer buffer)
void MarkBufferDirty(Buffer buffer)
void FlushOneBuffer(Buffer buffer)
static Page BufferGetPage(Buffer buffer)
static Size BufferGetPageSize(Buffer buffer)
@ RBM_ZERO_AND_CLEANUP_LOCK
static bool BufferIsValid(Buffer bufnum)
void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems)
static void PageSetLSN(Page page, XLogRecPtr lsn)
#define PageAddItem(page, item, size, offsetNumber, overwrite, is_heap)
#define PG_USED_FOR_ASSERTS_ONLY
#define Assert(condition)
#define HashPageGetOpaque(page)
#define HashPageGetBitmap(page)
#define HashPageGetMeta(page)
static void hash_xlog_split_cleanup(XLogReaderState *record)
static void hash_xlog_add_ovfl_page(XLogReaderState *record)
static void hash_xlog_split_page(XLogReaderState *record)
static void hash_xlog_init_meta_page(XLogReaderState *record)
void hash_mask(char *pagedata, BlockNumber blkno)
static void hash_xlog_split_complete(XLogReaderState *record)
static void hash_xlog_update_meta_page(XLogReaderState *record)
static void hash_xlog_vacuum_one_page(XLogReaderState *record)
static void hash_xlog_squeeze_page(XLogReaderState *record)
static void hash_xlog_insert(XLogReaderState *record)
static void hash_xlog_move_page_contents(XLogReaderState *record)
static void hash_xlog_split_allocate_page(XLogReaderState *record)
void hash_redo(XLogReaderState *record)
static void hash_xlog_delete(XLogReaderState *record)
static void hash_xlog_init_bitmap_page(XLogReaderState *record)
#define XLOG_HASH_INIT_BITMAP_PAGE
#define XLOG_HASH_SQUEEZE_PAGE
#define XLOG_HASH_SPLIT_CLEANUP
#define XLOG_HASH_ADD_OVFL_PAGE
#define XLOG_HASH_UPDATE_META_PAGE
#define XLOG_HASH_SPLIT_ALLOCATE_PAGE
#define XLOG_HASH_SPLIT_PAGE
#define XLOG_HASH_INIT_META_PAGE
#define XLOG_HASH_SPLIT_COMPLETE
#define XLH_SPLIT_META_UPDATE_SPLITPOINT
#define XLOG_HASH_MOVE_PAGE_CONTENTS
#define XLOG_HASH_VACUUM_ONE_PAGE
#define XLH_SPLIT_META_UPDATE_MASKS
void _hash_initbitmapbuffer(Buffer buf, uint16 bmsize, bool initpage)
void _hash_initbuf(Buffer buf, uint32 max_bucket, uint32 num_bucket, uint32 flag, bool initpage)
void _hash_pageinit(Page page, Size size)
void _hash_init_metabuffer(Buffer buf, double num_tuples, RegProcedure procid, uint16 ffactor, bool initpage)
IndexTupleData * IndexTuple
#define IndexTupleSize(itup)
#define InvalidOffsetNumber
void ResolveRecoveryConflictWithSnapshot(TransactionId snapshotConflictHorizon, bool isCatalogRel, RelFileLocator locator)
BlockNumber hashm_mapp[HASH_MAX_BITMAPS]
uint32 hashm_spares[HASH_MAX_SPLITPOINTS]
BlockNumber hasho_nextblkno
BlockNumber hasho_prevblkno
bool is_primary_bucket_page
bool is_prim_bucket_same_wrt
bool is_prim_bucket_same_wrt
bool is_prev_bucket_same_wrt
TransactionId snapshotConflictHorizon
OffsetNumber offsets[FLEXIBLE_ARRAY_MEMBER]
char * XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len)
void XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id, RelFileLocator *rlocator, ForkNumber *forknum, BlockNumber *blknum)
#define XLogRecGetInfo(decoder)
#define XLogRecGetData(decoder)
#define XLogRecHasBlockRef(decoder, block_id)
XLogRedoAction XLogReadBufferForRedo(XLogReaderState *record, uint8 block_id, Buffer *buf)
Buffer XLogInitBufferForRedo(XLogReaderState *record, uint8 block_id)
XLogRedoAction XLogReadBufferForRedoExtended(XLogReaderState *record, uint8 block_id, ReadBufferMode mode, bool get_cleanup_lock, Buffer *buf)