branches/zip: Simplify the locking of the data dictionary.
row_upd_index_is_referenced(), row_upd_check_references_constraints(), row_purge_parse_undo_rec(): Remove duplicated code that calls row_mysql_unfreeze_data_dictionary(). row_undo_ins_remove_clust_rec(): Assert that the data dictionary is X-latched. Do not attempt to re-latch the data dictionary, because doing so introduces race conditions. This re-latching was probably made unnecessary already in r1676, which keeps the data dictionary X-latched in ha_innobase::add_index() for the complete duration of the data dictionary operations. row_undo_ins_parse_undo_rec(): Do not attempt to acquire the data dictionary latch. The data dictionary should be already X-latched when a transaction that modifies system tables is rolled back. This also holds in the rollback during crash recovery: trx_rollback_active() will X-latch the data dictionary when needed.
Showing
Please register or sign in to comment