PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
hash_xlog.h File Reference
#include "access/xlogreader.h"
#include "lib/stringinfo.h"
#include "storage/off.h"
Include dependency graph for hash_xlog.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  xl_hash_insert
 
struct  xl_hash_add_ovfl_page
 
struct  xl_hash_split_allocate_page
 
struct  xl_hash_split_complete
 
struct  xl_hash_move_page_contents
 
struct  xl_hash_squeeze_page
 
struct  xl_hash_delete
 
struct  xl_hash_update_meta_page
 
struct  xl_hash_init_meta_page
 
struct  xl_hash_init_bitmap_page
 
struct  xl_hash_vacuum_one_page
 

Macros

#define HASH_XLOG_FREE_OVFL_BUFS   6
 
#define XLOG_HASH_INIT_META_PAGE   0x00 /* initialize the meta page */
 
#define XLOG_HASH_INIT_BITMAP_PAGE   0x10 /* initialize the bitmap page */
 
#define XLOG_HASH_INSERT   0x20 /* add index tuple without split */
 
#define XLOG_HASH_ADD_OVFL_PAGE   0x30 /* add overflow page */
 
#define XLOG_HASH_SPLIT_ALLOCATE_PAGE   0x40 /* allocate new page for split */
 
#define XLOG_HASH_SPLIT_PAGE   0x50 /* split page */
 
#define XLOG_HASH_SPLIT_COMPLETE   0x60 /* completion of split operation */
 
#define XLOG_HASH_MOVE_PAGE_CONTENTS
 
#define XLOG_HASH_SQUEEZE_PAGE
 
#define XLOG_HASH_DELETE   0x90 /* delete index tuples from a page */
 
#define XLOG_HASH_SPLIT_CLEANUP
 
#define XLOG_HASH_UPDATE_META_PAGE   0xB0 /* update meta page after vacuum */
 
#define XLOG_HASH_VACUUM_ONE_PAGE
 
#define XLH_SPLIT_META_UPDATE_MASKS   (1<<0)
 
#define XLH_SPLIT_META_UPDATE_SPLITPOINT   (1<<1)
 
#define SizeOfHashInsert   (offsetof(xl_hash_insert, offnum) + sizeof(OffsetNumber))
 
#define SizeOfHashAddOvflPage    (offsetof(xl_hash_add_ovfl_page, bmpage_found) + sizeof(bool))
 
#define SizeOfHashSplitAllocPage    (offsetof(xl_hash_split_allocate_page, flags) + sizeof(uint8))
 
#define SizeOfHashSplitComplete    (offsetof(xl_hash_split_complete, new_bucket_flag) + sizeof(uint16))
 
#define SizeOfHashMovePageContents    (offsetof(xl_hash_move_page_contents, is_prim_bucket_same_wrt) + sizeof(bool))
 
#define SizeOfHashSqueezePage    (offsetof(xl_hash_squeeze_page, is_prev_bucket_same_wrt) + sizeof(bool))
 
#define SizeOfHashDelete   (offsetof(xl_hash_delete, is_primary_bucket_page) + sizeof(bool))
 
#define SizeOfHashUpdateMetaPage    (offsetof(xl_hash_update_meta_page, ntuples) + sizeof(double))
 
#define SizeOfHashInitMetaPage    (offsetof(xl_hash_init_meta_page, ffactor) + sizeof(uint16))
 
#define SizeOfHashInitBitmapPage    (offsetof(xl_hash_init_bitmap_page, bmsize) + sizeof(uint16))
 
#define SizeOfHashVacuumOnePage   offsetof(xl_hash_vacuum_one_page, offsets)
 

Typedefs

typedef struct xl_hash_insert xl_hash_insert
 
typedef struct xl_hash_add_ovfl_page xl_hash_add_ovfl_page
 
typedef struct xl_hash_split_allocate_page xl_hash_split_allocate_page
 
typedef struct xl_hash_split_complete xl_hash_split_complete
 
typedef struct xl_hash_move_page_contents xl_hash_move_page_contents
 
typedef struct xl_hash_squeeze_page xl_hash_squeeze_page
 
typedef struct xl_hash_delete xl_hash_delete
 
typedef struct xl_hash_update_meta_page xl_hash_update_meta_page
 
typedef struct xl_hash_init_meta_page xl_hash_init_meta_page
 
typedef struct xl_hash_init_bitmap_page xl_hash_init_bitmap_page
 
