An error occurred fetching the project authors.
  1. 17 Dec, 2008 1 commit
  2. 21 Nov, 2008 2 commits
  3. 19 Nov, 2008 1 commit
  4. 09 Oct, 2008 1 commit
    • marko's avatar
      branches/zip: Merge revisions 2722:2744 from branches/5.1: · c5f2c51d
      marko authored
        ------------------------------------------------------------------------
        r2742 | inaam | 2008-10-08 22:02:15 +0300 (Wed, 08 Oct 2008) | 11 lines
      
        branches/5.1:
      
        Fix Bug#39939 DROP TABLE/DISCARD TABLESPACE takes long time in
        buf_LRU_invalidate_tablespace()
      
        Improve implementation of buf_LRU_invalidate_tablespace by attempting
        hash index drop in batches instead of doing it one by one.
      
        Reviewed by: Heikki, Sunny, Marko
        Approved by: Heikki
        ------------------------------------------------------------------------
        r2744 | marko | 2008-10-09 10:53:09 +0300 (Thu, 09 Oct 2008) | 5 lines
      
        branches/5.1: ha_innobase::delete_all_rows(): In response to a user asking
        <http://forums.innodb.com/read.php?4,215,215> why DELETE FROM t is not
        mapped to TRUNCATE TABLE t as it is in MyISAM, note in a comment that
        DELETE is transactional while TRUNCATE is not.
        ------------------------------------------------------------------------
      c5f2c51d
  5. 18 Sep, 2008 1 commit
  6. 22 Aug, 2008 1 commit
  7. 18 Aug, 2008 2 commits
    • marko's avatar
      branches/zip: Introduce UNIV_LRU_DEBUG for debugging the LRU buffer pool · 3d3bd987
      marko authored
      cache, especially buf_pool->LRU_old and bpage->old.
      
      buf_LRU_old_adjust_len(), buf_LRU_remove_block(): Check that blocks in
      buf_pool->LRU_old have the "old" flag set and the blocks preceding
      buf_pool->LRU_old have the "old" flag clear.
      
      buf_LRU_add_block_low(), buf_relocate(): Check that buf_pool->LRU_old
      is the first block in the LRU list whose "old" flag is set.
      
      buf_LRU_free_block(): When replacing a control block in the LRU list
      with a control block for a compressed page, assert that the "old"
      flags in the neighboring LRU list entries grow monotonically.
      
      buf_page_set_old(): Assert that the "old" flags in the neighboring LRU
      list entries grow monotonically.
      3d3bd987
    • marko's avatar
      branches/zip: buf_page_set_old(): Add the assertion ut_ad(bpage->in_LRU_list). · 81ec8249
      marko authored
      Adjust the callers where necessary:
      buf_LRU_add_block_to_end_low() and buf_LRU_add_block_low().
      81ec8249
  8. 08 Aug, 2008 1 commit
    • marko's avatar
      branches/zip: buf_LRU_free_block(): When buf_page_is_old(b), we incremented · c976021e
      marko authored
      buf_pool->LRU_old_len.  However, we forgot to check if buf_pool->LRU_old
      happens to point to b's successor in the LRU list.  If it does, we must
      assign buf_pool->LRU_old = b.  The following invariants hold:
      
      In the LRU list, the "old" flag should grow monotonically, i.e., it is 0
      for the first few items and 1 from thereafter.
      
      If buf_pool->LRU_old != NULL, it must point to the first item with old=1
      in the LRU list, and there must be buf_pool->LRU_old_len old items in the list.
      
      This should fix Mantis issue#50 and issue#68.
      c976021e
  9. 06 Aug, 2008 2 commits
  10. 04 Aug, 2008 1 commit
  11. 03 Mar, 2008 1 commit
    • marko's avatar
      branches/zip: Improve the LRU algorithm with a separate unzip_LRU list of · 7c119c95
      marko authored
      blocks that contains uncompressed and compressed frames.  This patch was
      designed by Heikki and Inaam, implemented by Inaam, and refined and reviewed
      by Marko and Sunny.
      
      buf_buddy_n_frames, buf_buddy_min_n_frames, buf_buddy_max_n_frames: Remove.
      
      buf_page_belongs_to_unzip_LRU(): New predicate:
      bpage->zip.data && buf_page_get_state(bpage) == BUF_BLOCK_FILE_PAGE.
      
      buf_pool_t, buf_block_t: Add the linked list unzip_LRU.  A block in the
      regular LRU list is in unzip_LRU iff buf_page_belongs_to_unzip_LRU() holds.
      
      buf_LRU_free_block(): Add a third return value to refine the case
      "cannot free the block".
      
      buf_LRU_search_and_free_block(): Update the documentation to reflect the
      implementation.
      
      buf_LRU_stat_t, buf_LRU_stat_cur, buf_LRU_stat_sum, buf_LRU_stat_arr[]:
      Statistics for the unzip_LRU algorithm.
      
      buf_LRU_stat_update(): New function: Update the statistics.  Called once
      per second by srv_error_monitor_thread().
      
      buf_LRU_validate(): Validate the unzip_LRU list as well.
      
      buf_LRU_evict_from_unzip_LRU(): New predicate: Use the unzip_LRU before
      falling back to the regular LRU?
      
      buf_LRU_free_from_unzip_LRU_list(), buf_LRU_free_from_common_LRU_list():
      Subfunctions of buf_LRU_search_and_free_block().
      
      buf_LRU_search_and_free_block(): Reimplement.  Try to evict an uncompressed
      page from the unzip_LRU list before falling back to evicting an entire block
      from the common LRU list.
      
      buf_unzip_LRU_remove_block_if_needed(): New function.
      
      buf_unzip_LRU_add_block(): New function: Add a block to the unzip_LRU list.
      7c119c95
  12. 18 Feb, 2008 1 commit
    • marko's avatar
      branches/zip: Minor fixes. · da54bec7
      marko authored
      buf_LRU_old_adjust_len(): Replace a constant ut_ad() with a preprocessor check.
      
      buf_LRU_free_block(): Remove the check for the unlikely case
      buf_pool->LRU_old == prev_b in order to simplify the function.
      The check was implemented as part of r2306.
      da54bec7
  13. 16 Feb, 2008 1 commit
  14. 15 Feb, 2008 1 commit
    • marko's avatar
      branches/zip: buf0lru.c: Minor cleanup. · 17127565
      marko authored
      Use ut_d() in assignments to bpage->in_LRU_list instead of #ifdef UNIV_DEBUG.
      
      buf_LRU_remove_block(): Move an assertion to a more appropriate place.
      17127565
  15. 06 Feb, 2008 1 commit
    • marko's avatar
      branches/zip: Introduce UNIV_INTERN, a linkage specifier for InnoDB-global · 1d1dc31a
      marko authored
      symbols.  Use it for all definitions of non-static variables and functions.
      
      lexyy.c, make_flex.sh: Declare yylex as UNIV_INTERN, not static.  It is
      referenced from pars0grm.c.
      
      Actually, according to
      	nm .libs/ha_innodb.so|grep -w '[ABCE-TVXYZ]'
      the following symbols are still global:
      
      * The vtable for class ha_innodb
      * pars0grm.c: The function yyparse() and the variables yychar, yylval, yynerrs
      
      The required changes to the Bison-generated file pars0grm.c will be addressed
      in a separate commit, which will add a script similar to make_flex.sh.
      
      The class ha_innodb is renamed from class ha_innobase by a #define.  Thus,
      there will be no clash with the builtin InnoDB.  However, there will be some
      overhead for invoking virtual methods of class ha_innodb.  Ideas for making
      the vtable hidden are welcome.  -fvisibility=hidden is not available in GCC 3.
      1d1dc31a
  16. 24 Jan, 2008 1 commit
  17. 10 Jan, 2008 3 commits
    • marko's avatar
      branches/zip: buf_LRU_search_and_free_block(): Do not forbid the release · 0d025934
      marko authored
      of the buffer pool mutex.  Apparently, it is temporarily released also
      in older versions of MySQL/InnoDB for the duration of the
      btr_search_drop_page_hash_index() call [in buf_LRU_free_block()].
      0d025934
    • marko's avatar
      branches/zip: Add instrumentation for prohibiting the release of · 7ac6a343
      marko authored
      the buffer pool mutex.  The instrumentation can be activated by
      defining UNIV_DEBUG or UNIV_BUF_DEBUG at compilation time.
      
      buf_pool_mutex_exit_forbidden: New variable.  When this is nonzero,
      an assertion will fail in buf_pool_mutex_exit().
      
      buf_pool_mutex_exit_forbid(): Macro for declaring that the buffer pool
      mutex must not be released.  Calls may be nested.
      
      buf_pool_mutex_exit_allow(): Macro for declaring that the buffer pool
      mutex may be released.  Calls may be nested.
      
      buf_LRU_search_and_free_block(): Prohibit buf_pool_mutex_exit() in the
      scope of the function.
      
      buf_LRU_free_block(): Prohibit buf_pool_mutex_exit() in buf_buddy_alloc()
      and buf_buddy_free().
      
      buf_LRU_block_remove_hashed_page(): Prohibit buf_pool_mutex_exit()
      in buf_buddy_free().
      7ac6a343
    • marko's avatar
      branches/zip: Implement wrappers for all operations on the buffer pool mutex. · cdb5b464
      marko authored
      buf_pool->mutex: Rename to buf_pool_mutex, so that the wrappers will have
      to be used when changes are merged from other source trees.
      
      buf_pool->zip_mutex: Rename to buf_pool_zip_mutex.
      
      buf_pool_mutex_own(), buf_pool_mutex_enter(), buf_pool_mutex_exit():
      Wrappers for buf_pool_mutex.
      cdb5b464
  18. 10 Dec, 2007 1 commit
  19. 31 Oct, 2007 1 commit
  20. 30 Oct, 2007 1 commit
    • marko's avatar
      branches/zip: Improve Valgrind instrumentation. · 902893c7
      marko authored
      buf_LRU_free_block(): Check that the block descriptor contains valid data.
      
      buf_buddy_relocate(): Check that the source block contains valid data.
      
      buf_page_get_gen(): Do not dereference bpage after calling buf_relocate().
      This avoids a bogus Valgrind warning; the memory itself was valid.
      
      buf_page_hash_get(): Check that the returned block descriptor contains
      valid data.
      902893c7
  21. 06 Sep, 2007 1 commit
    • marko's avatar
      branches/zip: Improve Valgrind instrumentation. · ddc116e1
      marko authored
      UNIV_MEM_ASSERT_RW(): New macro, to check that the contents of a memory
      area is defined.
      
      UNIV_MEM_ASSERT_W(): New macro, to check that a memory area is writable.
      
      UNIV_MEM_ASSERT_AND_FREE(): New macro, to check that the memory is
      writable before declaring it free (unwritable).  This replaces UNIV_MEM_FREE()
      in many places.
      
      mem_init_buf(): Declare the memory undefined.
      
      mem_erase_buf(): Declare the memory freed.
      ddc116e1
  22. 28 Mar, 2007 1 commit
  23. 19 Feb, 2007 1 commit
  24. 16 Feb, 2007 1 commit
  25. 13 Feb, 2007 1 commit
  26. 08 Feb, 2007 1 commit
    • marko's avatar
      branches/zip: buf_page_init_for_read(): Defer the costly calls to · 75cf6705
      marko authored
      buf_buddy_alloc() until after the block has been found not to exist
      in the buffer pool.
      
      buf_buddy_alloc(), buf_buddy_alloc_low(): Make lru an output parameter.
      Improve documentation.
      
      buf_page_init_for_read(): Simplify the code.  Check buf_page_hash_get()
      again if buf_buddy_alloc() released buf_pool->mutex.
      75cf6705
  27. 07 Feb, 2007 1 commit
    • marko's avatar
      branches/zip: Do not decompress blocks in buf_page_init_for_read(), · 1f0b739f
      marko authored
      but in buf_page_get_gen().  Adjust comments.  This prevents
      unnecessary decompression in read-ahead when the compressed block
      exists in the buffer pool.
      
      If the block does not exist in the buffer pool, read-ahead will still
      allocate an uncompressed page and decompress the block.
      
      Move buf_block_init_low() and buf_zip_decompress() earlier in the file,
      because some compilers are unable to inline functions that are defined
      after the invocation.
      
      buf_page_get_gen(): Decompress the block if needed.
      
      buf_page_init_for_read(): Do not decompress.
      1f0b739f
  28. 24 Jan, 2007 1 commit
  29. 18 Jan, 2007 4 commits
  30. 16 Jan, 2007 3 commits
    • marko's avatar
      branches/zip: Allow dirty compressed-only blocks to exist in the buffer pool · a85fd294
      marko authored
      and to be flushed to disk.
      
      buf_LRU_free_block(): Enable the freeing of uncompressed pages of
      compressed tablespaces.
      
      trx_doublewrite->buf_block_arr[]: Change the type from buf_block_t*
      to buf_page_t*.
      
      buf_flush_ready_for_flush(): Add debug assertion.
      
      buf_flush_buffered_writes(), buf_flush_try_page(): Support blocks of type
      BUF_BLOCK_ZIP_DIRTY.
      
      buf_flush_post_to_doublewrite_buf(), buf_flush_write_block_low():
      Change the type of the parameter from buf_block_t* to buf_page_t*.
      
      buf_flush_init_for_writing(): Allow page to be NULL if page_zip_ is non-NULL.
      a85fd294
    • marko's avatar
      branches/zip: Note that b (the newly created control block for the · 94e49a71
      marko authored
      compressed page) is not protected by block_mutex.  Before releasing
      buf_pool->mutex, we can simply assign b->io_fix.  After reacquiring
      buf_pool->mutex, we also have to acquire buf_pool->zip_mutex.
      94e49a71
    • marko's avatar
      branches/zip: buf_LRU_free_block(): When preserving the compressed page · 9fe82e80
      marko authored
      of a block, do not release buf_pool->mutex between the time the old control
      block is removed from buf_pool->page_hash and the new control block is
      added to it.  Prevent operations on the compressed-only block while calling
      btr_search_drop_page_hash_index() or page_zip_calc_checksum().
      
      buf_LRU_invalidate_tablespace(): Revert the change done in r1223.
      buf_pool->zip_mutex will have been released by
      buf_LRU_block_remove_hashed_page() when it returns BUF_BLOCK_ZIP_FREE.
      9fe82e80