Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.2.2, 10.3.0, 10.4.0, 10.5.0
-
None
Description
As part of the SPATIAL INDEX implementation in InnoDB, dict_index_t was expanded by a rtr_ssn_t field. There are only 3 operations for this field, all protected by rtr_ssn_t::mutex:
- btr_cur_search_to_nth_level() stores the least significant 32 bits of the 64-bit value that is stored in the index root page. (This would better be done when the table is opened for the very first time.)
- rtr_get_new_ssn_id() increments the value by 1.
- rtr_get_current_ssn_id() reads the current value.
All these operations can be implemented equally safely by using atomic memory access operations. (Note: Race conditions do exist in the SPATIAL INDEX code, for example, MDEV-15274 and MDEV-15284.)
The mutex is being unnecessarily allocated not only for SPATIAL INDEX objects, but for all InnoDB dict_index_t objects.
Attachments
Issue Links
- blocks
-
MDEV-22456 Dropping the adaptive hash index may cause DDL to lock up InnoDB
- Closed