typedef struct xl_hash_vacuum_one_page xl_hash_vacuum_one_page
 

Functions

void hash_redo (XLogReaderState *record)
 
void hash_desc (StringInfo buf, XLogReaderState *record)
 
const char * hash_identify (uint8 info)
 
void hash_mask (char *pagedata, BlockNumber blkno)
 

Macro Definition Documentation

◆ HASH_XLOG_FREE_OVFL_BUFS

#define HASH_XLOG_FREE_OVFL_BUFS   6

Definition at line 22 of file hash_xlog.h.

◆ SizeOfHashAddOvflPage

#define SizeOfHashAddOvflPage    (offsetof(xl_hash_add_ovfl_page, bmpage_found) + sizeof(bool))

Definition at line 80 of file hash_xlog.h.

◆ SizeOfHashDelete

#define SizeOfHashDelete   (offsetof(xl_hash_delete, is_primary_bucket_page) + sizeof(bool))

Definition at line 186 of file hash_xlog.h.

◆ SizeOfHashInitBitmapPage

#define SizeOfHashInitBitmapPage    (offsetof(xl_hash_init_bitmap_page, bmsize) + sizeof(uint16))

Definition at line 233 of file hash_xlog.h.

◆ SizeOfHashInitMetaPage

#define SizeOfHashInitMetaPage    (offsetof(xl_hash_init_meta_page, ffactor) + sizeof(uint16))

Definition at line 217 of file hash_xlog.h.

◆ SizeOfHashInsert

#define SizeOfHashInsert   (offsetof(xl_hash_insert, offnum) + sizeof(OffsetNumber))

Definition at line 61 of file hash_xlog.h.

◆ SizeOfHashMovePageContents

#define SizeOfHashMovePageContents    (offsetof(xl_hash_move_page_contents, is_prim_bucket_same_wrt) + sizeof(bool))

Definition at line 138 of file hash_xlog.h.

◆ SizeOfHashSplitAllocPage

#define SizeOfHashSplitAllocPage    (offsetof(xl_hash_split_allocate_page, flags) + sizeof(uint8))

Definition at line 100 of file hash_xlog.h.

◆ SizeOfHashSplitComplete

#define SizeOfHashSplitComplete    (offsetof(xl_hash_split_complete, new_bucket_flag) + sizeof(uint16))

Definition at line 117 of file hash_xlog.h.

◆ SizeOfHashSqueezePage

#define SizeOfHashSqueezePage    (offsetof(xl_hash_squeeze_page, is_prev_bucket_same_wrt) + sizeof(bool))

Definition at line 167 of file hash_xlog.h.

◆ SizeOfHashUpdateMetaPage

#define SizeOfHashUpdateMetaPage    (offsetof(xl_hash_update_meta_page, ntuples) + sizeof(double))

Definition at line 200 of file hash_xlog.h.

◆ SizeOfHashVacuumOnePage

#define SizeOfHashVacuumOnePage   offsetof(xl_hash_vacuum_one_page, offsets)

Definition at line 256 of file hash_xlog.h.

◆ XLH_SPLIT_META_UPDATE_MASKS

#define XLH_SPLIT_META_UPDATE_MASKS   (1<<0)

Definition at line 45 of file hash_xlog.h.

◆ XLH_SPLIT_META_UPDATE_SPLITPOINT

#define XLH_SPLIT_META_UPDATE_SPLITPOINT   (1<<1)

Definition at line 46 of file hash_xlog.h.

◆ XLOG_HASH_ADD_OVFL_PAGE

#define XLOG_HASH_ADD_OVFL_PAGE   0x30 /* add overflow page */

Definition at line 30 of file hash_xlog.h.

◆ XLOG_HASH_DELETE

#define XLOG_HASH_DELETE   0x90 /* delete index tuples from a page */

Definition at line 36 of file hash_xlog.h.

◆ XLOG_HASH_INIT_BITMAP_PAGE

#define XLOG_HASH_INIT_BITMAP_PAGE   0x10 /* initialize the bitmap page */

Definition at line 28 of file hash_xlog.h.

◆ XLOG_HASH_INIT_META_PAGE

#define XLOG_HASH_INIT_META_PAGE   0x00 /* initialize the meta page */

Definition at line 27 of file hash_xlog.h.

◆ XLOG_HASH_INSERT

#define XLOG_HASH_INSERT   0x20 /* add index tuple without split */

