• Konstantin Osipov's avatar
    A new implementation for the TABLE_SHARE cache in MDL · 94174db1
    Konstantin Osipov authored
    subsystem. Fix a number of caveates that the previous
    implementation suffered from, including unprotected
    access to shared data and lax resource accounting
    (share->ref_count) that could lead to deadlocks.
    
    The new implementation still suffers from a number
    of potential deadlocks in some edge cases, and this is 
    still not enabled by default. Especially since performance
    testing has shown that it gives only marginable (not even 
    exceeding measuring accuracy) improvements.
    
    @todo: 
    - Remove calls to close_cached_tables() with REFRESH_FAST,
    and have_lock, because they break the MDL cache. 
    - rework FLUSH TABLES <list> to not use close_cached_tables()
    - make sure that whenever we set TABLE_SHARE::version to
    0 we free MDL cache references to it.
    94174db1
sql_base.cc 303 KB