diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2021-01-04 15:30:34 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2021-01-04 15:30:34 +0200 |
commit | bd52f1a2dd1cb56c8bd9da9fc978f760b36ca701 (patch) | |
tree | 4af4b69e8943ce7fd5431e39904712cc099602ba /storage/innobase | |
parent | 3dabe637ca972d9139819848449f76867dd0f7ef (diff) | |
download | mariadb-git-bd52f1a2dd1cb56c8bd9da9fc978f760b36ca701.tar.gz |
Cleanup: Remove lock_number_of_rows_locked()
Let us access trx->lock.n_rec_locks directly.
Diffstat (limited to 'storage/innobase')
-rw-r--r-- | storage/innobase/include/lock0lock.h | 12 | ||||
-rw-r--r-- | storage/innobase/include/lock0priv.h | 8 | ||||
-rw-r--r-- | storage/innobase/include/lock0priv.ic | 5 | ||||
-rw-r--r-- | storage/innobase/include/trx0i_s.h | 4 | ||||
-rw-r--r-- | storage/innobase/include/trx0trx.h | 7 | ||||
-rw-r--r-- | storage/innobase/lock/lock0lock.cc | 19 | ||||
-rw-r--r-- | storage/innobase/row/row0ins.cc | 4 | ||||
-rw-r--r-- | storage/innobase/trx/trx0i_s.cc | 4 | ||||
-rw-r--r-- | storage/innobase/trx/trx0trx.cc | 6 |
9 files changed, 24 insertions, 45 deletions
diff --git a/storage/innobase/include/lock0lock.h b/storage/innobase/include/lock0lock.h index e197f383201..ac3e467708b 100644 --- a/storage/innobase/include/lock0lock.h +++ b/storage/innobase/include/lock0lock.h @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2020, MariaDB Corporation. +Copyright (c) 2017, 2021, 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 @@ -534,16 +534,6 @@ void lock_print_info_all_transactions( /*=============================*/ FILE* file); /*!< in: file where to print */ -/*********************************************************************//** -Return approximate number or record locks (bits set in the bitmap) for -this transaction. Since delete-marked records may be removed, the -record count will not be precise. -The caller must be holding lock_sys.mutex. */ -ulint -lock_number_of_rows_locked( -/*=======================*/ - const trx_lock_t* trx_lock) /*!< in: transaction locks */ - MY_ATTRIBUTE((warn_unused_result)); /*********************************************************************//** Return the number of table locks for a transaction. diff --git a/storage/innobase/include/lock0priv.h b/storage/innobase/include/lock0priv.h index aa1cb964e53..28b6fc463b7 100644 --- a/storage/innobase/include/lock0priv.h +++ b/storage/innobase/include/lock0priv.h @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2015, 2018, MariaDB Corporation. +Copyright (c) 2015, 2021, 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 @@ -515,6 +515,7 @@ lock_rec_set_nth_bit( @return previous value of the bit */ inline byte lock_rec_reset_nth_bit(lock_t* lock, ulint i) { + lock_sys.mutex_assert_locked(); ut_ad(lock_get_type_low(lock) == LOCK_REC); ut_ad(i < lock->un_member.rec_lock.n_bits); @@ -524,8 +525,9 @@ inline byte lock_rec_reset_nth_bit(lock_t* lock, ulint i) *b &= byte(~mask); if (bit != 0) { - ut_ad(lock->trx->lock.n_rec_locks > 0); - --lock->trx->lock.n_rec_locks; + ut_d(auto n=) + lock->trx->lock.n_rec_locks--; + ut_ad(n); } return(bit); diff --git a/storage/innobase/include/lock0priv.ic b/storage/innobase/include/lock0priv.ic index 23e84b15e95..3f9a01c0667 100644 --- a/storage/innobase/include/lock0priv.ic +++ b/storage/innobase/include/lock0priv.ic @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2007, 2014, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2018, 2020, MariaDB Corporation. +Copyright (c) 2018, 2021, 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 @@ -91,6 +91,7 @@ lock_rec_set_nth_bit( ulint byte_index; ulint bit_index; + lock_sys.mutex_assert_locked(); ut_ad(lock); ut_ad(lock_get_type_low(lock) == LOCK_REC); ut_ad(i < lock->un_member.rec_lock.n_bits); @@ -106,7 +107,7 @@ lock_rec_set_nth_bit( #if defined __GNUC__ && !defined __clang__ && __GNUC__ < 6 # pragma GCC diagnostic pop #endif - ++lock->trx->lock.n_rec_locks; + lock->trx->lock.n_rec_locks++; } /*********************************************************************//** diff --git a/storage/innobase/include/trx0i_s.h b/storage/innobase/include/trx0i_s.h index 98b84fe0985..0ce26106dd5 100644 --- a/storage/innobase/include/trx0i_s.h +++ b/storage/innobase/include/trx0i_s.h @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2007, 2015, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2020, MariaDB Corporation. +Copyright (c) 2017, 2021, 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 @@ -138,7 +138,7 @@ struct i_s_trx_row_t { ulint trx_lock_memory_bytes; /*!< mem_heap_get_size( trx->lock_heap) */ - ulint trx_rows_locked;/*!< lock_number_of_rows_locked() */ + ulint trx_rows_locked;/*!< trx_lock_t::n_rec_locks */ uintmax_t trx_rows_modified;/*!< trx_t::undo_no */ uint trx_isolation_level; /*!< trx_t::isolation_level */ diff --git a/storage/innobase/include/trx0trx.h b/storage/innobase/include/trx0trx.h index 2b06aa78c6e..b97cf6f1f3e 100644 --- a/storage/innobase/include/trx0trx.h +++ b/storage/innobase/include/trx0trx.h @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2015, 2020, MariaDB Corporation. +Copyright (c) 2015, 2021, 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 @@ -245,7 +245,7 @@ trx_print_low( /*!< in: max query length to print, or 0 to use the default max length */ ulint n_rec_locks, - /*!< in: lock_number_of_rows_locked(&trx->lock) */ + /*!< in: trx->lock.n_rec_locks */ ulint n_trx_locks, /*!< in: length of trx->lock.trx_locks */ ulint heap_size); @@ -560,7 +560,8 @@ struct trx_lock_t { mutex to prevent recursive deadlocks. Protected by both the lock sys mutex and the trx_t::mutex. */ - ulint n_rec_locks; /*!< number of rec locks in this trx */ + /** number of record locks; writes are protected by lock_sys.mutex */ + ulint n_rec_locks; }; /** Logical first modification time of a table in a transaction */ diff --git a/storage/innobase/lock/lock0lock.cc b/storage/innobase/lock/lock0lock.cc index 66644865309..1eaa562329f 100644 --- a/storage/innobase/lock/lock0lock.cc +++ b/storage/innobase/lock/lock0lock.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1996, 2017, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2014, 2020, MariaDB Corporation. +Copyright (c) 2014, 2021, 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 @@ -1158,21 +1158,6 @@ lock_sec_rec_some_has_impl( } /*********************************************************************//** -Return approximate number or record locks (bits set in the bitmap) for -this transaction. Since delete-marked records may be removed, the -record count will not be precise. -The caller must be holding lock_sys.mutex. */ -ulint -lock_number_of_rows_locked( -/*=======================*/ - const trx_lock_t* trx_lock) /*!< in: transaction locks */ -{ - lock_sys.mutex_assert_locked(); - - return(trx_lock->n_rec_locks); -} - -/*********************************************************************//** Return the number of table locks for a transaction. The caller must be holding lock_sys.mutex. */ ulint @@ -5940,7 +5925,7 @@ DeadlockChecker::print(const trx_t* trx, ulint max_query_len) { lock_sys.mutex_assert_locked(); - ulint n_rec_locks = lock_number_of_rows_locked(&trx->lock); + ulint n_rec_locks = trx->lock.n_rec_locks; ulint n_trx_locks = UT_LIST_GET_LEN(trx->lock.trx_locks); ulint heap_size = mem_heap_get_size(trx->lock.lock_heap); diff --git a/storage/innobase/row/row0ins.cc b/storage/innobase/row/row0ins.cc index 9835e6b0afe..a5aa3def93a 100644 --- a/storage/innobase/row/row0ins.cc +++ b/storage/innobase/row/row0ins.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2016, 2020, MariaDB Corporation. +Copyright (c) 2016, 2021, 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 @@ -705,7 +705,7 @@ row_ins_foreign_trx_print( ut_ad(!srv_read_only_mode); lock_sys.mutex_lock(); - n_rec_locks = lock_number_of_rows_locked(&trx->lock); + n_rec_locks = trx->lock.n_rec_locks; n_trx_locks = UT_LIST_GET_LEN(trx->lock.trx_locks); heap_size = mem_heap_get_size(trx->lock.lock_heap); lock_sys.mutex_unlock(); diff --git a/storage/innobase/trx/trx0i_s.cc b/storage/innobase/trx/trx0i_s.cc index f589e4f4f54..a24562211b6 100644 --- a/storage/innobase/trx/trx0i_s.cc +++ b/storage/innobase/trx/trx0i_s.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2007, 2015, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2020, MariaDB Corporation. +Copyright (c) 2017, 2021, 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 @@ -487,7 +487,7 @@ thd_done: row->trx_lock_memory_bytes = mem_heap_get_size(trx->lock.lock_heap); - row->trx_rows_locked = lock_number_of_rows_locked(&trx->lock); + row->trx_rows_locked = trx->lock.n_rec_locks; row->trx_rows_modified = trx->undo_no; diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc index 7ece8a40540..fb535991210 100644 --- a/storage/innobase/trx/trx0trx.cc +++ b/storage/innobase/trx/trx0trx.cc @@ -1761,7 +1761,7 @@ trx_print_low( /*!< in: max query length to print, or 0 to use the default max length */ ulint n_rec_locks, - /*!< in: lock_number_of_rows_locked(&trx->lock) */ + /*!< in: trx->lock.n_rec_locks */ ulint n_trx_locks, /*!< in: length of trx->lock.trx_locks */ ulint heap_size) @@ -1872,7 +1872,7 @@ trx_print_latched( lock_sys.mutex_assert_locked(); trx_print_low(f, trx, max_query_len, - lock_number_of_rows_locked(&trx->lock), + trx->lock.n_rec_locks, UT_LIST_GET_LEN(trx->lock.trx_locks), mem_heap_get_size(trx->lock.lock_heap)); } @@ -1893,7 +1893,7 @@ trx_print( ulint heap_size; lock_sys.mutex_lock(); - n_rec_locks = lock_number_of_rows_locked(&trx->lock); + n_rec_locks = trx->lock.n_rec_locks; n_trx_locks = UT_LIST_GET_LEN(trx->lock.trx_locks); heap_size = mem_heap_get_size(trx->lock.lock_heap); lock_sys.mutex_unlock(); |