40 #ifdef UNIV_MATERIALIZE
50 typedef byte page_header_t;
52 #define PAGE_HEADER FSEG_PAGE_DATA
55 #define PAGE_N_DIR_SLOTS 0
56 #define PAGE_HEAP_TOP 2
60 #define PAGE_GARBAGE 8
61 #define PAGE_LAST_INSERT 10
64 #define PAGE_DIRECTION 12
65 #define PAGE_N_DIRECTION 14
67 #define PAGE_N_RECS 16
68 #define PAGE_MAX_TRX_ID 18
72 #define PAGE_HEADER_PRIV_END 26
78 #define PAGE_INDEX_ID 28
81 #define PAGE_BTR_SEG_LEAF 36
84 #define PAGE_BTR_IBUF_FREE_LIST PAGE_BTR_SEG_LEAF
85 #define PAGE_BTR_IBUF_FREE_LIST_NODE PAGE_BTR_SEG_LEAF
91 #define PAGE_BTR_SEG_TOP (36 + FSEG_HEADER_SIZE)
97 #define PAGE_DATA (PAGE_HEADER + 36 + 2 * FSEG_HEADER_SIZE)
100 #define PAGE_OLD_INFIMUM (PAGE_DATA + 1 + REC_N_OLD_EXTRA_BYTES)
103 #define PAGE_OLD_SUPREMUM (PAGE_DATA + 2 + 2 * REC_N_OLD_EXTRA_BYTES + 8)
106 #define PAGE_OLD_SUPREMUM_END (PAGE_OLD_SUPREMUM + 9)
109 #define PAGE_NEW_INFIMUM (PAGE_DATA + REC_N_NEW_EXTRA_BYTES)
112 #define PAGE_NEW_SUPREMUM (PAGE_DATA + 2 * REC_N_NEW_EXTRA_BYTES + 8)
115 #define PAGE_NEW_SUPREMUM_END (PAGE_NEW_SUPREMUM + 8)
121 #define PAGE_HEAP_NO_INFIMUM 0
122 #define PAGE_HEAP_NO_SUPREMUM 1
123 #define PAGE_HEAP_NO_USER_LOW 2
131 #define PAGE_SAME_REC 3
132 #define PAGE_SAME_PAGE 4
133 #define PAGE_NO_DIRECTION 5
139 typedef byte page_dir_slot_t;
140 typedef page_dir_slot_t page_dir_t;
145 #define PAGE_DIR FIL_PAGE_DATA_END
148 #define PAGE_DIR_SLOT_SIZE 2
152 #define PAGE_EMPTY_DIR_START (PAGE_DIR + 2 * PAGE_DIR_SLOT_SIZE)
157 #define PAGE_DIR_SLOT_MAX_N_OWNED 8
158 #define PAGE_DIR_SLOT_MIN_N_OWNED 4
168 __attribute__((
const));
177 __attribute__((
const));
235 __attribute__((nonnull, pure));
239 #define page_header_get_ptr(page, field) \
240 (page_header_get_offs(page, field) \
241 ? page + page_header_get_offs(page, field) : NULL)
253 #ifndef UNIV_HOTBACKUP
282 #define page_get_infimum_rec(page) ((page) + page_get_infimum_offset(page))
283 #define page_get_supremum_rec(page) ((page) + page_get_supremum_offset(page))
295 __attribute__((nonnull, warn_unused_result));
306 __attribute__((nonnull, warn_unused_result));
308 #ifndef UNIV_HOTBACKUP
319 __attribute__((nonnull, warn_unused_result));
337 const ulint* offsets,
338 ulint* matched_fields,
341 ulint* matched_bytes);
431 # define page_dir_get_nth_slot(page, n) \
432 ((page) + UNIV_PAGE_SIZE - PAGE_DIR \
433 - (n + 1) * PAGE_DIR_SLOT_SIZE)
450 const page_dir_slot_t* slot);
457 page_dir_slot_t* slot,
466 const page_dir_slot_t* slot);
473 page_dir_slot_t*slot,
527 __attribute__((nonnull, pure));
536 __attribute__((nonnull, pure));
545 __attribute__((nonnull, pure));
617 __attribute__((
const));
626 __attribute__((
const));
635 __attribute__((
const));
645 __attribute__((
const));
654 __attribute__((
const));
664 __attribute__((
const));
673 #ifndef UNIV_HOTBACKUP
684 __attribute__((nonnull));
714 __attribute__((
const));
774 const ulint* offsets);
800 __attribute__((nonnull));
810 __attribute__((nonnull(1,2)));
849 __attribute__((nonnull));
871 __attribute__((nonnull));
888 __attribute__((nonnull));
900 __attribute__((nonnull));
921 __attribute__((nonnull(1, 2, 4, 5)));
941 __attribute__((nonnull(1, 2, 4, 5)));
952 __attribute__((nonnull(1)));
965 __attribute__((nonnull(1)));
994 #ifndef UNIV_HOTBACKUP
1003 const ulint* offsets);
1004 # ifdef UNIV_BTR_PRINT
1056 const ulint* offsets);
1113 #ifdef UNIV_MATERIALIZE
1115 #define UNIV_INLINE UNIV_INLINE_ORIGINAL