1. 25 Feb, 2011 1 commit
    • Vasil Dimov's avatar
      Fix BUG#11798085 - INCORRECT INTEGER TYPES USED IN CALCULATION RESULT · 05c4a351
      Vasil Dimov authored
      IN OVERFLOW
      
      Do not assign the result of the difference to a signed variable and
      checking whether it is negative afterwards because this limits the max diff
      to 2G on 32 bit systems. E.g. "signed = 3.5G - 1G" would be negative and the
      code would assume that 3.5G < 1G. Instead compare the two variables directly
      and assign to unsigned only if we know that the result of the subtraction
      will be positive.
      
      Discussed with:	Jimmy and Sunny (via IRC)
      05c4a351
  2. 17 Feb, 2011 3 commits
  3. 16 Feb, 2011 1 commit
  4. 15 Feb, 2011 2 commits
  5. 14 Feb, 2011 1 commit
  6. 10 Feb, 2011 2 commits
    • Vasil Dimov's avatar
      Fix Bug#59307 Valgrind: uninitialized value in rw_lock_set_writer_id_and_recursion_flag() · 07116bbf
      Vasil Dimov authored
      by silencing a bogus Valgrind warning:
      
      ==4392== Conditional jump or move depends on uninitialised value(s)
      ==4392==    at 0x5A18416: rw_lock_set_writer_id_and_recursion_flag (sync0rw.ic:283)
      ==4392==    by 0x5A1865C: rw_lock_x_lock_low (sync0rw.c:558)
      ==4392==    by 0x5A18481: rw_lock_x_lock_func (sync0rw.c:617)
      ==4392==    by 0x597EEE6: mtr_x_lock_func (mtr0mtr.ic:271)
      ==4392==    by 0x597EBBD: fsp_header_init (fsp0fsp.c:970)
      ==4392==    by 0x5A15E78: innobase_start_or_create_for_mysql (srv0start.c:1508)
      ==4392==    by 0x598B789: innobase_init(void*) (ha_innodb.cc:2282)
      
      os_compare_and_swap_thread_id() is defined as
      __sync_bool_compare_and_swap(). From the GCC doc:
      
      `bool __sync_bool_compare_and_swap (TYPE *ptr, TYPE oldval TYPE newval, ...)'
        ...
        The "bool" version returns true if the comparison is successful and
        NEWVAL was written.
      
      So it is not possible that the return value is uninitialized, no matter what
      the arguments to os_compare_and_swap_thread_id() are. Probably Valgrind gets
      confused by the implementation of the GCC internal function
      __sync_bool_compare_and_swap().
      07116bbf
    • Vasil Dimov's avatar
      Increment InnoDB Plugin version from 1.0.15 to 1.0.16. · 2ae1cdf0
      Vasil Dimov authored
      InnoDB Plugin 1.0.15 has been released with MySQL 5.1.55.
      2ae1cdf0
  7. 08 Feb, 2011 1 commit
    • Marko Mäkelä's avatar
      Implement UNIV_BLOB_DEBUG. An early version of this caught Bug #55284. · 154fc1e3
      Marko Mäkelä authored
      This option is known to be broken when tablespaces contain off-page
      columns after crash recovery. It has only been tested when creating
      the data files from the scratch.
      
      btr_blob_dbg_t: A map from page_no:heap_no:field_no to first_blob_page_no.
      This map is instantiated for every clustered index in index->blobs.
      It is protected by index->blobs_mutex.
      
      btr_blob_dbg_msg_issue(): Issue a diagnostic message.
      Invoked when btr_blob_dbg_msg is set.
      
      btr_blob_dbg_rbt_insert(): Insert a btr_blob_dbg_t into index->blobs.
      
      btr_blob_dbg_rbt_delete(): Remove a btr_blob_dbg_t from index->blobs.
      
      btr_blob_dbg_cmp(): Comparator for btr_blob_dbg_t.
      
      btr_blob_dbg_add_blob(): Add a BLOB reference to the map.
      
      btr_blob_dbg_add_rec(): Add all BLOB references from a record to the map.
      
      btr_blob_dbg_print(): Display the map of BLOB references in an index.
      
      btr_blob_dbg_remove_rec(): Remove all BLOB references of a record from
      the map.
      
      btr_blob_dbg_is_empty(): Check that no BLOB references exist to or
      from a page. Disowned references from delete-marked records are
      tolerated.
      
      btr_blob_dbg_op(): Perform an operation on all BLOB references on a
      B-tree page.
      
      btr_blob_dbg_add(): Add all BLOB references from a B-tree page to the
      map.
      
      btr_blob_dbg_remove(): Remove all BLOB references from a B-tree page
      from the map.
      
      btr_blob_dbg_restore(): Restore the BLOB references after a failed
      page reorganize.
      
      btr_blob_dbg_set_deleted_flag(): Modify the 'deleted' flag in the BLOB
      references of a record.
      
      btr_blob_dbg_owner(): Own or disown a BLOB reference.
      
      btr_page_create(), btr_page_free_low(): Assert that no BLOB references exist.
      
      btr_create(): Create index->blobs for clustered indexes.
      
      btr_page_reorganize_low(): Invoke btr_blob_dbg_remove() before copying
      the records. Invoke btr_blob_dbg_restore() if the operation fails.
      
      btr_page_empty(), btr_lift_page_up(), btr_compress(), btr_discard_page():
      Invoke btr_blob_dbg_remove().
      
      btr_cur_del_mark_set_clust_rec(): Invoke btr_blob_dbg_set_deleted_flag().
      
      Other cases of modifying the delete mark are either in the secondary
      index or during crash recovery, which we do not promise to support.
      
      btr_cur_set_ownership_of_extern_field(): Invoke btr_blob_dbg_owner().
      
      btr_store_big_rec_extern_fields(): Invoke btr_blob_dbg_add_blob().
      
      btr_free_externally_stored_field(): Invoke btr_blob_dbg_assert_empty()
      on the first BLOB page.
      
      page_cur_insert_rec_low(), page_cur_insert_rec_zip(),
      page_copy_rec_list_end_to_created_page(): Invoke btr_blob_dbg_add_rec().
      
      page_cur_insert_rec_zip_reorg(), page_copy_rec_list_end(),
      page_copy_rec_list_start(): After failure, invoke
      btr_blob_dbg_remove() and btr_blob_dbg_add().
      
      page_cur_delete_rec(): Invoke btr_blob_dbg_remove_rec().
      
      page_delete_rec_list_end(): Invoke btr_blob_dbg_op(btr_blob_dbg_remove_rec).
      
      page_zip_reorganize(): Invoke btr_blob_dbg_remove() before copying the records.
      
      page_zip_copy_recs(): Invoke btr_blob_dbg_add().
      
      row_upd_rec_in_place(): Invoke btr_blob_dbg_rbt_delete() and
      btr_blob_dbg_rbt_insert().
      
      innobase_start_or_create_for_mysql(): Warn when UNIV_BLOB_DEBUG is enabled.
      
      rb://550 approved by Jimmy Yang
      154fc1e3
  8. 07 Feb, 2011 2 commits
  9. 04 Feb, 2011 1 commit
  10. 02 Feb, 2011 4 commits
    • Marko Mäkelä's avatar
      Bug #55284 diagnostics: Introduce UNIV_BLOB_LIGHT_DEBUG, enabled by UNIV_DEBUG · e67169ee
      Marko Mäkelä authored
      btr_rec_get_field_ref_offs(), btr_rec_get_field_ref(): New functions.
      Get the pointer to an externally stored field.
      
      btr_cur_set_ownership_of_extern_field(): Assert that the BLOB has not
      already been disowned.
      
      btr_store_big_rec_extern_fields(): Rename to
      btr_store_big_rec_extern_fields_func() and add the debug parameter
      update_in_place. All pointers to externally stored columns in the
      record must either be zero or they must be pointers to inherited
      columns, owned by this record or an earlier record version. For any
      BLOB that is stored, the BLOB pointer must previously have been
      zero. When the function completes, all BLOB pointers must be nonzero
      and owned by the record.
      
      rb://549 approved by Jimmy Yang
      e67169ee
    • Marko Mäkelä's avatar
      Non-functional changes (cleanup) made while narrowing down Bug #55284: · 5dce2df4
      Marko Mäkelä authored
      row_purge(): Change the return type to void. (The return value always
      was DB_SUCCESS.) Remove some local variables.
      
      row_undo_mod_remove_clust_low(): Remove some local variables.
      
      rb://547 approved by Jimmy Yang
      5dce2df4
    • Marko Mäkelä's avatar
      Bug #55284 diagnostics: When UNIV_DEBUG, do not tolerate garbage in · 03d42acc
      Marko Mäkelä authored
      Antelope files in btr_check_blob_fil_page_type(). Unfortunately, we
      must keep the check in production builds, because InnoDB wrote
      uninitialized garbage to FIL_PAGE_TYPE until fairly recently (5.1.x).
      
      rb://546 approved by Jimmy Yang
      03d42acc
    • Marko Mäkelä's avatar
      Bug #55284 diagnostics: Enable UNIV_DEBUG_FILE_ACCESSES by UNIV_DEBUG · 0dfcfd11
      Marko Mäkelä authored
      It was the enabling of UNIV_DEBUG_FILE_ACCESSES that caught Bug #55284
      in the first place. This is a very light piece of of debug code, and
      there really is no reason why it is not enabled in all debug builds.
      
      rb://551 approved by Jimmy Yang
      0dfcfd11
  11. 31 Jan, 2011 1 commit
    • Marko Mäkelä's avatar
      Bug#59230 assert 0 row_upd_changes_ord_field_binary() in post-crash · fbb1eeeb
      Marko Mäkelä authored
      trx rollback or purge
      
      This patch does not relax the failing debug assertion during purge.
      That will be revisited once we have managed to repeat the assertion failure.
      
      row_upd_changes_ord_field_binary_func(): Renamed from
      row_upd_changes_ord_field_binary(). Add the parameter que_thr_t* in
      UNIV_DEBUG builds. When the off-page column cannot be retrieved,
      assert that the current transaction is a recovered one and that it is
      the one that is currently being rolled back.
      
      row_upd_changes_ord_field_binary(): A wrapper macro for
      row_upd_changes_ord_field_binary_func() that discards the que_thr_t*
      parameter unless UNIV_DEBUG is defined.
      
      row_purge_upd_exist_or_extern_func(): Renamed from
      row_purge_upd_exist_or_extern(). Add the parameter que_thr_t* in
      UNIV_DEBUG builds.
      
      row_purge_upd_exist_or_extern(): A wrapper macro for
      row_purge_upd_exist_or_extern_func() that discards the que_thr_t*
      parameter unless UNIV_DEBUG is defined.
      
      Make trx_roll_crash_recv_trx const. If there were a 'do not
      dereference' attribute, it would be appropriate as well.
      
      rb://588 approved by Jimmy Yang
      fbb1eeeb
  12. 30 Jan, 2011 2 commits
  13. 29 Jan, 2011 1 commit
    • John H. Embretsen's avatar
      Fix for Bug#56817 - mysqlhotcopy tests fail when DBI and DBD-mysql perl modules are not found · 23887668
      John H. Embretsen authored
      Third updated patch - this version also includes copyright notice in added Perl script.
      This patch implements a check for such modules at runtime. If modules are not found or unable to load, the test is skipped with 
      the following message:
                  
                  [ skipped ]  Test needs Perl modules DBI and DBD::mysql
                  
      Checks are done via a helper Perl script which looks for the module in a runtime environment that is as similar to that of the 
      mysqlhotcopy script as possible (thus not intended for Windows environments at this time).
      The helper script tells mysql-test about the result by writing information to a temporary file that is later read by mysql-test.
      See comments in added files (have_dbi_dbd-mysql.inc and checkDBI_DBD-mysql.pl) for details.
      The patch also removes the mysqlhotcopy tests from the list of disabled tests.
      23887668
  14. 28 Jan, 2011 2 commits
  15. 27 Jan, 2011 6 commits
  16. 26 Jan, 2011 8 commits
  17. 25 Jan, 2011 2 commits
    • Bjorn Munch's avatar
      merge 59063 · fe91320f
      Bjorn Munch authored
      fe91320f
    • Marko Mäkelä's avatar
      Bug#59585 Fix 58912 introduces compiler warning · 5f20aa2b
      Marko Mäkelä authored
      due to potentially uninitialized variable
      
      row_upd_changes_ord_field_binary(): Initialize dfield_len to suppress the
      warning. The compiler cannot know that row_ext_lookup() does initialize
      dfield_len for us, as it is defined in a different module.
      5f20aa2b