• unknown's avatar
    BUG#27732 "Possible memory leak with index_merge" · a1e83978
    unknown authored
    The bug was that handler::clone/handler::ha_open() call caused allocation of 
    cloned_copy->ref on the handler->table->mem_root. The allocated memory could not 
    be reclaimed until the table is flushed, so it was possible to exhaust memory by 
    repeatedly running index_merge queries without doing table flushes.  
    
    The fix:
    - make handler::clone() allocate new_handler->ref on the passed mem_root 
    - make handler::ha_open() not allocate this->ref if it has already been allocated
    There is no testcase as it is not possible to check small leaks from testsuite.
    
    
    sql/handler.cc:
      BUG#27732 "Possible memory leak with index_merge"
      - make handler::clone() allocate new_handler->ref on the passed mem_root 
      - make handler::ha_open() not allocate this->ref if it has already been allocated
    a1e83978
handler.cc 77.4 KB