An error occurred fetching the project authors.
  1. 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
  2. 28 Jan, 2011 1 commit
  3. 27 Jan, 2011 1 commit
  4. 25 Jan, 2011 4 commits
  5. 18 Jan, 2011 1 commit
  6. 14 Jan, 2011 1 commit
  7. 07 Jan, 2011 1 commit
  8. 05 Jan, 2011 1 commit
  9. 21 Dec, 2010 2 commits
    • Marko Mäkelä's avatar
      Bug #55284 Double BLOB free due to lock wait while updating PRIMARY KEY · 91df7abd
      Marko Mäkelä authored
      This bug fix requires that Bug #58912 be fixed as well (bzr revision id
      marko.makela@oracle.com-20101221093919-mcmmgd4zpse9567d). Otherwise,
      another double BLOB free could occur when InnoDB would try to perform
      an update-in-place as delete-and-insert-by-update-in-place.
      
      row_upd_clust_rec_by_insert(): Do not disown the externally stored
      columns from the old record (btr_cur_mark_extern_inherited_fields())
      until after checking the foreign key constraints and successfully
      inserting the updated record. If a lock wait timeout occurs between
      the delete-marking of the old record and the insertion of the updated
      record, mark the columns inherited before retrying the insert.
      Distinguish the state UPD_NODE_INSERT_BLOB from
      UPD_NODE_INSERT_CLUSTERED.
      
      btr_cur_del_mark_set_clust_rec(): Replace the cursor with
      block,rec,index,offsets so that the offsets need not be recalculated.
      Assert that rec is on a clustered index leaf page.
      
      btr_cur_disown_inherited_fields(): Renamed from
      btr_cur_mark_extern_inherited_fields(). Use
      upd_get_field_by_field_no(). Assert that there are externally stored
      columns. Assert that a mini-transaction is passed. Remove the return
      status. (The only caller, row_upd_clust_rec_by_insert(), will have
      determined that some fields have changed ownership.)
      
      btr_cur_mark_dtuple_inherited_extern(): Rename to
      row_upd_clust_rec_by_insert_inherit_func() and declare as static. Add
      the debug parameters rec, offsets. When rec is given, assert that the
      off-page columns match those in the inesrt tuple and that the off-page
      columns are owned by the record. Assert that the non-updated off-page
      columns in the insert tuple are owned, and mark them inherited.
      
      row_upd_clust_rec_by_insert_inherit(): A wrapper macro for
      row_upd_clust_rec_by_insert_inherit_func().
      
      row_undo_mod_upd_exist_sec(): Adjust a comment about
      row_upd_clust_rec_by_insert().
      
      rb:508 approved by Jimmy Yang
      91df7abd
    • Marko Mäkelä's avatar
      Bug#58912 InnoDB unnecessarily avoids update-in-place on column prefix indexes · 2317da0d
      Marko Mäkelä authored
      row_upd_changes_ord_field_binary(): Do not return TRUE if the update
      vector changes a column that is covered by a prefix index, but does
      not change the column prefix. Add the row_ext_t parameter for
      determining whether the prefixes of externally stored columns match.
      
      dfield_datas_are_binary_equal(): Add the parameter len, for comparing
      column prefixes when len > 0.
      
      innodb.test: Add a test case where the patch of Bug #55284 failed
      without this fix.
      
      rb:537 approved by Jimmy Yang
      2317da0d
  10. 09 Dec, 2010 1 commit
  11. 11 Nov, 2010 3 commits
  12. 03 Nov, 2010 3 commits
  13. 02 Nov, 2010 2 commits
    • Marko Mäkelä's avatar
      Bug#57799 READ UNCOMMITTED access failure of off-page DYNAMIC or COMPRESSED · 3dcbf1e2
      Marko Mäkelä authored
      columns again
      
      This is follow-up to Bug #54358. Not all occurrences of the bug were fixed.
      We need to check all calls to btr_copy_externally_stored_field_prefix_low()
      and do the right thing when the pointer to the off-page column is null
      (full of zero bytes).
      
      It turns out that only the call to btr_copy_externally_stored_field_prefix()
      in row_sel_sec_rec_is_for_blob() needs to be changed.
      
      For fetching complete off-page columns rather than prefixes, the function
      btr_rec_copy_externally_stored_field() already checks if the pointer
      is null (all-zero).  Two of its callers (row_merge_copy_blobs() and
      row_sel_fetch_columns()) are never executed as READ COMMITTED and can
      rightfully assert that the fetch succeeded.  The third caller,
      row_sel_store_mysql_rec(), already does the right thing.
      
      The calls in row_upd_ext_fetch() and trx_undo_page_fetch_ext() must
      expect that the off-page column exists. Update and rollback are
      locking operations, never READ UNCOMMITTED.
      3dcbf1e2
    • Marko Mäkelä's avatar
      785d06fe
  14. 25 Oct, 2010 2 commits
  15. 21 Oct, 2010 2 commits
  16. 19 Oct, 2010 1 commit
    • Marko Mäkelä's avatar
      Bug #56680 wrong InnoDB results from a case-insensitive covering index · b568369d
      Marko Mäkelä authored
      row_search_for_mysql(): When a secondary index record might not be
      visible in the current transaction's read view and we consult the
      clustered index and optionally some undo log records, return the
      relevant columns of the clustered index record to MySQL instead of the
      secondary index record.
      
      ibuf_insert_to_index_page_low(): New function, refactored from
      ibuf_insert_to_index_page().
      
      ibuf_insert_to_index_page(): When we are inserting a record in place
      of a delete-marked record and some fields of the record differ, update
      that record just like row_ins_sec_index_entry_by_modify() would do.
      
      btr_cur_update_alloc_zip(): Make the function public.
      
      mysql_row_templ_t: Add clust_rec_field_no.
      
      row_sel_store_mysql_rec(), row_sel_push_cache_row_for_mysql(): Add the
      flag rec_clust, for returning data at clust_rec_field_no instead of
      rec_field_no. Resurrect the debug assertion that the record not be
      marked for deletion. (Bug #55626)
      
      [UNIV_DEBUG || UNIV_IBUF_DEBUG] ibuf_debug, buf_page_get_gen(),
      buf_flush_page_try():
      Implement innodb_change_buffering_debug=1 for evicting pages from the
      buffer pool, so that change buffering will be attempted more
      frequently.
      b568369d
  17. 18 Oct, 2010 1 commit
    • Vasil Dimov's avatar
      Fix Bug#57252 disabling innobase_stats_on_metadata disables ANALYZE · 50c69f93
      Vasil Dimov authored
      This is a merge from 5.1/builtin to 5.1/plugin of:
      
        --------------
        revision-id: vasil.dimov@oracle.com-20101018104811-nwqhg9vav17kl5s1
        committer: Vasil Dimov <vasil.dimov@oracle.com>
        timestamp: Mon 2010-10-18 13:48:11 +0300
        message:
          Fix Bug#57252 disabling innobase_stats_on_metadata disables ANALYZE
          
          In order to fix this bug we need to distinguish whether ha_innobase::info()
          has been called from ::analyze() or not. Rename ::info() to ::info_low()
          and add a boolean parameter that tells whether the call is from ::analyze()
          or not. Create a new simple ::info() that just calls
          ::info_low(false => not called from analyze). From ::analyze() instead of
          ::info() call ::info_low(true => called from analyze).
          
          Approved by:	Jimmy (rb://487)
        --------------
      50c69f93
  18. 15 Oct, 2010 3 commits
  19. 14 Oct, 2010 1 commit
  20. 11 Oct, 2010 3 commits
  21. 06 Oct, 2010 1 commit
  22. 04 Oct, 2010 1 commit
  23. 07 Sep, 2010 1 commit
  24. 24 Aug, 2010 1 commit
    • Marko Mäkelä's avatar
      Bug#55832: selects crash too easily when innodb_force_recovery>3 · ce7d6a28
      Marko Mäkelä authored
      dict_update_statistics_low(): Create bogus statistics for those
      indexes that cannot be accessed because of the innodb_force_recovery
      setting.
      
      ha_innobase::info(): Calculate statistics for each index, even if
      innodb_force_recovery is set. Fill in bogus data for those indexes
      that are not accessed because of the innodb_force_recovery setting.
      ce7d6a28
  25. 04 Aug, 2010 1 commit