1. 31 Jul, 2008 1 commit
    • He Zhenxing's avatar
      BUG#37051 Replication rules not evaluated correctly · 6cbdbc47
      He Zhenxing authored
      The problem of this bug is that we need to get the list of tables
      to be updated for a multi-table update statement, which requires to
      open all the tables referenced by the statement and resolve all
      the fields involved in update in order to figure out the list of
      tables for update. However if there are replicate filter rules,
      some tables might not exist on slave and result in a failure
      before we could examine the filter rules.
      
      I think the whole problem can not be solved on slave alone,
      the master must record and send the information of tables
      involved for update to slave, so that the slave do not need to
      open all the tables referenced by the multi-table update statement to
      figure out which tables are involved for update.
      
      So a status variable is added to Query_log event to store the
      value of table map for update on master. And on slave, it will
      try to get the value of this variable and use it to examine
      filter rules without opening any tables on slave, if this values
      is not available, the old approach is used and thus the bug will
      still occur for when replicating from old masters.
      
      
      sql/sql_class.h:
        add member table_map_for_update to THD
      sql/sql_parse.cc:
        check filter rules by using table_map_for_update value
      sql/sql_update.cc:
        save the value of table_map_for_update
      6cbdbc47
  2. 16 Jul, 2008 3 commits
    • Sven Sandberg's avatar
      automerge. · 142f2743
      Sven Sandberg authored
      142f2743
    • Sven Sandberg's avatar
      BUG#38127: main.mysqlbinlog_base64 fails sporadically on pushbuild · 55702926
      Sven Sandberg authored
      Problem: mysqlbinlog_base64 fails because the binlog contains
      traces from previous test cases.
      Fix: Make have_log_bin reset the master's binlog.
      
      
      mysql-test/include/have_log_bin.inc:
        Made have_log_bin reset the master logs, so that no traces of
        earlier test cases are left.
      mysql-test/t/mysqlbinlog_base64.test:
        Removed debug info from previous push to this test.
      55702926
    • Sven Sandberg's avatar
      BUG#37733: rpl.rpl_flushlog_loop 'row' fails sporadically on pushbuild · 6a0d9e6e
      Sven Sandberg authored
      Post-post-push fix. The result file for rpl_rbr_to_sbr needs to be 
      updated. While I was there, made rpl_rbr_to_sbr clean up after itself
      by reverting @@binlog_format to the value it had before the test
      started.
      
      
      mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result:
        Updated result file
      mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test:
        Made the test clean up after itself by reverting @@binlog_format
        to its original value.
      6a0d9e6e
  3. 15 Jul, 2008 2 commits
  4. 14 Jul, 2008 3 commits
  5. 10 Jul, 2008 2 commits
    • Sven Sandberg's avatar
      test case rpl.rpl000018 does not exist but has option files. · b55eb29e
      Sven Sandberg authored
      removing the option files
      
      mysql-test/suite/rpl/t/rpl000018-master.opt:
        removed unused file
      mysql-test/suite/rpl/t/rpl000018-slave.opt:
        removed unused file
      b55eb29e
    • Sven Sandberg's avatar
      BUG#37975: wait_for_slave_* should increase the timeout · 9d4ee0bf
      Sven Sandberg authored
      Problem 1: tests often fail in pushbuild with a timeout when waiting
      for the slave to start/stop/receive error.
      Fix 1: Updated the wait_for_slave_* macros in the following way:
      - The timeout is increased by a factor ten
      - Refactored the macros so that wait_for_slave_param does the work for
      the other macros.
      Problem 2: Tests are often incorrectly written, lacking a
      source include/wait_for_slave_to_[start|stop].inc.
      Fix 2: Improved the chance to get it right by adding
      include/start_slave.inc and include/stop_slave.inc, and updated tests
      to use these.
      Problem 3: The the built-in test language command
      wait_for_slave_to_stop is a misnomer (does not wait for the slave io
      thread) and does not give as much debug info in case of failure as
      the otherwise equivalent macro
      source include/wait_for_slave_sql_to_stop.inc
      Fix 3: Replaced all calls to the built-in command by a call to the
      macro.
      Problem 4: Some, but not all, of the wait_for_slave_* macros had an
      implicit connection slave. This made some tests confusing to read,
      and made it more difficult to use the macro in circular replication
      scenarios, where the connection named master needs to wait.
      Fix 4: Removed the implicit connection slave from all
      wait_for_slave_* macros, and updated tests to use an explicit
      connection slave where necessary.
      Problem 5: The macros wait_slave_status.inc and wait_show_pattern.inc
      were unused. Moreover, using them is difficult and error-prone.
      Fix 5: remove these macros.
      Problem 6: log_bin_trust_function_creators_basic failed when running
      tests because it assumed @@global.log_bin_trust_function_creators=1,
      and some tests modified this variable without resetting it to its
      original value.
      Fix 6: All tests that use this variable have been updated so that
      they reset the value at end of test.
      
      
      mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test:
        Replaced wait_for_slave_to_stop by include/wait_for_slave_sql_to_stop.inc
      mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test:
        Replaced wait_for_slave_to_stop by include/wait_for_slave_sql_to_stop.inc
        Added connection slave since includ/wait_for_slave_sql_to_stop.inc
        does not do that anymore.
      mysql-test/extra/rpl_tests/rpl_log.test:
        Replaced start slave+wait_slave_status by start_slave.inc
      mysql-test/include/reset_master_and_slave.inc:
        replaced start/stop slave by start_slave.inc/stop_slave.inc
      mysql-test/include/sync_slave_io_with_master.inc:
        Improved comments and error message.
      mysql-test/include/wait_for_slave_io_to_stop.inc:
        Refactored to use wait_for_slave_param.inc.
        Removed connection slave.
      mysql-test/include/wait_for_slave_param.inc:
        - Improved usage instructions
        - Added more debug info in case of timeout
        - Added parameters $slave_param_comparison, $slave_timeout,
        $slave_keep_connection, $slave_error_message
      mysql-test/include/wait_for_slave_sql_error.inc:
        Refactored to use wait_for_slave_param.inc.
        Removed connection slave.
      mysql-test/include/wait_for_slave_sql_to_start.inc:
        Refactored to use wait_for_slave_param.inc.
        Removed connection slave.
      mysql-test/include/wait_for_slave_sql_to_stop.inc:
        Refactored to use wait_for_slave_param.inc.
        Removed connection slave.
      mysql-test/include/wait_for_slave_to_start.inc:
        Refactored to use wait_for_slave_param.inc.
        Removed connection slave.
      mysql-test/include/wait_for_slave_to_stop.inc:
        Refactored to use wait_for_slave_param.inc.
        Removed connection slave.
      mysql-test/include/wait_show_pattern.inc:
        Removed unused (and error-prone) file
      mysql-test/include/wait_slave_status.inc:
        Removed unused (and error-prone) file
      mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test:
        Renamed $keep_connection to $slave_keep_connection.
      mysql-test/suite/rpl/t/rpl_bug26395.test:
        Replace stop slave by stop_slave.inc
      mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.test:
        Replace start/stop slave by start_slave.inc/stop_slave.inc.
        Replace wait_for_slave_param by wait_for_slave_sql_to_stop.inc.
      mysql-test/suite/rpl/t/rpl_dual_pos_advance.test:
        Renamed $keep_connection to $slave_keep_connection.
      mysql-test/suite/rpl/t/rpl_flushlog_loop.test:
        Replace wait_slave_status by start_slave.inc
      mysql-test/suite/rpl/t/rpl_idempotency.test:
        Added connection slave since wait_for_slave_sql_to_stop.inc does not
        do that any more.
      mysql-test/suite/rpl/t/rpl_incident.test:
        Replaced wait_for_slave_to_stop by wait_for_slave_sql_to_stop.inc
      mysql-test/suite/rpl/t/rpl_init_slave.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
        Replaced save_master_pos;connection slave;sync_with_master by
        sync_slave_with_master.
      mysql-test/suite/rpl/t/rpl_log_pos.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
        Replaced wait_for_slave_param by other wait_for_slave_* macros.
      mysql-test/suite/rpl/t/rpl_packet.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
      mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
      mysql-test/suite/rpl/t/rpl_row_stop_middle_update.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
      mysql-test/suite/rpl/t/rpl_row_until.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
        Replaced save_master_pos;connection slave;sync_with_master by
        sync_slave_with_master.
      mysql-test/suite/rpl/t/rpl_server_id1.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
      mysql-test/suite/rpl/t/rpl_slave_grp_exec.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
      mysql-test/suite/rpl/t/rpl_slave_skip.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
      mysql-test/suite/rpl/t/rpl_slave_status.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
      mysql-test/suite/rpl/t/rpl_sp.test:
        Restore @@global.log_bin_trust_function_creators at end of test.
      mysql-test/suite/rpl/t/rpl_sp_effects.test:
        Restore @@global.log_bin_trust_function_creators at end of test.
      mysql-test/suite/rpl/t/rpl_stm_until.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
        Replaced save_master_pos;connection slave;sync_with_master by
        sync_slave_with_master.
      mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test:
        Replaced start slave by start_slave.inc.
        Added explicit connection slave since wait_for_slave_sql_to_stop.inc
        does not do that anymore.
      mysql-test/t/disabled.def:
        Disabled failing test.
      mysql-test/t/func_time.test:
        Restore @@global.log_bin_trust_function_creators at end of test.
      mysql-test/t/grant.test:
        Restore @@global.log_bin_trust_function_creators at end of test.
      mysql-test/t/grant2.test:
        Restore @@global.log_bin_trust_function_creators at end of test.
      mysql-test/t/innodb_notembedded.test:
        Restore @@global.log_bin_trust_function_creators at end of test.
      mysql-test/t/log_bin_trust_function_creators_func.test:
        Restore @@global.log_bin_trust_function_creators at end of test.
        Clean up at end of test by dropping the created user.
      mysql-test/t/query_cache.test:
        Restore @@global.log_bin_trust_function_creators at end of test.
      mysql-test/t/query_cache_notembedded.test:
        Restore @@global.log_bin_trust_function_creators at end of test.
      mysql-test/t/rpl_init_slave_func.test:
        Replaced start/stop slave by start_slave.inc/stop_slave.inc.
      mysql-test/t/timezone2.test:
        Restore @@global.log_bin_trust_function_creators at end of test.
      9d4ee0bf
  6. 09 Jul, 2008 1 commit
    • Mats Kindahl's avatar
      Ensuring that master and slave both issue a RESET MASTER and RESET SLAVE · 73948a84
      Mats Kindahl authored
      when resetting replication tests.  If not, circular replication setups
      will leave cruft in the slaves binary log.
      
      mysql-test/include/master-slave-reset.inc:
        Adding RESET MASTER on slave and RESET SLAVE on master. In order to avoid
        having to re-generate all the replication test result files, I disable the
        query log for the added statements.
      mysql-test/suite/rpl/t/rpl_flushlog_loop.test:
        Adding code to clean up after test. Disabling query log for the cleanup code.
      73948a84
  7. 08 Jul, 2008 5 commits
    • Mats Kindahl's avatar
      Patch to remove extreneous printout. · 3ae36a1e
      Mats Kindahl authored
      mysql-test/include/wait_for_slave_sql_to_stop.inc:
        Removing extreneous printout.
      3ae36a1e
    • Mats Kindahl's avatar
      Manual merge with mysql-5.1-rpl · d4c0cf10
      Mats Kindahl authored
      d4c0cf10
    • Mats Kindahl's avatar
      Bug #37939 rpl_row_stop_middle_update fails sporadically on pushbuild · eabc3f75
      Mats Kindahl authored
      Bug #37940    rpl_dual_pos_advance fails sporadically on pushbuild,fail wait_for_slave_to_stop
      Bug #37941    rpl_flushlog_loop fails sporadically on pushbuild
        
      Several tests fail when waiting for the slave to stop in what
      appears to be timeouts caused by a timeout value set to low. 
      This causes false failures when the servers are loaded.
        
      In order to try to avoid false negatives, we increase the
      timeout 10 times and also print some more information in the
      event that the slave fails to stop when expected to.
        
      We add a printout of the current processes running to be able
      to see if any process have been executing for an unexpectedly
      long time, and also print the binlog events at the position
      indicated by SHOW SLAVE STATUS.
      
      
      mysql-test/include/wait_for_slave_sql_to_stop.inc:
        - Increasing default timeout 10 times and allowing it to be configurable.
        - Adding printout of process list on failure.
        - Adding printout of binlog events on master that has not yet been applied,
          unless $keep_connection is true.
      eabc3f75
    • Sven Sandberg's avatar
      merged in disabled test cases · 8dd90aff
      Sven Sandberg authored
      8dd90aff
    • Sven Sandberg's avatar
      BUG#37962: *_func tests containing sleeps/race conditions · ff20ea67
      Sven Sandberg authored
      This is not a fix, it just disables the erroneous test cases.
      
      
      mysql-test/t/disabled.def:
        Disabled a number of new tests that contain sleeps and that
        have not been checked for race conditions. At least some of
        them contain race conditions.
      ff20ea67
  8. 07 Jul, 2008 6 commits
    • Sven Sandberg's avatar
      merged fix for bug#37373 into 5.1-rpl · 58bfe41f
      Sven Sandberg authored
      58bfe41f
    • Sven Sandberg's avatar
      BUG#37933: Test "rpl_insert" fails - timing problem in replication test ? · 0b912ed1
      Sven Sandberg authored
      Problem: the test syncs slave by a 'wait_condition' waiting until
      table t1 has 5000 rows. However, there is no guarantee that t1
      makes it to the slave before the wait_condition.
      Fix: sync_slave_with_master just after t1 was created.
      
      
      mysql-test/suite/rpl/t/rpl_insert.test:
        Added sync_slave_with_master to ensure that table t1 is on
        slave before the slave executes wait_condition.
      0b912ed1
    • Sven Sandberg's avatar
      merged fixes for bug#37858 · 0549cfaf
      Sven Sandberg authored
      0549cfaf
    • Sven Sandberg's avatar
      merge with local changes for bug#37906 · acc7f512
      Sven Sandberg authored
      acc7f512
    • Sven Sandberg's avatar
      Post-merge fixes. · 8f83fc20
      Sven Sandberg authored
      The file tree in mtr's vardir has changed so an old
      hard-coded path in mysql-test/t/subselect.test didn't
      work.
      Fix: update the paths in the test.
      
      
      mysql-test/r/subselect.result:
        Updated result file.
      mysql-test/t/subselect.test:
        Problem: The file tree in mtr's vardir has changed
        so an old hard-coded path didn't work.
        Fix: update the paths in the test.
      8f83fc20
    • Sven Sandberg's avatar
      rpl_row_inexist_tbl gave a merge conflict because the binlog · 8d6cce7a
      Sven Sandberg authored
      positions changed. Fixed by removing binlog positions from
      output, and also:
       - removed code not used to verify the tested property
       - added comments
      
      
      mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result:
        Updated result file.
      mysql-test/suite/rpl/t/rpl_row_inexist_tbl-slave.opt:
        Removed option file: it's not needed any more.
      mysql-test/suite/rpl/t/rpl_row_inexist_tbl.test:
        Improved the test in the following ways:
         - The table t2 was not used to verify the property to test,
        so t2 has been removed.
         - Now printing only the relevant column from SHOW SLAVE STATUS
         - Added comments.
      8d6cce7a
  9. 06 Jul, 2008 3 commits
    • Sven Sandberg's avatar
      BUG#37906: innodb_max_dirty_pages_pct_func does not clean up after itself · a71a5c25
      Sven Sandberg authored
      Made the test innodb_max_dirty_pages_pct_func clean up after itself.
      
      
      mysql-test/r/innodb_max_dirty_pages_pct_func.result:
        Updated result file.
      mysql-test/t/disabled.def:
        Fixed BUG#37906
      mysql-test/t/innodb_max_dirty_pages_pct_func.test:
        Made the test clean up after itself.
      a71a5c25
    • Sven Sandberg's avatar
      Merge 5.1 -> 5.1-rpl · 41404f49
      Sven Sandberg authored
      41404f49
    • Sven Sandberg's avatar
      BUG#37373: rpl_ndb_transaction fails sporadically in pb on sol10-amd64-a and sol10-sparc-a · ce23b448
      Sven Sandberg authored
      Problem: rpl_ndb_transaction fails because it assumes nothing
      is written to the binlog at a certain point. However, ndb may
      binlog updates in ndb system tables at a nondeterministic
      time point after an ndb table update has been committed.
      Fix: break the test into two. rpl_ndb_transaction still does
      the ndb updates needed by the first half of the test. The new
      test case rpl_bug26395 includes the part that assumes nothing
      more will be written to the binlog.
      
      
      mysql-test/include/sync_slave_io_with_master.inc:
        Like sync_slave_with_master, but only waits until the IO thread has
        synced; the SQL thread may still be behind.
      mysql-test/suite/rpl/r/rpl_bug26395.result:
        New result file.
      mysql-test/suite/rpl/t/rpl_bug26395-master.opt:
        New option file.
      mysql-test/suite/rpl/t/rpl_bug26395-slave.opt:
        New option file.
      mysql-test/suite/rpl/t/rpl_bug26395.test:
        - Moved second half of rpl_ndb_transaction here.
        - Improved the test case: instead of using a sleep,
        it waits for the slave's io thread to sync up to a proper
        position, and for the slave's sql thread to sync up to
        another position.
        - Added a warning that no more tests should be added at the
        end of the file.
      mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result:
        Updated and renamed result file.
      mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-master.opt:
        No need for the special debug flag any more, it was used by
        the second part of the test which is now in rpl_bug26395.
        Also renamed the file.
      mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-slave.opt:
        Renamed option file.
      mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test:
        - Moved second half of the test to another test (rpl_bug26395)
        - Improved comments.
        - Extended the mixed transaction test to include also innodb.
        - Used 'source include/diff_tables.inc' instead of listing
        several identical tables in the result file.
        - Renamed the test.
      ce23b448
  10. 04 Jul, 2008 1 commit
    • Sven Sandberg's avatar
      BUG#37858: loaddata,rpl_slave_skip,rpl_innodb_mixed_dml fail if datafile not world-readable · 761b1b29
      Sven Sandberg authored
      Problem 1: main.loaddata tried to trigger an error caused by
      reading files outside the vardir, by reading itself. However,
      if loaddata.test is not world-readable (e.g., umask=0077),
      then another error is triggered.
      Fix 1: allow the other error too.
      Problem 2: rpl_slave_skip and rpl_innodb_mixed_dml tried to
      copy a file from mysql-test/suite/rpl/data to mysql-test/var
      and then read it. That failed too if umask=0077, since the
      file would not become world-readable.
      Fix 2: move the files from mysql-test/suite/rpl/data to
      mysql-test/std_data and update tests accordingly. Remove
      the directory mysql-test/suite/rpl/data.
      
      
      mysql-test/r/loaddata.result:
        Updated result file.
      mysql-test/std_data/rpl_bug28618.dat:
        Moved this file to std_data.
      mysql-test/std_data/rpl_mixed.dat:
        Moved this file to std_data.
      mysql-test/suite/rpl/data:
        Removed directory that is now unused.
      mysql-test/suite/rpl/include/rpl_mixed_dml.inc:
        The rpl_mixed.dat file has been moved. Updated the test to
        use the new location.
      mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
        Updated result file.
      mysql-test/suite/rpl/r/rpl_slave_skip.result:
        Updated result file.
      mysql-test/suite/rpl/t/rpl_slave_skip.test:
        The rpl_bug28618.dat file has been moved. Updated the test
        to use the new location.
      mysql-test/t/loaddata.test:
        Allow more error messages. ER_TEXTFILE_NOT_READABLE may
        happen if the file is not world-readable (which may happen,
        e.g., if the user has umask=0077).
      761b1b29
  11. 01 Jul, 2008 1 commit
  12. 30 Jun, 2008 2 commits
    • Matthias Leich's avatar
      Fix for · 69c61a94
      Matthias Leich authored
         Bug#36787 Test funcs_1.charset_collation_1 failing
      Details:
      1. Skip charset_collation_1 if charset "ucs2_bin" is
         missing (property which distincts "vanilla" builds
         from the others)
      2. Let builds with version_comment LIKE "%Advanced%"
         (found them for 5.1) execute charset_collation_3.
      3. Update comments charset_collation.inc so that they
         reflect the current experiences.
      69c61a94
    • Joerg Bruehe's avatar
  13. 25 Jun, 2008 3 commits
  14. 24 Jun, 2008 4 commits
  15. 21 Jun, 2008 1 commit
    • Tatiana A. Nurnberg's avatar
      auto merge · 5a041166
      Tatiana A. Nurnberg authored
      configure.in:
        auto-merge
      mysql-test/suite/bugs/r/rpl_bug33029.result:
        auto-merge
      mysql-test/suite/bugs/t/rpl_bug33029.test:
        auto-merge
      sql/slave.cc:
        auto-merge
      sql/sql_class.cc:
        auto-merge
      sql/structs.h:
        auto-merge
      5a041166
  16. 20 Jun, 2008 2 commits