• Dmitry Lenev's avatar
    Fix for bug #50908 "Assertion `handler_tables_hash.records == 0' · 0ec868ca
    Dmitry Lenev authored
    failed in enter_locked_tables_mode".
    
    Server was aborted due to assertion failure when one tried to 
    execute statement requiring prelocking (i.e. firing triggers
    or using stored functions) while having open HANDLERs.
    
    The problem was that THD::enter_locked_tables_mode() method
    which was called at the beginning of execution of prelocked 
    statement assumed there are no open HANDLERs. It had to do 
    so because corresponding THD::leave_locked_tables_mode()
    method was unable to properly restore MDL sentinel when
    leaving LOCK TABLES/prelocked mode in the presence of open 
    HANDLERs.
    
    This patch solves this problem by changing the latter method
    to properly restore MDL sentinel and thus removing need for 
    this assumption. As a side-effect, it lifts unjustified
    limitation by allowing to keep HANDLERs open when entering 
    LOCK TABLES mode.
    0ec868ca
sql_handler.cc 24.6 KB