1. 27 Feb, 2007 7 commits
    • unknown's avatar
      Fix of incorrect merge of test case · 71b762bf
      unknown authored
      71b762bf
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge · 7443227b
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
      
      
      sql/sql_load.cc:
        Auto merged
      mysql-test/r/rpl_user_variables.result:
        Manual merge
      mysql-test/t/rpl_user_variables.test:
        Manual merge
      sql/item_func.cc:
        Manual merge
      sql/log.cc:
        Manual merge
      sql/sp_head.cc:
        Manual merge
      sql/sql_class.cc:
        Manual merge
      sql/sql_class.h:
        Manual merge
      7443227b
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/MERGE/mysql-4.1-merge · 0ddc3250
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
      
      
      sql/sql_load.cc:
        Manual merge
      0ddc3250
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl · d81607a8
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
      
      
      d81607a8
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl · 3f507f29
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
      
      
      3f507f29
    • unknown's avatar
      BUG#20141 "User-defined variables are not replicated properly for · 9a14d883
      unknown authored
                SF/Triggers in SBR mode."
      BUG#14914 "SP: Uses of session variables in routines are not always replicated"
      BUG#25167 "Dupl. usage of user-variables in trigger/function is not replicated
                correctly"
      
      This patch corrects a minor error in the previous patch for BUG#20141. This patch
      corrects an errant code change to sp_head.cc. The comments for the first patch follow:
      
      User-defined variables used inside of stored functions/triggers in
      statements which did not update tables directly were not replicated.
      We also had problems with replication of user-defined variables which
      were used in triggers (or stored functions called from table-updating
      statements) more than once.
      
      This patch addresses the first issue by enabling logging of all
      references to user-defined variables in triggers/stored functions
      and not only references from table-updating statements.
      
      The second issue stemmed from the fact that for user-defined
      variables used from triggers or stored functions called from
      table-updating statements we were writing binlog events for each
      reference instead of only one event for the first reference.
      This problem is already solved for stored functions called from
      non-updating statements with help of "event unioning" mechanism.
      So the patch simply extends this mechanism to the case affected.
      It also fixes small problem in this mechanism which caused wrong
      logging of references to user-variables in cases when non-updating
      statement called several stored functions which used the same
      variable and some of these function calls were omitted from binlog
      as they were not updating any tables.
      
      
      
      sql/sp_head.cc:
        BUG#20141 "User-defined variables are not replicated properly for 
                  SF/Triggers in SBR mode."
        
        This patch corrects a minor error in the previous patch for BUG#20141. The code:
        
        q= ::query_id; 
        
        was an errant line of code that was not intended to be in the patch. Instead, the
        correct line of code is:
        
        q= global_query_id;
      9a14d883
    • unknown's avatar
      BUG#20141 "User-defined variables are not replicated properly for · 4be9d3cc
      unknown authored
                SF/Triggers in SBR mode."
      BUG#14914 "SP: Uses of session variables in routines are not always replicated"
      BUG#25167 "Dupl. usage of user-variables in trigger/function is not replicated
                correctly"
      
      This patch corrects a minor error in the previous patch for BUG#20141. This patch
      corrects an errant code change to sp_head.cc. The comments for the first patch follow:
      
      User-defined variables used inside of stored functions/triggers in
      statements which did not update tables directly were not replicated.
      We also had problems with replication of user-defined variables which
      were used in triggers (or stored functions called from table-updating
      statements) more than once.
      
      This patch addresses the first issue by enabling logging of all
      references to user-defined variables in triggers/stored functions
      and not only references from table-updating statements.
      
      The second issue stemmed from the fact that for user-defined
      variables used from triggers or stored functions called from
      table-updating statements we were writing binlog events for each
      reference instead of only one event for the first reference.
      This problem is already solved for stored functions called from
      non-updating statements with help of "event unioning" mechanism.
      So the patch simply extends this mechanism to the case affected.
      It also fixes small problem in this mechanism which caused wrong
      logging of references to user-variables in cases when non-updating
      statement called several stored functions which used the same
      variable and some of these function calls were omitted from binlog
      as they were not updating any tables.
      
      
      sql/sp_head.cc:
        BUG#20141 "User-defined variables are not replicated properly for 
                  SF/Triggers in SBR mode."
        
        This patch corrects a minor error in the previous patch for BUG#20141. The code:
        
        q= ::query_id; 
        
        was an errant line of code that was not intended to be in the patch. Instead, the
        correct line of code is:
        
        q= global_query_id;
      4be9d3cc
  2. 26 Feb, 2007 11 commits
    • unknown's avatar
      Fix for BUG#26050 "LOAD DATA INFILE breaks ACID"; the ok must be sent · 2e669d8e
      unknown authored
      to the client only after the binlog write and engine commit.
      No testcase for this bug, as to reproduce it, we need to "kill -9" mysqld,
      which we cannot do in the testsuite. But, I tested by hand.
      
      
      sql/sql_load.cc:
        D in ACID means that once the client got the ok from the server, the data
        is durable on disk. Implies that the ok must be sent after the binlog write
        and after the engine commit, not before.
      2e669d8e
    • unknown's avatar
      Merge cbell@bk-internal.mysql.com:/home/bk/mysql-5.1-new-rpl · f3377aa8
      unknown authored
      into  mysql_cab_desk.:C:/source/C++/mysql-5.1-new-rpl
      
      
      sql/item_func.cc:
        Auto merged
      sql/log.cc:
        Auto merged
      sql/log.h:
        Auto merged
      sql/sp_head.cc:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      f3377aa8
    • unknown's avatar
      Merge cbell@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl · 1636d00f
      unknown authored
      into  mysql_cab_desk.:C:/source/c++/mysql-5.0-rpl
      
      
      sql/item_func.cc:
        Auto merged
      sql/log.cc:
        Auto merged
      sql/sp_head.cc:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      1636d00f
    • unknown's avatar
      BUG#20141 "User-defined variables are not replicated properly for · 9f957f14
      unknown authored
                SF/Triggers in SBR mode."
      BUG#14914 "SP: Uses of session variables in routines are not always replicated"
      BUG#25167 "Dupl. usage of user-variables in trigger/function is not replicated
                correctly"
      
      User-defined variables used inside of stored functions/triggers in
      statements which did not update tables directly were not replicated.
      We also had problems with replication of user-defined variables which
      were used in triggers (or stored functions called from table-updating
      statements) more than once.
      
      This patch addresses the first issue by enabling logging of all
      references to user-defined variables in triggers/stored functions
      and not only references from table-updating statements.
      
      The second issue stemmed from the fact that for user-defined
      variables used from triggers or stored functions called from
      table-updating statements we were writing binlog events for each
      reference instead of only one event for the first reference.
      This problem is already solved for stored functions called from
      non-updating statements with help of "event unioning" mechanism.
      So the patch simply extends this mechanism to the case affected.
      It also fixes small problem in this mechanism which caused wrong
      logging of references to user-variables in cases when non-updating
      statement called several stored functions which used the same
      variable and some of these function calls were omitted from binlog
      as they were not updating any tables.
      
      
      
      mysql-test/r/rpl_user_variables.result:
        BUG#20141 - User-defined variables are not replicated properly for 
                    SF/Triggers in SBR mode.
        This patch adds the correct results for execution of the added test 
        procedures to the rpl_user_variables test.
      mysql-test/t/rpl_user_variables.test:
        BUG#20141 - User-defined variables are not replicated properly for 
                    SF/Triggers in SBR mode.
        This patch adds additional tests to the rpl_user_variables test that test 
        many of the different ways user-defined variables can be required to be 
        replicated.
      sql/item_func.cc:
        BUG#20141 - User-defined variables are not replicated properly for SF/Triggers
                    in SBR mode.
        To properly log accesses to user-defined variables from stored 
        functions/triggers, the get_var_with_binlog() method needs to log references 
        to such variables even from non-table-updating statements within them.
      sql/log.cc:
        BUG#20141 - User-defined variables are not replicated properly for SF/Triggers 
                    in SBR mode.
        This patch modifies the start_union_events method to accept the query id from 
        a parameter. This allows callers to set the query_id to the id of the sub 
        statement such as a trigger or stored function. Which permits the code to 
        identify when a user defined variable has been used by the statement and this 
        already present in THD::user_var_event.
        
        Note:
        The changes to sql_class.cc, sp_head.cc, and log.cc are designed to allow the 
        proper replication of access to user-defined variables under a special test 
        case (the last case shown in rpl_user_variables.test).
      sql/log.h:
        BUG#20141 - User-defined variables are not replicated properly for 
                    SF/Triggers in SBR mode.
        This patch adds the query_id parameter to the calls to 
        mysql_bin_log.start_union_events().
      sql/sp_head.cc:
        BUG#20141 - User-defined variables are not replicated properly for 
                    SF/Triggers in SBR mode.
        This patch modifies the code to allow for cases where events for function calls
        have a separate union for each event and thus cannot use the query_id of the 
        caller as the start of the union. Thus, we use an artifically created query_id
        to set the start of the events.
        
        Note:
        The changes to sql_class.cc, sp_head.cc, and log.cc are designed to allow the 
        proper replication of access to user-defined variables under a special test 
        case (the last case shown in rpl_user_variables.test).
      sql/sql_class.cc:
        BUG#20141 - User-defined variables are not replicated properly for 
                    SF/Triggers in SBR mode.
        This patch adds the query_id parameter to the calls to 
        mysql_bin_log.start_union_events().
        
        Note:
        The changes to sql_class.cc, sp_head.cc, and log.cc are designed to allow 
        the proper replication of access to user-defined variables under a special 
        test case (the last case shown in rpl_user_variables.test).
      9f957f14
    • unknown's avatar
      Eliminating compiler warnings in the sql/ directory. · c140b92c
      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().
      c140b92c
    • unknown's avatar
      BUG#26634 (Valgrind failure in tree: memory loss for memory allocated in rpl_utility.h): · 236bb807
      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.
      236bb807
    • unknown's avatar
      Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl · acc12007
      unknown authored
      into  romeo.(none):/home/bk/b25091-mysql-5.1-new-rpl
      
      
      sql/handler.cc:
        Auto merged
      sql/log.cc:
        Auto merged
      sql/sql_acl.cc:
        Auto merged
      acc12007
    • unknown's avatar
      Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl · ec7a703b
      unknown authored
      into  romeo.(none):/home/bk/b25091-mysql-5.1-new-rpl
      
      
      sql/handler.cc:
        Auto merged
      sql/log.cc:
        Auto merged
      sql/sp.cc:
        Auto merged
      sql/table.h:
        Auto merged
      ec7a703b
    • unknown's avatar
      BUG#25091 (A DELETE statement to mysql database is not logged in ROW format): · cdfc516d
      unknown authored
      With this patch, statements that change metadata (in the mysql database)
      is logged as statements, while normal changes (e.g., using INSERT, DELETE,
      and/or UPDATE) is logged according to the format in effect.
      
      The log tables (i.e., general_log and slow_log) are not replicated at all.
      
      With this patch, the following statements are replicated as statements:
      GRANT, REVOKE (ALL), CREATE USER, DROP USER, and RENAME USER.
      
      
      mysql-test/extra/binlog_tests/binlog.test:
        Added test to check that normal INSERT, DELETE, and UPDATE to a table in
        the mysql database is replicated both under row-based and statement-based
        replication.
      mysql-test/r/binlog_row_binlog.result:
        Result change.
      mysql-test/r/binlog_stm_binlog.result:
        Result change.
      sql/handler.cc:
        Removed hardcoded check for mysql database.
        Added table-specific flag for non-replication (used by log tables).
      sql/log.cc:
        Adding flag that a table shall not be replicated and set it for log
        tables.
      sql/sp.cc:
        Turning row-based replication off for statements that change metadata.
      sql/sql_acl.cc:
        Turning row-based replication off for statements that change metadata.
      sql/table.h:
        Adding flag that a table shall not be replicated.
      cdfc516d
    • unknown's avatar
      Merge ymer.(none):/tmp/mysql-5.0 · 1eb71c68
      unknown authored
      into  ymer.(none):/tmp/mysql-5.1
      
      
      sql/ha_ndbcluster.cc:
        Auto merged
      storage/ndb/include/util/OutputStream.hpp:
        Auto merged
      storage/ndb/src/common/debugger/EventLogger.cpp:
        Auto merged
      storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
        Auto merged
      storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
        Auto merged
      storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
        Auto merged
      storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
        Auto merged
      storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp:
        Auto merged
      storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
        Auto merged
      storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
        Auto merged
      storage/ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp:
        Auto merged
      storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
        Auto merged
      storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp:
        Auto merged
      storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
        Auto merged
      storage/ndb/src/mgmapi/mgmapi.cpp:
        Auto merged
      storage/ndb/src/mgmsrv/InitConfigFileParser.cpp:
        Auto merged
      storage/ndb/src/mgmsrv/MgmtSrvr.cpp:
        Auto merged
      storage/ndb/src/mgmsrv/MgmtSrvr.hpp:
        Auto merged
      storage/ndb/src/mgmsrv/Services.cpp:
        Auto merged
      storage/ndb/src/ndbapi/ClusterMgr.hpp:
        Auto merged
      storage/ndb/src/ndbapi/SignalSender.cpp:
        Auto merged
      1eb71c68
    • unknown's avatar
      Compiler warning suppression fix: Add missing file to 'make dist'. · 8c336fbc
      unknown authored
      
      support-files/Makefile.am:
        Add missing file to 'make dist'.
      8c336fbc
  3. 24 Feb, 2007 20 commits
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge · b9f3fbc2
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
      
      
      sql/sql_insert.cc:
        SCCS merged
      b9f3fbc2
    • unknown's avatar
      log_on needed also in embedded server · dc8b4bac
      unknown authored
      dc8b4bac
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge · 24cdc6f2
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
      
      
      sql/field.cc:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/log.cc:
        Auto merged
      sql/log_event.cc:
        Auto merged
      sql/log_event.h:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/slave.cc:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      24cdc6f2
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/MERGE/mysql-4.1-merge · c5abf088
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
      
      
      sql/item_func.cc:
        Auto merged
      c5abf088
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl · a5abde17
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
      
      
      client/mysqlbinlog.cc:
        Auto merged
      include/my_global.h:
        Auto merged
      mysql-test/t/disabled.def:
        Auto merged
      sql/field.cc:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/log.cc:
        Auto merged
      sql/log_event.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/slave.cc:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      sql/sql_show.cc:
        Auto merged
      a5abde17
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl · 33dbda5e
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
      
      
      sql/field.cc:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/log.cc:
        Auto merged
      sql/log_event.cc:
        Auto merged
      sql/log_event.h:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/slave.cc:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      33dbda5e
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-4.1-rpl · c4780ac3
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-4.1-merge
      
      
      sql/item_func.cc:
        Auto merged
      c4780ac3
    • unknown's avatar
      Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl · 56e143c5
      unknown authored
      into  romeo.(none):/home/bk/b26286-mysql-5.1-rpl
      
      
      56e143c5
    • unknown's avatar
      Fixes to make it compile on Windows. · a74cdb23
      unknown authored
      
      sql/log_event.cc:
        The type byte is not equivalent to char on Windows, so compile fails.
      a74cdb23
    • unknown's avatar
      Changes to fix building on Windows. · c13e1694
      unknown authored
      
      include/my_global.h:
        Using Standard C++ header file <new> instead of defining all the versions
        of operator new and operator delete ourself.
      c13e1694
    • unknown's avatar
      rpl_insert_delayed.test: · 072d62c7
      unknown authored
        fix after merge: server now returns ER_DUP_ENTRY_WITH_KEY_NAME, not ER_DUP_ENTRY
      
      
      mysql-test/extra/rpl_tests/rpl_insert_delayed.test:
        fix after merge: server now returns ER_DUP_ENTRY_WITH_KEY_NAME, not ER_DUP_ENTRY
      072d62c7
    • unknown's avatar
      Merge romeo.(none):/home/bkroot/mysql-5.1-new-rpl · 67d0f8cf
      unknown authored
      into  romeo.(none):/home/bk/b26286-mysql-5.1-rpl
      
      
      sql/log_event.cc:
        Auto merged
      67d0f8cf
    • unknown's avatar
      BUG#26286 (row-based logging scales worse than statement-based logging): · 13bee852
      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.
      13bee852
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge · 045ffa8c
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
      
      
      sql/field.cc:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/slave.cc:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      mysql-test/t/disabled.def:
        SCCS merged
      045ffa8c
    • unknown's avatar
      log_on variable needed also in embedded library · f3af1238
      unknown authored
      f3af1238
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/MERGE/mysql-4.1-merge · 849b95ce
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
      
      
      sql/item_func.cc:
        Auto merged
      849b95ce
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl · 2a86b8ec
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
      
      
      client/mysqlbinlog.cc:
        Auto merged
      include/my_global.h:
        Auto merged
      mysql-test/extra/rpl_tests/rpl_insert_id.test:
        Auto merged
      mysql-test/t/show_check.test:
        Auto merged
      mysys/mf_iocache2.c:
        Auto merged
      sql/field.cc:
        Auto merged
      sql/item_xmlfunc.cc:
        Auto merged
      sql/log_event.cc:
        Auto merged
      sql/log_event.h:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/slave.cc:
        Auto merged
      sql/slave.h:
        Auto merged
      sql/sql_show.cc:
        Auto merged
      mysql-test/t/disabled.def:
        Manual merge
      sql/log.cc:
        Manual merge
      sql/sql_insert.cc:
        Manual merge
      2a86b8ec
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl · dfb019ea
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
      
      
      sql/field.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/slave.cc:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      mysql-test/t/disabled.def:
        Manual merge
      dfb019ea
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-4.1-rpl · 1322c4aa
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-4.1-merge
      
      
      sql/item_func.cc:
        Auto merged
      1322c4aa
    • unknown's avatar
      Fixed windows compilation problems · 3c990412
      unknown authored
      
      extra/yassl/taocrypt/mySTL/algorithm.hpp:
        max is defined on windows
      sql/sql_list.h:
        Fixed compiler warning on windows
      3c990412
  4. 23 Feb, 2007 2 commits
    • unknown's avatar
      Fix for BUG#25628: "mysqlbinlog crashes while processing binary logs". · 6f6951d2
      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.
      6f6951d2
    • unknown's avatar
      Merge dl145h.mysql.com:/users/gbichot/mysql-5.0-rpl · 8777e35a
      unknown authored
      into  dl145h.mysql.com:/users/gbichot/mysql-5.1-rpl
      
      
      sql/slave.cc:
        Auto merged
      mysql-test/t/disabled.def:
        merge
      8777e35a