Skip to content

Commit 954049e

Browse files
authored
insert fail error update
1 parent ea4b947 commit 954049e

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

mysql-5.6.26/storage/innobase/btr/btr0btr.cc

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3053,7 +3053,7 @@ btr_page_redistribute_before_split(
30533053
}
30543054
n_uniq = dict_index_get_n_unique_in_tree(cursor->index);
30553055

3056-
//btr_page_redistribute_before_split: 0. get ready
3056+
//0. get cur page, neigbor page info
30573057
block = btr_cur_get_block(cursor);
30583058
page = btr_cur_get_page(cursor);
30593059
index = btr_cur_get_index(cursor);
@@ -3121,7 +3121,7 @@ btr_page_redistribute_before_split(
31213121

31223122
ulint* offsets1;
31233123

3124-
//choose the merge page
3124+
//1. choose the merge page
31253125

31263126
if((page_get_data_size(page)<=page_get_data_size(left_page)) && (page_get_data_size(page)<= page_get_data_size(right_page))){
31273127
//neighbor page has more data than cur page
@@ -3158,8 +3158,7 @@ btr_page_redistribute_before_split(
31583158

31593159
btr_page_reorganize(&next_page_cursor, cursor->index, mtr);
31603160
btr_page_reorganize(&page_cursor, cursor->index, mtr);
3161-
//ib_logf(IB_LOG_LEVEL_INFO, "first rec: %lu, last rec: %lu, last rec of right page: %lu, first rec of right page: %lu", page_rec_get_next(page_get_infimum_rec(page)), page_rec_get_prev(page_get_supremum_rec(page)), page_rec_get_prev(page_get_supremum_rec(right_page)), page_rec_get_next(page_get_infimum_rec(right_page)));
3162-
3161+
31633162
is_left = FALSE;
31643163
max_data_size_to_move = dict_index_zip_pad_optimal_page_size(index) - page_get_data_size(right_page);
31653164
n_moving_recs = page_get_n_recs(page) - (page_get_n_recs(right_page)+ page_get_n_recs(page))/2;
@@ -3400,7 +3399,6 @@ btr_page_redistribute_before_split(
34003399

34013400
}
34023401

3403-
//btr_page_redistribute_before_split:
34043402
//2. move records to the merge page.
34053403
if (is_left) {
34063404
//move record list to left page
@@ -3410,6 +3408,7 @@ btr_page_redistribute_before_split(
34103408
index, mtr);
34113409

34123410
if (!orig_pred) {
3411+
//if this happens, mysql crash might occur
34133412
if (zip_size && page_is_leaf(page) && !dict_index_is_clust(cursor->index)) {
34143413
ibuf_reset_free_bits(merge_block);
34153414
ibuf_reset_free_bits(block);
@@ -3441,7 +3440,8 @@ btr_page_redistribute_before_split(
34413440
if (!orig_succ) {
34423441
ut_a(merge_page_zip);
34433442

3444-
//ib_logf(IB_LOG_LEVEL_INFO, "redistribute : move record list to right page failed");
3443+
//redistribute : move record list to right page failed
3444+
//if this happens, mysql crash might occur
34453445
if (zip_size&& page_is_leaf(page) && !dict_index_is_clust(cursor->index)) {
34463446
ibuf_reset_free_bits(merge_block);
34473447
ibuf_reset_free_bits(block);
@@ -3465,6 +3465,8 @@ btr_page_redistribute_before_split(
34653465
ut_a(!merge_page_zip || page_zip_validate(merge_page_zip, merge_page,
34663466
index));
34673467
#endif /* UNIV_ZIP_DEBUG */
3468+
3469+
//5. insert cur record to redistributed page
34683470

34693471
if(insert_to_cur_page){
34703472
ut_a(insert_block == block);
@@ -3540,13 +3542,13 @@ btr_page_redistribute_before_split(
35403542
ut_ad(btr_check_node_ptr(index, right_page_block, mtr));
35413543
ut_ad(btr_check_node_ptr(index, block, mtr));
35423544

3543-
//5. insert cur record to redistributed page
3545+
35443546

35453547

35463548

3547-
//7. update insert buffer bitmap
3549+
//7. update insert buffer bitmap
35483550

3549-
if (!dict_index_is_clust(cursor->index) && page_is_leaf(merge_page)) {
3551+
if (!dict_index_is_clust(cursor->index) && page_is_leaf(merge_page)) {
35503552
/* Update the free bits of the B-tree page in the
35513553
insert buffer bitmap. This has to be done in a
35523554
separate mini-transaction that is committed before the
@@ -3586,28 +3588,26 @@ btr_page_redistribute_before_split(
35863588

35873589
}
35883590

3589-
}
3591+
}
35903592

3591-
ut_a(page_validate(merge_page, index));
3592-
ut_a(page_validate(page, index));
3593-
3594-
btr_assert_not_corrupted(block, index);
3595-
btr_assert_not_corrupted(left_page_block, index);
3596-
btr_assert_not_corrupted(right_page_block, index);
3593+
ut_a(page_validate(merge_page, index));
3594+
ut_a(page_validate(page, index));
35973595

3598-
if (rec != NULL) {
3599-
ut_ad(rec_offs_validate(rec, cursor->index, *rec_offsets));
3600-
return(rec);
3601-
}
3602-
else{
3596+
btr_assert_not_corrupted(block, index);
3597+
btr_assert_not_corrupted(left_page_block, index);
3598+
btr_assert_not_corrupted(right_page_block, index);
36033599

3600+
if (rec != NULL) {
3601+
ut_ad(rec_offs_validate(rec, cursor->index, *rec_offsets));
3602+
return(rec);
3603+
}else{
36043604
if (zip_size&& page_is_leaf(page) && !dict_index_is_clust(cursor->index)) {
36053605
ibuf_reset_free_bits(merge_block);
36063606
ibuf_reset_free_bits(block);
36073607
}
36083608
//data redistribution failed
36093609
goto err_exit;
3610-
}
3610+
}
36113611

36123612
err_exit:
36133613
btr_cur_position(

0 commit comments

Comments
 (0)