An error occurred fetching the project authors.
  1. 16 Mar, 2005 1 commit
    • unknown's avatar
      WL#874 "Extended LOAD DATA". · 5f75c8f5
      unknown authored
      Now one can use user variables as target for data loaded from file
      (besides table's columns). Also LOAD DATA got new SET-clause in which
      one can specify values for table columns as expressions.
      
      For example the following is possible:
      LOAD DATA INFILE 'words.dat' INTO TABLE t1 (a, @b) SET c = @b + 1;
      
      This patch also implements new way of replicating LOAD DATA.
      Now we do it similarly to other queries.
      We store LOAD DATA query in new Execute_load_query event
      (which is last in the sequence of events representing LOAD DATA).
      When we are executing this event we simply rewrite part of query which
      holds name of file (we use name of temporary file) and then execute it
      as usual query. In the beggining of this sequence we use Begin_load_query
      event which is almost identical to Append_file event
      
      
      client/mysqlbinlog.cc:
        Added support of two new binary log events Begin_load_query_log_event and
        Execute_load_query_log_Event which are used to replicate LOAD DATA INFILE.
      mysql-test/r/ctype_ucs.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results and made it more robust for future similar 
        changes.
      mysql-test/r/insert_select.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results and made it more robust for future similar 
        changes.
      mysql-test/r/loaddata.result:
        Added tests for new LOAD DATA features.
      mysql-test/r/mix_innodb_myisam_binlog.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results (don't dare to get rid from binlog positions
        completely since it seems that this test uses them).
      mysql-test/r/mysqlbinlog.result:
        New approach for binlogging of LOAD DATA statement. Now we store it as
        usual query and rewrite part in which file is specified when needed.
        So now mysqlbinlog output for LOAD DATA much more closer to its initial
        form. Updated test'd results accordingly.
      mysql-test/r/mysqldump.result:
        Made test more robust to other tests failures.
      mysql-test/r/rpl000015.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_change_master.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results.
      mysql-test/r/rpl_charset.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly
      mysql-test/r/rpl_deadlock.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly
      mysql-test/r/rpl_error_ignored_table.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results and made it more robust for future similar 
        changes.
      mysql-test/r/rpl_flush_log_loop.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_flush_tables.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results and made it more robust for future similar 
        changes.
      mysql-test/r/rpl_loaddata.result:
        New way of replicating LOAD DATA. Now we do it similarly to other
        queries. We store LOAD DATA query in new Execute_load_query event
        (which is last in the sequence of events representing LOAD DATA).
        When we are executing this event we simply rewrite part of query which
        holds name of file (we use name of temporary file) and then execute it
        as usual query. In the beggining of this sequence we use Begin_load_query
        event which is almost identical to Append_file event...
        
        Updated test's results wwith new binlog positions.
      mysql-test/r/rpl_loaddata_rule_m.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results and made it more robust for future similar 
        changes.
        Since now LOAD DATA is replicated much in the same way as usual query
        --binlog_do/ignore_db work for it inthe same way as for usual queries.
      mysql-test/r/rpl_loaddata_rule_s.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_loaddatalocal.result:
        Added nice test for case when it is important that LOAD DATA LOCAL
        ignores duplicates.
      mysql-test/r/rpl_log.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly (don't dare to get rid from binlog 
        positions completely since it seems that this test uses them).
      mysql-test/r/rpl_log_pos.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_max_relay_size.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_multi_query.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_relayrotate.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_replicate_do.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_reset_slave.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_rotate_logs.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_server_id1.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_server_id2.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly.
      mysql-test/r/rpl_temporary.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results and made it more robust for future similar 
        changes.
      mysql-test/r/rpl_timezone.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results and made it more robust for future similar 
        changes.
      mysql-test/r/rpl_until.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results accordingly and tweaked test a bit to bring it
        back to good shape.
      mysql-test/r/rpl_user_variables.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results and made it more robust for future similar 
        changes.
      mysql-test/r/user_var.result:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test's results and made it more robust for future similar 
        changes.
      mysql-test/t/ctype_ucs.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly and made it more robust for future similar
        changes.
      mysql-test/t/insert_select.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly and made it more robust for future similar
        changes.
      mysql-test/t/loaddata.test:
        Added test cases for new LOAD DATA functionality.
      mysql-test/t/mix_innodb_myisam_binlog.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly.
      mysql-test/t/mysqlbinlog.test:
        New way of replicating LOAD DATA local. Now we do it similarly to other
        queries. We store LOAD DATA query in new Execute_load_query event
        (which is last in the sequence of events representing LOAD DATA).
        When we are executing this event we simply rewrite part of query which
        holds name of file (we use name of temporary file) and then execute it
        as usual query. In the beggining of this sequence we use Begin_load_query
        event which is almost identical to Append_file event...
        
        Thus we need new binlog positions for LOAD DATA events.
      mysql-test/t/mysqlbinlog2.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly.
      mysql-test/t/mysqldump.test:
        Made test more robust for failures of other tests.
      mysql-test/t/rpl_charset.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly.
      mysql-test/t/rpl_deadlock.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly.
      mysql-test/t/rpl_error_ignored_table.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly and made it more robust for future similar
        changes.
      mysql-test/t/rpl_flush_tables.test:
        Addition of two new types of binary log events shifted binlog positions.
        Made test more robust for future similar changes.
      mysql-test/t/rpl_loaddata.test:
        New way of replicating LOAD DATA. Now we do it similarly to other
        queries. We store LOAD DATA query in new Execute_load_query event
        (which is last in the sequence of events representing LOAD DATA).
        When we are executing this event we simply rewrite part of query which
        holds name of file (we use name of temporary file) and then execute it
        as usual query. In the beggining of this sequence we use Begin_load_query
        event which is almost identical to Append_file event...
        
        Apropritely updated comments in test.
      mysql-test/t/rpl_loaddata_rule_m.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly and made it more robust for future similar 
        changes.
        Since now LOAD DATA is replicated much in the same way as usual query
        --binlog_do/ignore_db work for it inthe same way as for usual queries.
      mysql-test/t/rpl_loaddata_rule_s.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly.
      mysql-test/t/rpl_loaddatalocal.test:
        Added nice test for case when it is important that LOAD DATA LOCAL
        ignores duplicates.
      mysql-test/t/rpl_log.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly (don't dare to get rid from binlog positions
        completely since it seems that this test uses them).
      mysql-test/t/rpl_log_pos.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly.
      mysql-test/t/rpl_multi_query.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly.
      mysql-test/t/rpl_temporary.test:
        Addition of two new types of binary log events shifted binlog positions.
        Made test more robust for future similar changes.
      mysql-test/t/rpl_timezone.test:
        Addition of two new types of binary log events shifted binlog positions.
        Made test more robust for future similar changes.
      mysql-test/t/rpl_until.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly and tweaked it a bit to bring it back to good
        shape.
      mysql-test/t/rpl_user_variables.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly and made it more robust for future similar
        changes.
      mysql-test/t/user_var.test:
        Addition of two new types of binary log events shifted binlog positions.
        Updated test accordingly and made it more robust for future similar
        changes.
      sql/item_func.cc:
        Added Item_user_var_as_out_param class that represents user variable
        which used as out parameter in LOAD DATA.
        
        Moved code from Item_func_set_user_var::update_hash() function to
        separate static function to be able to reuse it in this new class.
      sql/item_func.h:
        Added Item_user_var_as_out_param class that represents user variable
        which used as out parameter in LOAD DATA.
      sql/log_event.cc:
        New way of replicating LOAD DATA. Now we do it similarly to other
        queries. We store LOAD DATA query in new Execute_load_query event
        (which is last in the sequence of events representing LOAD DATA).
        When we are executing this event we simply rewrite part of query which
        holds name of file (we use name of temporary file) and then execute it
        as usual query. In the beggining of this sequence we use Begin_load_query
        event which is almost identical to Append_file event.
      sql/log_event.h:
        New way of replicating LOAD DATA. Now we do it similarly to other
        queries. We store LOAD DATA query in new Execute_load_query event
        (which is last in the sequence of events representing LOAD DATA).
        When we are executing this event we simply rewrite part of query which
        holds name of file (we use name of temporary file) and then execute it
        as usual query. In the beggining of this sequence we use Begin_load_query
        event which is almost identical to Append_file event.
      sql/mysql_priv.h:
        Now mysql_load() has two more arguments. They are needed to pass list of
        columns and corresponding expressions from new LOAD DATA's SET clause.
      sql/share/errmsg.txt:
        Added new error message which is used to forbid loading of data from
        fixed length rows to variables.
      sql/sql_lex.h:
        Added LEX::fname_start/fname_end members. 
        They are pointers to part of LOAD DATA statement which should be
        rewritten during replication (file name + little extra).
      sql/sql_load.cc:
        Added support for extended LOAD DATA. 
        Now one can use user variables as target for data loaded from file 
        (besides table's columns). Also LOAD DATA got new SET-clause in which
        one can specify values for table columns as expressions.
        
        Updated mysql_load()/read_fixed_length()/read_sep_field() to support
        this functionality (now they can read data from file to both columns and
        variables and assign do calculations and assignments specified in SET
        clause).
        
        We also use new approach for LOAD DATA binlogging/replication.
      sql/sql_parse.cc:
        mysql_execute_command():
          Since now we have SET clause in LOAD DATA we should also check
          permissions for tables used in its expressions. Also mysql_load()
          has two more arguments to pass information about this clause.
      sql/sql_repl.cc:
        New way of replicating LOAD DATA. Now we do it similarly to other
        queries. We store LOAD DATA query in new Execute_load_query event
        (which is last in the sequence of events representing LOAD DATA).
        When we are executing this event we simply rewrite part of query which
        holds name of file (we use name of temporary file) and then execute it
        as usual query. In the beggining of this sequence we use Begin_load_query
        event which is almost identical to Append_file event.
      sql/sql_repl.h:
        struct st_load_file_info:
          Removed memebers which are no longer needed for LOAD DATA binnlogging.
      sql/sql_yacc.yy:
        Added support for extended LOAD DATA syntax. Now one can use
        user variables as target for data loaded from file (besides table's 
        columns). Also LOAD DATA got new SET-clause in which one can specify
        values for table columns as expressions.
        
        For example the following is possible:
        LOAD DATA INFILE 'words.dat' INTO TABLE t1 (a, @b) SET c = @b + 1;
        
        Also now we save pointers to the beginning and to the end of part of 
        LOAD DATA statement which should be rewritten during replication.
      5f75c8f5
  2. 16 Jan, 2005 1 commit
    • unknown's avatar
      XA (not completely polished out yet) · 88bd301d
      unknown authored
      include/my_pthread.h:
        cleanup. don't use gcc extensions
      innobase/include/trx0sys.ic:
        Jan's fix for innobase_xa_prepare
      innobase/read/read0read.c:
        Jan's fix for innobase_xa_prepare
      innobase/trx/trx0trx.c:
        Jan's fix for innobase_xa_prepare
      mysql-test/include/varchar.inc:
        test fix
      mysql-test/r/ctype_ucs.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/drop_temp_table.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/insert_select.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/mix_innodb_myisam_binlog.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/myisam.result:
        test fix
      mysql-test/r/rpl000015.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_change_master.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_charset.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_error_ignored_table.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_flush_log_loop.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_flush_tables.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_loaddata.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_loaddata_rule_m.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_loaddata_rule_s.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_log.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_log_pos.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_max_relay_size.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_relayrotate.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_replicate_do.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_reset_slave.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_rotate_logs.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_server_id1.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_server_id2.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_temporary.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_timezone.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_until.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/rpl_user_variables.result:
        new log event - all binlog positions are changed :(
      mysql-test/r/user_var.result:
        new log event - all binlog positions are changed :(
      mysql-test/t/ctype_ucs.test:
        new log event - all binlog positions are changed :(
      mysql-test/t/mix_innodb_myisam_binlog.test:
        new log event - all binlog positions are changed :(
      mysql-test/t/mysqlbinlog.test:
        new log event - all binlog positions are changed :(
      mysql-test/t/mysqlbinlog2.test:
        new log event - all binlog positions are changed :(
      mysql-test/t/rpl_charset.test:
        new log event - all binlog positions are changed :(
      mysql-test/t/rpl_error_ignored_table.test:
        new log event - all binlog positions are changed :(
      mysql-test/t/rpl_loaddata_rule_m.test:
        new log event - all binlog positions are changed :(
      mysql-test/t/rpl_loaddata_rule_s.test:
        new log event - all binlog positions are changed :(
      mysql-test/t/rpl_log.test:
        new log event - all binlog positions are changed :(
      mysql-test/t/rpl_log_pos.test:
        new log event - all binlog positions are changed :(
      mysql-test/t/rpl_user_variables.test:
        new log event - all binlog positions are changed :(
      mysql-test/t/user_var.test:
        new log event - all binlog positions are changed :(
      mysys/hash.c:
        typo fixed
      sql/ha_berkeley.cc:
        handlerton framework
      sql/ha_berkeley.h:
        handlerton framework
      sql/ha_innodb.cc:
        handlerton framework
      sql/ha_innodb.h:
        handlerton framework
      sql/handler.cc:
        new transaction handling, handlerton framework, two-phase commit, XA support
      sql/handler.h:
        new transaction handling, handlerton framework, two-phase commit, XA support
      sql/lex.h:
        XA commands
      sql/log.cc:
        new transaction handling, handlerton framework, two-phase commit,
        XA support, tc-logging, TC_LOG_MMAP class
      sql/log_event.cc:
        Xid_log_event
      sql/log_event.h:
        Xid_log_event, LOG_EVENT_BINLOG_CLOSED_F flag
      sql/mysql_priv.h:
        wrapper for query_id++
      sql/mysqld.cc:
        new command-line options --log-tc, --log-tc-size, --tc-heuristic-recover,
        new status variables Tc_log_page_size, Tc_log_max_pages_used, Tc_log_page_waits.
        init/stop tc logging
      sql/set_var.h:
        warning fixed
      sql/share/errmsg.txt:
        XA error messages
      sql/sp_head.cc:
        s/query_id++/next_query_id()/
      sql/sql_base.cc:
        typo fixed. new transaction handling.
      sql/sql_class.cc:
        cleanup of THD.transaction
      sql/sql_class.h:
        TC_LOG classes, new status variables, new savepoint handling, XA support
      sql/sql_insert.cc:
        comments
      sql/sql_lex.cc:
        s/found_colon/found_semicolon/
      sql/sql_lex.h:
        SQLCOM_XA_xxx, XA related changes in Lex
      sql/sql_parse.cc:
        cleanup, XA commands, new savepoint handling
      sql/sql_repl.cc:
        two functions moved to log.cc
      sql/sql_repl.h:
        two functions moved to log.cc
      sql/sql_trigger.cc:
        s/lex.name_and_length/lex.ident/
      sql/sql_yacc.yy:
        XA commands, cleanup
      88bd301d
  3. 19 Dec, 2003 1 commit
    • unknown's avatar
      This is the final commit for Worklog tasks: · 62554f81
      unknown authored
         * A more dynamic binlog format which allows small changes (1064)
         * Log session variables in Query_log_event (1063)
      It contains a few bugfixes (which I made when running the testsuite).
      I carefully updated the results of the testsuite (i.e. I checked for every one,
      if the difference between .reject and .result could be explained).
      Apparently mysql-test-run --manager is broken in 4.1 and 5.0 currently,
      so I could neither run the few tests which require --manager, nor check
      that they pass nor modify their .result. But for builds, we don't run
      with --manager.
      Apart from --manager, the full testsuite passes, with Valgrind too (no errors).
      I'm going to push in the next minutes. Remains: update the manual.
      Note: by chance I saw that (in 4.1, in 5.0) rpl_get_lock fails when run alone;
      this is normal at it makes assumptions on thread ids. I will fix this one day
      in 4.1.
      
      
      mysql-test/r/rpl000015.result:
        result update
      mysql-test/r/rpl_change_master.result:
        result update
      mysql-test/r/rpl_error_ignored_table.result:
        result update
      mysql-test/r/rpl_flush_log_loop.result:
        result update
      mysql-test/r/rpl_flush_tables.result:
        result update
      mysql-test/r/rpl_loaddata.result:
        result update
      mysql-test/r/rpl_loaddata_rule_m.result:
        result update
      mysql-test/r/rpl_loaddata_rule_s.result:
        result update
      mysql-test/r/rpl_log.result:
        result update
      mysql-test/r/rpl_log_pos.result:
        result update
      mysql-test/r/rpl_max_relay_size.result:
        result update
      mysql-test/r/rpl_relayrotate.result:
        result update
      mysql-test/r/rpl_replicate_do.result:
        result update
      mysql-test/r/rpl_reset_slave.result:
        result update
      mysql-test/r/rpl_rotate_logs.result:
        result update
      mysql-test/r/rpl_session_var.result:
        result update
      mysql-test/r/rpl_temporary.result:
        result update
      mysql-test/r/rpl_trunc_binlog.result:
        result update
      mysql-test/r/rpl_until.result:
        result update
      mysql-test/r/rpl_user_variables.result:
        result update
      mysql-test/t/rpl000010-slave.opt:
        need to wait 2 events, because now we receive a Format_desc on top of the Rotate,
        when replication starts.
      mysql-test/t/rpl000015.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_change_master.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_empty_master_crash.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_error_ignored_table.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_flush_log_loop.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_loaddata.test:
        position update
      mysql-test/t/rpl_loaddata_rule_m.test:
        position update
      mysql-test/t/rpl_loaddata_rule_s.test:
        position update
      mysql-test/t/rpl_log.test:
        position update
      mysql-test/t/rpl_log_pos.test:
        position update
      mysql-test/t/rpl_max_relay_size.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_openssl.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_redirect.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_relayrotate-slave.opt:
        better options for this test
      mysql-test/t/rpl_relayrotate.test:
        using max() is better for debugging (it shows at which place the slave
        SQL thread resumed)
      mysql-test/t/rpl_replicate_do.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_reset_slave.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_rotate_logs.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_session_var.test:
        100 because password() is longer than 10 chars
      mysql-test/t/rpl_trunc_binlog.test:
        relay log information is not repeatable in general (if a reconnection
        happens because --sleep=10 for example), so we hide these columns.
      mysql-test/t/rpl_until.test:
        position update
      mysql-test/t/rpl_user_variables.test:
        position update
      sql/log.cc:
        Ensure that the Format_desc propagated on next relay logs does not trigger
        undue actions (like incrementing some positions or clearing some files).
      sql/log_event.cc:
        * When the slave SQL thread finds a Rotate/Format_desc/Stop in the middle of
        a transaction (then these were written by the slave itself to its relay log),
        it should not increment rli->group* variables, but only rli->event* ones.
        * When the slave SQL thread finds a Format_desc not to be ignored (not
        the same server id as the slave's), if it has log_pos==0 it must not trigger
        "unfinished transaction in master's binlog" (log_pos==0 is always a marker
        in the relay log to mean "this event was not at this place in the master's
        binlog": it's for fake Rotate events, and for Format_description events which the master had
        to send us for replication to start).
        * In the Query_log_event on disk, catalog is now terminated by '\0'.
        * thd->catalog must be set to 0 when some exec_event() terminate (otherwise
        double free).
      sql/slave.cc:
        * Fixes for a few bugs when ignoring events in the slave SQL thread:
          - do not decrement rli->slave_skip_counter if the event is an event
          related to the binlog or relay log itself (FORMAT_DESCRIPTION,
          ROTATE, STOP) because these events should never be skipped (or the slave
          will be confused). Usually the user wants to skip a query, not a Rotate... 
          - when we (re)connect to the master, we must free description_event_for_queue
          (otherwise memory leak when we reconnect). 
        * Changed a bit the code where we change description_event_for_queue,
        to make it look "safer".
        * Moved 'created=0' to log.cc where it is safer.
        * When the slave SQL thread finds a Rotate/Format_desc/Stop in the middle of
        a transaction (then these were written by the slave itself to its relay log),
        it should not increment rli->group* variables, but only rli->event* ones.
      sql/sql_class.h:
        a warning comment
      sql/sql_repl.cc:
        A mistake: I had passed a char* instead of char**
      62554f81
  4. 23 Nov, 2003 1 commit
    • unknown's avatar
      Replication: · bd6a7001
      unknown authored
      Now the I/O thread (in flush_master_info()) flushes the relay log to disk
      after reading every event. Slower but provides additionnal safety in case
      of brutal crash.
      I had to make the flush optional (i.e. add a if(some_bool_argument) in the function)
      because sometimes flush_master_info() is called when there is no usable
      relay log (the relay log's IO_CACHE is not initialized so can't be flushed).
      
      
      mysql-test/r/rpl_loaddata_rule_m.result:
        avoid a harmless error in the .err file; we don't need a slave in this test
        (even though it's called 'rpl' because it's testing binlog-ignore-db).
      mysql-test/t/rpl_loaddata_rule_m.test:
        result update
      sql/repl_failsafe.cc:
        update call to flush_master_info() according to new prototype.
      sql/slave.cc:
        - Now the I/O thread (in flush_master_info()) flushes the relay log to disk
        after reading every event. Slower but provides additionnal safety in case
        of brutal crash.
        I had to make the flush optional (i.e. add a if(some_bool_argument) in the function)
        because sometimes flush_master_info() is called when there is no usable
        relay log (the relay log's IO_CACHE is not initialized so can't be flushed).
        - Update version in message.
        - Remove warning about bug as it's not true anymore (since this changeset).
      sql/slave.h:
        new prototype
      sql/sql_repl.cc:
        update call to flush_master_info() according to new prototype.
      bd6a7001
  5. 08 Oct, 2003 1 commit
    • unknown's avatar
      Fixes after merge · 1ead85e6
      unknown authored
      mysql-test/std_data/trunc_binlog.000001:
        Rename: mysql-test/std_data/trunc_binlog.001 -> mysql-test/std_data/trunc_binlog.000001
      client/mysqltest.c:
        Fixed merge problem
      mysql-test/mysql-test-run.sh:
        Fixed merge problem
      mysql-test/r/distinct.result:
        Fix after merge
      mysql-test/r/drop_temp_table.result:
        Fix after merge
      mysql-test/r/join_outer.result:
        Fix after merge
      mysql-test/r/mysqldump.result:
        Fix after merge
      mysql-test/r/null_key.result:
        Fix after merge
      mysql-test/r/order_by.result:
        Fix after merge
      mysql-test/r/rpl_alter.result:
        Fix after merge
      mysql-test/r/rpl_loaddata.result:
        Fix after merge
      mysql-test/r/rpl_loaddata_rule_m.result:
        Fix after merge
      mysql-test/r/rpl_trunc_binlog.result:
        Fix after merge
      mysql-test/r/select_safe.result:
        Fix after merge
      mysql-test/t/insert.test:
        Fix after merge
      mysql-test/t/mysqlbinlog.test:
        Fix after merge
      mysql-test/t/rpl000009.test:
        Fix after merge
      mysql-test/t/rpl_alter.test:
        Fix after merge
      mysql-test/t/rpl_loaddata_rule_m.test:
        Fix after merge
      mysql-test/t/rpl_trunc_binlog.test:
        Fix after merge
      sql-common/client.c:
        Fix after merge
      sql/item_subselect.cc:
        Fix after merge
      sql/repl_failsafe.cc:
        Fix after merge
      sql/slave.cc:
        Fix after merge
      sql/sql_insert.cc:
        Fix after merge
      1ead85e6
  6. 20 Aug, 2003 1 commit
    • unknown's avatar
      First commit for fixing BUG#1100 · 1542fffb
      unknown authored
      "LOAD DATA INFILE is badly filtered by binlog-*-db rules".
      There will probably be a second final one to merge Dmitri's changes
      to rpl_log.result and mine.
      2 new tests:
      rpl_loaddata_rule_m : test of logging of LOAD DATA INFILE when the master has binlog-*-db rules,
      rpl_loaddata_rule_s : test of logging of LOAD DATA INFILE when the slave has binlog-*-db rules and --log-slave-updates.
      
      
      mysql-test/r/rpl_loaddata.result:
        Test that logging of LOAD DATA INFILE is done on the slave
      mysql-test/t/rpl_loaddata.test:
        Test that logging of LOAD DATA is done on the slave
      sql/log.cc:
        debug info
      sql/log_event.cc:
        * Append_block, Exec_load and Delete_file now have a member 'db' like Create_file.
        This member is filled by mysql_load(). It is used for filtering by binlog-*-db rules,
        that's all. It's not written to the binlog, and so can't be read from the binlog.
        In other words, that's temporary info which is stored in the event and lost when
        it is written and deleted.
        * Better error messages in Append_block et al. events.
        * The slave now logs (log-slave-updates) the Create_file et al. events in mysql_load()
        (they are not directly copied from the events in the relay log, because this
        prevented filtering by binlog-*-db rules). Before, mysql_load() in the slave
        did no logging, now it does the logging, as in any regular thread.
      sql/log_event.h:
        New member 'db' for Append_block et al. events.
      sql/slave.cc:
        Removed useless code. Why was it useless:
        - CREATE_FILE_EVENT is not defined in 3.23. It appeared in 4.0.
        - in queue_old_event(), which is called only if the master is 3.23, we had a
        case CREATE_FILE_EVENT:
        so this case can be removed.
        - this case was the only caller of process_io_create_file() so this function
        can be removed.
      sql/sql_load.cc:
        Pass the db to events, so that they can be well filtered.
      sql/sql_repl.cc:
        Pass the db to events so that they can be well filtered.
      1542fffb