Commit db32810d authored by unknown's avatar unknown

InnoDB: Improve performance by about 10% by removing implicit

memcpy() calls, by not initializing the offsets_[] arrays.
InnoDB: Remove a Microsoft compiler warning in page0page.c.


innobase/btr/btr0btr.c:
  Only initialize the first element of offsets_[]
innobase/btr/btr0cur.c:
  Only initialize the first element of offsets_[]
innobase/btr/btr0sea.c:
  Only initialize the first element of offsets_[]
innobase/lock/lock0lock.c:
  Only initialize the first element of offsets_[]
innobase/page/page0cur.c:
  Only initialize the first element of offsets_[]
innobase/page/page0page.c:
  page_validate(): Silence a warning about unsigned/signed comparison.
  Other places: Only initialize the first element of offsets_[].
innobase/rem/rem0rec.c:
  Only initialize the first element of offsets_[]
innobase/row/row0ins.c:
  Only initialize the first element of offsets_[]
innobase/row/row0mysql.c:
  Only initialize the first element of offsets_[]
innobase/row/row0purge.c:
  Only initialize the first element of offsets_[]
innobase/row/row0row.c:
  Only initialize the first element of offsets_[]
innobase/row/row0sel.c:
  Only initialize the first element of offsets_[]
innobase/row/row0undo.c:
  Only initialize the first element of offsets_[]
innobase/row/row0upd.c:
  Only initialize the first element of offsets_[]
innobase/trx/trx0rec.c:
  Only initialize the first element of offsets_[]
