41 #ifdef UNIV_MATERIALIZE
51 typedef byte page_header_t;
53 #define PAGE_HEADER FSEG_PAGE_DATA
56 #define PAGE_N_DIR_SLOTS 0
57 #define PAGE_HEAP_TOP 2
61 #define PAGE_GARBAGE 8
62 #define PAGE_LAST_INSERT 10
65 #define PAGE_DIRECTION 12
66 #define PAGE_N_DIRECTION 14
68 #define PAGE_N_RECS 16
69 #define PAGE_MAX_TRX_ID 18
76 #define PAGE_HEADER_PRIV_END 26
82 #define PAGE_INDEX_ID 28
85 #define PAGE_BTR_SEG_LEAF 36
88 #define PAGE_BTR_IBUF_FREE_LIST PAGE_BTR_SEG_LEAF
89 #define PAGE_BTR_IBUF_FREE_LIST_NODE PAGE_BTR_SEG_LEAF
95 #define PAGE_BTR_SEG_TOP (36 + FSEG_HEADER_SIZE)
101 #define PAGE_DATA (PAGE_HEADER + 36 + 2 * FSEG_HEADER_SIZE)
104 #define PAGE_OLD_INFIMUM (PAGE_DATA + 1 + REC_N_OLD_EXTRA_BYTES)
107 #define PAGE_OLD_SUPREMUM (PAGE_DATA + 2 + 2 * REC_N_OLD_EXTRA_BYTES + 8)
110 #define PAGE_OLD_SUPREMUM_END (PAGE_OLD_SUPREMUM + 9)
113 #define PAGE_NEW_INFIMUM (PAGE_DATA + REC_N_NEW_EXTRA_BYTES)
116 #define PAGE_NEW_SUPREMUM (PAGE_DATA + 2 * REC_N_NEW_EXTRA_BYTES + 8)
119 #define PAGE_NEW_SUPREMUM_END (PAGE_NEW_SUPREMUM + 8)
125 #define PAGE_HEAP_NO_INFIMUM 0
126 #define PAGE_HEAP_NO_SUPREMUM 1
127 #define PAGE_HEAP_NO_USER_LOW 2
135 #define PAGE_SAME_REC 3
136 #define PAGE_SAME_PAGE 4
137 #define PAGE_NO_DIRECTION 5
143 typedef byte page_dir_slot_t;
144 typedef page_dir_slot_t page_dir_t;
149 #define PAGE_DIR FIL_PAGE_DATA_END
152 #define PAGE_DIR_SLOT_SIZE 2
156 #define PAGE_EMPTY_DIR_START (PAGE_DIR + 2 * PAGE_DIR_SLOT_SIZE)
161 #define PAGE_DIR_SLOT_MAX_N_OWNED 8
162 #define PAGE_DIR_SLOT_MIN_N_OWNED 4
172 __attribute__((
const));
181 __attribute__((
const));
239 __attribute__((nonnull, pure));
243 #define page_header_get_ptr(page, field) \
244 (page_header_get_offs(page, field) \
245 ? page + page_header_get_offs(page, field) : NULL)
257 #ifndef UNIV_HOTBACKUP
286 #define page_get_infimum_rec(page) ((page) + page_get_infimum_offset(page))
287 #define page_get_supremum_rec(page) ((page) + page_get_supremum_offset(page))
297 #ifndef UNIV_HOTBACKUP
315 const ulint* offsets,
316 ulint* matched_fields,
319 ulint* matched_bytes);
403 page_dir_get_nth_slot(
408 # define page_dir_get_nth_slot(page, n) \
409 ((page) + UNIV_PAGE_SIZE - PAGE_DIR \
410 - (n + 1) * PAGE_DIR_SLOT_SIZE)
427 const page_dir_slot_t* slot);
434 page_dir_slot_t* slot,
443 const page_dir_slot_t* slot);
450 page_dir_slot_t*slot,
504 __attribute__((nonnull, pure));
566 __attribute__((
const));
575 __attribute__((
const));
584 __attribute__((
const));
594 __attribute__((
const));
603 __attribute__((
const));
613 __attribute__((
const));
662 __attribute__((
const));
720 const ulint* offsets);
772 __attribute__((nonnull));
788 __attribute__((nonnull));
805 __attribute__((nonnull));
817 __attribute__((nonnull));
832 __attribute__((nonnull(1, 2, 4, 5)));
846 __attribute__((nonnull(1, 2, 4, 5)));
857 __attribute__((nonnull(1)));
870 __attribute__((nonnull(1)));
907 const ulint* offsets);
957 const ulint* offsets);
1007 #ifdef UNIV_MATERIALIZE
1009 #define UNIV_INLINE UNIV_INLINE_ORIGINAL
1013 #include "page0page.ic"