22
33Copyright (c) 1994, 2016, Oracle and/or its affiliates. All Rights Reserved.
44Copyright (c) 2012, Facebook Inc.
5- Copyright (c) 2014, 2020 , MariaDB Corporation.
5+ Copyright (c) 2014, 2021 , MariaDB Corporation.
66
77This program is free software; you can redistribute it and/or modify it under
88the terms of the GNU General Public License as published by the Free Software
@@ -890,7 +890,7 @@ btr_page_get_father_node_ptr_func(
890890
891891node_ptr = btr_cur_get_rec (cursor);
892892
893- offsets = rec_get_offsets (node_ptr, index, offsets, false ,
893+ offsets = rec_get_offsets (node_ptr, index, offsets, 0 ,
894894 ULINT_UNDEFINED, &heap);
895895
896896if (btr_node_ptr_get_child_page_no (node_ptr, offsets) != page_no) {
@@ -907,10 +907,11 @@ btr_page_get_father_node_ptr_func(
907907print_rec = page_rec_get_next (
908908page_get_infimum_rec (page_align (user_rec)));
909909offsets = rec_get_offsets (print_rec, index, offsets,
910- page_rec_is_leaf (user_rec),
910+ page_rec_is_leaf (user_rec)
911+ ? index->n_core_fields : 0 ,
911912 ULINT_UNDEFINED, &heap);
912913page_rec_print (print_rec, offsets);
913- offsets = rec_get_offsets (node_ptr, index, offsets, false ,
914+ offsets = rec_get_offsets (node_ptr, index, offsets, 0 ,
914915 ULINT_UNDEFINED, &heap);
915916page_rec_print (node_ptr, offsets);
916917
@@ -2214,7 +2215,9 @@ btr_page_get_split_rec(
22142215incl_data += insert_size;
22152216} else {
22162217offsets = rec_get_offsets (rec, cursor->index , offsets,
2217- page_is_leaf (page),
2218+ page_is_leaf (page)
2219+ ? cursor->index ->n_core_fields
2220+ : 0 ,
22182221 ULINT_UNDEFINED, &heap);
22192222incl_data += rec_offs_size (offsets);
22202223}
@@ -2323,7 +2326,9 @@ btr_page_insert_fits(
23232326space after rec is removed from page. */
23242327
23252328*offsets = rec_get_offsets (rec, cursor->index , *offsets,
2326- page_is_leaf (page),
2329+ page_is_leaf (page)
2330+ ? cursor->index ->n_core_fields
2331+ : 0 ,
23272332 ULINT_UNDEFINED, heap);
23282333
23292334total_data -= rec_offs_size (*offsets);
@@ -2610,7 +2615,8 @@ btr_page_tuple_smaller(
26102615first_rec = page_cur_get_rec (&pcur);
26112616
26122617*offsets = rec_get_offsets (
2613- first_rec, cursor->index , *offsets, page_is_leaf (block->frame ),
2618+ first_rec, cursor->index , *offsets,
2619+ page_is_leaf (block->frame ) ? cursor->index ->n_core_fields : 0 ,
26142620n_uniq, heap);
26152621
26162622return (cmp_dtuple_rec (tuple, first_rec, *offsets) < 0 );
@@ -2894,7 +2900,9 @@ btr_page_split_and_insert(
28942900first_rec = move_limit = split_rec;
28952901
28962902*offsets = rec_get_offsets (split_rec, cursor->index , *offsets,
2897- page_is_leaf (page), n_uniq, heap);
2903+ page_is_leaf (page)
2904+ ? cursor->index ->n_core_fields : 0 ,
2905+ n_uniq, heap);
28982906
28992907insert_left = !tuple
29002908|| cmp_dtuple_rec (tuple, split_rec, *offsets) < 0 ;
@@ -3665,7 +3673,7 @@ btr_compress(
36653673rec_offs* offsets2 = NULL ;
36663674
36673675/* For rtree, we need to update father's mbr. */
3668- if (dict_index_is_spatial ( index)) {
3676+ if (index-> is_spatial ( )) {
36693677/* We only support merge pages with the same parent
36703678page */
36713679if (!rtr_check_same_block (
@@ -3683,7 +3691,8 @@ btr_compress(
36833691
36843692offsets2 = rec_get_offsets (
36853693btr_cur_get_rec (&cursor2), index, NULL ,
3686- page_is_leaf (cursor2.page_cur .block ->frame ),
3694+ page_is_leaf (cursor2.page_cur .block ->frame )
3695+ ? index->n_fields : 0 ,
36873696ULINT_UNDEFINED, &heap);
36883697
36893698/* Check if parent entry needs to be updated */
@@ -3857,13 +3866,14 @@ btr_compress(
38573866#endif /* UNIV_DEBUG */
38583867
38593868/* For rtree, we need to update father's mbr. */
3860- if (dict_index_is_spatial ( index)) {
3869+ if (index-> is_spatial ( )) {
38613870rec_offs* offsets2;
38623871ulint rec_info;
38633872
38643873offsets2 = rec_get_offsets (
38653874btr_cur_get_rec (&cursor2), index, NULL ,
3866- page_is_leaf (cursor2.page_cur .block ->frame ),
3875+ page_is_leaf (cursor2.page_cur .block ->frame )
3876+ ? index->n_fields : 0 ,
38673877ULINT_UNDEFINED, &heap);
38683878
38693879ut_ad (btr_node_ptr_get_child_page_no (
@@ -4341,7 +4351,7 @@ btr_print_recursive(
43414351node_ptr = page_cur_get_rec (&cursor);
43424352
43434353*offsets = rec_get_offsets (
4344- node_ptr, index, *offsets, false ,
4354+ node_ptr, index, *offsets, 0 ,
43454355ULINT_UNDEFINED, heap);
43464356btr_print_recursive (index,
43474357 btr_node_ptr_get_child (node_ptr,
@@ -4490,7 +4500,9 @@ btr_index_rec_validate(
44904500
44914501page = page_align (rec);
44924502
4493- if (dict_index_is_ibuf (index)) {
4503+ ut_ad (index->n_core_fields );
4504+
4505+ if (index->is_ibuf ()) {
44944506/* The insert buffer index tree can contain records from any
44954507other index: we cannot check the number of fields or
44964508their length */
@@ -4536,7 +4548,8 @@ btr_index_rec_validate(
45364548}
45374549}
45384550
4539- offsets = rec_get_offsets (rec, index, offsets, page_is_leaf (page),
4551+ offsets = rec_get_offsets (rec, index, offsets, page_is_leaf (page)
4552+ ? index->n_core_fields : 0 ,
45404553 ULINT_UNDEFINED, &heap);
45414554
45424555for (unsigned i = 0 ; i < index->n_fields ; i++) {
@@ -4792,7 +4805,7 @@ btr_validate_level(
47924805page_cur_move_to_next (&cursor);
47934806
47944807node_ptr = page_cur_get_rec (&cursor);
4795- offsets = rec_get_offsets (node_ptr, index, offsets, false ,
4808+ offsets = rec_get_offsets (node_ptr, index, offsets, 0 ,
47964809 ULINT_UNDEFINED, &heap);
47974810
47984811savepoint2 = mtr_set_savepoint (&mtr);
@@ -4916,10 +4929,12 @@ btr_validate_level(
49164929right_rec = page_rec_get_next (page_get_infimum_rec (
49174930 right_page));
49184931offsets = rec_get_offsets (rec, index, offsets,
4919- page_is_leaf (page),
4932+ page_is_leaf (page)
4933+ ? index->n_core_fields : 0 ,
49204934 ULINT_UNDEFINED, &heap);
49214935offsets2 = rec_get_offsets (right_rec, index, offsets2,
4922- page_is_leaf (right_page),
4936+ page_is_leaf (right_page)
4937+ ? index->n_core_fields : 0 ,
49234938 ULINT_UNDEFINED, &heap);
49244939
49254940/* For spatial index, we cannot guarantee the key ordering
0 commit comments