1. 12 Jul, 2007 1 commit
    • unknown's avatar
      Bug#19259 rpl_ndb_dd_partitions failed on Solaris · b9c18aea
      unknown authored
      Actually, this testcase will fail generally on all testing platforms.
      The bugs come from the inconsistent bitmap between rpl master and slave.
      
      In log_event.cc, the n_bits of m_cols and m_cols_ai are intialized with octal-ceiling 
      m_width, in fact, their n_bits should be equal to m_width.
      Wrong n_bits will cause bitmap_bits_set() get incorrect value in unpack_row()
      in rpl_record.cc, 
      then an assertion in unpack_row() will fail and crash sql thread.
        DBUG_ASSERT(null_ptr == row_data + master_null_byte_count);
      
      Meanwhile, because of binlog_prepare_pending_rows_event() changed with correct
      m_cols, some results of specific testcases should be updated:
      binlog_multi_engine.test
      ndb_binlog_multi.test
      rpl_ndb_dd_partitions.test
      rpl_ndb_log.test
      rpl_truncate_7ndb.test
      rpl_truncate_7ndb_2.test
      
      In addition, to ensure rows replication correct between master and slave after the patch, 
      two 'select * from t1' are added in extra/rpl_tests/rpl_log.test, and some testcases include 
      rpl_log.test, therefore, the results of these testcases should be updated likewise:
      rpl_stm_log.test
      rpl_row_log.test
      rpl_ndb_log.test
      rpl_row_log_innodb.test
      
      Totally, results of nine testcases are updated.
      
      
      include/my_bitmap.h:
        add declaration for create_last_word_mask(), since we need to use it in log_event.cc
      mysql-test/extra/rpl_tests/rpl_log.test:
        add 'select * from t1' both on master and slave to ensure the replication consistent after patched
      mysql-test/r/binlog_multi_engine.result:
        update result
        
        the following is commented by Andrei, 
        The differences can be explained.
        Look at
        lines of THD::binlog_prepare_pending_rows_event
        
          if (!pending)
               ...
              !bitmap_cmp(pending->get_cols(), cols))
        
        The row event disappears because after correcting master side Write_rows_log_event's m_col bitmap initialization, 
        this event has the same m_cols as the preceding one and thereafter they got glued into one bigger size event. 
        This is the correct behaviour now.
      mysql-test/r/ndb_binlog_multi.result:
        update result
        same reason with binlog_multi_engine for Write_rows_log_event
      mysql-test/r/rpl_ndb_dd_partitions.result:
        update result,
        reasons:
        1. tablespace description format changed
        2. hex(b1) from 1 to 0 because there is a update sentence in include/rpl_multi_engine3.inc
        UPDATE t1 SET b1 = 0, t="2006-02-22" WHERE id = 412;
      mysql-test/r/rpl_ndb_log.result:
        update result
        Write_rows event disapper for same reason with binlog_multi_engine ;
        In addition, because add new select in extra/rpl_testsrpl_log.test, 
        corresponding new results are accompanying.
      mysql-test/r/rpl_row_log.result:
        because add new select in extra/rpl_testsrpl_log.test, 
        corresponding new results are accompanying.
      mysql-test/r/rpl_row_log_innodb.result:
        because add new select in extra/rpl_testsrpl_log.test, 
        corresponding new results are accompanying.
      mysql-test/r/rpl_stm_log.result:
        because add new select in extra/rpl_testsrpl_log.test, 
        corresponding new results are accompanying.
      mysql-test/r/rpl_truncate_7ndb.result:
        update result
        same reason with binlog_multi_engine for Write_rows_log_event
      mysql-test/r/rpl_truncate_7ndb_2.result:
        update result
        same reason with binlog_multi_engine for Write_rows_log_event
        
        And for the change
        -master-bin.000001  4   Format_desc  1   102 Server ver: SERVER_VERSION, Binlog ver: 4
        +master-bin.000001  4   Format_desc  1   106 Server ver: SERVER_VERSION, Binlog ver
        
        It's  okay as FormatDescription event matured for 4 bytes since the last time the results had been recorded.
      mysql-test/t/disabled.def:
        resume this test case
      sql/log_event.cc:
        initialize m_cols' n_bits with m_width instead of octal-round(m_width);
        initialize m_cols_ai' n_bits with m_width instead of octal-round(m_width);
        after memcpy(), call create_last_word_mask() to clear extra bits in bitmap to ensure safety
      mysql-test/t/rpl_ndb_dd_partitions-master.opt:
        add --new=true passed to mysqld
      mysql-test/t/rpl_ndb_dd_partitions-slave.opt:
        add --new=true passed to mysqld
      b9c18aea
  2. 06 Jul, 2007 1 commit
    • unknown's avatar
      WL#3303 · e21310b1
      unknown authored
      - row based ndb logging also in mixed
      
      
      e21310b1
  3. 05 Jul, 2007 6 commits
  4. 04 Jul, 2007 11 commits
  5. 03 Jul, 2007 7 commits
  6. 02 Jul, 2007 14 commits