mirror of
https://github.com/MariaDB/server.git
synced 2026-05-07 07:35:32 +02:00
MDEV-14952 Avoid repeated calls to btr_get_search_latch()
btr_cur_search_to_nth_level(), btr_search_guess_on_hash(), btr_pcur_open_with_no_init_func(), row_sel_open_pcur(): Replace the parameter has_search_latch with the ahi_latch (passed as NULL if the caller does not hold the latch). btr_search_update_hash_node_on_insert(), btr_search_update_hash_on_insert(), btr_search_build_page_hash_index(): Add the parameter ahi_latch. btr_search_x_lock(), btr_search_x_unlock(), btr_search_s_lock(), btr_search_s_unlock(): Remove.
This commit is contained in:
parent
4beb699a36
commit
0664d633e4
9 changed files with 270 additions and 325 deletions
|
|
@ -1,7 +1,7 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1996, 2015, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2015, 2017, MariaDB Corporation.
|
||||
Copyright (c) 2015, 2018, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
|
|
@ -454,9 +454,12 @@ btr_pcur_open_low(
|
|||
|
||||
ut_ad(!dict_index_is_spatial(index));
|
||||
|
||||
err = btr_cur_search_to_nth_level(
|
||||
index, level, tuple, mode, latch_mode,
|
||||
btr_cursor, 0, file, line, mtr, autoinc);
|
||||
err = btr_cur_search_to_nth_level_func(
|
||||
index, level, tuple, mode, latch_mode, btr_cursor,
|
||||
#ifdef BTR_CUR_HASH_ADAPT
|
||||
NULL,
|
||||
#endif /* BTR_CUR_HASH_ADAPT */
|
||||
file, line, mtr, autoinc);
|
||||
|
||||
if (err != DB_SUCCESS) {
|
||||
ib::warn() << " Error code: " << err
|
||||
|
|
@ -491,15 +494,15 @@ btr_pcur_open_with_no_init_func(
|
|||
may end up on the previous page of the
|
||||
record! */
|
||||
ulint latch_mode,/*!< in: BTR_SEARCH_LEAF, ...;
|
||||
NOTE that if has_search_latch != 0 then
|
||||
we maybe do not acquire a latch on the cursor
|
||||
page, but assume that the caller uses his
|
||||
btr search latch to protect the record! */
|
||||
NOTE that if ahi_latch then we might not
|
||||
acquire a cursor page latch, but assume
|
||||
that the ahi_latch protects the record! */
|
||||
btr_pcur_t* cursor, /*!< in: memory buffer for persistent cursor */
|
||||
ulint has_search_latch,
|
||||
/*!< in: latch mode the caller
|
||||
currently has on search system:
|
||||
RW_S_LATCH, or 0 */
|
||||
#ifdef BTR_CUR_HASH_ADAPT
|
||||
rw_lock_t* ahi_latch,
|
||||
/*!< in: adaptive hash index latch held
|
||||
by the caller, or NULL if none */
|
||||
#endif /* BTR_CUR_HASH_ADAPT */
|
||||
const char* file, /*!< in: file name */
|
||||
unsigned line, /*!< in: line where called */
|
||||
mtr_t* mtr) /*!< in: mtr */
|
||||
|
|
@ -514,9 +517,12 @@ btr_pcur_open_with_no_init_func(
|
|||
|
||||
btr_cursor = btr_pcur_get_btr_cur(cursor);
|
||||
|
||||
err = btr_cur_search_to_nth_level(
|
||||
err = btr_cur_search_to_nth_level_func(
|
||||
index, 0, tuple, mode, latch_mode, btr_cursor,
|
||||
has_search_latch, file, line, mtr);
|
||||
#ifdef BTR_CUR_HASH_ADAPT
|
||||
ahi_latch,
|
||||
#endif /* BTR_CUR_HASH_ADAPT */
|
||||
file, line, mtr);
|
||||
|
||||
cursor->pos_state = BTR_PCUR_IS_POSITIONED;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue