1. 12 Apr, 2007 2 commits
    • unknown's avatar
      BUG#27779 (Slave cannot read old rows log events): · db39f3a8
      unknown authored
      Taking code from before BUG#22583 and incorporating as events to be able
      to read old events. Also incorporating old pack and unpack functions
      into patch.
      
      
      client/Makefile.am:
        Adding files log_event_old.{h,cc} and rpl_record_old.{h,cc}
      client/mysqlbinlog.cc:
        Adding log_event_old.cc.
      libmysqld/Makefile.am:
        Adding files log_event_old.{h,cc} and rpl_record_old.{h,cc}
      sql/CMakeLists.txt:
        Adding files log_event_old.{h,cc} and rpl_record_old.{h,cc}
      sql/Makefile.am:
        Adding files log_event_old.{h,cc} and rpl_record_old.{h,cc}
      sql/log_event.cc:
        Adding code to read pre-GA rows events.
      sql/log_event.h:
        Refactoring to support inheritance and including "old" events definitions.
      sql/log_event_old.cc:
        New BitKeeper file ``sql/log_event_old.cc''
      sql/log_event_old.h:
        New BitKeeper file ``sql/log_event_old.h''
      sql/rpl_record_old.cc:
        New BitKeeper file ``sql/rpl_record_old.cc''
      sql/rpl_record_old.h:
        New BitKeeper file ``sql/rpl_record_old.h''
      db39f3a8
    • unknown's avatar
      BUG#25688 (RBR: circular replication may cause STMT_END_F flags to be · bf699e48
      unknown authored
      skipped):
      
      By moving statement end actions from Rows_log_event::do_apply_event() to
      Rows_log_event::do_update_pos() they will always be executed, even if
      Rows_log_event::do_apply_event() is skipped because the event originated
      at the same server. This because Rows_log_event::do_update_pos() is always
      executed (unless Rows_log_event::do_apply_event() failed with an error,
      in which case the slave stops with an error anyway). 
      
      Adding test case.
      
      Fixing logic to detect if inside a group. If a rotate event occured
      when an initial prefix of events for a statement, but for which the
      table did contain a key, last_event_start_time is set to zero, causing
      rotate to end the group but without unlocking any tables. This left a
      lock hanging around, which subsequently triggered an assertion when a
      second attempt was made to lock the same sequence of tables.
      
      In order to solve the above problem, a new flag was added to the relay
      log info structure that is used to indicate that the replication thread
      is currently executing a statement. Using this flag, the replication
      thread is in a group if it is either in a statement or inside a trans-
      action.
      
      The patch also eliminates some gratuitous header file inclusions that
      were not needed (and caused compile errors) and replaced them with
      forward definitions.
      
      
      sql/item_func.cc:
        Including definition of MASTER_INFO.
      sql/log.cc:
        Including definition of RELAY_LOG_INFO since it is used in the file.
      sql/log_event.cc:
        Moving statement end actions from Rows_log_event::do_apply_event() to
        Rows_log_event::do_update_pos().
        Factoring out code to update group positions and event positions into
        relay log info structure.
        ---
        Adding debugging printouts.
        Fixing logic to detect if inside a group.
      sql/log_event.h:
        Adding Rows_log_event::do_update_pos().
      sql/mysqld.cc:
        Including definition of MASTER_INFO.
      sql/repl_failsafe.cc:
        Including definition of MASTER_INFO.
      sql/rpl_mi.h:
        Including definition of RELAY_LOG_INFO since it is used in the file.
      sql/rpl_rli.cc:
        Adding member function stmt_done() to do after-statement updates of the
        relay log info structure.
      sql/rpl_rli.h:
        Adding member function stmt_done() to do after-statement updates of the
        relay log info structure.
      sql/set_var.cc:
        Including definition of MASTER_INFO.
      sql/slave.cc:
        Adding debuging printouts.
      sql/slave.h:
        Removing inclusion definitions of MASTER_INFO and RELAY_LOG_INFO and
        replacing them with forward declarations since the classes are not
        used in the file. The gratuitous inclusion lead to compile errors in
        the two classes above in files that used neither.
      sql/sql_binlog.cc:
        Including definition of RELAY_LOG_INFO since it is used in the file.
      sql/sql_class.cc:
        Including definition of RELAY_LOG_INFO since it is used in the file.
      sql/sql_class.h:
        Removing inclusion definitions of RELAY_LOG_INFO and replacing it
        with forward declaration since the class is not used in the file.
        The gratuitous inclusion lead to compile errors in the class above
        in files didn't use the class.
      sql/sql_insert.cc:
        Including definition of MASTER_INFO.
      sql/sql_repl.cc:
        Including definition of MASTER_INFO.
      mysql-test/r/rpl_ndb_circular_simplex.result:
        New BitKeeper file ``mysql-test/r/rpl_ndb_circular_simplex.result''
      mysql-test/t/rpl_ndb_circular_simplex.test:
        New BitKeeper file ``mysql-test/t/rpl_ndb_circular_simplex.test''
      bf699e48
  2. 11 Apr, 2007 1 commit
    • unknown's avatar
      BUG#27583 (slave sql fails to read from iocache when slave got · ed222d61
      unknown authored
      stopped at pos==4):
      
      Submitting patch on behalf of Andrei, who discovered the problem
      and provided the patch.
      
      An update of the group relay log coordinates when rotating forgot to
      update the group relay log name and only updated the group relay log
      position (and group master log name and position).
      
      This patch adds code to update the group relay log *name* as well as
      the position 
      
      
      sql/log_event.cc:
        Setting group relay log name as well when rotating, not just the group
        relay log position.
      ed222d61
  3. 30 Mar, 2007 2 commits
    • unknown's avatar
      WL#3464 (Add replication event to denote gap in replication): · eeee9a5f
      unknown authored
      Fixing automerge problem and updating comments referring to exec_event().
      
      
      mysql-test/r/rpl_incident.result:
        Result change
      sql/log_event.cc:
        Renaming exec_event() to do_apply_event().
      sql/log_event.h:
        Renaming exec_event() to do_apply_event().
      sql/rpl_rli.cc:
        Fixing comments referring to exec_event(), which does not exist any more.
      sql/sql_class.h:
        Fixing comments referring to exec_event(), which does not exist any more.
      eeee9a5f
    • unknown's avatar
      - Fixing binary log positions · e101dee4
      unknown authored
      - Eliminating some compiler warnings
      
      
      mysql-test/extra/binlog_tests/blackhole.test:
        Using include file for SHOW BINLOG EVENTS.
      mysql-test/extra/binlog_tests/drop_temp_table.test:
        Using include file for SHOW BINLOG EVENTS.
      mysql-test/extra/binlog_tests/insert_select-binlog.test:
        Using include file for SHOW BINLOG EVENTS.
      mysql-test/extra/rpl_tests/rpl_log.test:
        Using include file for SHOW BINLOG EVENTS.
      mysql-test/extra/rpl_tests/rpl_row_delayed_ins.test:
        Using include file for SHOW BINLOG EVENTS.
      mysql-test/extra/rpl_tests/rpl_truncate_helper.test:
        Using include file for SHOW BINLOG EVENTS.
      mysql-test/include/show_binlog_events.inc:
        Fixing regex replace to handle XIDs as well.
      mysql-test/r/binlog_row_binlog.result:
        Result change
      mysql-test/r/binlog_row_blackhole.result:
        Result change
      mysql-test/r/binlog_row_ctype_ucs.result:
        Result change
      mysql-test/r/binlog_row_drop_tmp_tbl.result:
        Result change
      mysql-test/r/binlog_row_insert_select.result:
        Result change
      mysql-test/r/binlog_row_mix_innodb_myisam.result:
        Result change
      mysql-test/r/binlog_stm_binlog.result:
        Result change
      mysql-test/r/binlog_stm_blackhole.result:
        Result change
      mysql-test/r/binlog_stm_drop_tmp_tbl.result:
        Result change
      mysql-test/r/binlog_stm_insert_select.result:
        Result change
      mysql-test/r/binlog_stm_mix_innodb_myisam.result:
        Result change
      mysql-test/r/ctype_cp932_binlog_row.result:
        Result change
      mysql-test/r/rpl_ndb_charset.result:
        Result change
      mysql-test/r/rpl_ndb_log.result:
        Result change
      mysql-test/r/rpl_ndb_multi.result:
        Result change
      mysql-test/r/rpl_row_basic_11bugs.result:
        Result change
      mysql-test/r/rpl_row_charset.result:
        Result change
      mysql-test/r/rpl_row_create_table.result:
        Result change
      mysql-test/r/rpl_row_delayed_ins.result:
        Result change
      mysql-test/r/rpl_row_drop.result:
        Result change
      mysql-test/r/rpl_row_flsh_tbls.result:
        Result change
      mysql-test/r/rpl_row_inexist_tbl.result:
        Result change
      mysql-test/r/rpl_row_log.result:
        Result change
      mysql-test/r/rpl_row_log_innodb.result:
        Result change
      mysql-test/r/rpl_row_reset_slave.result:
        Result change
      mysql-test/r/rpl_row_until.result:
        Result change
      mysql-test/r/rpl_stm_log.result:
        Result change
      mysql-test/r/rpl_truncate_2myisam.result:
        Result change
      mysql-test/r/rpl_truncate_3innodb.result:
        Result change
      mysql-test/r/rpl_udf.result:
        Result change
      mysql-test/t/binlog_row_mix_innodb_myisam.test:
        Fixing binary log position
      mysql-test/t/binlog_stm_mix_innodb_myisam.test:
        Fixing binary log position.
      sql/log_event.cc:
        Eliminating compiler warnings.
      e101dee4
  4. 29 Mar, 2007 1 commit
    • unknown's avatar
      WL#3464: Add replication event to denote gap in replication · 37cf6529
      unknown authored
      Adding an event that can be used to denote that an incident occured
      on the master. The event can be used to denote a gap in the replication
      stream, but can also be used to denote other incidents.
      
      In addition, the injector interface is extended with functions to
      generate an incident event. The function will also rotate the binary
      log after generating an incident event to get a fresh binary log.
      
      
      client/Makefile.am:
        Adding file rpl_constants.h with constants for replication.
      mysql-test/extra/binlog_tests/binlog.test:
        Binlog position change
      mysql-test/extra/binlog_tests/binlog_insert_delayed.test:
        Binlog position change
      mysql-test/extra/binlog_tests/ctype_cp932_binlog.test:
        Binlog position change
      mysql-test/extra/binlog_tests/ctype_ucs_binlog.test:
        Binlog position change
      mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_deadlock.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_log.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_multi_query.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_row_charset.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_row_sp002.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_row_sp003.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_stm_charset.test:
        Binlog position change
      mysql-test/include/show_binlog_events.inc:
        Binlog position change
      mysql-test/r/binlog_row_binlog.result:
        Result change
      mysql-test/r/binlog_row_ctype_ucs.result:
        Result change
      mysql-test/r/binlog_row_insert_select.result:
        Result change
      mysql-test/r/binlog_row_mix_innodb_myisam.result:
        Result change
      mysql-test/r/binlog_stm_binlog.result:
        Result change
      mysql-test/r/binlog_stm_ctype_ucs.result:
        Result change
      mysql-test/r/binlog_stm_insert_select.result:
        Result change
      mysql-test/r/binlog_stm_mix_innodb_myisam.result:
        Result change
      mysql-test/r/ctype_cp932_binlog_row.result:
        Result change
      mysql-test/r/ctype_cp932_binlog_stm.result:
        Result change
      mysql-test/r/flush_block_commit_notembedded.result:
        Result change
      mysql-test/r/rpl_000015.result:
        Result change
      mysql-test/r/rpl_change_master.result:
        Result change
      mysql-test/r/rpl_deadlock_innodb.result:
        Result change
      mysql-test/r/rpl_flushlog_loop.result:
        Result change
      mysql-test/r/rpl_loaddata.result:
        Result change
      mysql-test/r/rpl_loaddata_s.result:
        Result change
      mysql-test/r/rpl_log_pos.result:
        Result change
      mysql-test/r/rpl_ndb_charset.result:
        Result change
      mysql-test/r/rpl_ndb_log.result:
        Result change
      mysql-test/r/rpl_ndb_multi.result:
        Result change
      mysql-test/r/rpl_rbr_to_sbr.result:
        Result change
      mysql-test/r/rpl_rotate_logs.result:
        Result change
      mysql-test/r/rpl_row_basic_11bugs.result:
        Result change
      mysql-test/r/rpl_row_charset.result:
        Result change
      mysql-test/r/rpl_row_create_table.result:
        Result change
      mysql-test/r/rpl_row_delayed_ins.result:
        Result change
      mysql-test/r/rpl_row_drop.result:
        Result change
      mysql-test/r/rpl_row_flsh_tbls.result:
        Result change
      mysql-test/r/rpl_row_inexist_tbl.result:
        Result change
      mysql-test/r/rpl_row_log.result:
        Result change
      mysql-test/r/rpl_row_log_innodb.result:
        Result change
      mysql-test/r/rpl_row_max_relay_size.result:
        Result change
      mysql-test/r/rpl_row_reset_slave.result:
        Result change
      mysql-test/r/rpl_row_until.result:
        Result change
      mysql-test/r/rpl_server_id1.result:
        Result change
      mysql-test/r/rpl_server_id2.result:
        Result change
      mysql-test/r/rpl_sp.result:
        Result change
      mysql-test/r/rpl_stm_charset.result:
        Result change
      mysql-test/r/rpl_stm_flsh_tbls.result:
        Result change
      mysql-test/r/rpl_stm_log.result:
        Result change
      mysql-test/r/rpl_stm_max_relay_size.result:
        Result change
      mysql-test/r/rpl_stm_multi_query.result:
        Result change
      mysql-test/r/rpl_stm_reset_slave.result:
        Result change
      mysql-test/r/rpl_stm_until.result:
        Result change
      mysql-test/r/rpl_switch_stm_row_mixed.result:
        Result change
      mysql-test/r/rpl_truncate_2myisam.result:
        Result change
      mysql-test/r/rpl_truncate_3innodb.result:
        Result change
      mysql-test/r/rpl_truncate_7ndb.result:
        Result change
      mysql-test/r/user_var-binlog.result:
        Result change
      mysql-test/t/binlog_row_mix_innodb_myisam.test:
        Binlog position change
      mysql-test/t/binlog_stm_mix_innodb_myisam.test:
        Binlog position change
      mysql-test/t/ctype_cp932_binlog_stm.test:
        Binlog position change
      mysql-test/t/mysqlbinlog.test:
        Binlog position change
      mysql-test/t/mysqlbinlog2.test:
        Binlog position change
      mysql-test/t/rpl_loaddata_s.test:
        Binlog position change
      mysql-test/t/rpl_log_pos.test:
        Binlog position change
      mysql-test/t/rpl_row_basic_11bugs.test:
        Binlog position change
      mysql-test/t/rpl_row_create_table.test:
        Binlog position change
      mysql-test/t/rpl_row_flsh_tbls.test:
        Binlog position change
      mysql-test/t/rpl_row_mysqlbinlog.test:
        Binlog position change
      mysql-test/t/rpl_sp.test:
        Binlog position change
      mysql-test/t/rpl_stm_flsh_tbls.test:
        Binlog position change
      mysql-test/t/rpl_switch_stm_row_mixed.test:
        Binlog position change
      mysql-test/t/user_var-binlog.test:
        Binlog position change
      sql/Makefile.am:
        Adding file rpl_constants.h with constants for replication.
      sql/log_event.cc:
        Changing prototype for read_str() to be const-correct and changing code to match that.
        Adding incident log event.
      sql/log_event.h:
        Adding incident log event.
      sql/rpl_injector.cc:
        Adding support for generating incidents into the binary log.
      sql/rpl_injector.h:
        Adding support for generating incidents into the binary log.
      sql/share/errmsg.txt:
        Adding new error message to indicate an incident.
      sql/sql_parse.cc:
        Adding code to generate an incident log event just before executing a REPLACE
        if the variable "incident_database_resync_on_replace" is set.
      mysql-test/r/rpl_incident.result:
        New BitKeeper file ``mysql-test/r/rpl_incident.result''
      mysql-test/t/rpl_incident.test:
        New BitKeeper file ``mysql-test/t/rpl_incident.test''
      sql/rpl_constants.h:
        New BitKeeper file ``sql/rpl_constants.h''
      37cf6529
  5. 28 Mar, 2007 1 commit
    • unknown's avatar
      Eliminating some warnings. · dec74e33
      unknown authored
      sql/field.h:
        Using my_ptrdiff_t for offset instead of uint.
      sql/log_event.cc:
        Removing debug code that generated warnings on Windows build.
      dec74e33
  6. 27 Mar, 2007 3 commits
    • unknown's avatar
      7a856cbf
    • unknown's avatar
      Eliminating some compiler warnings. · 0af7119c
      unknown authored
      sql/log_event.cc:
        Adding non-reachable return statement at end of function to keep compiler
        happy.
      sql/slave.cc:
        In order to keep compiler happy: using variable only used in debug code
        instead of recalling virtual function.
      0af7119c
    • unknown's avatar
      BUG#27441 (There is no COLS bitmap for the after image of an update · 0aefb318
      unknown authored
      rows event):
      
      Adding a after image COLS bitmap to Update_rows_log_event (for telling
      what columns that are present in the after image of each row update).
      
      Also fixing case where Rows_log_event length was not correctly computed
      (happened when the number of columns in a table was more than 251). 
      
      
      mysql-test/r/rpl_row_inexist_tbl.result:
        Result change.
      sql/log_event.cc:
        Extending Rows_log_event with two new fields: m_bitbuf_ai and m_cols_ai.  These fields are only used for the Update_rows_log_event.
        Adding implementation of Update_rows_log_event destructor.
        Using new after image fields inside the Update_rows_log_event.
        Factoring out common constructor bodies into Update_rows_log_event::init()
        function.
        
        Fixing case where length of Rows_log_event was not correctly computed (for
        tables with more than 251 columns).
      sql/log_event.h:
        Moving implementation of Rows_log_event::get_data_size() into .cc file.
        Adding Update_rows_log_event constructor accepting both before image
        and after image COLS vector.
        Adding Update_rows_log_vector destructor.
        Adding fields m_bitbuf_ai and m_cols_ai to Rows_log_event.
        Fixing is_valid() to look at m_cols_ai as well.
      0aefb318
  7. 23 Mar, 2007 1 commit
  8. 22 Mar, 2007 3 commits
    • unknown's avatar
      Fix for BUG#26194 "mysqlbinlog --base64-output produces invalid SQL"; · 6239881a
      unknown authored
      when it was printing a Query event, it produced invalid SQL (missing
      the BINLOG keyword, so the SQL started with the base64 string, which
      is incorrect).
      Note: no testcase; I have a .test which shows that the bugfix works,
      but it triggers BUG#26361 and so gives Valgrind warnings. I'm sending
      this test to the fixer of BUG#26361 for her/him to push when she/he
      fixes BUG#26361.
      
      
      client/mysqlbinlog.cc:
        writing the header (a line started with "#", i.e. a comment) and the
        body (the real operation) of an event to the same IO_CACHE
        (result_cache) confused the logic of Log_event::print_base64()
        (which is that if the cache is not empty then the BINLOG keyword
        should not be printed); it caused the BINLOG keyword to miss hence
        a syntactically wrong output of "mysqlbinlog --base64-output"
        for Query events.
        So we just use the two IO_CACHE already available in "print_event_info".
      sql/log_event.cc:
        using the new small inline function.
        Note that the replication code should one day be fixed to trap all
        errors (like disk write errors).
      sql/log_event.h:
        small inline function to group two operations: copying an IO_CACHE
        to a FILE, and reinitializing this IO_CACHE for being filled again.
      sql/records.cc:
        fix after merge
      6239881a
    • unknown's avatar
      BUG#23171: Illegal group log position · 14eca526
      unknown authored
      Post-merge fixes.
      
      
      mysql-test/r/rpl_ndb_basic.result:
        Result change.
      sql/log_event.cc:
        Adding const-cast.
      14eca526
    • unknown's avatar
      BUG#23171: Illegal group log position · f703a6e6
      unknown authored
      Tail fixes after re-applying patches to older version of clone.
      
      
      sql/log_event.cc:
        Name change of shall_skip() -> do_shall_skip()
        Introducing public shall_skip().
        Name change of skip reason enumeration constants.
        Removing extreneous argument to slave_print_msg() causing compiler warning.
      sql/log_event.h:
        Adding enumeration for skip reason.
        Factoring out exec_event() into exec_relay_log_event().
        Making public interface to event execution primitives.
        Adding documentation.
        Making some (internal) functions const-correct.
      sql/rpl_rli.cc:
        replicate_same_server_id is now a member variable of RLI.
      sql/rpl_rli.h:
        replicate_same_server_id is now a member variable of RLI.
      sql/slave.cc:
        Using RLI-specific member variable replicate_same_server_id instead of
        global instance.
        Moving comments about skipping logic to exec_relay_log_event().
        Moving event execution logic to exec_relay_log_event().
      sql/sql_binlog.cc:
        Using apply_event() directly and adding comment with explenation.
      f703a6e6
  9. 20 Mar, 2007 1 commit
    • unknown's avatar
      BUG#22583: RBR between MyISAM and non-MyISAM tables containing a BIT · e14f13ba
      unknown authored
                 field does not work
      
      Fix to prevent MyISAM from reading data from NULL BLOB.
      Fix to make record comparison independent of values of unused bits in
      record.
      Updating binlog positions in tests.
      
      
      mysql-test/extra/rpl_tests/rpl_multi_query.test:
        Binlog position change
      mysql-test/extra/rpl_tests/rpl_stm_charset.test:
        Binlog position change
      mysql-test/include/show_binlog_events.inc:
        Binlog position change
      mysql-test/r/binlog_stm_binlog.result:
        Result change
      mysql-test/r/binlog_stm_ctype_ucs.result:
        Result change
      mysql-test/r/binlog_stm_insert_select.result:
        Result change
      mysql-test/r/binlog_stm_mix_innodb_myisam.result:
        Result change
      mysql-test/r/ctype_cp932_binlog_stm.result:
        Result change
      mysql-test/r/ndb_binlog_multi.result:
        Result change
      mysql-test/r/rpl_known_bugs_detection.result:
        Result change
      mysql-test/r/rpl_loaddata.result:
        Result change
      mysql-test/r/rpl_loaddata_s.result:
        Result change
      mysql-test/r/rpl_ndb_charset.result:
        Result change
      mysql-test/r/rpl_ndb_extraCol.result:
        Result change
      mysql-test/r/rpl_ndb_log.result:
        Result change
      mysql-test/r/rpl_ndb_multi.result:
        Result change
      mysql-test/r/rpl_rbr_to_sbr.result:
        Result change
      mysql-test/r/rpl_rotate_logs.result:
        Result change
      mysql-test/r/rpl_sp.result:
        Result change
      mysql-test/r/rpl_stm_charset.result:
        Result change
      mysql-test/r/rpl_stm_flsh_tbls.result:
        Result change
      mysql-test/r/rpl_stm_log.result:
        Result change
      mysql-test/r/rpl_stm_max_relay_size.result:
        Result change
      mysql-test/r/rpl_stm_multi_query.result:
        Result change
      mysql-test/r/rpl_stm_reset_slave.result:
        Result change
      mysql-test/r/rpl_stm_until.result:
        Result change
      mysql-test/r/rpl_truncate_7ndb.result:
        Result change
      mysql-test/r/user_var-binlog.result:
        Result change
      mysql-test/t/binlog_stm_mix_innodb_myisam.test:
        Binlog position change
      mysql-test/t/ctype_cp932_binlog_stm.test:
        Binlog position change
      mysql-test/t/mysqlbinlog.test:
        Binlog position change
      mysql-test/t/mysqlbinlog2.test:
        Binlog position change
      mysql-test/t/rpl_sp.test:
        Binlog position change
      mysql-test/t/rpl_stm_flsh_tbls.test:
        Binlog position change
      sql/log_event.cc:
        Emptying the record entirely since it appears MyISAM reads blob column
        data even when they are NULL.
        
        Adding code to set unused bits of the records before doing a comparison,
        and restoring the original values after. Setting the unused bits is necessary
        since NDB does not set them correctly, and resetting them afterwards is needed
        because MyISAM compares the record with the one located when updating
        or deleting it.
      mysql-test/r/rpl_row_basic_11bugs-master.opt:
        New BitKeeper file ``mysql-test/r/rpl_row_basic_11bugs-master.opt''
      mysql-test/r/rpl_row_basic_11bugs-slave.opt:
        New BitKeeper file ``mysql-test/r/rpl_row_basic_11bugs-slave.opt''
      e14f13ba
  10. 16 Mar, 2007 1 commit
    • unknown's avatar
      wl#3700 - post-review fixes: · ce4c93bf
      unknown authored
      s/ulonglong/key_part_map/, comments
      
      
      include/heap.h:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      include/my_base.h:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      include/myisam.h:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      include/myisammrg.h:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      sql/event_db_repository.cc:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      sql/ha_partition.cc:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      sql/ha_partition.h:
        wl#3700 - post-review fixes:
        s/ulonglong/key_part_map/
      sql/sql_select.h:
        wl#3700 - post-review fixes:
        remove tab_to_keypart_map()
      ce4c93bf
  11. 09 Mar, 2007 2 commits
    • unknown's avatar
      BUG#9953: CONVERT_TZ requires mysql.time_zone_name to be locked · 2b1b3814
      unknown authored
      The problem was that some facilities (like CONVERT_TZ() function or
      server HELP statement) may require implicit access to some tables in
      'mysql' database.  This access was done by ordinary means of adding
      such tables to the list of tables the query is going to open.
      However, if we issued LOCK TABLES before that, we would get "table
      was not locked" error trying to open such implicit tables.
      
      The solution is to treat certain tables as MySQL system tables, like
      we already do for mysql.proc.  Such tables may be opened for reading
      at any moment regardless of any locks in effect.  The cost of this is
      that system table may be locked for writing only together with other
      system tables, it is disallowed to lock system tables for writing and
      have any other lock on any other table.
      
      After this patch the following tables are treated as MySQL system
      tables:
        mysql.help_category
        mysql.help_keyword
        mysql.help_relation
        mysql.help_topic
        mysql.proc (it already was)
        mysql.time_zone
        mysql.time_zone_leap_second
        mysql.time_zone_name
        mysql.time_zone_transition
        mysql.time_zone_transition_type
      
      These tables are now opened with open_system_tables_for_read() and
      closed with close_system_tables(), or one table may be opened with
      open_system_table_for_update() and closed with close_thread_tables()
      (the latter is used for mysql.proc table, which is updated as part of
      normal MySQL server operation).  These functions may be used when
      some tables were opened and locked already.
      
      NOTE: online update of time zone tables is not possible during
      replication, because there's no time zone cache flush neither on LOCK
      TABLES, nor on FLUSH TABLES, so the master may serve stale time zone
      data from cache, while on slave updated data will be loaded from the
      time zone tables.
      
      
      mysql-test/r/help.result:
        Update result.
      mysql-test/r/lock.result:
        Update result.
      mysql-test/r/sp-error.result:
        Update result.
      mysql-test/r/timezone2.result:
        Add result for bug#9953: CONVERT_TZ requires mysql.time_zone_name
        to be locked.
      mysql-test/r/view.result:
        Update result: use table t3 rather than utilize MySQL system table.
      mysql-test/t/help.test:
        Test that we can use HELP even under LOCK TABLES.
      mysql-test/t/lock.test:
        Test LOCK TABLE on system tables.
      mysql-test/t/timezone2.test:
        Add test case for bug#9953: CONVERT_TZ requires mysql.time_zone_name
        to be locked.
      mysql-test/t/view.test:
        Update test: use table t3 rather that utilize MySQL system table.
      sql/handler.h:
        Fix comment for 'count' parameter of check_if_locking_is_allowed().
        Add 'current' and 'system_count' parameters.
      sql/item_create.cc:
        We no longer have LEX::add_time_zone_tables_to_query_tables().
      sql/item_timefunc.cc:
        We no longer have LEX::time_zone_tables_used, so
        Item_func_convert_tz::fix_fields() became the same as base
        Item_date_func::fix_fields().
        
        my_tz_find() no longer takes table list, but takes THD pointer now.
      sql/item_timefunc.h:
        Remove dead field and method.
      sql/lock.cc:
        Pass values for 'current' and 'system_count' to
        check_if_locking_is_allowed().
      sql/log_event.cc:
        We no longer have my_tz_find_with_opening_tz_tables(), its functions is
        performed by my_tz_find().
      sql/mysql_priv.h:
        Add functions to work with MySQL system tables.
      sql/set_var.cc:
        my_tz_find() no longer takes table list, but takes THD pointer now.
      sql/sp.cc:
        Remove close_proc_table().  Use close_system_tables() instead.
        
        Use open_system_tables_for_read() and open_system_table_for_update().
      sql/sp.h:
        Remove close_proc_table() declaration.
      sql/sql_base.cc:
        Add implementation of open_system_tables_for_read(),
        close_system_tables(), open_system_table_for_update().
      sql/sql_help.cc:
        Operate on MySQL system tables mysql.help_* with
        open_system_tables_for_read() and close_system_tables() to allow the
        usage of HELP statement under LOCK TABLES.
      sql/sql_lex.cc:
        Remove LEX::time_zone_tables_used and
        LEX::add_time_zone_tables_to_query_tables() which are no longer used.
      sql/sql_lex.h:
        Remove LEX::time_zone_tables_used and
        LEX::add_time_zone_tables_to_query_tables() which are no longer used.
      sql/sql_parse.cc:
        Remove references to LEX::time_zone_tables_used and
        my_tz_check_n_skip_implicit_tables() which are no longer used.
      sql/sql_show.cc:
        Use close_system_tables() instead of removed close_proc_table().
      sql/sql_view.cc:
        LEX::time_zone_tables_used is no longer there.
      sql/sql_yacc.yy:
        LEX::add_time_zone_tables_to_query_tables() is no longer there.
      sql/table.cc:
        Add more tables that should be treated as MySQL system tables.
      sql/share/errmsg.txt:
        Change the error message, as now we allow write-locking of several
        system tables if not mixed with ordinary tables.
      sql/tztime.cc:
        Do not add time zone tables to the list of query tables in
        tz_init_table_list().
        
        Remove fake_time_zone_tables_list and my_tz_get_tables_list().
        
        In my_tz_init(), open mysql.time_zone_leap_second with
        simple_open_n_lock_tables(), but pass time zone name to my_tz_find(),
        which will open and close time zone tables as necessary.
        
        In tz_load_from_open_tables() do not call table->use_all_columns(), as
        this was already done in open_system_tables_for_read().
        
        my_tz_find() takes THD pointer instead of table list, and calls
        open_system_tables_for_read() and close_system_tables() as necessary.
        
        Remove my_tz_find_with_opening_tz_tables().
      sql/tztime.h:
        Remove declarations of my_tz_get_table_list(),
        my_tz_find_with_opening_tz_tables(), fake_time_zone_tables_list,
        definition of my_tz_check_n_skip_implicit_tables().
        Update prototype for my_tz_find().
      storage/csv/ha_tina.cc:
        Add new parameters to check_if_locking_is_allowed().
      storage/csv/ha_tina.h:
        Add new parameters to check_if_locking_is_allowed().
      storage/myisam/ha_myisam.cc:
        Add new parameters to check_if_locking_is_allowed().  In this
        function we count system tables.  If there are system tables, but
        there are also non-system tables, we report an error.
      storage/myisam/ha_myisam.h:
        Add new parameters to check_if_locking_is_allowed().
      2b1b3814
    • unknown's avatar
      Polishing: use constants instead of magic numbers. · db820013
      unknown authored
      include/my_global.h:
        Introduce constants to be used instead of magic numbers.
      sql/field.cc:
        Polishing: use contants instead of magic numbers.
      sql/ha_innodb.cc:
        Polishing: use contants instead of magic numbers.
      sql/handler.cc:
        Polishing: use contants instead of magic numbers.
      sql/item.cc:
        Polishing: use contants instead of magic numbers.
      sql/item.h:
        Polishing: use contants instead of magic numbers.
      sql/item_func.cc:
        Polishing: use contants instead of magic numbers.
      sql/item_subselect.cc:
        Polishing: use contants instead of magic numbers.
      sql/log_event.cc:
        Polishing: use contants instead of magic numbers.
      sql/sql_base.cc:
        Polishing: use contants instead of magic numbers.
      sql/sql_select.cc:
        Polishing: use contants instead of magic numbers.
      sql/sql_show.cc:
        Polishing: use contants instead of magic numbers.
      sql/sql_table.cc:
        Polishing: use contants instead of magic numbers.
      db820013
  12. 07 Mar, 2007 2 commits
    • unknown's avatar
      BUG#22583 (RBR between MyISAM and non-MyISAM tables does not work): · 1790e205
      unknown authored
      Post-merge fixes.
      
      
      mysql-test/extra/binlog_tests/binlog.test:
        Binlog position change
      mysql-test/extra/binlog_tests/binlog_insert_delayed.test:
        Binlog position change
      mysql-test/extra/binlog_tests/ctype_cp932_binlog.test:
        Binlog position change
      mysql-test/extra/binlog_tests/ctype_ucs_binlog.test:
        Binlog position change
      mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
        Binlog position change
      mysql-test/r/binlog_row_binlog.result:
        Result change
      mysql-test/r/binlog_row_ctype_ucs.result:
        Result change
      mysql-test/r/binlog_row_insert_select.result:
        Result change
      mysql-test/r/binlog_row_mix_innodb_myisam.result:
        Result change
      mysql-test/r/ctype_cp932_binlog_row.result:
        Result change
      mysql-test/r/flush_block_commit_notembedded.result:
        Result change
      mysql-test/r/rpl_row_create_table.result:
        Result change
      mysql-test/r/rpl_row_delayed_ins.result:
        Result change
      mysql-test/t/binlog_row_mix_innodb_myisam.test:
        Binlog position change
      mysql-test/t/rpl_row_create_table.test:
        Removing blinding of end_log_pos in SHOW BINLOG EVENTS output.
        Binlog position change.
      sql/log_event.cc:
        Post-merge fixes.
      1790e205
    • unknown's avatar
      A fix for Bug#26750 "valgrind leak in sp_head" (and post-review · b4558c5d
      unknown authored
      fixes).
      
      The legend: on a replication slave, in case a trigger creation
      was filtered out because of application of replicate-do-table/
      replicate-ignore-table rule, the parsed definition of a trigger was not 
      cleaned up properly. LEX::sphead member was left around and leaked 
      memory. Until the actual implementation of support of 
      replicate-ignore-table rules for triggers by the patch for Bug 24478 it 
      was never the case that "case SQLCOM_CREATE_TRIGGER"
      was not executed once a trigger was parsed,
      so the deletion of lex->sphead there worked and the memory did not leak.
      
      The fix: 
      
      The real cause of the bug is that there is no 1 or 2 places where
      we can clean up the main LEX after parse. And the reason we 
      can not have just one or two places where we clean up the LEX is
      asymmetric behaviour of MYSQLparse in case of success or error. 
      
      One of the root causes of this behaviour is the code in Item::Item()
      constructor. There, a newly created item adds itself to THD::free_list
      - a single-linked list of Items used in a statement. Yuck. This code
      is unaware that we may have more than one statement active at a time,
      and always assumes that the free_list of the current statement is
      located in THD::free_list. One day we need to be able to explicitly
      allocate an item in a given Query_arena.
      Thus, when parsing a definition of a stored procedure, like
      CREATE PROCEDURE p1() BEGIN SELECT a FROM t1; SELECT b FROM t1; END;
      we actually need to reset THD::mem_root, THD::free_list and THD::lex
      to parse the nested procedure statement (SELECT *).
      The actual reset and restore is implemented in semantic actions
      attached to sp_proc_stmt grammar rule.
      The problem is that in case of a parsing error inside a nested statement
      Bison generated parser would abort immediately, without executing the
      restore part of the semantic action. This would leave THD in an 
      in-the-middle-of-parsing state.
      This is why we couldn't have had a single place where we clean up the LEX
      after MYSQLparse - in case of an error we needed to do a clean up
      immediately, in case of success a clean up could have been delayed.
      This left the door open for a memory leak.
      
      One of the following possibilities were considered when working on a fix:
      - patch the replication logic to do the clean up. Rejected
      as breaks module borders, replication code should not need to know the
      gory details of clean up procedure after CREATE TRIGGER.
      - wrap MYSQLparse with a function that would do a clean up.
      Rejected as ideally we should fix the problem when it happens, not
      adjust for it outside of the problematic code.
      - make sure MYSQLparse cleans up after itself by invoking the clean up
      functionality in the appropriate places before return. Implemented in 
      this patch.
      - use %destructor rule for sp_proc_stmt to restore THD - cleaner
      than the prevoius approach, but rejected
      because needs a careful analysis of the side effects, and this patch is 
      for 5.0, and long term we need to use the next alternative anyway
      - make sure that sp_proc_stmt doesn't juggle with THD - this is a 
      large work that will affect many modules.
      
      Cleanup: move main_lex and main_mem_root from Statement to its
      only two descendants Prepared_statement and THD. This ensures that
      when a Statement instance was created for purposes of statement backup,
      we do not involve LEX constructor/destructor, which is fairly expensive.
      In order to track that the transformation produces equivalent 
      functionality please check the respective constructors and destructors
      of Statement, Prepared_statement and THD - these members were
      used only there.
      This cleanup is unrelated to the patch.
      
      
      sql/log_event.cc:
        THD::main_lex is private and should not be used.
      sql/mysqld.cc:
        Move MYSQLerror to sql_yacc.yy as it depends on LEX headers now.
      sql/sql_class.cc:
        Cleanup: move main_lex and main_mem_root to THD and Prepared_statement
      sql/sql_class.h:
        Cleanup: move main_lex and main_mem_root to THD and Prepared_statement
      sql/sql_lex.cc:
        Implement st_lex::restore_lex()
      sql/sql_lex.h:
        Declare st_lex::restore_lex().
      sql/sql_parse.cc:
        Consolidate the calls to unit.cleanup() and deletion of lex->sphead
        in mysql_parse (COM_QUERY handler)
      sql/sql_prepare.cc:
        No need to delete lex->sphead to restore memory roots now in case of a 
        parse error - this is done automatically inside MYSQLparse
      sql/sql_trigger.cc:
        This code could lead to double deletion apparently, as in case
        of an error lex.sphead was never reset.
      sql/sql_yacc.yy:
        Trap all returns from the parser to ensure that MySQL-specific cleanup
        is invoked: we need to restore the global state of THD and LEX in 
        case of a parsing error. In case of a parsing success this happens as 
        part of normal grammar reduction process.
      b4558c5d
  13. 01 Mar, 2007 1 commit
    • unknown's avatar
      After merge fix · 0de6bbe4
      unknown authored
      mysql-test/t/rpl_loaddata_simple.test:
        Rename: mysql-test/t/rpl_loaddata2.test -> mysql-test/t/rpl_loaddata_simple.test
      mysql-test/r/rpl_loaddata_simple.result:
        Rename: mysql-test/r/rpl_loaddata2.result -> mysql-test/r/rpl_loaddata_simple.result
      0de6bbe4
  14. 28 Feb, 2007 1 commit
    • unknown's avatar
      Bug#15126 character_set_database is not replicated (LOAD DATA INFILE need it) · b8931c53
      unknown authored
      This patch fixes problem that LOAD DATA could use different
      character sets when loading files on master and on slave sides:
      - Adding replication of thd->variables.collation_database
      - Adding optional character set clause into LOAD DATA
      
      Note, the second way, with explicit CHARACTER SET clause
      should be the recommended way to load data using an alternative
      character set.
      The old way, using "SET @@character_set_database=xxx" should be
      gradually depricated.
      
      
      mysql-test/r/mysqlbinlog.result:
        Adding test case
      mysql-test/t/mysqlbinlog.test:
        Adding test case
      sql/log_event.cc:
        Adding logging of thd->variables.collation_database
      sql/log_event.h:
        Adding declarations
      sql/sql_class.cc:
        Exchange character set is null by default
      sql/sql_class.h:
        Adding character set into sql_exchange
      sql/sql_load.cc:
        - Using exchange character set (if it was specified in LOAD DATA syntax)
        - Using thd->variables.collation_database by default
      sq...
      b8931c53
  15. 26 Feb, 2007 2 commits
    • unknown's avatar
      Eliminating compiler warnings in the sql/ directory. · 145a9f65
      unknown authored
      sql/log.cc:
        Eliminating some warning from incompatible arguments to DBUG_PRINT().
      sql/log_event.cc:
        Eliminating unused auto variable.
      sql/sql_insert.cc:
        Eliminating some warning from incompatible arguments to DBUG_PRINT().
      145a9f65
    • unknown's avatar
      BUG#26634 (Valgrind failure in tree: memory loss for memory allocated in rpl_utility.h): · 10d60727
      unknown authored
      Adding code to release allocated memory when tables_to_lock list is
      cleared.
      
      
      sql/log_event.cc:
        Using RPL_TABLE_LIST instead of TABLE_LIST for tables_to_lock.
      sql/rpl_rli.cc:
        Moving st_relay_log_info::clear_tables_to_lock() into rpl_rli.cc.
        Adding code to release memory allocated for saved table definition.
      sql/rpl_rli.h:
        Moving st_relay_log_info::clear_tables_to_lock() into rpl_rli.cc.
        Using RPL_TABLE_LIST instead of TABLE_LIST for tables_to_lock.
      sql/rpl_utility.h:
        Adding forward declarations.
        Adding boolean to tell if tabledef is valid.
      10d60727
  16. 24 Feb, 2007 2 commits
    • unknown's avatar
      Fixes to make it compile on Windows. · c87920c4
      unknown authored
      sql/log_event.cc:
        The type byte is not equivalent to char on Windows, so compile fails.
      c87920c4
    • unknown's avatar
      BUG#26286 (row-based logging scales worse than statement-based logging): · cd4abaf0
      unknown authored
      Submitting patch on Guilhem's behalf (he found the solution).
        
      Correcting a typo that caused very big increases in memory usage when
      more memory needed to be allocated for row-based events. Also correcting
      a border case check when more memory needed to be allocated.
      
      
      sql/log_event.cc:
        Correcting typo that caused very big increases in memory allocation.
        Correcting border case for when more memory should be allocated.
      cd4abaf0
  17. 23 Feb, 2007 2 commits
    • unknown's avatar
      Fix for BUG#25628: "mysqlbinlog crashes while processing binary logs". · da416bdf
      unknown authored
      mysqlbinlog prints all row-based events of a single statement as a
      single "BINLOG" statement containing the concatenation of those events.
      Big (i.e. >64k) concatenations of row-based events
      (e.g. Write_rows_log_event) caused mysqlbinlog's IO_CACHE to overflow
      to a temporary file but the IO_CACHE had not been inited with
      open_cached_file(), so it tried to create a temporary file in
      an uninitialized directory (thus failing to create, then to write;
      some OS errors were printed, and it finally segfaulted).
      After fixing this, it appeared that mysqlbinlog was printing only
      a piece of big concatenations of row-based events (it printed
      at most the size of the IO_CACHE's buffer i.e. 64k); that caused data
      loss at restore. We fix and test that.
      Last, mysqlbinlog's printouts looked a bit strange with the informative
      header (#-prefixed) of groupped Rows_log_event all on one line,
      so we insert \n. After that, a small bug in the --hexdump code appeared
      (only if the string to hex-print had its length a multiple of 16),
      we fix it.
      
      
      
      client/mysqlbinlog.cc:
        if we write to IO_CACHE more than can fit into its memory buffer,
        it will try to overflow into a file; for that to work, IO_CACHE
        must be inited via open_cached_file().
      mysql-test/r/mysqlbinlog_base64.result:
        result update
      mysql-test/t/mysqlbinlog_base64.test:
        test for BUG#25628: test that mysqlbinlog does not have OS errors
        with big concatenations of row-based events
        (e.g. Write_rows_log_event), and prints those concatenations entirely
        (testing by piping the output back into the server and comparing data).
      mysys/mf_iocache2.c:
        my_b_copy_to_file() had a problem: it assumed that bytes_in_cache
        are all the bytes to copy to the file, while it only tells how many
        bytes are in the buffer; so the code forgot to copy what had already
        overflown into a temporary file. Thus any big event was printed only
        partially by mysqlbinlog (loss of data at restore). The fix is
        inspired by MYSQL_BIN_LOG::write_cache().
      sql/log_event.cc:
        Several Table_map/Write_rows events generated by one single statement
        get groupped together in mysqlbinlog's output; it printed things like
        #718 7:30:51 server id 12 end_log_pos 988      Write_rows: table id 17#718 7:30:51 server id 12 #718 7:30:51 server id 12  end_log_pos 988      Write_rows: table id 17#718 7:30:51 server id 12 end_log_pos 1413 <cut>
        It didn't look nice to have printouts glued like this without line
        breaks. Adding a line break.
        Doing this, when using --hexdump the result was:
        #718 7:30:51 server id 12 end_log_pos 988
        # <hexdump output>
        # Write_rows: table id 17
        which is correct; unfortunately if the hex dump had only full lines
        (i.e the string to print in hex had its length a multiple of 16),
        then the # in front of Write_rows was not printed. Fixed.
      sql/log_event.h:
        removing strcpy() (one less function call).
        If we write to IO_CACHE more than can fit into its memory buffer,
        it will try to overflow into a file; for that to work, IO_CACHE
        must be inited via open_cached_file().
        open_cached_file(), like init_io_cache(), can fail; we make sure to
        catch this constructor's problem via the init_ok() method.
      da416bdf
    • unknown's avatar
      Fixed compiler warnings · 09ec475c
      unknown authored
      Fixed compile-pentium64 scripts
      Fixed wrong estimate of update_with_key_prefix in sql-bench
      Merge bk-internal.mysql.com:/home/bk/mysql-5.1 into mysql.com:/home/my/mysql-5.1
      Fixed unsafe define of uint4korr()
      Fixed that --extern works with mysql-test-run.pl
      Small trivial cleanups
      This also fixes a bug in counting number of rows that are updated when we have many simultanous queries
      Move all connection handling and command exectuion main loop from sql_parse.cc to sql_connection.cc
      Split handle_one_connection() into reusable sub functions.
      Split create_new_thread() into reusable sub functions.
      Added thread_scheduler; Preliminary interface code for future thread_handling code.
      
      Use 'my_thread_id' for internal thread id's
      Make thr_alarm_kill() to depend on thread_id instead of thread
      Make thr_abort_locks_for_thread() depend on thread_id instead of thread
      In store_globals(), set my_thread_var->id to be thd->thread_id.
      Use my_thread_var->id as basis for my_thread_name()
      The above changes m...
      09ec475c
  18. 12 Feb, 2007 1 commit
    • unknown's avatar
      BUG#22583 (RBR between MyISAM and non-MyISAM tables containing BIT field · 06224585
      unknown authored
      does not work): Changing packed row format to only include null bits
      for those columns that are present in the row as well as writing BIT
      columns in a storage engine-independent format.
      
      The change in row format is incompatible with the previous format and a
      slave will not be able to read the new events.
      
      
      mysql-test/extra/rpl_tests/rpl_deadlock.test:
        Position change since Format_description_log_event is longer.
      mysql-test/extra/rpl_tests/rpl_log.test:
        Position change since Format_description_log_event is longer.
      mysql-test/extra/rpl_tests/rpl_row_charset.test:
        Position change since Format_description_log_event is longer.
      mysql-test/r/rpl_000015.result:
        Result change.
      mysql-test/r/rpl_change_master.result:
        Result change.
      mysql-test/r/rpl_deadlock_innodb.result:
        Result change.
      mysql-test/r/rpl_flushlog_loop.result:
        Result change.
      mysql-test/r/rpl_log_pos.result:
        Result change.
      mysql-test/r/rpl_row_basic_11bugs.result:
        Result change.
      mysql-test/r/rpl_row_charset.result:
        Result change.
      mysql-test/r/rpl_row_create_table.result:
        Result change.
      mysql-test/r/rpl_row_delayed_ins.result:
        Result change.
      mysql-test/r/rpl_row_drop.result:
        Result change.
      mysql-test/r/rpl_row_flsh_tbls.result:
        Result change.
      mysql-test/r/rpl_row_inexist_tbl.result:
        Result change.
      mysql-test/r/rpl_row_log.result:
        Result change.
      mysql-test/r/rpl_row_log_innodb.result:
        Result change.
      mysql-test/r/rpl_row_max_relay_size.result:
        Result change.
      mysql-test/r/rpl_row_reset_slave.result:
        Result change.
      mysql-test/r/rpl_row_until.result:
        Result change.
      mysql-test/r/rpl_server_id1.result:
        Result change.
      mysql-test/r/rpl_server_id2.result:
        Result change.
      mysql-test/r/rpl_switch_stm_row_mixed.result:
        Result change.
      mysql-test/r/rpl_truncate_2myisam.result:
        Result change.
      mysql-test/r/rpl_truncate_3innodb.result:
        Result change.
      mysql-test/t/rpl_loaddata_s.test:
        Position change since Format_description_log_event is longer.
      mysql-test/t/rpl_log_pos.test:
        Position change since Format_description_log_event is longer.
      mysql-test/t/rpl_row_basic_11bugs-master.opt:
        Adding --innodb option
      mysql-test/t/rpl_row_basic_11bugs.test:
        Testing explicitly for RBR MyISAM -> InnoDB and vice versa.
        Position change since Format_description_log_event is longer.
      mysql-test/t/rpl_row_create_table.test:
        Position change since Format_description_log_event is longer.
      mysql-test/t/rpl_row_flsh_tbls.test:
        Position change since Format_description_log_event is longer.
      mysql-test/t/rpl_row_mysqlbinlog.test:
        Position change since Format_description_log_event is longer.
      mysql-test/t/rpl_switch_stm_row_mixed.test:
        Position change since Format_description_log_event is longer.
      mysql-test/t/user_var-binlog.test:
        Position change since Format_description_log_event is longer.
      sql/log_event.cc:
        Changing packed row format to only include null bits for those columns
        that are present in the row as well as writing BIT columns in a storage
        engine-independent format.
        
        Changing unpack_row() to accomodate for the changes.
      sql/log_event.h:
        Renumbering old row events and adding new codes.
      sql/sql_class.cc:
        Changing packed row format to only include null bits for those columns
        that are present in the row as well as writing BIT columns in a storage
        engine-independent format.
        
        Changing THD::pack_row() to accomodate for the changes and adding
        documentation.
      mysql-test/t/rpl_row_basic_11bugs-slave.opt:
        New BitKeeper file ``mysql-test/t/rpl_row_basic_11bugs-slave.opt''
      06224585
  19. 08 Feb, 2007 1 commit
    • unknown's avatar
      Fix for BUG#24432 · 304fc719
      unknown authored
      "INSERT... ON DUPLICATE KEY UPDATE skips auto_increment values".
      When in an INSERT ON DUPLICATE KEY UPDATE, using
      an autoincrement column, we inserted some autogenerated values and
      also updated some rows, some autogenerated values were not used
      (for example, even if 10 was the largest autoinc value in the table
      at the start of the statement, 12 could be the first autogenerated
      value inserted by the statement, instead of 11). One autogenerated
      value was lost per updated row. Led to exhausting the range of the
      autoincrement column faster.
      Bug introduced by fix of BUG#20188; present since 5.0.24 and 5.1.12.
      This bug breaks replication from a pre-5.0.24 master.
      But the present bugfix, as it makes INSERT ON DUP KEY UPDATE
      behave like pre-5.0.24, breaks replication from a [5.0.24,5.0.34]
      master to a fixed (5.0.36) slave! To warn users against this when
      they upgrade their slave, as agreed with the support team, we add
      code for a fixed slave to detect that it is connected to a buggy
      master in a s...
      304fc719
  20. 29 Jan, 2007 1 commit
    • unknown's avatar
      WL#3700: Handler API change: all index search methods - that is, · 57c50bac
      unknown authored
      index_read(), index_read_idx(), index_read_last(), and
      records_in_range() - instead of 'uint keylen' argument take
      'ulonglong keypart_map', a bitmap showing which keyparts are
      present in the key value.
      Fallback method is provided for handlers that are lagging behind.
      
      57c50bac
  21. 28 Jan, 2007 1 commit
    • unknown's avatar
      After merge fixes · 4bef3e0a
      unknown authored
      Removed a lot of compiler warnings
      Removed not used variables, functions and labels
      Initialize some variables that could be used unitialized (fatal bugs)
      %ll -> %l
      
      
      BitKeeper/etc/ignore:
        added storage/archive/archive_reader
      BUILD/SETUP.sh:
        ccache now works again
      BUILD/compile-pentium-gcov:
        Added marker that we are using gcov and need special version of ccache
      client/mysql_upgrade.c:
        after merge fixes
      client/mysqlbinlog.cc:
        after merge fixes
      client/mysqldump.c:
        Removed compiler warnings
      client/mysqlimport.c:
        Removed compiler warnings
      client/mysqltest.c:
        Removed compiler warnings
      mysql-test/t/mysqlcheck.test:
        After merge fixes
      mysys/my_bitmap.c:
        After merge fix
      sql/event_data_objects.cc:
        Removed not used variable
      sql/event_db_repository.cc:
        Removed not used variable
      sql/event_queue.cc:
        Removed not used variable
      sql/field.cc:
        After merge fixes
      sql/filesort.cc:
        Added missing initialization (could cause core dump on EOM)
      sql/ha_ndbcluster.cc:
        After merge fixes
      ...
      4bef3e0a
  22. 26 Jan, 2007 1 commit
    • unknown's avatar
      BUG#19033 (RBR: slave does not handle schema changes correctly): · 2195fead
      unknown authored
      Since checking table compatibility before locking the table, there were
      potential that a table could be locked that did not have a definition
      that was compatible with the table on the slave.
      
      This patch adds a check just after the table was locked to ensure that
      the table is (still) compatible with the table on the slave.
      
      
      sql/log.cc:
        Moving placement new operators to slave.h since they are used in
        several places in the replication code.
        Removing some compile warnings.
      sql/log_event.cc:
        Moving code to check table compatibility to after tables are locked for
        writing.
      sql/log_event.h:
        Doxygenifying comments.
        Copying error codes to Rows_log_event hierarchy since they are
        now used there as well.
      sql/rpl_utility.h:
        Doxygenifying some comments.
        Changing class table_def to copy the column types given to it.
        Adding structure RPL_TABLE_LIST as a subclass of TABLE_LIST to represent
        lists of tables for the slave.
      sql/slave.h:
        Adding placement new and delete operators since the slave uses them
        in several places.
      sql/sql_insert.cc:
        Removing a compiler warning.
      2195fead
  23. 17 Jan, 2007 1 commit
    • unknown's avatar
      BUG#23171 (Illegal slave restart position): · cabf8588
      unknown authored
      Third patch of the bug fix where the code for skipping events and for
      executing events is factored out into three functions:
      - shall_skip() to decide if the event shall be skipped and the
        reason for it;
      - do_apply_event(), where the event is applied to the database; and
      - do_update_pos(), which updates the actual relay log position and
        group positions.
      
      
      mysql-test/r/rpl_row_tabledefs_2myisam.result:
        Result change.
      mysql-test/r/rpl_row_tabledefs_3innodb.result:
        Result change.
      sql/log_event.cc:
        Creating shall_skip(), do_update_pos(), and do_apply_event()
        functions for each event by factoring out the previous code.
        Adding debug code and fixing some error codes that were not correct.
      sql/rpl_rli.cc:
        Renaming unsafe_to_stop_at into last_event_start_time.
        Adding debug code.
      sql/rpl_rli.h:
        Renaming unsafe_to_stop_at into last_event_start_time.
      sql/slave.cc:
        Renaming unsafe_to_stop_at into last_event_start_time.
      cabf8588
  24. 10 Jan, 2007 2 commits
    • unknown's avatar
      BUG#22645 - LC_TIME_NAMES: Statement not replicated · 09de81ba
      unknown authored
      This patch is an additional code change to the get_str_len_and_pointer
      method in log_events.cc. This change is necessary to correct a problem
      encountered on 64-bit SUSE where the auto_increment_* variables were
      being overwritten. The change corrects a cast mismatch which caused
      the problem.
      
      
      sql/log_event.cc:
        BUG#22645 - LC_TIME_NAMES: Statement not replicated
        This patch is an additional code change to the get_str_len_and_pointer,
        copy_str_and_move methods and the Query_leg_event constructor to 
        correct a type mismatch encountered during testing on SUSE 64-bit. The patch changes
        the data type of the buffer variables was changed to a new typedef 
        defined in the Log_event class. The new type is:
        
        typedef unsigned char Byte; 
        
        The variables changed include:
        
        pos, start, end, and data_buf
      sql/log_event.h:
        BUG#22645 - LC_TIME_NAMES: Statement not replicated
        This patch adds a new type definition to the Log_event class. The new
        type is typedef unsigned char Byte. It is used in place of the uchar
        and usigned char definitions in the Query_log_event constructor to 
        eliminate type conversion problems encountere on SUSE 64-bit.
      09de81ba
    • unknown's avatar
      BUG#22645 - LC_TIME_NAMES: Statement not replicated · 4b2d2826
      unknown authored
      This patch is an additional code change to the get_str_len_and_pointer 
      method in log_events.cc. This change is necessary to correct a problem
      encountered on 64-bit SUSE where the auto_increment_* variables were
      being overwritten. The change corrects a cast mismatch which caused
      the problem.
      
      
      sql/log_event.cc:
        BUG#22645 - LC_TIME_NAMES: Statement not replicated
        This patch is an additional code change to the get_str_len_and_pointer,
        copy_str_and_move methods and the Query_leg_event constructor to 
        correct a type mismatch encountered during testing on SUSE 64-bit. The patch changes
        the data type of the buffer variables was changed to a new typedef 
        defined in the Log_event class. The new type is:
        
        typedef unsigned char Byte; 
        
        The variables changed include:
        
        pos, start, end, and data_buf
      sql/log_event.h:
        This patch adds a new type definition to the Log_event class. The new
        type is typedef unsigned char Byte. It is used in place of the uchar
        and usigned char definitions in the Query_log_event constructor to 
        eliminate type conversion problems encountere on SUSE 64-bit.
      4b2d2826
  25. 29 Dec, 2006 1 commit
    • unknown's avatar
      log_event.cc: · aa29d617
      unknown authored
        After merge fix
      
      
      sql/log_event.cc:
        After merge fix
      aa29d617
  26. 23 Dec, 2006 1 commit
    • unknown's avatar
      Many files: · 2d27fea5
      unknown authored
        Changed header to GPL version 2 only
      
      
      BUILD/Makefile.am:
        Changed header to GPL version 2 only
      Docs/Makefile.am:
        Changed header to GPL version 2 only
      Makefile.am:
        Changed header to GPL version 2 only
      SSL/Makefile.am:
        Changed header to GPL version 2 only
      bdb/Makefile.in:
        Changed header to GPL version 2 only
      client/Makefile.am:
        Changed header to GPL version 2 only
      client/client_priv.h:
        Changed header to GPL version 2 only
      client/completion_hash.cc:
        Changed header to GPL version 2 only
      client/completion_hash.h:
        Changed header to GPL version 2 only
      client/get_password.c:
        Changed header to GPL version 2 only
      client/my_readline.h:
        Changed header to GPL version 2 only
      client/mysql.cc:
        Changed header to GPL version 2 only
      client/mysql_upgrade.c:
        Changed header to GPL version 2 only
      client/mysqladmin.cc:
        Changed header to GPL version 2 only
      client/mysqlbinlog.cc:
        Changed header to GPL version 2 only
      client/mysqlcheck.c:
        Changed header to GPL version 2 only
      client/mysqld...
      2d27fea5
  27. 22 Dec, 2006 2 commits
    • unknown's avatar
      WL #3031 · 0539400a
      unknown authored
      * Various windows errors fixed
      * Increased max key length for federated
      
      
      include/my_time.h:
        WL #3031
        
        Windows compile errors for some platforms. JBalint helped find this fix.
      sql/log_event.cc:
        WL #3031
        
        Windows compile errors on some platforms. explicite casting.
      sql/sql_servers.cc:
        WL #3031
        
        Add rwlock init to sql_servers to fix hang on windows.
      storage/federated/ha_federated.h:
        WL #3031
        
        Increase max key length to innodb's max (Cisco fix)
      0539400a
    • unknown's avatar
      ndb - fixed for BUG#19896 Last_Errno: 4294967295, Error in Write_rows event:... · c15a2f86
      unknown authored
      ndb - fixed for BUG#19896 Last_Errno: 4294967295, Error in Write_rows event: (error number 4 billion ?)
      
      fixed to use int instead of uint32 type to return last_slave_errno.
      
      
      sql/log_event.cc:
        don't set -1 to last_slave_errno.
      sql/protocol.h:
        added function store(int from) to return last_slave_errno.
      sql/slave.cc:
        should use int instead of uint32 type to return last_slave_errno.
      c15a2f86