• unknown's avatar
    Added support for 'internal temporary tables' in HEAP tables. · 08dd5dcf
    unknown authored
    Now we don't take any mutexes when creating or dropping internal HEAP tables during SELECT.
    Change buffer sizes to size_t to make keycache 64 bit safe on platforms where sizeof(ulong) != sizeof(size_t)
    
    
    BitKeeper/etc/ignore:
      added support-files/mysqld_multi.server
    include/heap.h:
      Added 'internal_table' to HP_CREATE_INFO
    include/keycache.h:
      Change buffer sizes to size_t to make keycache 64 bit safe
    include/my_base.h:
      Added HA_OPEN_INTERNAL_TABLE to mark temporary tables that should be deleted on close
    mysys/mf_keycache.c:
      Change buffer sizes to size_t to make keycache 64 bit safe
    sql/sql_select.cc:
      Added HA_OPEN_INTERNAL_TABLE to mark temporary tables that should be deleted on close
      Removed not anymore needed call to delete_table()
    storage/heap/ha_heap.cc:
      Added support for internal temporary tables that should be deleted on close.
      Internal tables now use dedicated open and close calls to avoid taking mutexes.
      If heap_open() failes, now delete the newly created table. (This fixes a possible memory leak)
      Remove never executed info() in create()
    storage/heap/ha_heap.h:
      Added slots needed to handle internal temporary tables
    storage/heap/heapdef.h:
      Protect against C++ inclusion
    storage/heap/hp_close.c:
      Don't call list_delete() for internal temporary tables (They are not in the list)
    storage/heap/hp_create.c:
      Added HP_SHARE ** element to heap_create() to store the SHARE of the newly created table.
      For internal temporary tables: Don't take any mutex and don't put them into the open table list.
    storage/heap/hp_open.c:
      Split heap_open() into sub functions to be able to create internal temporary tables without putting them in the heap_share_list.
      Add faster open() functions for when we already know the 'share'.
    storage/heap/hp_test1.c:
      Update call to heap_create()
      Initialize all keyinfo members.
    storage/heap/hp_test2.c:
      Update call to heap_create()
    08dd5dcf
hp_test2.c 17.3 KB