1. 10 Aug, 2010 2 commits
    • Vasil Dimov's avatar
      bf061a81
    • Marko Mäkelä's avatar
      Bug#54914: InnoDB: performance drop with innodb_change_buffering=all · ef6f561a
      Marko Mäkelä authored
      Reduce ibuf_mutex and ibuf_pessimistic_insert_mutex contention further.
      
      Protect ibuf->empty by the insert buffer root page latch, not ibuf_mutex.
      
      ibuf_tree_root_get(): Assert that ibuf_mutex is owned by the
      caller. Assert that the stamped page number is correct. Assert that
      ibuf->empty agrees with the root page.
      
      ibuf_size_update(): Do not update ibuf->empty.
      
      ibuf_init_at_db_start(): Update ibuf->empty while holding the root page latch.
      
      ibuf_add_free_page(): Return TRUE/FALSE instead of DB_SUCCESS/DB_STRONG_FAIL.
      
      ibuf_remove_free_page(): Release ibuf_pessimistic_insert_mutex as
      early as possible.
      
      ibuf_contract_ext(): Rely on a dirty read of ibuf->empty, unless the
      server is being shut down. Never acquire ibuf_mutex. Eliminate n_stored.
      
      ibuf_contract_after_insert(): Never acquire ibuf_mutex. Perform dirty
      reads of ibuf->size and ibuf->max_size.
      
      ibuf_insert_low(): Only acquire ibuf_mutex for mode==BTR_MODIFY_TREE.
      Perform dirty reads of ibuf->size and ibuf->max_size. Update
      ibuf->empty while holding the root page latch.
      
      ibuf_delete_rec(): Update ibuf->empty while holding the root page latch.
      
      ibuf_is_empty(): Release ibuf_mutex earlier.
      ef6f561a
  2. 09 Aug, 2010 1 commit
    • Marko Mäkelä's avatar
      Reduce the ibuf_mutex hold time. This does not fix the update · 84fbabac
      Marko Mäkelä authored
      regression in Bug #54914, but it does speed up the execution for
      innodb_change_buffering=inserts.
      
      ibuf_add_ops(), ibuf_merge_or_delete_for_page(),
      ibuf_delete_for_discarded_space(): Use atomic built-ins instead of
      ibuf_mutex, when available.
      
      ibuf_add_free_page(), ibuf_remove_free_page(), ibuf_contract_ext():
      Release ibuf_mutex earlier.
      
      ibuf_free_excess_pages(): Release ibuf_mutex before a conditional branch.
      
      ibuf_insert_low(): Release ibuf_mutex before a conditional
      branch. Create ibuf_entry before re-acquiring ibuf_mutex. Simplify a
      loop to reduce code footprint. Release ibuf_mutex before mtr_commit()
      [btr_pcur_close()].
      
      ibuf_is_empty(): Release ibuf_mutex before mtr_commit().
      84fbabac
  3. 05 Aug, 2010 2 commits
  4. 03 Aug, 2010 1 commit
  5. 30 Jul, 2010 2 commits
  6. 29 Jul, 2010 1 commit
  7. 28 Jul, 2010 3 commits
  8. 26 Jul, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#45377: ARCHIVE tables aren't discoverable after OPTIMIZE · ed434ce0
      Davi Arnaut authored
      The problem was that the optimize method of the ARCHIVE storage
      engine was not preserving the FRM embedded in the ARZ file when
      rewriting the ARZ file for optimization. The ARCHIVE engine stores
      the FRM in the ARZ file so it can be transferred from machine to
      machine without also copying the FRM -- the engine restores the
      embedded FRM during discovery.
      
      The solution is to copy over the FRM when rewriting the ARZ file.
      In addition, some initial error checking is performed to ensure
      garbage is not copied over.
      ed434ce0
  9. 28 Jul, 2010 1 commit
  10. 27 Jul, 2010 1 commit
  11. 26 Jul, 2010 5 commits
  12. 25 Jul, 2010 1 commit
    • Vladislav Vaintroub's avatar
      Cleanup after bild team push. · 99a26e0f
      Vladislav Vaintroub authored
      * Fixed obvious errors (HAVE_BROKEN_PREAD is not true for on any
      of systems we use, definitely not on HPUX)
      
      * Remove other junk flags for OSX and HPUX
      
      * Avoid checking type sizes in universal builds on OSX, again 
      (CMake2.8.0 fails is different architectures return different results)
      
      * Do not compile template instantiation stuff unless 
      EXPLICIT_TEMPLATE_INSTANTIATION is used.
      
      * Some cleanup (make gen_lex_hash simpler, avoid dependencies)
      
      * Exclude some unused files from compilation (strtol.c etc)
      99a26e0f
  13. 24 Jul, 2010 4 commits
  14. 23 Jul, 2010 11 commits
  15. 22 Jul, 2010 3 commits
    • Luis Soares's avatar
      BUG#55387: binlog.binlog_tmp_table crashes the server · 2773385d
      Luis Soares authored
                 sporadically
      
      There are two problems:
      
      1. When closing temporary tables, during the THD clean up - and
         after the session connection was already closed, there is a
         chance we can push an error into the THD diagnostics area, if
         the writing of the implicit DROP event to the binary log fails
         for some reason. As a consequence an assertion can be
         triggered, because at that point the diagnostics area is
         already set.
      
      2. Using push_warning with MYSQL_ERROR::WARN_LEVEL_ERROR is a 
         bug.
      
      Given that close_temporary_tables is mostly called from
      THD::cleanup - ie, with the session already closed, we fix
      problem #1 by allowing the diagnostics area to be
      overwritten. There is one other place in the code that calls
      close_temporary_tables - while applying Start_log_event_v3. To
      cover that case, we make close_temporary_tables to return the
      error, thus, propagating upwards in the stack.
      
      To fix problem #2, we replace push_warning with sql_print_error.
      2773385d
    • Vasil Dimov's avatar
    • Sunny Bains's avatar
      Remove code that was added during the flush list mutex refactoring. We cannot · b00f1560
      Sunny Bains authored
      release a dirty page in the middle of a mini-transaction. Replace the code
      with an assertion that checks for this condition.
      
      Original svn revision was: r6330.
      b00f1560
  16. 21 Jul, 2010 1 commit
    • Sunny Bains's avatar
      Bug#54583 InnoDB: Assertion failure sync/sync0sync.c:1226 · 7c6d9a94
      Sunny Bains authored
            
      Silence the UNIV_SYNC_DEBUG assertion failure while upgrading old data files
      to multiple rollback segments during server startup. Because the upgrade
      takes place while InnoDB is running a single thread, we can safely ignore the
      latching order checks without fearing deadlocks.
            
      innobase_start_or_create_for_mysql(): Set srv_is_being_started = FALSE
      only after trx_sys_create_rsegs() has completed.
            
      sync_thread_add_level(): If srv_is_being_started, ignore latching order
      violations for SYNC_TRX_SYS_HEADER and SYNC_IBUF_BITMAP.
      
      Create all the non-IO threads after creating the extra rollback segments.
      
      Patch originally from Marko with some additions by Sunny.
      7c6d9a94