• Michael Widenius's avatar
    MDEV-5905: Creating tmp. memory table kills the server · ded448d1
    Michael Widenius authored
    The reason was that a couple of variables that hold number of rows that was used to calculate buffers was uint and caused an overflow.
    
    Fixed by changing variables that could hold number of rows from uint to ulong and also added a cast for this test.
    
    include/heap.h:
      Reorder to get better alignment. Changed variables that could hold number of rows from uint to ulong
    mysql-test/suite/heap/heap.result:
      Added test case
    mysql-test/suite/heap/heap.test:
      Added test case
    mysql-test/suite/plugins/t/server_audit.test:
      Added sleep as we want to have disconnect logged before we try a new connect
    storage/heap/ha_heap.cc:
      Changed variables that could hold number of rows from uint to ulong
      Limit number of rows to 4G  (as most of the variables that holds rows are ulong anyway)
      reset records_changed when key_stat_version is changed to not cause increments for every row changed
    storage/heap/ha_heap.h:
      changed records_changed to ulong as this can get big
    storage/heap/hp_create.c:
      Changed variables that could hold number of rows from uint to ulong
      Added cast (fixed the original bug)
    storage/heap/hp_delete.c:
      Changed variables that could hold number of rows from uint to ulong
    storage/heap/hp_open.c:
      Removed not needed cast
    storage/heap/hp_write.c:
      Changed variables that could hold number of rows from uint to ulong
    support-files/compiler_warnings.supp:
      Removed extra : from supression
    ded448d1
hp_open.c 3.89 KB