145 elog(
PANIC,
"hash_xlog_insert: failed to add item");
191 bool new_bmpage =
false;
200 num_bucket = (
uint32 *) data;
249 bitmap_page_bit = (
uint32 *) data;
251 SETBIT(freep, *bitmap_page_bit);
281 uint32 *firstfree_ovflpage;
284 firstfree_ovflpage = (
uint32 *) data;
359 elog(
PANIC,
"hash_xlog_split_allocate_page: failed to acquire cleanup lock");
397 memcpy(&lowmask, data,
sizeof(
uint32));
404 data +=
sizeof(
uint32) * 2;
413 memcpy(&ovflpoint, data,
sizeof(
uint32));
414 ovflpages = (
uint32 *) ((
char *) data +
sizeof(
uint32));
438 elog(
ERROR,
"Hash split record did not contain a full-page image");
548 if (xldata->
ntups > 0)
554 while (data - begin < datalen)
565 l =
PageAddItem(writepage, (
Item) itup, itemsz, towrite[ninserted],
false,
false);
567 elog(
ERROR,
"hash_xlog_move_page_contents: failed to add item to hash index page, size %d bytes",
602 if ((unend - unused) > 0)
676 if (xldata->
ntups > 0)
682 while (data - begin < datalen)
693 l =
PageAddItem(writepage, (
Item) itup, itemsz, towrite[ninserted],
false,
false);
695 elog(
ERROR,
"hash_xlog_squeeze_page: failed to add item to hash index page, size %d bytes",
804 bitmap_page_bit = (
uint32 *) data;
806 CLRBIT(freep, *bitmap_page_bit);
824 uint32 *firstfree_ovflpage;
828 firstfree_ovflpage = (
uint32 *) data;
893 if ((unend - unused) > 0)
1100 elog(
PANIC,
"hash_redo: unknown op code %u", info);
static void hash_xlog_insert(XLogReaderState *record)
#define HashPageGetBitmap(page)
static void hash_xlog_update_meta_page(XLogReaderState *record)
#define XLH_SPLIT_META_UPDATE_SPLITPOINT
void _hash_pageinit(Page page, Size size)
static void hash_xlog_move_page_contents(XLogReaderState *record)
void MarkBufferDirty(Buffer buffer)
static void hash_xlog_split_cleanup(XLogReaderState *record)
static void hash_xlog_squeeze_page(XLogReaderState *record)
#define XLOG_HASH_INIT_BITMAP_PAGE
void mask_page_hint_bits(Page page)
#define XLogRecHasBlockRef(decoder, block_id)
#define XLOG_HASH_SPLIT_CLEANUP
#define PageAddItem(page, item, size, offsetNumber, overwrite, is_heap)
#define XLOG_HASH_SPLIT_PAGE
#define LH_BUCKET_NEEDS_SPLIT_CLEANUP
void mask_unused_space(Page page)
void hash_redo(XLogReaderState *record)
bool is_prim_bucket_same_wrt
void mask_page_content(Page page)
static void hash_xlog_delete(XLogReaderState *record)
#define XLogRecGetData(decoder)
void UnlockReleaseBuffer(Buffer buffer)
BlockNumber hasho_prevblkno
#define XLogRecGetDataLen(decoder)
#define XLOG_HASH_ADD_OVFL_PAGE
Buffer XLogInitBufferForRedo(XLogReaderState *record, uint8 block_id)
void hash_mask(char *pagedata, BlockNumber blkno)
void _hash_init_metabuffer(Buffer buf, double num_tuples, RegProcedure procid, uint16 ffactor, bool initpage)
static void hash_xlog_split_allocate_page(XLogReaderState *record)
bool is_primary_bucket_page
IndexTupleData * IndexTuple
bool is_prim_bucket_same_wrt
static void hash_xlog_split_complete(XLogReaderState *record)
static void hash_xlog_add_ovfl_page(XLogReaderState *record)
#define XLOG_HASH_INIT_META_PAGE
static void hash_xlog_init_bitmap_page(XLogReaderState *record)
#define BufferGetPage(buffer)
#define XLogRecGetInfo(decoder)
bool IsBufferCleanupOK(Buffer buffer)
bool XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id, RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blknum)
#define SizeOfHashVacuumOnePage
char * XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len)
void mask_page_lsn_and_checksum(Page page)
#define XLOG_HASH_MOVE_PAGE_CONTENTS
#define BufferGetPageSize(buffer)
uint32 hashm_spares[HASH_MAX_SPLITPOINTS]
static void hash_xlog_init_meta_page(XLogReaderState *record)
#define InvalidOffsetNumber
void _hash_initbitmapbuffer(Buffer buf, uint16 bmsize, bool initpage)
#define BlockNumberIsValid(blockNumber)
XLogRedoAction XLogReadBufferForRedo(XLogReaderState *record, uint8 block_id, Buffer *buf)
#define XLOG_HASH_VACUUM_ONE_PAGE
#define Assert(condition)
void _hash_initbuf(Buffer buf, uint32 max_bucket, uint32 num_bucket, uint32 flag, bool initpage)
TransactionId latestRemovedXid
bool is_prev_bucket_same_wrt
void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems)
#define PageGetSpecialPointer(page)
#define InvalidBlockNumber
HashPageOpaqueData * HashPageOpaque
#define BufferIsValid(bufnum)
static void hash_xlog_split_page(XLogReaderState *record)
void FlushOneBuffer(Buffer buffer)
#define XLOG_HASH_SPLIT_COMPLETE
BlockNumber BufferGetBlockNumber(Buffer buffer)
#define XLOG_HASH_SPLIT_ALLOCATE_PAGE
#define HashPageGetMeta(page)
XLogRedoAction XLogReadBufferForRedoExtended(XLogReaderState *record, uint8 block_id, ReadBufferMode mode, bool get_cleanup_lock, Buffer *buf)
#define XLOG_HASH_SQUEEZE_PAGE
void ResolveRecoveryConflictWithSnapshot(TransactionId latestRemovedXid, RelFileNode node)
BlockNumber hasho_nextblkno
#define XLH_SPLIT_META_UPDATE_MASKS
#define XLOG_HASH_UPDATE_META_PAGE
static void hash_xlog_vacuum_one_page(XLogReaderState *record)
#define PageSetLSN(page, lsn)
BlockNumber hashm_mapp[HASH_MAX_BITMAPS]
void mask_lp_flags(Page page)
#define LH_PAGE_HAS_DEAD_TUPLES
#define IndexTupleSize(itup)
#define PG_USED_FOR_ASSERTS_ONLY