btr0sea.c:

  Backport from 4.0: fix bug in adaptive hash index search
parent 91ba1345
...@@ -470,6 +470,7 @@ btr_search_check_guess( ...@@ -470,6 +470,7 @@ btr_search_check_guess(
/*===================*/ /*===================*/
/* out: TRUE if success */ /* out: TRUE if success */
btr_cur_t* cursor, /* in: guessed cursor position */ btr_cur_t* cursor, /* in: guessed cursor position */
ibool can_only_compare_to_cursor_rec,
dtuple_t* tuple, /* in: data tuple */ dtuple_t* tuple, /* in: data tuple */
ulint mode, /* in: PAGE_CUR_L, PAGE_CUR_LE, PAGE_CUR_G, ulint mode, /* in: PAGE_CUR_L, PAGE_CUR_LE, PAGE_CUR_G,
or PAGE_CUR_GE */ or PAGE_CUR_GE */
...@@ -528,6 +529,10 @@ btr_search_check_guess( ...@@ -528,6 +529,10 @@ btr_search_check_guess(
} }
} }
if (can_only_compare_to_cursor_rec) {
return(FALSE);
}
match = 0; match = 0;
bytes = 0; bytes = 0;
...@@ -632,6 +637,7 @@ btr_search_guess_on_hash( ...@@ -632,6 +637,7 @@ btr_search_guess_on_hash(
ulint fold; ulint fold;
ulint tuple_n_fields; ulint tuple_n_fields;
dulint tree_id; dulint tree_id;
ibool can_only_compare_to_cursor_rec = TRUE;
#ifdef notdefined #ifdef notdefined
btr_cur_t cursor2; btr_cur_t cursor2;
btr_pcur_t pcur; btr_pcur_t pcur;
...@@ -706,6 +712,8 @@ btr_search_guess_on_hash( ...@@ -706,6 +712,8 @@ btr_search_guess_on_hash(
goto failure; goto failure;
} }
can_only_compare_to_cursor_rec = FALSE;
buf_page_dbg_add_level(page, SYNC_TREE_NODE_FROM_HASH); buf_page_dbg_add_level(page, SYNC_TREE_NODE_FROM_HASH);
} }
...@@ -737,7 +745,9 @@ btr_search_guess_on_hash( ...@@ -737,7 +745,9 @@ btr_search_guess_on_hash(
fold); fold);
*/ */
} else { } else {
success = btr_search_check_guess(cursor, tuple, mode, mtr); success = btr_search_check_guess(cursor,
can_only_compare_to_cursor_rec,
tuple, mode, mtr);
} }
if (!success) { if (!success) {
......
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