1. 24 Aug, 2011 1 commit
  2. 22 Aug, 2011 1 commit
  3. 19 Aug, 2011 2 commits
  4. 18 Aug, 2011 1 commit
    • Sergey Vojtovich's avatar
      BUG#11763712 - 56458: KILLING A FLUSH TABLE FOR A MERGE/CHILD · 06fa1ef4
      Sergey Vojtovich authored
                            CRASHES SERVER
      
      Flushing of MERGE table or one of its child tables, which was
      locked by flushing thread using LOCK TABLES, might have caused
      crashes or assertion failures if the thread failed to reopen
      child or parent table.
      Particularly, this might have happened when another connection
      killed this FLUSH TABLE statement/connection.
      Also this problem might have occurred when we failed to reopen
      MERGE table or one of its children when executing DDL statement
      under LOCK TABLES.
      
      The problem was caused by the fact that reopen_tables() might
      have failed to reopen child table but still tried to reopen,
      reattach children for and re-lock its parent. Vice versa it
      might have failed to reopen parent but kept references from
      children to parent around. Since reopen_tables() closes table
      it has failed to reopen and therefore frees all associated
      memory such dangling references led to crashes when followed.
      
      This patch solves this problem by ensuring that we always close
      parent table and all its children if we fail to reopen this
      table or one of its children. Same happens if we fail to reattach
      children to parent.
      
      Affects 5.1 only.
      06fa1ef4
  5. 16 Aug, 2011 2 commits
  6. 15 Aug, 2011 2 commits
    • Joerg Bruehe's avatar
      Merge bug#47337 for pushing into 5.1 · 72daf267
      Joerg Bruehe authored
      72daf267
    • Marko Mäkelä's avatar
      Bug #11766591 59733: Possible deadlock when buffered changes are to be · d5c36400
      Marko Mäkelä authored
      discarded in buf_page_create()
      
      This bug turned out to be a false alarm, a bug in the UNIV_SYNC_DEBUG
      diagnostic code. Because of this, the patch was not backported to the
      built-in InnoDB in MySQL 5.1. Furthermore, there is no test case for
      InnoDB Plugin in MySQL 5.1, because the delete buffering in MySQL 5.5
      makes triggering the failure much easier.
      
      When a freed page for which there exist orphaned buffered changes is
      allocated and reused for something else, buf_page_create() will discard
      the buffered changes by invoking ibuf_merge_or_delete_for_page().
      This would violate the InnoDB latching order.
      
      Tweak the latching order as follows. Move SYNC_IBUF_MUTEX below
      SYNC_FSP_PAGE, where it logically belongs, and assign new latching
      levels for the ibuf->index->lock and the insert buffer B-tree pages:
      
      #define SYNC_IBUF_MUTEX		370	/* ibuf_mutex */
      #define SYNC_IBUF_INDEX_TREE	360
      #define SYNC_IBUF_TREE_NODE_NEW	359
      #define SYNC_IBUF_TREE_NODE	358
      
      btr_block_get(), btr_page_get(): In UNIV_SYNC_DEBUG, add the parameter
      "index" for determining the appropriate latching order
      (SYNC_IBUF_TREE_NODE or SYNC_TREE_NODE).
      
      btr_page_alloc_for_ibuf(), btr_create(): Use SYNC_IBUF_TREE_NODE_NEW
      instead of SYNC_TREE_NODE_NEW for insert buffer pages.
      
      btr_cur_search_to_nth_level(), btr_pcur_restore_position_func(): Use
      SYNC_IBUF_TREE_NODE instead of SYNC_TREE_NODE for insert buffer pages.
      
      btr_search_guess_on_hash(): Assert that the index is not an insert buffer tree.
      
      dict_index_add_to_cache(): Use SYNC_IBUF_INDEX_TREE for the insert
      buffer tree (ibuf->index->lock).
      
      ibuf0ibuf.c: Use SYNC_IBUF_TREE_NODE or SYNC_IBUF_TREE_NODE_NEW for
      all B-tree pages.
      
      ibuf_merge_or_delete_for_page(): Assert that the user page is
      BUF_IO_READ fixed. Only in this way it is OK to latch it as
      SYNC_IBUF_TREE_NODE instead of the proper SYNC_TREE_NODE (which would
      violate the changed latching order).
      
      sync_thread_add_level(): Remove the special tweak for
      SYNC_IBUF_MUTEX. Add rules for the added latching levels.
      
      rb:591 approved by Jimmy Yang
      d5c36400
  7. 12 Aug, 2011 1 commit
  8. 11 Aug, 2011 2 commits
  9. 10 Aug, 2011 1 commit
    • Marko Mäkelä's avatar
      Bug#12835650 VARCHAR maximum length performance impact · 1ba7ae75
      Marko Mäkelä authored
      row_sel_field_store_in_mysql_format(): Do not pad the unused part of
      the buffer reserved for a True VARCHAR column (introduced in 5.0.3).
      Add Valgrind instrumentation ensuring that the unused part will be
      flagged uninitialized.
      
      row_sel_copy_cached_field_for_mysql(): New function: Copy a field
      that is in the MySQL row format, not copying the unused tail of
      VARCHAR columns.
      
      row_sel_pop_cached_row_for_mysql(): Invoke
      row_sel_copy_cached_field_for_mysql() for copying fields.
      When the row is long, copy it field-by-field.
      
      rb:715 approved by Inaam Rana
      1ba7ae75
  10. 08 Aug, 2011 3 commits
  11. 02 Aug, 2011 1 commit
  12. 27 Jul, 2011 2 commits
  13. 22 Jul, 2011 2 commits
    • Alexander Nozdrin's avatar
      Manual merge from mysql-5.0. · c4dad60a
      Alexander Nozdrin authored
      c4dad60a
    • Alexander Nozdrin's avatar
      For for Bug#12696072: FIX OUTDATED COPYRIGHT NOTICES IN RUNTIME RELATED CLIENT · f7618904
      Alexander Nozdrin authored
      TOOLS
      
      Backport a fix for Bug 57094 from 5.5.
      The following revision was backported:
      
      # revision-id: alexander.nozdrin@oracle.com-20101006150613-ls60rb2tq5dpyb5c
      # parent: bar@mysql.com-20101006121559-am1e05ykeicwnx48
      # committer: Alexander Nozdrin <alexander.nozdrin@oracle.com>
      # branch nick: mysql-5.5-bugteam-bug57094
      # timestamp: Wed 2010-10-06 19:06:13 +0400
      # message:
      #   Fix for Bug 57094 (Copyright notice incorrect?).
      #   
      #   The fix is to:
      #     - introduce ORACLE_WELCOME_COPYRIGHT_NOTICE define to have a single place
      #       to specify copyright notice;
      #     - replace custom copyright notices with ORACLE_WELCOME_COPYRIGHT_NOTICE
      #       in programs.
      f7618904
  14. 19 Jul, 2011 1 commit
  15. 18 Jul, 2011 1 commit
  16. 15 Jul, 2011 3 commits
    • Bjorn Munch's avatar
      merge from 5.1 main · b2151fae
      Bjorn Munch authored
      b2151fae
    • Alexander Nozdrin's avatar
      Backport a fix for Bug#59060 (Valgrind warning in Protocol_text::store()). · 2fe4f6bb
      Alexander Nozdrin authored
      Original changeset:
      revision-id: alexander.nozdrin@oracle.com-20101221122349-6h8ammcro70a4pac
      parent: sven.sandberg@oracle.com-20101221121948-hnivuulyohzch1v4
      committer: Alexander Nozdrin <alexander.nozdrin@oracle.com>
      branch nick: mysql-trunk-bugfixing
      timestamp: Tue 2010-12-21 15:23:49 +0300
      message:
        A patch for Bug#59060 (Valgrind warning in Protocol_text::store()).
        
        We should not assume to have zero-terminated strings.
      2fe4f6bb
    • Luis Soares's avatar
      DBUG_PRINT in solaris does not work well with NULL parameters. · dbba17da
      Luis Soares authored
      HA_ERR was returning 0 (null string) when no error happened 
      (error=0). Since HA_ERR is used in DBUG_PRINT, regardless there 
      was an error or not, the server could crash in solaris debug
      builds.
      
      We fix this by:
      
        - deploying an assertion that ensures that the function 
          is not called when no error has happened;
        - making sure that HA_ERR is only called when an error 
          happened;
        - making HA_ERR return "No Error", instead of 0, for 
          non-debug builds if it is called when no error happened.
      
      This will make HA_ERR return values to work with DBUG_PRINT on
      solaris debug builds.
      dbba17da
  17. 14 Jul, 2011 1 commit
    • Luis Soares's avatar
      BUG#11753004: 44360: REPLICATION FAILED · ce8077d8
      Luis Soares authored
                        
      The server crashes if it processes table map events that are
      corrupted, especially if they map different tables to the same
      identifier. This could happen, for instance, due to BUG 56226.
                        
      We fix this by checking whether the table map has already been
      mapped before actually applying the event. If it has been mapped
      with different settings an error is raised and the slave SQL
      thread stops. If it has been mapped with same settings the event
      is skipped. If the table is set to be ignored by the filtering
      rules, there is no change in behavior: the event is skipped and
      ids are not checked.
      ce8077d8
  18. 12 Jul, 2011 3 commits
  19. 11 Jul, 2011 2 commits
    • Luis Soares's avatar
      BUG#12695969 · d3324c00
      Luis Soares authored
      Manually merged mysql-5.0 into mysql-5.1.
      
      conflicts
      =========
      client/mysqlibinlog.cc
      d3324c00
    • Luis Soares's avatar
      BUG#12695969: FIX OUTDATED COPYRIGHT NOTICES IN REPLACTION · cc17ce72
      Luis Soares authored
      CLIENT TOOLS
            
      The fix is to backport part of revision:
              
        - alexander.nozdrin@oracle.com-20101006150613-ls60rb2tq5dpyb5c
            
      from mysql-5.5. In detail, we add the oracle welcome notice
      header file proposed in the original patch and include/use it
      in client/mysqlbinlog.cc, replacing the existing and obsolete
      notice.
      cc17ce72
  20. 08 Jul, 2011 1 commit
    • Joerg Bruehe's avatar
      Fix Bug #47337: · 98a7cb95
      Joerg Bruehe authored
      innochecksum not built for --with-plugin-innodb_plugin --without-plugin-innobase
      
      In 5.1, we can have the traditional "innobase" code
      (built-in) or the new version "innodb" (plugin).
      The help tool "innochecksum" is useful for both,
      but its generation was coupled to "innobase" only.
      
      Fix this by treating both "innobase" and "innodb"
      equivalent in the configure phase,
      this affects both "innochecksum" and the InnoDB documentation.
      
      This patch was proposed by Mark Callaghan.
      98a7cb95
  21. 07 Jul, 2011 3 commits
    • kevin.lewis@oracle.com's avatar
      Bug#12637786 was fixed with rb:692 by marko. But that fix has a remaining · e3fab622
      kevin.lewis@oracle.com authored
      bug.  It added this assert;
          ut_ad(ind_field->prefix_len);
      before a section of code that assumes there is a prefix_len.  
      
      The patch replaced code that explicitly avoided this with a check for
      prefix_len.  It turns out that the purge thread can get to that assert
      without a prefix_len because it does not use a row_ext_t* .
      When UNIV_DEBUG is not defined, the affect of this is that the purge thread
      sets the dfield->len to zero and then cannot find the entry in the index to
      purge.  So secondary index entries remain unpurged.
      
      This patch does not do the assert.  Instead, it uses
          'if (ind_field->prefix_len) {...}'
      around the section of code that assumes a prefix_len.  This is the way the
      patch I provided to Marko did it.
      
      The test case is simply modified to do a sleep(10) in order to give the
      purge thread a chance to run. Without the code change to row0row.c, this
      modified testcase will assert if InnoDB was compiled with UNIV_DEBUG.
      I tried to sleep(5), but it did not always assert.
      e3fab622
    • Joerg Bruehe's avatar
      Fix bug#45415: "rpm upgrade recreates test database" · 535855eb
      Joerg Bruehe authored
      Let the creation of the "test" database happen only during a new
      installation, not in an RPM upgrade.
      535855eb
    • Georgi Kodinov's avatar
      empty weave merge from mysql-5.0 · 1219d9a1
      Georgi Kodinov authored
      1219d9a1
  22. 06 Jul, 2011 1 commit
  23. 05 Jul, 2011 1 commit
  24. 04 Jul, 2011 2 commits