parent d1b3c64b
...@@ -567,8 +567,9 @@ btr_page_get_father_for_rec( ...@@ -567,8 +567,9 @@ btr_page_get_father_for_rec(
btr_cur_t cursor; btr_cur_t cursor;
rec_t* node_ptr; rec_t* node_ptr;
dict_index_t* index; dict_index_t* index;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(mtr_memo_contains(mtr, dict_tree_get_lock(tree), ut_ad(mtr_memo_contains(mtr, dict_tree_get_lock(tree),
MTR_MEMO_X_LOCK)); MTR_MEMO_X_LOCK));
...@@ -2098,7 +2099,8 @@ btr_compress( ...@@ -2098,7 +2099,8 @@ btr_compress(
btr_node_ptr_delete(tree, page, mtr); btr_node_ptr_delete(tree, page, mtr);
} else { } else {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
/* Replace the address of the old child node (= page) with the /* Replace the address of the old child node (= page) with the
address of the merge page to the right */ address of the merge page to the right */
...@@ -2387,9 +2389,9 @@ btr_print_tree( ...@@ -2387,9 +2389,9 @@ btr_print_tree(
mtr_t mtr; mtr_t mtr;
page_t* root; page_t* root;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] ulint offsets_[100];
= { 100, };
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
fputs("--------------------------\n" fputs("--------------------------\n"
"INDEX TREE PRINT\n", stderr); "INDEX TREE PRINT\n", stderr);
...@@ -2489,9 +2491,9 @@ btr_index_rec_validate( ...@@ -2489,9 +2491,9 @@ btr_index_rec_validate(
ulint i; ulint i;
page_t* page; page_t* page;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] ulint offsets_[100];
= { 100, };
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
page = buf_frame_align(rec); page = buf_frame_align(rec);
......
...@@ -275,8 +275,9 @@ btr_cur_search_to_nth_level( ...@@ -275,8 +275,9 @@ btr_cur_search_to_nth_level(
btr_search_t* info; btr_search_t* info;
#endif #endif
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
/* Currently, PAGE_CUR_LE is the only search mode used for searches /* Currently, PAGE_CUR_LE is the only search mode used for searches
ending to upper levels */ ending to upper levels */
...@@ -578,8 +579,9 @@ btr_cur_open_at_index_side( ...@@ -578,8 +579,9 @@ btr_cur_open_at_index_side(
ulint estimate; ulint estimate;
ulint savepoint; ulint savepoint;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
estimate = latch_mode & BTR_ESTIMATE; estimate = latch_mode & BTR_ESTIMATE;
latch_mode = latch_mode & ~BTR_ESTIMATE; latch_mode = latch_mode & ~BTR_ESTIMATE;
...@@ -703,8 +705,9 @@ btr_cur_open_at_rnd_pos( ...@@ -703,8 +705,9 @@ btr_cur_open_at_rnd_pos(
ulint height; ulint height;
rec_t* node_ptr; rec_t* node_ptr;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
tree = index->tree; tree = index->tree;
...@@ -1252,7 +1255,9 @@ btr_cur_upd_lock_and_undo( ...@@ -1252,7 +1255,9 @@ btr_cur_upd_lock_and_undo(
if (!(flags & BTR_NO_LOCKING_FLAG)) { if (!(flags & BTR_NO_LOCKING_FLAG)) {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
err = lock_clust_rec_modify_check_and_lock(flags, rec, index, err = lock_clust_rec_modify_check_and_lock(flags, rec, index,
rec_get_offsets(rec, index, offsets_, rec_get_offsets(rec, index, offsets_,
ULINT_UNDEFINED, &heap), thr); ULINT_UNDEFINED, &heap), thr);
...@@ -1426,8 +1431,9 @@ btr_cur_update_in_place( ...@@ -1426,8 +1431,9 @@ btr_cur_update_in_place(
trx_t* trx; trx_t* trx;
ibool was_delete_marked; ibool was_delete_marked;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
rec = btr_cur_get_rec(cursor); rec = btr_cur_get_rec(cursor);
index = cursor->index; index = cursor->index;
...@@ -2065,7 +2071,9 @@ btr_cur_parse_del_mark_set_clust_rec( ...@@ -2065,7 +2071,9 @@ btr_cur_parse_del_mark_set_clust_rec(
if (!(flags & BTR_KEEP_SYS_FLAG)) { if (!(flags & BTR_KEEP_SYS_FLAG)) {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
row_upd_rec_sys_fields_in_recovery(rec, row_upd_rec_sys_fields_in_recovery(rec,
rec_get_offsets(rec, index, offsets_, rec_get_offsets(rec, index, offsets_,
ULINT_UNDEFINED, &heap), ULINT_UNDEFINED, &heap),
...@@ -2109,8 +2117,9 @@ btr_cur_del_mark_set_clust_rec( ...@@ -2109,8 +2117,9 @@ btr_cur_del_mark_set_clust_rec(
rec_t* rec; rec_t* rec;
trx_t* trx; trx_t* trx;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
rec = btr_cur_get_rec(cursor); rec = btr_cur_get_rec(cursor);
index = cursor->index; index = cursor->index;
...@@ -2399,9 +2408,10 @@ btr_cur_optimistic_delete( ...@@ -2399,9 +2408,10 @@ btr_cur_optimistic_delete(
ulint max_ins_size; ulint max_ins_size;
rec_t* rec; rec_t* rec;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
ibool no_compress_needed; ibool no_compress_needed;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(mtr_memo_contains(mtr, buf_block_align(btr_cur_get_page(cursor)), ut_ad(mtr_memo_contains(mtr, buf_block_align(btr_cur_get_page(cursor)),
MTR_MEMO_PAGE_X_FIX)); MTR_MEMO_PAGE_X_FIX));
...@@ -2803,10 +2813,12 @@ btr_estimate_number_of_different_key_vals( ...@@ -2803,10 +2813,12 @@ btr_estimate_number_of_different_key_vals(
ulint add_on; ulint add_on;
mtr_t mtr; mtr_t mtr;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets1_[100] = { 100, }; ulint offsets1_[100];
ulint offsets2_[100] = { 100, }; ulint offsets2_[100];
ulint* offsets1 = offsets1_; ulint* offsets1 = offsets1_;
ulint* offsets2 = offsets2_; ulint* offsets2 = offsets2_;
*offsets1_ = (sizeof offsets1_) / sizeof *offsets1_;
*offsets2_ = (sizeof offsets2_) / sizeof *offsets2_;
n_cols = dict_index_get_n_unique(index); n_cols = dict_index_get_n_unique(index);
......
...@@ -420,7 +420,8 @@ btr_search_update_hash_ref( ...@@ -420,7 +420,8 @@ btr_search_update_hash_ref(
&& (block->curr_n_bytes == info->n_bytes) && (block->curr_n_bytes == info->n_bytes)
&& (block->curr_side == info->side)) { && (block->curr_side == info->side)) {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
rec = btr_cur_get_rec(cursor); rec = btr_cur_get_rec(cursor);
...@@ -552,9 +553,10 @@ btr_search_check_guess( ...@@ -552,9 +553,10 @@ btr_search_check_guess(
ulint bytes; ulint bytes;
int cmp; int cmp;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
ibool success = FALSE; ibool success = FALSE;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
n_unique = dict_index_get_n_unique_in_tree(cursor->index); n_unique = dict_index_get_n_unique_in_tree(cursor->index);
...@@ -1098,8 +1100,9 @@ btr_search_build_page_hash_index( ...@@ -1098,8 +1100,9 @@ btr_search_build_page_hash_index(
rec_t** recs; rec_t** recs;
ulint i; ulint i;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(index); ut_ad(index);
...@@ -1341,8 +1344,9 @@ btr_search_update_hash_on_delete( ...@@ -1341,8 +1344,9 @@ btr_search_update_hash_on_delete(
ulint fold; ulint fold;
dulint tree_id; dulint tree_id;
ibool found; ibool found;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
rec = btr_cur_get_rec(cursor); rec = btr_cur_get_rec(cursor);
...@@ -1452,8 +1456,9 @@ btr_search_update_hash_on_insert( ...@@ -1452,8 +1456,9 @@ btr_search_update_hash_on_insert(
ulint side; ulint side;
ibool locked = FALSE; ibool locked = FALSE;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
table = btr_search_sys->hash_index; table = btr_search_sys->hash_index;
...@@ -1591,8 +1596,9 @@ btr_search_validate(void) ...@@ -1591,8 +1596,9 @@ btr_search_validate(void)
ibool ok = TRUE; ibool ok = TRUE;
ulint i; ulint i;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
rw_lock_x_lock(&btr_search_latch); rw_lock_x_lock(&btr_search_latch);
......
...@@ -4094,8 +4094,9 @@ lock_rec_print( ...@@ -4094,8 +4094,9 @@ lock_rec_print(
ulint i; ulint i;
mtr_t mtr; mtr_t mtr;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&kernel_mutex)); ut_ad(mutex_own(&kernel_mutex));
...@@ -4592,8 +4593,9 @@ lock_rec_validate_page( ...@@ -4592,8 +4593,9 @@ lock_rec_validate_page(
ulint i; ulint i;
mtr_t mtr; mtr_t mtr;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
ut_ad(!mutex_own(&kernel_mutex)); ut_ad(!mutex_own(&kernel_mutex));
...@@ -4841,9 +4843,11 @@ lock_rec_insert_check_and_lock( ...@@ -4841,9 +4843,11 @@ lock_rec_insert_check_and_lock(
#ifdef UNIV_DEBUG #ifdef UNIV_DEBUG
{ {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
const ulint* offsets = rec_get_offsets( const ulint* offsets;
next_rec, index, offsets_, *offsets_ = (sizeof offsets_) / sizeof *offsets_;
offsets = rec_get_offsets(next_rec, index, offsets_,
ULINT_UNDEFINED, &heap); ULINT_UNDEFINED, &heap);
ut_ad(lock_rec_queue_validate(next_rec, index, offsets)); ut_ad(lock_rec_queue_validate(next_rec, index, offsets));
if (heap) { if (heap) {
...@@ -4988,9 +4992,12 @@ lock_sec_rec_modify_check_and_lock( ...@@ -4988,9 +4992,12 @@ lock_sec_rec_modify_check_and_lock(
#ifdef UNIV_DEBUG #ifdef UNIV_DEBUG
{ {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
const ulint* offsets = rec_get_offsets( const ulint* offsets;
rec, index, offsets_, ULINT_UNDEFINED, &heap); *offsets_ = (sizeof offsets_) / sizeof *offsets_;
offsets = rec_get_offsets(rec, index, offsets_,
ULINT_UNDEFINED, &heap);
ut_ad(lock_rec_queue_validate(rec, index, offsets)); ut_ad(lock_rec_queue_validate(rec, index, offsets));
if (heap) { if (heap) {
mem_heap_free(heap); mem_heap_free(heap);
...@@ -5159,9 +5166,10 @@ lock_clust_rec_read_check_and_lock_alt( ...@@ -5159,9 +5166,10 @@ lock_clust_rec_read_check_and_lock_alt(
que_thr_t* thr) /* in: query thread */ que_thr_t* thr) /* in: query thread */
{ {
mem_heap_t* tmp_heap = NULL; mem_heap_t* tmp_heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
ulint ret; ulint ret;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
offsets = rec_get_offsets(rec, index, offsets, offsets = rec_get_offsets(rec, index, offsets,
ULINT_UNDEFINED, &tmp_heap); ULINT_UNDEFINED, &tmp_heap);
......
...@@ -59,8 +59,10 @@ page_cur_try_search_shortcut( ...@@ -59,8 +59,10 @@ page_cur_try_search_shortcut(
#endif #endif
ibool success = FALSE; ibool success = FALSE;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(dtuple_check_typed(tuple)); ut_ad(dtuple_check_typed(tuple));
rec = page_header_get_ptr(page, PAGE_LAST_INSERT); rec = page_header_get_ptr(page, PAGE_LAST_INSERT);
...@@ -229,8 +231,9 @@ page_cur_search_with_match( ...@@ -229,8 +231,9 @@ page_cur_search_with_match(
ulint dbg_matched_bytes; ulint dbg_matched_bytes;
#endif #endif
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(page && tuple && iup_matched_fields && iup_matched_bytes ut_ad(page && tuple && iup_matched_fields && iup_matched_bytes
&& ilow_matched_fields && ilow_matched_bytes && cursor); && ilow_matched_fields && ilow_matched_bytes && cursor);
...@@ -517,12 +520,15 @@ page_cur_insert_rec_write_log( ...@@ -517,12 +520,15 @@ page_cur_insert_rec_write_log(
{ {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint cur_offs_[100] = { 100, }; ulint cur_offs_[100];
ulint ins_offs_[100] = { 100, }; ulint ins_offs_[100];
ulint* cur_offs; ulint* cur_offs;
ulint* ins_offs; ulint* ins_offs;
*cur_offs_ = (sizeof cur_offs_) / sizeof *cur_offs_;
*ins_offs_ = (sizeof ins_offs_) / sizeof *ins_offs_;
cur_offs = rec_get_offsets(cursor_rec, index, cur_offs_, cur_offs = rec_get_offsets(cursor_rec, index, cur_offs_,
ULINT_UNDEFINED, &heap); ULINT_UNDEFINED, &heap);
ins_offs = rec_get_offsets(insert_rec, index, ins_offs_, ins_offs = rec_get_offsets(insert_rec, index, ins_offs_,
...@@ -671,8 +677,9 @@ page_cur_parse_insert_rec( ...@@ -671,8 +677,9 @@ page_cur_parse_insert_rec(
ulint info_and_status_bits = 0; /* remove warning */ ulint info_and_status_bits = 0; /* remove warning */
page_cur_t cursor; page_cur_t cursor;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
if (!is_short) { if (!is_short) {
/* Read the cursor rec offset as a 2-byte ulint */ /* Read the cursor rec offset as a 2-byte ulint */
...@@ -1079,8 +1086,9 @@ page_copy_rec_list_end_to_created_page( ...@@ -1079,8 +1086,9 @@ page_copy_rec_list_end_to_created_page(
ulint log_data_len; ulint log_data_len;
ibool comp = page_is_comp(page); ibool comp = page_is_comp(page);
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(page_dir_get_n_heap(new_page) == 2); ut_ad(page_dir_get_n_heap(new_page) == 2);
ut_ad(page != new_page); ut_ad(page != new_page);
...@@ -1268,8 +1276,9 @@ page_cur_parse_delete_rec( ...@@ -1268,8 +1276,9 @@ page_cur_parse_delete_rec(
if (page) { if (page) {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
rec_t* rec = page + offset; rec_t* rec = page + offset;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
page_cur_position(rec, &cursor); page_cur_position(rec, &cursor);
......
...@@ -232,8 +232,9 @@ page_mem_alloc( ...@@ -232,8 +232,9 @@ page_mem_alloc(
if (rec) { if (rec) {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
offsets = rec_get_offsets(rec, index, offsets, offsets = rec_get_offsets(rec, index, offsets,
ULINT_UNDEFINED, &heap); ULINT_UNDEFINED, &heap);
...@@ -466,8 +467,9 @@ page_copy_rec_list_end_no_locks( ...@@ -466,8 +467,9 @@ page_copy_rec_list_end_no_locks(
page_cur_t cur2; page_cur_t cur2;
rec_t* sup; rec_t* sup;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
page_cur_position(rec, &cur1); page_cur_position(rec, &cur1);
...@@ -566,8 +568,9 @@ page_copy_rec_list_start( ...@@ -566,8 +568,9 @@ page_copy_rec_list_start(
page_cur_t cur2; page_cur_t cur2;
rec_t* old_end; rec_t* old_end;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
page_cur_set_before_first(page, &cur1); page_cur_set_before_first(page, &cur1);
...@@ -747,8 +750,9 @@ page_delete_rec_list_end( ...@@ -747,8 +750,9 @@ page_delete_rec_list_end(
if ((size == ULINT_UNDEFINED) || (n_recs == ULINT_UNDEFINED)) { if ((size == ULINT_UNDEFINED) || (n_recs == ULINT_UNDEFINED)) {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
/* Calculate the sum of sizes and the number of records */ /* Calculate the sum of sizes and the number of records */
size = 0; size = 0;
n_recs = 0; n_recs = 0;
...@@ -831,10 +835,11 @@ page_delete_rec_list_start( ...@@ -831,10 +835,11 @@ page_delete_rec_list_start(
{ {
page_cur_t cur1; page_cur_t cur1;
ulint log_mode; ulint log_mode;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
byte type; byte type;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
if (index->table->comp) { if (index->table->comp) {
type = MLOG_COMP_LIST_START_DELETE; type = MLOG_COMP_LIST_START_DELETE;
...@@ -1326,8 +1331,9 @@ page_print_list( ...@@ -1326,8 +1331,9 @@ page_print_list(
ulint count; ulint count;
ulint n_recs; ulint n_recs;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_a(page_is_comp(page) == index->table->comp); ut_a(page_is_comp(page) == index->table->comp);
...@@ -1776,7 +1782,8 @@ page_validate( ...@@ -1776,7 +1782,8 @@ page_validate(
if (comp && page_rec_is_user_rec(rec) if (comp && page_rec_is_user_rec(rec)
&& rec_get_node_ptr_flag(rec) && rec_get_node_ptr_flag(rec)
== !btr_page_get_level_low(page)) { != (ibool)
(btr_page_get_level_low(page) != 0)) {
fputs("InnoDB: node_ptr flag mismatch\n", stderr); fputs("InnoDB: node_ptr flag mismatch\n", stderr);
goto func_exit; goto func_exit;
} }
......
...@@ -958,9 +958,11 @@ rec_convert_dtuple_to_rec( ...@@ -958,9 +958,11 @@ rec_convert_dtuple_to_rec(
#ifdef UNIV_DEBUG #ifdef UNIV_DEBUG
{ {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100 + REC_OFFS_HEADER_SIZE] ulint offsets_[100];
= { 100, }; const ulint* offsets;
const ulint* offsets = rec_get_offsets(rec, index, *offsets_ = (sizeof offsets_) / sizeof *offsets_;
offsets = rec_get_offsets(rec, index,
offsets_, ULINT_UNDEFINED, &heap); offsets_, ULINT_UNDEFINED, &heap);
ut_ad(rec_validate(rec, offsets)); ut_ad(rec_validate(rec, offsets));
if (heap) { if (heap) {
...@@ -989,9 +991,9 @@ rec_copy_prefix_to_dtuple( ...@@ -989,9 +991,9 @@ rec_copy_prefix_to_dtuple(
ulint len; ulint len;
byte* buf = NULL; byte* buf = NULL;
ulint i; ulint i;
ulint offsets_[100 + REC_OFFS_HEADER_SIZE] ulint offsets_[100];
= { 100, };
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
offsets = rec_get_offsets(rec, index, offsets, n_fields, &heap); offsets = rec_get_offsets(rec, index, offsets, n_fields, &heap);
...@@ -1405,8 +1407,9 @@ rec_print( ...@@ -1405,8 +1407,9 @@ rec_print(
return; return;
} else { } else {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100 + REC_OFFS_HEADER_SIZE] ulint offsets_[100];
= { 100, }; *offsets_ = (sizeof offsets_) / sizeof *offsets_;
rec_print_new(file, rec, rec_get_offsets(rec, index, offsets_, rec_print_new(file, rec, rec_get_offsets(rec, index, offsets_,
ULINT_UNDEFINED, &heap)); ULINT_UNDEFINED, &heap));
if (heap) { if (heap) {
......
...@@ -1134,8 +1134,9 @@ row_ins_check_foreign_constraint( ...@@ -1134,8 +1134,9 @@ row_ins_check_foreign_constraint(
mtr_t mtr; mtr_t mtr;
trx_t* trx = thr_get_trx(thr); trx_t* trx = thr_get_trx(thr);
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
run_again: run_again:
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
...@@ -1558,8 +1559,9 @@ row_ins_scan_sec_index_for_duplicate( ...@@ -1558,8 +1559,9 @@ row_ins_scan_sec_index_for_duplicate(
mtr_t mtr; mtr_t mtr;
trx_t* trx; trx_t* trx;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
n_unique = dict_index_get_n_unique(index); n_unique = dict_index_get_n_unique(index);
...@@ -1695,9 +1697,9 @@ row_ins_duplicate_error_in_clust( ...@@ -1695,9 +1697,9 @@ row_ins_duplicate_error_in_clust(
ulint n_unique; ulint n_unique;
trx_t* trx = thr_get_trx(thr); trx_t* trx = thr_get_trx(thr);
mem_heap_t*heap = NULL; mem_heap_t*heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
UT_NOT_USED(mtr); UT_NOT_USED(mtr);
...@@ -1897,9 +1899,10 @@ row_ins_index_entry_low( ...@@ -1897,9 +1899,10 @@ row_ins_index_entry_low(
big_rec_t* big_rec = NULL; big_rec_t* big_rec = NULL;
mtr_t mtr; mtr_t mtr;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
log_free_check(); log_free_check();
mtr_start(&mtr); mtr_start(&mtr);
......
...@@ -3673,8 +3673,9 @@ row_scan_and_check_index( ...@@ -3673,8 +3673,9 @@ row_scan_and_check_index(
ibool contains_null; ibool contains_null;
ulint i; ulint i;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
*n_rows = 0; *n_rows = 0;
......
...@@ -101,7 +101,8 @@ row_purge_remove_clust_if_poss_low( ...@@ -101,7 +101,8 @@ row_purge_remove_clust_if_poss_low(
mtr_t mtr; mtr_t mtr;
rec_t* rec; rec_t* rec;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
index = dict_table_get_first_index(node->table); index = dict_table_get_first_index(node->table);
......
...@@ -203,7 +203,8 @@ row_build( ...@@ -203,7 +203,8 @@ row_build(
byte* buf; byte* buf;
ulint i; ulint i;
mem_heap_t* tmp_heap = NULL; mem_heap_t* tmp_heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(index && rec && heap); ut_ad(index && rec && heap);
ut_ad(index->type & DICT_CLUSTERED); ut_ad(index->type & DICT_CLUSTERED);
...@@ -296,8 +297,9 @@ row_rec_to_index_entry( ...@@ -296,8 +297,9 @@ row_rec_to_index_entry(
ulint rec_len; ulint rec_len;
byte* buf; byte* buf;
mem_heap_t* tmp_heap = NULL; mem_heap_t* tmp_heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(rec && heap && index); ut_ad(rec && heap && index);
...@@ -377,8 +379,9 @@ row_build_row_ref( ...@@ -377,8 +379,9 @@ row_build_row_ref(
ulint clust_col_prefix_len; ulint clust_col_prefix_len;
ulint i; ulint i;
mem_heap_t* tmp_heap = NULL; mem_heap_t* tmp_heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(index && rec && heap); ut_ad(index && rec && heap);
...@@ -470,8 +473,9 @@ row_build_row_ref_in_tuple( ...@@ -470,8 +473,9 @@ row_build_row_ref_in_tuple(
ulint clust_col_prefix_len; ulint clust_col_prefix_len;
ulint i; ulint i;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_a(ref && index && rec); ut_a(ref && index && rec);
......
...@@ -79,14 +79,15 @@ row_sel_sec_rec_is_for_clust_rec( ...@@ -79,14 +79,15 @@ row_sel_sec_rec_is_for_clust_rec(
ulint i; ulint i;
dtype_t* cur_type; dtype_t* cur_type;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint clust_offsets_[100] ulint clust_offsets_[100];
= { 100, }; ulint sec_offsets_[10];
ulint sec_offsets_[10]
= { 10, };
ulint* clust_offs = clust_offsets_; ulint* clust_offs = clust_offsets_;
ulint* sec_offs = sec_offsets_; ulint* sec_offs = sec_offsets_;
ibool is_equal = TRUE; ibool is_equal = TRUE;
*clust_offsets_ = (sizeof clust_offsets_) / sizeof *clust_offsets_;
*sec_offsets_ = (sizeof sec_offsets_) / sizeof *sec_offsets_;
clust_offs = rec_get_offsets(clust_rec, clust_index, clust_offs, clust_offs = rec_get_offsets(clust_rec, clust_index, clust_offs,
ULINT_UNDEFINED, &heap); ULINT_UNDEFINED, &heap);
sec_offs = rec_get_offsets(sec_rec, sec_index, sec_offs, sec_offs = rec_get_offsets(sec_rec, sec_index, sec_offs,
...@@ -625,8 +626,9 @@ row_sel_get_clust_rec( ...@@ -625,8 +626,9 @@ row_sel_get_clust_rec(
rec_t* old_vers; rec_t* old_vers;
ulint err; ulint err;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
offsets = rec_get_offsets(rec, offsets = rec_get_offsets(rec,
btr_pcur_get_btr_cur(&plan->pcur)->index, btr_pcur_get_btr_cur(&plan->pcur)->index,
...@@ -990,9 +992,10 @@ row_sel_try_search_shortcut( ...@@ -990,9 +992,10 @@ row_sel_try_search_shortcut(
dict_index_t* index; dict_index_t* index;
rec_t* rec; rec_t* rec;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
ulint ret; ulint ret;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
index = plan->index; index = plan->index;
...@@ -1115,8 +1118,9 @@ row_sel( ...@@ -1115,8 +1118,9 @@ row_sel(
ulint found_flag; ulint found_flag;
ulint err; ulint err;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(thr->run_node == node); ut_ad(thr->run_node == node);
...@@ -3035,9 +3039,10 @@ row_search_for_mysql( ...@@ -3035,9 +3039,10 @@ row_search_for_mysql(
ulint next_offs; ulint next_offs;
mtr_t mtr; mtr_t mtr;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(index && pcur && search_tuple); ut_ad(index && pcur && search_tuple);
ut_ad(trx->mysql_thread_id == os_thread_get_curr_id()); ut_ad(trx->mysql_thread_id == os_thread_get_curr_id());
......
...@@ -152,8 +152,9 @@ row_undo_search_clust_to_pcur( ...@@ -152,8 +152,9 @@ row_undo_search_clust_to_pcur(
ibool ret; ibool ret;
rec_t* rec; rec_t* rec;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
mtr_start(&mtr); mtr_start(&mtr);
......
...@@ -706,8 +706,9 @@ row_upd_build_sec_rec_difference_binary( ...@@ -706,8 +706,9 @@ row_upd_build_sec_rec_difference_binary(
upd_t* update; upd_t* update;
ulint n_diff; ulint n_diff;
ulint i; ulint i;
ulint offsets_[10] = { 10, }; ulint offsets_[10];
const ulint* offsets; const ulint* offsets;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
/* This function is used only for a secondary index */ /* This function is used only for a secondary index */
ut_a(0 == (index->type & DICT_CLUSTERED)); ut_a(0 == (index->type & DICT_CLUSTERED));
...@@ -783,8 +784,9 @@ row_upd_build_difference_binary( ...@@ -783,8 +784,9 @@ row_upd_build_difference_binary(
ulint trx_id_pos; ulint trx_id_pos;
ibool extern_bit; ibool extern_bit;
ulint i; ulint i;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
const ulint* offsets; const ulint* offsets;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
/* This function is used only for a clustered index */ /* This function is used only for a clustered index */
ut_a(index->type & DICT_CLUSTERED); ut_a(index->type & DICT_CLUSTERED);
...@@ -1193,8 +1195,9 @@ row_upd_store_row( ...@@ -1193,8 +1195,9 @@ row_upd_store_row(
upd_t* update; upd_t* update;
rec_t* rec; rec_t* rec;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
const ulint* offsets; const ulint* offsets;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(node->pcur->latch_mode != BTR_NO_LATCHES); ut_ad(node->pcur->latch_mode != BTR_NO_LATCHES);
...@@ -1393,7 +1396,8 @@ row_upd_clust_rec_by_insert( ...@@ -1393,7 +1396,8 @@ row_upd_clust_rec_by_insert(
btr_cur = btr_pcur_get_btr_cur(pcur); btr_cur = btr_pcur_get_btr_cur(pcur);
if (node->state != UPD_NODE_INSERT_CLUSTERED) { if (node->state != UPD_NODE_INSERT_CLUSTERED) {
ulint offsets_[100] = { 100, }; ulint offsets_[100];
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
err = btr_cur_del_mark_set_clust_rec(BTR_NO_LOCKING_FLAG, err = btr_cur_del_mark_set_clust_rec(BTR_NO_LOCKING_FLAG,
btr_cur, TRUE, thr, mtr); btr_cur, TRUE, thr, mtr);
...@@ -1533,8 +1537,10 @@ row_upd_clust_rec( ...@@ -1533,8 +1537,10 @@ row_upd_clust_rec(
if (err == DB_SUCCESS && big_rec) { if (err == DB_SUCCESS && big_rec) {
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
rec_t* rec; rec_t* rec;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
mtr_start(mtr); mtr_start(mtr);
ut_a(btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, mtr)); ut_a(btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, mtr));
...@@ -1631,8 +1637,9 @@ row_upd_clust_step( ...@@ -1631,8 +1637,9 @@ row_upd_clust_step(
mtr_t mtr_buf; mtr_t mtr_buf;
rec_t* rec; rec_t* rec;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
const ulint* offsets; const ulint* offsets;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
index = dict_table_get_first_index(node->table); index = dict_table_get_first_index(node->table);
...@@ -1988,7 +1995,8 @@ row_upd_in_place_in_select( ...@@ -1988,7 +1995,8 @@ row_upd_in_place_in_select(
btr_cur_t* btr_cur; btr_cur_t* btr_cur;
ulint err; ulint err;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(sel_node->select_will_do_update); ut_ad(sel_node->select_will_do_update);
ut_ad(sel_node->latch_mode == BTR_MODIFY_LEAF); ut_ad(sel_node->latch_mode == BTR_MODIFY_LEAF);
......
...@@ -1016,8 +1016,9 @@ trx_undo_report_row_operation( ...@@ -1016,8 +1016,9 @@ trx_undo_report_row_operation(
trx_rseg_t* rseg; trx_rseg_t* rseg;
mtr_t mtr; mtr_t mtr;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[100] = { 100, }; ulint offsets_[100];
ulint* offsets = offsets_; ulint* offsets = offsets_;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_a(index->type & DICT_CLUSTERED); ut_a(index->type & DICT_CLUSTERED);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment