1. 23 Sep, 2004 1 commit
    • unknown's avatar
      Implementation of Monty's idea about clear_alloc_root() optimization and cleanup of work · cf9e30b8
      unknown authored
      with memory roots in THD/Statement/Item_arena.
      Added assertions preventing memory allocation on bzero'ed MEM_ROOT since it is worked by 
      pure luck and was very ineffective.
      
      
      include/my_sys.h:
        Reimplementation of Monty's optimization of clear_alloc_root().
        Now clear_alloc_root() can be used only for detaching memory associated with MEM_ROOT
        (e.g. to avoid its freeing). It can not be used for MEM_ROOT initialization any longer 
        (it was bad idea anyway since memory allocation on such MEM_ROOT was very ineffective 
        and worked by pure luck).
        Introduced ALLOC_ROOT_MIN_BLOCK_SIZE constant.
      mysys/my_alloc.c:
        Added description of init_alloc_root().
        Added assertions to alloc_root() and reset_root_defaults() so now they can only be used
        on previosly initialized MEM_ROOT. (It worked for bzeroed MEM_ROOT before but 
        by pure luck and very inefficiently). Calling free_root() on bzero'ed MEM_ROOT
        is still ok (we can't remove this easily because of static MEM_ROOTs).
        Also now using ALLOC_ROOT_MIN_BLOCK_SIZE constant inside these functions.
      sql/opt_range.cc:
        Fixed get_quick_select_for_ref() function to not use bzero'ed MEM_ROOT for allocation.
        Also QUICK_RANGEs created in this function should be created in memory root of QUICK_SELECT.
      sql/sql_class.cc:
        Implementation of Monty's idea about clear_alloc_root() optimization and cleanup of work 
        with memory roots in THD/Statement/Item_arena.
        Now we are always initing THD::transaction.mem_root and THD::mem_root in THD constructor 
        (without memory allocation and with minimal block size) and then later change their
        parameters in THD::init_for_queries() (this is partially because we can't allocate anything
        on bzero'ed memory roots anymore).
        Item_arena() constructor is now trivial and is used only then Item_arena is created as backup
        storage for other Item_arena (we use Item_arena(bool) now if it is part of Statement).
        Both trivial Item_arena constructor and destructor are now inline.
        Removed unneeded clear_alloc_root from Item_arena::restore_backup_item_arena().
      sql/sql_class.h:
        Both trivial Item_arena constructor and destructor are now inline.
        Commented various Item_arena constructors.
      cf9e30b8
  2. 16 Sep, 2004 19 commits
  3. 15 Sep, 2004 20 commits