1. 29 Sep, 2009 3 commits
    • Alfranio Correia's avatar
      BUG#38173 Field doesn't have a default value with row-based replication · 4fc924d7
      Alfranio Correia authored
      NOTE: Backporting the patch to next-mr.
            
      The reason of  the bug was incompatibile with the master side behaviour.
      INSERT query on the master is allowed to insert into a table without specifying
      values of DEFAULT-less fields if sql_mode is not strict.
                  
      Fixed with checking sql_mode by the sql thread to decide how to react.
      Non-strict sql_mode should allow Write_rows event to complete.
                  
      todo: warnings can be shown via show slave status, still this is a 
      separate rather general issue how to show warnings for the slave threads.
      4fc924d7
    • Alfranio Correia's avatar
      WL#4828 and BUG#45747 · 8e644c08
      Alfranio Correia authored
      NOTE: Backporting the patch to next-mr.
      
      WL#4828 Augment DBUG_ENTER/DBUG_EXIT to crash MySQL in different functions
      -------
      
      The assessment of the replication code in the presence of faults is extremely
      import to increase reliability. In particular, one needs to know if servers
      will either correctly recovery or print out appropriate error messages thus
      avoiding unexpected problems in a production environment.
      
      In order to accomplish this, the current patch refactories the debug macros
      already provided in the source code and introduces three new macros that
      allows to inject faults, specifically crashes, while entering or exiting a
      function or method. For instance, to crash a server while returning from
      the init_slave function (see module sql/slave.cc), one needs to do what
      follows:
      
      1 - Modify the source replacing DBUG_RETURN by DBUG_CRASH_RETURN;
      
        DBUG_CRASH_RETURN(0);
      
      2 - Use the debug variable to activate dbug instructions:
      
        SET SESSION debug="+d,init_slave_crash_return";
      
      The new macros are briefly described below:
      
      DBUG_CRASH_ENTER (function) is equivalent to DBUG_ENTER which registers the
      beginning of a function but in addition to it allows for crashing the server
      while entering the function if the appropriate dbug instruction is activate.
      In this case, the dbug instruction should be "+d,function_crash_enter".
      
      DBUG_CRASH_RETURN (value) is equivalent to DBUG_RETURN which notifies the
      end of a function but in addition to it allows for crashing the server
      while returning from the function if the appropriate dbug instruction is
      activate. In this case, the dbug instruction should be
      "+d,function_crash_return". Note that "function" should be the same string
      used by either the DBUG_ENTER or DBUG_CRASH_ENTER.
      
      DBUG_CRASH_VOID_RETURN (value) is equivalent to DBUG_VOID_RETURN which
      notifies the end of a function but in addition to it allows for crashing
      the server while returning from the function if the appropriate dbug
      instruction is activate. In this case, the dbug instruction should be
      "+d,function_crash_return". Note that "function" should be the same string
      used by either the DBUG_ENTER or DBUG_CRASH_ENTER.
      
      To inject other faults, for instance, wrong return values, one should rely
      on the macros already available. The current patch also removes a set of
      macros that were either not being used or were redundant as other macros
      could be used to provide the same feature. In the future, we also consider
      dynamic instrumentation of the code.
      
      
      BUG#45747 DBUG_CRASH_* is not setting the strict option
      ---------
            
      When combining DBUG_CRASH_* with "--debug=d:t:i:A,file" the server crashes
      due to a call to the abort function in the DBUG_CRASH_* macro althought the
      appropriate keyword has not been set.
      8e644c08
    • Alfranio Correia's avatar
      BUG#44663 Unused replication options prevent server from starting. · cf989936
      Alfranio Correia authored
      NOTE: Backporting the patch to next-mr.
                  
      The use of option log_slave_updates without log_bin was preventing the server
      from starting. To fix the problem, we replaced the error message and the exit
      call by a warning message.
      cf989936
  2. 28 Sep, 2009 3 commits
    • Luis Soares's avatar
      c02813ba
    • Luis Soares's avatar
      BUG#28777, WL#4293: SHOW BINLOG EVENTS does not work on relay log · 207cd67f
      Luis Soares authored
      files
      
      NOTE: this is the backport to next-mr.
                  
      SHOW BINLOG EVENTS does not work with relay log files. If issuing
      "SHOW BINLOG EVENTS IN 'relay-log.000001'" in a non-empty relay
      log file (relay-log.000001), mysql reports empty set.
                  
      This patch addresses this issue by extending the SHOW command
      with RELAYLOG. Events in relay log files can now be inspected by
      issuing SHOW RELAYLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT
      [offset,] row_count].
      
      mysql-test/extra/rpl_tests/rpl_show_relaylog_events.inc:
        Shared part of the test case.
      mysql-test/include/show_binlog_events.inc:
        Added options $binary_log_file, $binary_log_limit_row, 
        $binary_log_limit_offset so that show_binlog_events can take 
        same parameters as SHOW BINLOG EVENTS does.
      mysql-test/include/show_relaylog_events.inc:
        Clone of show_binlog_events for relaylog events.
      mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test:
        Test case for row based replication.
      mysql-test/suite/rpl/t/rpl_stm_mix_show_relaylog_events.test:
        Test case for statement and mixed mode replication.
      sql/lex.h:
        Added RELAYLOG symbol.
      sql/mysqld.cc:
        Added "show_relaylog_events" to status_vars.
      sql/sp_head.cc:
        Set SQLCOM_SHOW_RELAYLOG_EVENTS to return flags=
        sp_head::MULTI_RESULTS; in sp_get_flags_for_command as
        SQLCOM_SHOW_BINLOG_EVENTS does.
      sql/sql_lex.h:
        Added sql_command SQLCOM_SHOW_RELAYLOG_EVENTS to lex enum_sql_command.
      sql/sql_parse.cc:
        Added handling of SQLCOM_SHOW_RELAYLOG_EVENTS.
      sql/sql_repl.cc:
        mysql_show_binlog_events set to choose the log file to use based on
        the command issued (SHOW BINLOG|RELAYLOG EVENTS).
      sql/sql_yacc.yy:
        Added RELAYLOG to the grammar.
      207cd67f
    • Mats Kindahl's avatar
      Disabling tests that are not relevant after BUG#40116, these will be enabled · 0b5d3870
      Mats Kindahl authored
      when WL#2867 or associated fixes for 5.1 is added to solve the problem.
      0b5d3870
  3. 25 Sep, 2009 1 commit
    • Mats Kindahl's avatar
      Bug #47645: Segmentation fault when out of memory during handlerton initialization · 790c664c
      Mats Kindahl authored
      There is a missing check for memory allocation failure when allocating
      memory for the handlerton structure. If the handlerton init function
      tries to de-reference the pointer, it will cause a segmentation fault
      and crash the server.
      
      This patch fixes the problem by not calling the init function if memory
      allocation failed, and instead prints an informative error message and
      reports the error to the caller.
      
      sql/handler.cc:
        Add a check if memory allocation succeeded before calling the init
        function. If it failed, it is not necessary to free the memory,
        but the plugin->data is set to NULL to ensure that it can be checked
        for failure.
      790c664c
  4. 23 Sep, 2009 3 commits
    • Mats Kindahl's avatar
      WL#5016: Fix header file include guards · 52f606e2
      Mats Kindahl authored
                  
      Adding header include file guards to files that are missing such.
      52f606e2
    • Mats Kindahl's avatar
      Bug #37221: SET AUTOCOMMIT=1 does not commit binary log · 6b35aaac
      Mats Kindahl authored
      When setting AUTOCOMMIT=1 after starting a transaction, the binary log
      did not commit the outstanding transaction. The reason was that the binary
      log commit function saw the values of the new settings, deciding that there
      were nothing to commit.
      
      Fixed the problem by moving the implicit commit to before the thread option
      flags were changed, so that the binary log sees the old values of the flags
      instead of the values they will take after the statement.
      
      
      mysql-test/extra/binlog_tests/implicit.test:
        New test file to check implicit commits both inside and outside transactions.
      mysql-test/suite/binlog/t/binlog_implicit_commit.test:
        Test for implicit commit of SET AUTOCOMMIT and LOCK/UNLOCK TABLES.
      sql/set_var.cc:
        Adding code to commit pending transaction before changing option flags.
      6b35aaac
    • Mats Kindahl's avatar
      BUG#29288: myisam transactions replicated to a transactional · 4c0c1f7e
      Mats Kindahl authored
      slave leaves slave unstable
      
      Problem: when replicating from non-transactional to
      transactional engine with autocommit off, no BEGIN/COMMIT
      is written to the binlog. When the slave replicates, it
      will start a transaction that never ends.
      
      Fix: Force autocommit=on on slave by always replicating
      autocommit=1 from the master.
      4c0c1f7e
  5. 03 Sep, 2009 6 commits
  6. 02 Sep, 2009 17 commits
  7. 01 Sep, 2009 7 commits