40 #define REC_INFO_MIN_REC_FLAG 0x10UL
42 #define REC_INFO_DELETED_FLAG 0x20UL
47 #define REC_N_OLD_EXTRA_BYTES 6
50 #define REC_N_NEW_EXTRA_BYTES 5
53 #define REC_STATUS_ORDINARY 0
54 #define REC_STATUS_NODE_PTR 1
55 #define REC_STATUS_INFIMUM 2
56 #define REC_STATUS_SUPREMUM 3
62 #define REC_NEW_HEAP_NO 4
65 #define REC_HEAP_NO_SHIFT 3
68 #define REC_NODE_PTR_SIZE 4
72 # define REC_OFFS_HEADER_SIZE 4
75 # define REC_OFFS_HEADER_SIZE 2
80 #define REC_OFFS_NORMAL_SIZE 100
81 #define REC_OFFS_SMALL_SIZE 10
362 #define rec_get_offsets(rec,index,offsets,n,heap) \
363 rec_get_offsets_func(rec,index,offsets,n,heap,__FILE__,__LINE__)
409 const ulint* offsets);
424 # define rec_offs_make_valid(rec, index, offsets) ((void) 0)
439 #define rec_get_nth_field_old(rec, n, len) \
440 ((rec) + rec_get_nth_field_offs_old(rec, n, len))
460 const ulint* offsets,
464 #define rec_get_nth_field(rec, offsets, n, len) \
465 ((rec) + rec_get_nth_field_offs(offsets, n, len))
474 const ulint* offsets);
483 const ulint* offsets);
491 const ulint* offsets,
500 const ulint* offsets,
509 const ulint* offsets,
519 const ulint* offsets);
531 const ulint* offsets,
554 const ulint* offsets);
565 #define rec_offs_init(offsets) \
566 rec_offs_set_n_alloc(offsets, (sizeof offsets) / sizeof *offsets)
574 const ulint* offsets);
585 const ulint* offsets);
595 const ulint* offsets);
603 const ulint* offsets);
613 const ulint* offsets);
622 const ulint* offsets);
624 # define rec_get_start(rec, offsets) ((rec) - rec_offs_extra_size(offsets))
625 # define rec_get_end(rec, offsets) ((rec) + rec_offs_data_size(offsets))
636 const ulint* offsets);
637 #ifndef UNIV_HOTBACKUP
662 const ulint* offsets,
669 __attribute__((pure));
711 __attribute__((
const));
752 #ifndef UNIV_HOTBACKUP
775 const ulint* offsets);
784 #ifndef UNIV_HOTBACKUP
794 const ulint* offsets);
803 const ulint* offsets);
815 #define REC_INFO_BITS 6
819 #define REC_1BYTE_OFFS_LIMIT 0x7FUL
820 #define REC_2BYTE_OFFS_LIMIT 0x7FFFUL
824 #define REC_MAX_DATA_SIZE (16 * 1024)
827 #include "rem0rec.ic"
UNIV_INLINE ulint rec_get_converted_extra_size(ulint data_size, ulint n_fields, ulint n_ext) __attribute__((const ))
UNIV_INLINE ibool rec_get_1byte_offs_flag(const rec_t *rec)
UNIV_INTERN rec_t * rec_copy_prefix_to_buf(const rec_t *rec, const dict_index_t *index, ulint n_fields, byte **buf, ulint *buf_size)
UNIV_INTERN void rec_copy_prefix_to_dtuple(dtuple_t *tuple, const rec_t *rec, const dict_index_t *index, ulint n_fields, mem_heap_t *heap)
UNIV_INLINE void rec_set_status(rec_t *rec, ulint bits)
UNIV_INTERN void rec_print_comp(FILE *file, const rec_t *rec, const ulint *offsets)
UNIV_INTERN ulint rec_get_nth_field_offs_old(const rec_t *rec, ulint n, ulint *len)
UNIV_INLINE ulint rec_get_nth_field_size(const rec_t *rec, ulint n)
UNIV_INLINE void rec_set_info_bits_new(rec_t *rec, ulint bits)
UNIV_INLINE ulint rec_offs_any_extern(const ulint *offsets)
UNIV_INLINE ulint rec_get_n_fields_old(const rec_t *rec)
UNIV_INLINE ulint rec_offs_data_size(const ulint *offsets)
UNIV_INLINE ulint rec_get_next_offs(const rec_t *rec, ulint comp)
UNIV_INTERN void rec_init_offsets_comp_ordinary(const rec_t *rec, ulint extra, const dict_index_t *index, ulint *offsets)
UNIV_INLINE ulint rec_offs_nth_extern(const ulint *offsets, ulint n)
UNIV_INTERN void rec_print_new(FILE *file, const rec_t *rec, const ulint *offsets)
UNIV_INLINE ulint rec_offs_extra_size(const ulint *offsets)
UNIV_INLINE void rec_set_next_offs_old(rec_t *rec, ulint next)
UNIV_INLINE ulint rec_get_info_and_status_bits(const rec_t *rec, ulint comp)
UNIV_INTERN ulint rec_get_converted_size_comp_prefix(const dict_index_t *index, const dfield_t *fields, ulint n_fields, ulint *extra)
UNIV_INLINE void rec_set_nth_field(rec_t *rec, const ulint *offsets, ulint n, const void *data, ulint len)
UNIV_INTERN void rec_print(FILE *file, const rec_t *rec, const dict_index_t *index)
UNIV_INLINE rec_t * rec_copy(void *buf, const rec_t *rec, const ulint *offsets)
UNIV_INTERN rec_t * rec_convert_dtuple_to_rec(byte *buf, const dict_index_t *index, const dtuple_t *dtuple, ulint n_ext)
UNIV_INLINE void rec_set_heap_no_old(rec_t *rec, ulint heap_no)
UNIV_INTERN ulint * rec_get_offsets_func(const rec_t *rec, const dict_index_t *index, ulint *offsets, ulint n_fields, mem_heap_t **heap, const char *file, ulint line)
UNIV_INLINE void rec_set_heap_no_new(rec_t *rec, ulint heap_no)
UNIV_INLINE ulint rec_get_data_size_old(const rec_t *rec)
UNIV_INLINE void rec_set_deleted_flag_new(rec_t *rec, page_zip_des_t *page_zip, ulint flag)
UNIV_INLINE ulint rec_get_deleted_flag(const rec_t *rec, ulint comp)
UNIV_INLINE ulint rec_get_nth_field_offs(const ulint *offsets, ulint n, ulint *len)
UNIV_INLINE ulint rec_get_n_owned_new(const rec_t *rec)
UNIV_INLINE ulint rec_offs_comp(const ulint *offsets)
UNIV_INLINE ulint rec_get_status(const rec_t *rec)
UNIV_INLINE void rec_set_info_bits_old(rec_t *rec, ulint bits)
UNIV_INLINE ulint rec_fold(const rec_t *rec, const ulint *offsets, ulint n_fields, ulint n_bytes, index_id_t tree_id) __attribute__((pure))
UNIV_INTERN ulint rec_get_converted_size_comp(const dict_index_t *index, ulint status, const dfield_t *fields, ulint n_fields, ulint *extra)
UNIV_INLINE ulint rec_offs_nth_size(const ulint *offsets, ulint n)
UNIV_INLINE ulint rec_offs_nth_sql_null(const ulint *offsets, ulint n)
UNIV_INTERN void rec_get_offsets_reverse(const byte *extra, const dict_index_t *index, ulint node_ptr, ulint *offsets)
UNIV_INLINE void rec_set_n_owned_new(rec_t *rec, page_zip_des_t *page_zip, ulint n_owned)
UNIV_INLINE ulint rec_offs_n_fields(const ulint *offsets)
UNIV_INLINE const rec_t * rec_get_next_ptr_const(const rec_t *rec, ulint comp)
UNIV_INLINE ulint rec_get_converted_size(dict_index_t *index, const dtuple_t *dtuple, ulint n_ext)
UNIV_INLINE ulint rec_get_heap_no_old(const rec_t *rec)
UNIV_INLINE ibool rec_get_node_ptr_flag(const rec_t *rec)
UNIV_INLINE ulint rec_offs_n_extern(const ulint *offsets)
UNIV_INTERN ibool rec_validate(const rec_t *rec, const ulint *offsets)
UNIV_INLINE rec_t * rec_get_next_ptr(rec_t *rec, ulint comp)
UNIV_INTERN void rec_convert_dtuple_to_rec_comp(rec_t *rec, ulint extra, const dict_index_t *index, ulint status, const dfield_t *fields, ulint n_fields)
UNIV_INLINE ulint rec_get_n_fields(const rec_t *rec, const dict_index_t *index)
UNIV_INLINE void rec_set_next_offs_new(rec_t *rec, ulint next)
UNIV_INLINE void rec_set_info_and_status_bits(rec_t *rec, ulint bits)
UNIV_INTERN void rec_print_old(FILE *file, const rec_t *rec)
UNIV_INLINE ulint rec_get_heap_no_new(const rec_t *rec)
UNIV_INLINE void rec_set_deleted_flag_old(rec_t *rec, ulint flag)
UNIV_INLINE ulint rec_get_info_bits(const rec_t *rec, ulint comp)
UNIV_INLINE ulint rec_offs_get_n_alloc(const ulint *offsets)
UNIV_INLINE ulint rec_offs_size(const ulint *offsets)
UNIV_INLINE void rec_set_n_owned_old(rec_t *rec, ulint n_owned)
UNIV_INLINE ulint rec_get_n_owned_old(const rec_t *rec)
UNIV_INLINE void rec_offs_set_n_alloc(ulint *offsets, ulint n_alloc)
UNIV_INLINE ibool rec_offs_validate(const rec_t *rec, const dict_index_t *index, const ulint *offsets)
UNIV_INTERN ulint rec_get_n_extern_new(const rec_t *rec, dict_index_t *index, ulint n)