1. 22 Oct, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#37780: Make KILL reliable (main.kill fails randomly) · fa5b4652
      Davi Arnaut authored
      - A prerequisite cleanup patch for making KILL reliable.
      
      The test case main.kill did not work reliably.
      
      The following problems have been identified:
      
      1. A kill signal could go lost if it came in, short before a
      thread went reading on the client connection.
      
      2. A kill signal could go lost if it came in, short before a
      thread went waiting on a condition variable.
      
      These problems have been solved as follows. Please see also
      added code comments for more details.
      
      1. There is no safe way to detect, when a thread enters the
      blocking state of a read(2) or recv(2) system call, where it
      can be interrupted by a signal. Hence it is not possible to
      wait for the right moment to send a kill signal. It has been
      decided, not to fix it in the code.  Instead, the test case
      repeats the KILL statement until the connection terminates.
      
      2. Before waiting on a condition variable, we register it
      together with a synchronizating mutex in THD::mysys_var. After
      this, we need to test THD::killed again. At some places we did
      only test it in a loop condition before the registration. When
      THD::killed had been set between this test and the registration,
      we entered waiting without noticing the killed flag. Additional
      checks ahve been introduced where required.
      
      In addition to the above, a re-write of the main.kill test
      case has been done. All sleeps have been replaced by Debug
      Sync Facility synchronization. A couple of sync points have
      been added to the server code.
      
      To avoid further problems, if the test case fails in spite of
      the fixes, the test case has been added to the "experimental"
      list for now.
      
      - Most of the work on this patch is authored by Ingo Struewing
      
      
      mysql-test/t/kill.test:
        Re-wrote test case to use Debug Sync points instead of sleeps
      sql/event_queue.cc:
        Fixed kill detection in Event_queue::cond_wait() by adding a check
        after enter_cond().
      sql/lock.cc:
        Moved Debug Sync points behind enter_cond().
        Fixed comments.
      sql/slave.cc:
        Fixed kill detection in start_slave_thread() by adding a check
        after enter_cond().
      sql/sql_class.cc:
        Swapped order of kill and close in THD::awake().
        Added comments.
      sql/sql_class.h:
        Added a comment to THD::killed.
      sql/sql_parse.cc:
        Added a sync point in do_command().
      sql/sql_select.cc:
        Added a sync point in JOIN::optimize().
      fa5b4652
  2. 21 Oct, 2010 12 commits
    • Jon Olav Hauglid's avatar
      Merge from mysql-5.5-bugteam to mysql-5.5-runtime · 7af4cdc4
      Jon Olav Hauglid authored
      No conflicts
      7af4cdc4
    • Jon Olav Hauglid's avatar
      Merge from mysql-5.5-innodb to mysql-5.5-bugteam · b61d5c91
      Jon Olav Hauglid authored
      No conflicts
      b61d5c91
    • Vladislav Vaintroub's avatar
      merge · c7a5e29c
      Vladislav Vaintroub authored
      c7a5e29c
    • Sunny Bains's avatar
      Bug #57243 Inconsistent use of trans_register_ha() API in InnoDB · a4098ea2
      Sunny Bains authored
      Remove trx_t::active_trans. Split into two separate fields with distinct
      responsibilities. trx_t::is_registered and trx_t::owns_prepare_mutex.
      There are wrapper functions for using this fields in ha_innodb.cc. The
      wrapper functions check for invariants.
      
      Fix some formatting to conform to InnoDB guidelines.
      
      Remove innobase_register_stmt() and innobase_register_trx_and_stmt().
      
      Add:
      trx_is_started()
      trx_deregister_from_2pc()
      trx_register_for_2pc()
      trx_is_registered_for_2pc()
      trx_owns_prepare_commit_mutex_set()
      trx_has_prepare_commit_mutex()
      
      rb://479, Approved by Jimmy Yang.
      a4098ea2
    • Dmitry Shulga's avatar
      Fixed bug#45445 - cannot execute procedures with thread_stack · 54910bbd
      Dmitry Shulga authored
      set to 128k.
      
      sql/sp.cc:
        Added checking for stack overrun at functions
        db_load_routine/sp_find_routine.
      sql/sp_head.cc:
        sp_head::execute() modified: pass constant value STACK_MIN_SIZE
        instead of 8 * STACK_MIN_SIZE  as second argument value
        in call to check_stack_overrun. Added checking for stack overrun
        at functions sp_lex_keeper::reset_lex_and_exec_core/sp_instr_stmt::execute.
      sql/sql_parse.cc:
        check_stack_overrun modified: allocate buffer for error message
        at heap instead of stack.
        parse_sql modified: added call to check_stack_overrun() before
        parsing of sql statement.
      54910bbd
    • Marko Mäkelä's avatar
      Fix a sys_vars.all_vars failure caused by Bug #56680 instrumentation. · a1dcd52e
      Marko Mäkelä authored
      The variable innodb_change_buffering_debug is only present in debug builds.
      Hide it from the test, so that the test passes in both debug and non-debug.
      a1dcd52e
    • Marko Mäkelä's avatar
      Remove files that are no longer needed. · 0052ff73
      Marko Mäkelä authored
      These files were needed when InnoDB Plugin was maintained and distributed
      separately from the MySQL 5.1 source tree. They have never been needed in
      MySQL 5.5.
      
      storage/innobase/mysql-test:
       Patches to the test suite.
      
      storage/innobase/handler/mysql_addons.cc:
       Wrappers for private MySQL functions.
      0052ff73
    • Marko Mäkelä's avatar
      lock_rec_validate_page(): Disable the debug printout. · e694e926
      Marko Mäkelä authored
      It is filling the error log when testing the debug version of the server.
      The printout only seems to be useful when debugging a crash, not when
      testing an instrumented version of the server.
      e694e926
    • unknown's avatar
      Manual Merge · d6c109da
      unknown authored
      d6c109da
    • unknown's avatar
      Bug#55478 Row events wrongly apply on the temporary table of the same name · ff9140b5
      unknown authored
      Rows events were applied wrongly on the temporary table with the same name.
      But rows events are generated only for base tables. As temporary
      table's data never be binlogged on row mode. Normally, base table of the
      same name cannot be updated if a temporary table has the same name.
      But there are two cases which can generate rows events on 
      the base table of same name.
            
      Case1: 'CREATE TABLE ... SELECT' statement.
      In mixed format, it will generate rows events if it is unsafe.
            
      Case2: Drop a transactional temporary table in a transaction
             (happens only on 5.5+).
      BEGIN;
      DROP TEMPORARY TABLE t1;       # t1 is a InnoDB table
      INSERT INTO t1 VALUES(rand()); # t1 is a MyISAM table
      COMMIT;
      'DROP TEMPORARY TABLE' will be put in the transaction cache and
      binlogged after the rows events generated by the 'INSERT' statement.
            
      After this patch, slave opens only base table when applying a rows event.
      ff9140b5
    • Jimmy Yang's avatar
      75f7a11a
    • Jimmy Yang's avatar
      Fix Bug #57616 Sig 11 in dict_load_table() when failed to load · cd3f17bd
      Jimmy Yang authored
      index or foreign key
      
      Approved by Sunny Bains
      cd3f17bd
  3. 20 Oct, 2010 12 commits
  4. 19 Oct, 2010 15 commits