36 #define BTR_NO_UNDO_LOG_FLAG 1
37 #define BTR_NO_LOCKING_FLAG 2
38 #define BTR_KEEP_SYS_FLAG 4
41 #ifndef UNIV_HOTBACKUP
47 #define BTR_CUR_HASH_ADAPT
59 # define btr_cur_get_page_cur(cursor) (&(cursor)->page_cur)
154 ulint has_search_latch,
174 #define btr_cur_open_at_index_side(f,i,l,c,m) \
175 btr_cur_open_at_index_side_func(f,i,l,c,__FILE__,__LINE__,m)
188 #define btr_cur_open_at_rnd_pos(i,l,c,m) \
189 btr_cur_open_at_rnd_pos_func(i,l,c,__FILE__,__LINE__,m)
261 UNIV_WARN_UNUSED_RESULT_NONNULL;
340 const ulint* offsets,
344 __attribute__((nonnull));
406 ibool has_reserved_extents,
454 #ifndef UNIV_HOTBACKUP
492 const ulint* offsets,
495 __attribute__((nonnull(2,3,4,5,6)));
510 const ulint* offsets,
518 #
if defined UNIV_DEBUG || defined UNIV_BLOB_LIGHT_DEBUG
519 ibool update_in_place,
524 __attribute__((nonnull));
540 # define btr_store_big_rec_extern_fields(index,b,rec,offsets,mtr,upd,big) \
541 btr_store_big_rec_extern_fields_func(index,b,rec,offsets,mtr,upd,big)
542 #elif defined UNIV_BLOB_LIGHT_DEBUG
543 # define btr_store_big_rec_extern_fields(index,b,rec,offsets,mtr,upd,big) \
544 btr_store_big_rec_extern_fields_func(index,b,rec,offsets,upd,big)
546 # define btr_store_big_rec_extern_fields(index,b,rec,offsets,mtr,upd,big) \
547 btr_store_big_rec_extern_fields_func(index,b,rec,offsets,big)
570 const ulint* offsets,
607 const ulint* offsets,
625 __attribute__((nonnull));
644 #define BTR_CUR_PAGE_COMPRESS_LIMIT (UNIV_PAGE_SIZE / 2)
664 #define BTR_PATH_ARRAY_N_SLOTS 250
667 enum btr_cur_method {
775 #define BTR_CUR_RETRY_DELETE_N_TIMES 100
779 #define BTR_CUR_RETRY_SLEEP_TIME 50000
788 #define BTR_EXTERN_SPACE_ID 0
789 #define BTR_EXTERN_PAGE_NO 4
790 #define BTR_EXTERN_OFFSET 8
792 #define BTR_EXTERN_LEN 12
804 #define BTR_EXTERN_OWNER_FLAG 128
810 #define BTR_EXTERN_INHERITED_FLAG 64
828 #include "btr0cur.ic"
UNIV_INTERN void btr_estimate_number_of_different_key_vals(dict_index_t *index)
ulint btr_cur_n_non_sea_old
UNIV_INTERN byte * btr_rec_copy_externally_stored_field(const rec_t *rec, const ulint *offsets, ulint zip_size, ulint no, ulint *len, mem_heap_t *heap)
UNIV_INTERN byte * btr_cur_parse_update_in_place(byte *ptr, byte *end_ptr, page_t *page, page_zip_des_t *page_zip, dict_index_t *index)
UNIV_INTERN ibool btr_cur_optimistic_delete(btr_cur_t *cursor, mtr_t *mtr)
purge_node_t * purge_node
UNIV_INTERN void btr_cur_search_to_nth_level(dict_index_t *index, ulint level, const dtuple_t *tuple, ulint mode, ulint latch_mode, btr_cur_t *cursor, ulint has_search_latch, const char *file, ulint line, mtr_t *mtr)
UNIV_INTERN ibool btr_cur_update_alloc_zip(page_zip_des_t *page_zip, buf_block_t *block, dict_index_t *index, ulint length, ibool create, mtr_t *mtr) UNIV_WARN_UNUSED_RESULT_NONNULL
UNIV_INTERN ulint btr_copy_externally_stored_field_prefix(byte *buf, ulint len, ulint zip_size, const byte *data, ulint local_len)
UNIV_INTERN ulint btr_cur_optimistic_update(ulint flags, btr_cur_t *cursor, const upd_t *update, ulint cmpl_info, que_thr_t *thr, mtr_t *mtr)
UNIV_INTERN ulint btr_cur_pessimistic_insert(ulint flags, btr_cur_t *cursor, dtuple_t *entry, rec_t **rec, big_rec_t **big_rec, ulint n_ext, que_thr_t *thr, mtr_t *mtr)
UNIV_INTERN void btr_cur_open_at_rnd_pos_func(dict_index_t *index, ulint latch_mode, btr_cur_t *cursor, const char *file, ulint line, mtr_t *mtr)
UNIV_INTERN void UNIV_INTERN ulint btr_store_big_rec_extern_fields_func(dict_index_t *index, buf_block_t *rec_block, rec_t *rec, const ulint *offsets, const big_rec_t *big_rec_vec) __attribute__((nonnull))
UNIV_INLINE page_t * btr_cur_get_page(btr_cur_t *cursor)
UNIV_INTERN ulint btr_cur_optimistic_insert(ulint flags, btr_cur_t *cursor, dtuple_t *entry, rec_t **rec, big_rec_t **big_rec, ulint n_ext, que_thr_t *thr, mtr_t *mtr)
UNIV_INTERN ib_int64_t btr_estimate_n_rows_in_range(dict_index_t *index, const dtuple_t *tuple1, ulint mode1, const dtuple_t *tuple2, ulint mode2)
UNIV_INTERN ibool btr_cur_compress_if_useful(btr_cur_t *cursor, mtr_t *mtr)
UNIV_INTERN void btr_cur_open_at_index_side_func(ibool from_left, dict_index_t *index, ulint latch_mode, btr_cur_t *cursor, const char *file, ulint line, mtr_t *mtr)
UNIV_INTERN void btr_cur_set_deleted_flag_for_ibuf(rec_t *rec, page_zip_des_t *page_zip, ibool val, mtr_t *mtr)
UNIV_INTERN void btr_cur_disown_inherited_fields(page_zip_des_t *page_zip, rec_t *rec, dict_index_t *index, const ulint *offsets, const upd_t *update, mtr_t *mtr) __attribute__((nonnull(2
UNIV_INTERN ulint btr_cur_del_mark_set_clust_rec(ulint flags, buf_block_t *block, rec_t *rec, dict_index_t *index, const ulint *offsets, ibool val, que_thr_t *thr, mtr_t *mtr) __attribute__((nonnull))
UNIV_INLINE rec_t * btr_cur_get_rec(btr_cur_t *cursor)
UNIV_INTERN void btr_free_externally_stored_field(dict_index_t *index, byte *field_ref, const rec_t *rec, const ulint *offsets, page_zip_des_t *page_zip, ulint i, enum trx_rb_ctx rb_ctx, mtr_t *local_mtr)
UNIV_INTERN ulint btr_cur_del_mark_set_sec_rec(ulint flags, btr_cur_t *cursor, ibool val, que_thr_t *thr, mtr_t *mtr)
UNIV_INTERN byte * btr_cur_parse_del_mark_set_sec_rec(byte *ptr, byte *end_ptr, page_t *page, page_zip_des_t *page_zip)
UNIV_INLINE dict_index_t * btr_cur_get_index(btr_cur_t *cursor)
UNIV_INTERN ibool btr_cur_pessimistic_delete(ulint *err, ibool has_reserved_extents, btr_cur_t *cursor, enum trx_rb_ctx rb_ctx, mtr_t *mtr)
UNIV_INLINE void btr_cur_invalidate(btr_cur_t *cursor)
UNIV_INTERN ulint btr_push_update_extern_fields(dtuple_t *tuple, const upd_t *update, mem_heap_t *heap) __attribute__((nonnull))
UNIV_INLINE void btr_cur_position(dict_index_t *index, rec_t *rec, buf_block_t *block, btr_cur_t *cursor)
UNIV_INTERN ulint btr_cur_update_in_place(ulint flags, btr_cur_t *cursor, const upd_t *update, ulint cmpl_info, que_thr_t *thr, mtr_t *mtr)
UNIV_INLINE buf_block_t * btr_cur_get_block(btr_cur_t *cursor)
UNIV_INLINE page_zip_des_t * btr_cur_get_page_zip(btr_cur_t *cursor)
UNIV_INTERN byte * btr_cur_parse_del_mark_set_clust_rec(byte *ptr, byte *end_ptr, page_t *page, page_zip_des_t *page_zip, dict_index_t *index)
UNIV_INTERN ulint btr_cur_pessimistic_update(ulint flags, btr_cur_t *cursor, mem_heap_t **heap, big_rec_t **big_rec, const upd_t *update, ulint cmpl_info, que_thr_t *thr, mtr_t *mtr)