Definition at line 29 of file hash_xlog.h.

◆ XLOG_HASH_MOVE_PAGE_CONTENTS

#define XLOG_HASH_MOVE_PAGE_CONTENTS
Value:
0x70 /* remove tuples from one page
* and add to another page */

Definition at line 34 of file hash_xlog.h.

◆ XLOG_HASH_SPLIT_ALLOCATE_PAGE

#define XLOG_HASH_SPLIT_ALLOCATE_PAGE   0x40 /* allocate new page for split */

Definition at line 31 of file hash_xlog.h.

◆ XLOG_HASH_SPLIT_CLEANUP

#define XLOG_HASH_SPLIT_CLEANUP
Value:
0xA0 /* clear split-cleanup flag in primary
* bucket page after deleting tuples
* that are moved due to split */

Definition at line 37 of file hash_xlog.h.

◆ XLOG_HASH_SPLIT_COMPLETE

#define XLOG_HASH_SPLIT_COMPLETE   0x60 /* completion of split operation */

Definition at line 33 of file hash_xlog.h.

◆ XLOG_HASH_SPLIT_PAGE

#define XLOG_HASH_SPLIT_PAGE   0x50 /* split page */

Definition at line 32 of file hash_xlog.h.

◆ XLOG_HASH_SQUEEZE_PAGE

#define XLOG_HASH_SQUEEZE_PAGE
Value:
0x80 /* add tuples to one of the previous
* pages in chain and free the ovfl
* page */

Definition at line 35 of file hash_xlog.h.

◆ XLOG_HASH_UPDATE_META_PAGE

#define XLOG_HASH_UPDATE_META_PAGE   0xB0 /* update meta page after vacuum */

Definition at line 38 of file hash_xlog.h.

◆ XLOG_HASH_VACUUM_ONE_PAGE

#define XLOG_HASH_VACUUM_ONE_PAGE
Value:
0xC0 /* remove dead tuples from index
* page */

Definition at line 40 of file hash_xlog.h.

Typedef Documentation

◆ xl_hash_add_ovfl_page

◆ xl_hash_delete

◆ xl_hash_init_bitmap_page

◆ xl_hash_init_meta_page

◆ xl_hash_insert

◆ xl_hash_move_page_contents

◆ xl_hash_split_allocate_page

◆ xl_hash_split_complete

◆ xl_hash_squeeze_page

◆ xl_hash_update_meta_page

◆ xl_hash_vacuum_one_page

Function Documentation

◆ hash_desc()

void hash_desc ( StringInfo  buf,
XLogReaderState record 
)

Definition at line 20 of file hashdesc.c.

