• unknown's avatar
    BUG#18160 - Memory-/HEAP Table endless growing indexes · 4441e34e
    unknown authored
    Updating data in HEAP table with BTREE index results in wrong index_length
    counter value, which keeps growing after each update.
    
    When inserting new record into tree counter is incremented by:
    sizeof(TREE_ELEMENT) + key_size + tree->size_of_element
    But when deleting element from tree it doesn't decrement counter by key_size:
    sizeof(TREE_ELEMENT) + tree->size_of_element
    
    This fix makes accurate allocated memory counter for tree. That is
    decrease counter by key_size when deleting tree element.
    
    
    heap/hp_delete.c:
      Added size of the key to tree_delete() for accurate allocated memory counter.
    include/my_tree.h:
      Added size of the key to tree_delete() for accurate allocated memory counter.
    myisam/myisamlog.c:
      Added size of the key to tree_delete() for accurate allocated memory counter.
    mysql-test/r/heap_btree.result:
      Testcase for BUG#18160.
    mysql-test/t/heap_btree.test:
      Testcase for BUG#18160.
    mysys/tree.c:
      Added size of the key to tree_delete() for accurate allocated memory counter.
      Note that this size is optional. If one doesn't need precise counter it is safe
      to pass 0 as key_size.
    4441e34e
tree.c 19.2 KB