• Marko Mäkelä's avatar
    Remove trx_t::has_search_latch and simplify debug code · 50faeda4
    Marko Mäkelä authored
    When the btr_search_latch was split into an array of latches
    in MySQL 5.7.8 as part of the Oracle Bug#20985298 fix, the "caching"
    of the latch across storage engine API calls was removed, and
    the field trx->has_search_latch would only be set during a short
    time frame in the execution of row_search_mvcc(), which was
    formerly called row_search_for_mysql().
    
    This means that the column
    INFORMATION_SCHEMA.INNODB_TRX.TRX_ADAPTIVE_HASH_LATCHED will always
    report 0. That column cannot be removed in MariaDB 10.2, but it
    can be removed in future releases.
    
    trx_t::has_search_latch: Remove.
    
    trx_assert_no_search_latch(): Remove.
    
    row_sel_try_search_shortcut_for_mysql(): Remove a redundant condition
    on trx->has_search_latch (it was always true).
    
    sync_check_iterate(): Make the parameter const.
    
    sync_check_functor_t: Make the operator() const, and remove result()
    and the virtual destructor. There is no need to have mutable state
    in the functors.
    
    sync_checker<bool>: Replaces dict_sync_check and btrsea_sync_check.
    
    sync_check: Replaces btrsea_sync_check.
    
    dict_sync_check: Instantiated from sync_checker.
    
    sync_allowed_latches: Use std::find() directly on the array.
    Remove the std::vector.
    
    TrxInInnoDB::enter(), TrxInInnoDB::exit(): Remove obviously redundant
    debug assertions on trx->in_depth, and use equality comparison against 0
    because it could be more efficient on some architectures.
    50faeda4
ha_innopart.cc 114 KB