summaryrefslogtreecommitdiff
path: root/innobase/btr
diff options
context:
space:
mode:
authorunknown <marko@hundin.mysql.fi>2005-03-09 22:04:55 +0200
committerunknown <marko@hundin.mysql.fi>2005-03-09 22:04:55 +0200
commitdb32810d02ca5cae3a5619d5008923a197425e84 (patch)
tree806419ee88dc7ceffd87a90fcca8906aaa409538 /innobase/btr
parentd1b3c64b230e35dccf33ac7bb70bdd52f779536b (diff)
downloadmariadb-git-db32810d02ca5cae3a5619d5008923a197425e84.tar.gz
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_[]
Diffstat (limited to 'innobase/btr')
-rw-r--r--innobase/btr/btr0btr.c14
-rw-r--r--innobase/btr/btr0cur.c32
-rw-r--r--innobase/btr/btr0sea.c18
3 files changed, 42 insertions, 22 deletions
diff --git a/innobase/btr/btr0btr.c b/innobase/btr/btr0btr.c
index 4fb930da50f..232d7f0f53b 100644
--- a/innobase/btr/btr0btr.c
+++ b/innobase/btr/btr0btr.c
@@ -567,8 +567,9 @@ btr_page_get_father_for_rec(
btr_cur_t cursor;
rec_t* node_ptr;
dict_index_t* index;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(mtr_memo_contains(mtr, dict_tree_get_lock(tree),
MTR_MEMO_X_LOCK));
@@ -2098,7 +2099,8 @@ btr_compress(
btr_node_ptr_delete(tree, page, mtr);
} else {
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
address of the merge page to the right */
@@ -2387,9 +2389,9 @@ btr_print_tree(
mtr_t mtr;
page_t* root;
mem_heap_t* heap = NULL;
- ulint offsets_[100]
- = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
fputs("--------------------------\n"
"INDEX TREE PRINT\n", stderr);
@@ -2489,9 +2491,9 @@ btr_index_rec_validate(
ulint i;
page_t* page;
mem_heap_t* heap = NULL;
- ulint offsets_[100]
- = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
page = buf_frame_align(rec);
diff --git a/innobase/btr/btr0cur.c b/innobase/btr/btr0cur.c
index 91ba47224ef..6279ac79d3a 100644
--- a/innobase/btr/btr0cur.c
+++ b/innobase/btr/btr0cur.c
@@ -275,8 +275,9 @@ btr_cur_search_to_nth_level(
btr_search_t* info;
#endif
mem_heap_t* heap = NULL;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
/* Currently, PAGE_CUR_LE is the only search mode used for searches
ending to upper levels */
@@ -578,8 +579,9 @@ btr_cur_open_at_index_side(
ulint estimate;
ulint savepoint;
mem_heap_t* heap = NULL;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
estimate = latch_mode & BTR_ESTIMATE;
latch_mode = latch_mode & ~BTR_ESTIMATE;
@@ -703,8 +705,9 @@ btr_cur_open_at_rnd_pos(
ulint height;
rec_t* node_ptr;
mem_heap_t* heap = NULL;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
tree = index->tree;
@@ -1252,7 +1255,9 @@ btr_cur_upd_lock_and_undo(
if (!(flags & BTR_NO_LOCKING_FLAG)) {
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,
rec_get_offsets(rec, index, offsets_,
ULINT_UNDEFINED, &heap), thr);
@@ -1426,8 +1431,9 @@ btr_cur_update_in_place(
trx_t* trx;
ibool was_delete_marked;
mem_heap_t* heap = NULL;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
rec = btr_cur_get_rec(cursor);
index = cursor->index;
@@ -2065,7 +2071,9 @@ btr_cur_parse_del_mark_set_clust_rec(
if (!(flags & BTR_KEEP_SYS_FLAG)) {
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,
rec_get_offsets(rec, index, offsets_,
ULINT_UNDEFINED, &heap),
@@ -2109,8 +2117,9 @@ btr_cur_del_mark_set_clust_rec(
rec_t* rec;
trx_t* trx;
mem_heap_t* heap = NULL;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
rec = btr_cur_get_rec(cursor);
index = cursor->index;
@@ -2399,9 +2408,10 @@ btr_cur_optimistic_delete(
ulint max_ins_size;
rec_t* rec;
mem_heap_t* heap = NULL;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
ibool no_compress_needed;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(mtr_memo_contains(mtr, buf_block_align(btr_cur_get_page(cursor)),
MTR_MEMO_PAGE_X_FIX));
@@ -2803,10 +2813,12 @@ btr_estimate_number_of_different_key_vals(
ulint add_on;
mtr_t mtr;
mem_heap_t* heap = NULL;
- ulint offsets1_[100] = { 100, };
- ulint offsets2_[100] = { 100, };
+ ulint offsets1_[100];
+ ulint offsets2_[100];
ulint* offsets1 = offsets1_;
ulint* offsets2 = offsets2_;
+ *offsets1_ = (sizeof offsets1_) / sizeof *offsets1_;
+ *offsets2_ = (sizeof offsets2_) / sizeof *offsets2_;
n_cols = dict_index_get_n_unique(index);
diff --git a/innobase/btr/btr0sea.c b/innobase/btr/btr0sea.c
index dc712f650e7..5f95937a2cb 100644
--- a/innobase/btr/btr0sea.c
+++ b/innobase/btr/btr0sea.c
@@ -420,7 +420,8 @@ btr_search_update_hash_ref(
&& (block->curr_n_bytes == info->n_bytes)
&& (block->curr_side == info->side)) {
mem_heap_t* heap = NULL;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
rec = btr_cur_get_rec(cursor);
@@ -552,9 +553,10 @@ btr_search_check_guess(
ulint bytes;
int cmp;
mem_heap_t* heap = NULL;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
ibool success = FALSE;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
n_unique = dict_index_get_n_unique_in_tree(cursor->index);
@@ -1098,8 +1100,9 @@ btr_search_build_page_hash_index(
rec_t** recs;
ulint i;
mem_heap_t* heap = NULL;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(index);
@@ -1341,8 +1344,9 @@ btr_search_update_hash_on_delete(
ulint fold;
dulint tree_id;
ibool found;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
mem_heap_t* heap = NULL;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
rec = btr_cur_get_rec(cursor);
@@ -1452,8 +1456,9 @@ btr_search_update_hash_on_insert(
ulint side;
ibool locked = FALSE;
mem_heap_t* heap = NULL;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
table = btr_search_sys->hash_index;
@@ -1591,8 +1596,9 @@ btr_search_validate(void)
ibool ok = TRUE;
ulint i;
mem_heap_t* heap = NULL;
- ulint offsets_[100] = { 100, };
+ ulint offsets_[100];
ulint* offsets = offsets_;
+ *offsets_ = (sizeof offsets_) / sizeof *offsets_;
rw_lock_x_lock(&btr_search_latch);