21{
22 char *rec = XLogRecGetData(record);
23 uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK;
24
25 switch (info)
26 {
28 {
30
31 appendStringInfo(buf, "num_tuples %g, fillfactor %d",
32 xlrec->num_tuples, xlrec->ffactor);
33 break;
34 }
36 {
38
39 appendStringInfo(buf, "bmsize %d", xlrec->bmsize);
40 break;
41 }
43 {
44 xl_hash_insert *xlrec = (xl_hash_insert *) rec;
45
46 appendStringInfo(buf, "off %u", xlrec->offnum);
47 break;
48 }
50 {
52
53 appendStringInfo(buf, "bmsize %d, bmpage_found %c",
54 xlrec->bmsize, (xlrec->bmpage_found) ? 'T' : 'F');
55 break;
56 }
58 {
60
61 appendStringInfo(buf, "new_bucket %u, meta_page_masks_updated %c, issplitpoint_changed %c",
62 xlrec->new_bucket,
63 (xlrec->flags & XLH_SPLIT_META_UPDATE_MASKS) ? 'T' : 'F',
64 (xlrec->flags & XLH_SPLIT_META_UPDATE_SPLITPOINT) ? 'T' : 'F');
65 break;
66 }
68 {
70
71 appendStringInfo(buf, "old_bucket_flag %u, new_bucket_flag %u",
72 xlrec->old_bucket_flag, xlrec->new_bucket_flag);
73 break;
74 }
76 {
78
79 appendStringInfo(buf, "ntups %d, is_primary %c",
80 xlrec->ntups,
81 xlrec->is_prim_bucket_same_wrt ? 'T' : 'F');
82 break;
83 }
85 {
87
88 appendStringInfo(buf, "prevblkno %u, nextblkno %u, ntups %d, is_primary %c",
89 xlrec->prevblkno,
90 xlrec->nextblkno,
91 xlrec->ntups,
92 xlrec->is_prim_bucket_same_wrt ? 'T' : 'F');
93 break;
94 }
96 {
97 xl_hash_delete *xlrec = (xl_hash_delete *) rec;
98
99 appendStringInfo(buf, "clear_dead_marking %c, is_primary %c",
100 xlrec->clear_dead_marking ? 'T' : 'F',
101 xlrec->is_primary_bucket_page ? 'T' : 'F');
102 break;
103 }
105 {
107
108 appendStringInfo(buf, "ntuples %g",
109 xlrec->ntuples);
110 break;
111 }
113 {
115
116 appendStringInfo(buf, "ntuples %d, snapshotConflictHorizon %u, isCatalogRel %c",
117 xlrec->ntuples,
119 xlrec->isCatalogRel ? 'T' : 'F');
120 break;
121 }
122 }
123}
uint8_t uint8
Definition: c.h:486
#define XLOG_HASH_INIT_BITMAP_PAGE
Definition: hash_xlog.h:28
#define XLOG_HASH_SQUEEZE_PAGE
Definition: hash_xlog.h:35
#define XLOG_HASH_ADD_OVFL_PAGE
Definition: hash_xlog.h:30
#define XLOG_HASH_UPDATE_META_PAGE
Definition: hash_xlog.h:38
#define XLOG_HASH_INSERT
Definition: hash_xlog.h:29
#define XLOG_HASH_SPLIT_ALLOCATE_PAGE
Definition: hash_xlog.h:31
#define XLOG_HASH_INIT_META_PAGE
Definition: hash_xlog.h:27
#define XLOG_HASH_DELETE
Definition: hash_xlog.h:36
#define XLOG_HASH_SPLIT_COMPLETE
Definition: hash_xlog.h:33
#define XLH_SPLIT_META_UPDATE_SPLITPOINT
Definition: hash_xlog.h:46
#define XLOG_HASH_MOVE_PAGE_CONTENTS
Definition: hash_xlog.h:34
#define XLOG_HASH_VACUUM_ONE_PAGE
Definition: hash_xlog.h:40
#define XLH_SPLIT_META_UPDATE_MASKS
Definition: hash_xlog.h:45
static char * buf
Definition: pg_test_fsync.c:72
void appendStringInfo(StringInfo str, const char *fmt,...)
Definition: stringinfo.c:145
bool clear_dead_marking
Definition: hash_xlog.h:180
bool is_primary_bucket_page
Definition: hash_xlog.h:182
OffsetNumber offnum
Definition: hash_xlog.h:58
BlockNumber prevblkno
Definition: hash_xlog.h:155
bool is_prim_bucket_same_wrt
Definition: hash_xlog.h:158
BlockNumber nextblkno
Definition: hash_xlog.h:156
TransactionId snapshotConflictHorizon
Definition: hash_xlog.h:247
#define XLogRecGetInfo(decoder)
Definition: xlogreader.h:410
#define XLogRecGetData(decoder)
Definition: xlogreader.h:415

References appendStringInfo(), xl_hash_add_ovfl_page::bmpage_found, xl_hash_add_ovfl_page::bmsize, xl_hash_init_bitmap_page::bmsize, buf, xl_hash_delete::clear_dead_marking, xl_hash_init_meta_page::ffactor, xl_hash_split_allocate_page::flags, xl_hash_move_page_contents::is_prim_bucket_same_wrt, xl_hash_squeeze_page::is_prim_bucket_same_wrt, xl_hash_delete::is_primary_bucket_page, xl_hash_vacuum_one_page::isCatalogRel, xl_hash_split_allocate_page::new_bucket, xl_hash_split_complete::new_bucket_flag, xl_hash_squeeze_page::nextblkno, xl_hash_update_meta_page::ntuples, xl_hash_vacuum_one_page::ntuples, xl_hash_move_page_contents::ntups, xl_hash_squeeze_page::ntups, xl_hash_init_meta_page::num_tuples, xl_hash_insert::offnum, xl_hash_split_complete::old_bucket_flag, xl_hash_squeeze_page::prevblkno, xl_hash_vacuum_one_page::snapshotConflictHorizon, XLH_SPLIT_META_UPDATE_MASKS, XLH_SPLIT_META_UPDATE_SPLITPOINT, XLOG_HASH_ADD_OVFL_PAGE, XLOG_HASH_DELETE, XLOG_HASH_INIT_BITMAP_PAGE, XLOG_HASH_INIT_META_PAGE, XLOG_HASH_INSERT, XLOG_HASH_MOVE_PAGE_CONTENTS, XLOG_HASH_SPLIT_ALLOCATE_PAGE, XLOG_HASH_SPLIT_COMPLETE, XLOG_HASH_SQUEEZE_PAGE, XLOG_HASH_UPDATE_META_PAGE, XLOG_HASH_VACUUM_ONE_PAGE, XLogRecGetData, and XLogRecGetInfo.

◆ hash_identify()

const char * hash_identify ( uint8  info)

Definition at line 126 of file hashdesc.c.

127{
128 const char *id = NULL;
129
130 switch (info & ~XLR_INFO_MASK)
131 {
133 id = "INIT_META_PAGE";
134 break;
136 id = "INIT_BITMAP_PAGE";
137 break;
138 case XLOG_HASH_INSERT:
139 id = "INSERT";
140 break;
142 id = "ADD_OVFL_PAGE";
143 break;
145 id = "SPLIT_ALLOCATE_PAGE";
146 break;
148 id = "SPLIT_PAGE";
149 break;
151 id = "SPLIT_COMPLETE";
152 break;
154 id = "MOVE_PAGE_CONTENTS";
155 break;
157 id = "SQUEEZE_PAGE";
158 break;
159 case XLOG_HASH_DELETE:
160 id = "DELETE";
161 break;
163 id = "SPLIT_CLEANUP";
164 break;
166 id = "UPDATE_META_PAGE";
167 break;
169 id = "VACUUM_ONE_PAGE";
170 }
171
172 return id;
173}
#define XLOG_HASH_SPLIT_CLEANUP
Definition: hash_xlog.h:37
#define XLOG_HASH_SPLIT_PAGE
Definition: hash_xlog.h:32
#define XLR_INFO_MASK
Definition: xlogrecord.h:62

References XLOG_HASH_ADD_OVFL_PAGE, XLOG_HASH_DELETE, XLOG_HASH_INIT_BITMAP_PAGE, XLOG_HASH_INIT_META_PAGE, XLOG_HASH_INSERT, XLOG_HASH_MOVE_PAGE_CONTENTS, XLOG_HASH_SPLIT_ALLOCATE_PAGE, XLOG_HASH_SPLIT_CLEANUP, XLOG_HASH_SPLIT_COMPLETE, XLOG_HASH_SPLIT_PAGE, XLOG_HASH_SQUEEZE_PAGE, XLOG_HASH_UPDATE_META_PAGE, XLOG_HASH_VACUUM_ONE_PAGE, and XLR_INFO_MASK.

◆ hash_mask()

void hash_mask ( char *  pagedata,
BlockNumber  blkno 
)

Definition at line 1121 of file hash_xlog.c.

1122{
1123 Page page = (Page) pagedata;
1124 HashPageOpaque opaque;
1125 int pagetype;
1126
1128
1129 mask_page_hint_bits(page);
1130 mask_unused_space(page);
1131
1132 opaque = HashPageGetOpaque(page);
1133
1134 pagetype = opaque->hasho_flag & LH_PAGE_TYPE;
1135 if (pagetype == LH_UNUSED_PAGE)
1136 {
1137 /*
1138 * Mask everything on a UNUSED page.
1139 */
1140 mask_page_content(page);
1141 }
1142 else if (pagetype == LH_BUCKET_PAGE ||
1143 pagetype == LH_OVERFLOW_PAGE)
1144 {
1145 /*
1146 * In hash bucket and overflow pages, it is possible to modify the
1147 * LP_FLAGS without emitting any WAL record. Hence, mask the line
1148 * pointer flags. See hashgettuple(), _hash_kill_items() for details.
1149 */
1150 mask_lp_flags(page);
1151 }
1152
1153 /*
1154 * It is possible that the hint bit LH_PAGE_HAS_DEAD_TUPLES may remain
1155 * unlogged. So, mask it. See _hash_kill_items() for details.
1156 */
1157 opaque->hasho_flag &= ~LH_PAGE_HAS_DEAD_TUPLES;
1158}
void mask_lp_flags(Page page)
Definition: bufmask.c:95
void mask_page_content(Page page)
Definition: bufmask.c:119
void mask_page_lsn_and_checksum(Page page)
Definition: bufmask.c:31
void mask_unused_space(Page page)
Definition: bufmask.c:71
void mask_page_hint_bits(Page page)
Definition: bufmask.c:46
Pointer Page
Definition: bufpage.h:81
#define HashPageGetOpaque(page)
Definition: hash.h:88
#define LH_BUCKET_PAGE
Definition: hash.h:55
#define LH_UNUSED_PAGE
Definition: hash.h:53
#define LH_PAGE_TYPE
Definition: hash.h:63
#define LH_OVERFLOW_PAGE
Definition: hash.h:54
uint16 hasho_flag
Definition: hash.h:82

References HashPageOpaqueData::hasho_flag, HashPageGetOpaque, LH_BUCKET_PAGE, LH_OVERFLOW_PAGE, LH_PAGE_TYPE, LH_UNUSED_PAGE, mask_lp_flags(), mask_page_content(), mask_page_hint_bits(), mask_page_lsn_and_checksum(), and mask_unused_space().

◆ hash_redo()

void hash_redo ( XLogReaderState record)

Definition at line 1067 of file hash_xlog.c.

1068{
1069 uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK;
1070
1071 switch (info)
1072 {
1075 break;
1078 break;
1079 case XLOG_HASH_INSERT:
1080 hash_xlog_insert(record);
1081 break;
1084 break;
1087 break;
1089 hash_xlog_split_page(record);
1090 break;
1093 break;
1096 break;
1098 hash_xlog_squeeze_page(record);
1099 break;
1100 case XLOG_HASH_DELETE:
1101 hash_xlog_delete(record);
1102 break;
1105 break;
1108 break;
1111 break;
1112 default:
1113 elog(PANIC, "hash_redo: unknown op code %u", info);
1114 }
1115}
#define PANIC
Definition: elog.h:42
#define elog(elevel,...)
Definition: elog.h:225
static void hash_xlog_split_cleanup(XLogReaderState *record)
Definition: hash_xlog.c:939
static void hash_xlog_add_ovfl_page(XLogReaderState *record)
Definition: hash_xlog.c:173
static void hash_xlog_split_page(XLogReaderState *record)
Definition: hash_xlog.c:428
static void hash_xlog_init_meta_page(XLogReaderState *record)
Definition: hash_xlog.c:27
static void hash_xlog_split_complete(XLogReaderState *record)
Definition: hash_xlog.c:442
static void hash_xlog_update_meta_page(XLogReaderState *record)
Definition: hash_xlog.c:964
static void hash_xlog_vacuum_one_page(XLogReaderState *record)
Definition: hash_xlog.c:991
static void hash_xlog_squeeze_page(XLogReaderState *record)
Definition: hash_xlog.c:627
static void hash_xlog_insert(XLogReaderState *record)
Definition: hash_xlog.c:125
static void hash_xlog_move_page_contents(XLogReaderState *record)
Definition: hash_xlog.c:501
static void hash_xlog_split_allocate_page(XLogReaderState *record)
Definition: hash_xlog.c:311
static void hash_xlog_delete(XLogReaderState *record)
Definition: hash_xlog.c:861
static void hash_xlog_init_bitmap_page(XLogReaderState *record)
Definition: hash_xlog.c:63

References elog, hash_xlog_add_ovfl_page(), hash_xlog_delete(), hash_xlog_init_bitmap_page(), hash_xlog_init_meta_page(), hash_xlog_insert(), hash_xlog_move_page_contents(), hash_xlog_split_allocate_page(), hash_xlog_split_cleanup(), hash_xlog_split_complete(), hash_xlog_split_page(), hash_xlog_squeeze_page(), hash_xlog_update_meta_page(), hash_xlog_vacuum_one_page(), PANIC, XLOG_HASH_ADD_OVFL_PAGE, XLOG_HASH_DELETE, XLOG_HASH_INIT_BITMAP_PAGE, XLOG_HASH_INIT_META_PAGE, XLOG_HASH_INSERT, XLOG_HASH_MOVE_PAGE_CONTENTS, XLOG_HASH_SPLIT_ALLOCATE_PAGE, XLOG_HASH_SPLIT_CLEANUP, XLOG_HASH_SPLIT_COMPLETE, XLOG_HASH_SPLIT_PAGE, XLOG_HASH_SQUEEZE_PAGE, XLOG_HASH_UPDATE_META_PAGE, XLOG_HASH_VACUUM_ONE_PAGE, and XLogRecGetInfo.