An error occurred fetching the project authors.
  1. 07 Sep, 2004 1 commit
  2. 29 Aug, 2004 1 commit
    • unknown's avatar
      Fix for BUG#4500 "set character set replicates incorrectly" · 4014c093
      unknown authored
      We must not reset the charset in slave after each statement, otherwise the SET CHARACTER SET is cancelled immediately.
      Instead, we write a SET CHARACTER SET DEFAULT to the master's binlog when needed (like we already do for SET FOREIGN_KEY_CHECKS);
      such writing is not necessary in 4.1 (in 4.1 the bug does not exist, as the SET ONE_SHOT syntax is used).
      I have written a test and it works, but I'm not pushing the test as it requires building with all charsets.
      I have noticed differences between what is inserted in the master's table in 4.0 and 4.1, and alerted Bar.
      
      
      sql/log.cc:
        When SET CHARACTER SET has been used, we must reset the charset after the writing the statement, in the binlog.
        In 4.1, this resetting is already achieved by the SET ONE_SHOT syntax.
      sql/log_event.cc:
        In slave, we must not simply reset the charset after each statement: if we do this, the charset gets
        immediately after executing the SET CHARACTER SET! (BUG#4500).
      4014c093
  3. 30 Jun, 2004 1 commit
    • unknown's avatar
      Fix for BUG#4326 "Replicated LOAD DATA INFILE show nothing in · 62a6733e
      unknown authored
      processlist on slave":
      we now report in SHOW PROCESSLIST that we are writing to the temp
      files or loading the table. When we are writing to the tmp file:
      | 3  | system user |                 |    | Connect | 6    | Making temp file /tmp/SQL_LOAD-2-1-2.data | 
      and when we are actually loading the .data temp file into the table:
      | 3  | system user |                 | test | Connect | 2    | | LOAD DATA INFILE '/tmp/SQL_LOAD-2-1-2.data' INTO TABLE `t` <...> |
      
      
      sql/log_event.cc:
        Replication of LOAD DATA INFILE:
        we now report in SHOW PROCESSLIST that we are creating
        the temp files or loading the table.
        Plus removing a line which had a comment "should not be needed"
        and a guarding assertion which we have never heard fail (and logic
        says it should not fail).
      62a6733e
  4. 26 May, 2004 1 commit
    • unknown's avatar
      Fix to make Windows compilation smoother · 00c41b28
      unknown authored
      VC++Files/innobase/innobase.dsp:
        non-existent file removed
      client/mysql.cc:
        local opt_max_allowed_packet and opt_net_buffer_length introduced
      client/mysqldump.c:
        local opt_max_allowed_packet and opt_net_buffer_length introduced
      include/mysql.h:
        mysql_get_parameters() interface added
        #define max_allowed_packet added
      include/mysql_com.h:
        these should not be exported
      libmysql/libmysql.c:
        mysql_get_parameters implementations
      libmysql/libmysql.def:
        interface changed
      libmysql_r/Makefile.am:
        MYSQL_CLIENT define added
      libmysqld/lib_sql.cc:
        line moved to be above the '#include "mysql.cc"'
      libmysqld/libmysqld.c:
        mysql_get_parameters implementation (embedded)
      libmysqld/libmysqld.def:
        interface changed
      sql/log_event.cc:
        should be like that in this case
      tools/mysqlmanager.c:
        compiler warns on this line
      00c41b28
  5. 14 May, 2004 1 commit
    • unknown's avatar
      Many files: · 7bd91ac0
      unknown authored
        Fix remaining cases of Bug #3596: fix possible races caused by an obsolete value of thd->query_length in SHOW PROCESSLIST and SHOW INNODB STATUS; this fix depends on the fact that thd->query is always set to NULL before setting it to point to a new query
      
      
      sql/sql_class.h:
        Fix remaining cases of Bug #3596: fix possible races caused by an obsolete value of thd->query_length in SHOW PROCESSLIST and SHOW INNODB STATUS; this fix depends on the fact that thd->query is always set to NULL before setting it to point to a new query
      sql/ha_innodb.cc:
        Fix remaining cases of Bug #3596: fix possible races caused by an obsolete value of thd->query_length in SHOW PROCESSLIST and SHOW INNODB STATUS; this fix depends on the fact that thd->query is always set to NULL before setting it to point to a new query
      sql/log_event.cc:
        Fix remaining cases of Bug #3596: fix possible races caused by an obsolete value of thd->query_length in SHOW PROCESSLIST and SHOW INNODB STATUS; this fix depends on the fact that thd->query is always set to NULL before setting it to point to a new query
      sql/slave.cc:
        Fix remaining cases of Bug #3596: fix possible races caused by an obsolete value of thd->query_length in SHOW PROCESSLIST and SHOW INNODB STATUS; this fix depends on the fact that thd->query is always set to NULL before setting it to point to a new query
      sql/sql_db.cc:
        Fix remaining cases of Bug #3596: fix possible races caused by an obsolete value of thd->query_length in SHOW PROCESSLIST and SHOW INNODB STATUS; this fix depends on the fact that thd->query is always set to NULL before setting it to point to a new query
      sql/sql_parse.cc:
        Fix remaining cases of Bug #3596: fix possible races caused by an obsolete value of thd->query_length in SHOW PROCESSLIST and SHOW INNODB STATUS; this fix depends on the fact that thd->query is always set to NULL before setting it to point to a new query
      sql/sql_show.cc:
        Fix remaining cases of Bug #3596: fix possible races caused by an obsolete value of thd->query_length in SHOW PROCESSLIST and SHOW INNODB STATUS; this fix depends on the fact that thd->query is always set to NULL before setting it to point to a new query
      7bd91ac0
  6. 04 May, 2004 1 commit
    • unknown's avatar
      Fix for Bug#3357 "If the statement is long, the error message is trunc and important info is lost"; · ed3f472a
      unknown authored
      in hard-coded replication messages, always put small-length info (error codes, explanation of the error) at the beginning,
      so that it is not cut by truncation if the query is very long (which happens if the query goes first).
      
      
      sql/log_event.cc:
        in hard-coded replication messages, always put small-length info (error codes, explanation of the error) at the beginning,
        so that it is not cut by truncation if the query is very long (which happens if the query goes first).
      ed3f472a
  7. 07 Apr, 2004 1 commit
  8. 06 Apr, 2004 1 commit
    • unknown's avatar
      This is a fix for a bug in 3.23 -> 4.0 replication: Exec_master_log_pos is always · e3f0177b
      unknown authored
      too big by 6 bytes. So I add code to substract 6 bytes if the master is 3.23.
      This is not perfect (because it won't work if the slave I/O thread has not
      noticed yet that the master is 3.23), but as long as the slave I/O thread
      starts Exec_master_log_pos will be ok.
      It must be merged to 4.1 but not to 5.0 (or it can be, because of #if MYSQL_VERSION_ID),
      because 5.0 already works if the master is 3.23 (and in a more natural way:
      in 5.0 we store the end_log_pos in the binlog and relay log).
      I had to move functions from slave.h to slave.cc to satisfy gcc.
      
      
      sql/log_event.cc:
        make the event's length 6 bytes shorter if the master is 3.23
      sql/slave.cc:
        Moving several st_relay_log_info methods out of the declaration of the struct,
        because gcc complained that 'mi' was not declared.
        Substracting 6 bytes from the event's length in inc_pos() if the master is 3.23.
      sql/slave.h:
        moving several methods out of the declaration of st_relay_log_info.
        Removing 'inline', let's have the compiler decide.
      e3f0177b
  9. 11 Mar, 2004 1 commit
    • unknown's avatar
      Fix for BUG#2983 "If statement was killed on master, slave errors despite replicate-wild-ignore-t" · bd6c4ef4
      unknown authored
      We introduce a new function mysql_test_parse_for_slave().
      If the slave sees that the query got a really bad error on master
      (killed e.g.), then it calls this function to know if this query
      can be ignored because of replicate-*-table rules (do not worry
      about replicate-*-db rules: they are checked so early that they have
      no bug). If the answer is yes, it skips the query and continues. If
      it's no, then it stops and say "fix your slave data manually" (like it
      did before this change).
      
      
      mysql-test/r/rpl_error_ignored_table.result:
        result update
      mysql-test/t/rpl_error_ignored_table-slave.opt:
        ignore more tables
      mysql-test/t/rpl_error_ignored_table.test:
        we test if a killed query on the master, is ignored on the slave
        if the tables it involves should be excluded because of replicate-*-table
        rules.
      sql/log_event.cc:
        If the query got a really bad error on the master (thread killed etc),
        parse it to test the table names: if the replicate-*-do|ignore-table
        rules say "this query must be ignored" then we exit gracefully;
        otherwise we warn about the bad error and tell DBA to check/fix it.
        Before this change, we always warned and stopped.
      sql/mysql_priv.h:
        new function
      sql/slave.cc:
        don't print error immediately as we need to do one more test to
        be sure.
      sql/sql_parse.cc:
        we add a function mysql_test_parse_for_slave(), to be used only
        by the slave if it wants to know if the query should be ignored or not;
        so this function only parses the query, does not execute it.
      bd6c4ef4
  10. 10 Mar, 2004 2 commits
    • unknown's avatar
      Undoing 2 parts of changeset 1.1730.1.1 : · 843d6df5
      unknown authored
      - the one about BUG#2921
      - the one about relay log flushing
      Both will be rewritten in a next changeset
      (this one will not be pushed before the next changeset).
      
      
      sql/log.cc:
        undo
      sql/log_event.cc:
        undo
      sql/repl_failsafe.cc:
        undo
      sql/slave.cc:
        undo
      sql/slave.h:
        undo
      sql/sql_repl.cc:
        undo
      843d6df5
    • unknown's avatar
      Fixed memory leak in DROP DATABASE when using RAID tables (Bug #2882) · 221397cd
      unknown authored
      BUILD/compile-pentium-debug-max:
        Added --with-raid
      configure.in:
        Removed -DFN_NO_CASE_SENCE for Mac OS X as this is not always true
      mysql-test/install_test_db.sh:
        Added --skip-warnings
      mysql-test/mysql-test-run.sh:
        Fixes to get --gdb and --ddd to work
      mysql-test/r/lowercase_table2.result:
        Test for lower_case_table_names=2 and temporary tables
      mysql-test/r/lowercase_table3.result:
        Fixed error message
      mysql-test/r/multi_update.result:
        Test of behaviour of multi-table-delete and alias
      mysql-test/t/lowercase_table2.test:
        Test for lower_case_table_names=2 and temporary tables
      mysql-test/t/lowercase_table3.test:
        Fixed error
      mysql-test/t/multi_update.test:
        Test of behaviour of multi-table-delete and alias (Bug #2940)
      mysys/mf_iocache.c:
        Renamed _flush_io_cache to my_b_flush_io_cache
      sql/ha_myisam.cc:
        Added comment
      sql/lock.cc:
        Extra debugging
      sql/log.cc:
        New parameter to flush_relay_log_info
      sql/log_event.cc:
        New parameter to flush_relay_log_info
      sql/mf_iocache.cc:
        Removed not used header files
      sql/mysqld.cc:
        More debugging info
        Less warnings when run with --skip-warnings
      sql/opt_range.cc:
        More debug information
      sql/repl_failsafe.cc:
        New parameter to flush_relay_log_info
      sql/slave.cc:
        First start SQL thread, then start IO thread. This fixed a raze condition in SLAVE START (Bug #2921)
        Ensure that we have a lock on the IO thread before flushing a relay log file that. The original code could core dump when a relay log rotated.
      sql/slave.h:
        New parameter to flush_relay_log_info
      sql/sql_base.cc:
        Added warning
      sql/sql_handler.cc:
        Indentation fix
      sql/sql_repl.cc:
        New parameter to flush_relay_log_info
      sql/sql_select.cc:
        Fixed problem with deleting temporary tables when using lower_case_table_names=2. (Bug #2858)
      sql/sql_table.cc:
        Fixed comment
      sql/sql_yacc.yy:
        Removed compiler warning
      include/my_sys.h:
        Fixed usage of unpack_filename
      mysys/mf_pack.c:
        Changed unpack_filename() to return length of result string.
      mysys/test_fn.c:
        Fixed usage of unpack_filename
      sql/sql_db.cc:
        Fixed memory leak with raid tables
      sql/table.cc:
        Fixed usage of unpack_filename
      221397cd
  11. 08 Mar, 2004 1 commit
    • unknown's avatar
      Fix for BUG#3081 "if an INSERT DELAYED is killed, it is binlogged as killed but it's not needed". · d44d6976
      unknown authored
      INSERT DELAYED works only for one-row inserts (in latest 4.0 versions
      at least). So killing a delayed_insert thread does not spoil replication:
      the rows which actually went into the table are exactly those listed
      in the binlog. So when the delayed_insert thread is killed, don't log
      it as 'killed', because it causes superfluous stops on the slave.
      
      
      sql/log_event.cc:
        INSERT DELAYED works only for one-row inserts (in latest 4.0 versions
        at least). So killing a delayed_insert thread does not spoil replication:
        the rows which actually went into the table are exactly those listed
        in the binlog. So when the delayed_insert thread is killed, don't log
        it as 'killed', because it causes superfluous stops on the slave.
      d44d6976
  12. 01 Mar, 2004 1 commit
    • unknown's avatar
      Fix for BUG#3015 · 12ede13a
      unknown authored
      "(binlog, position) stored by InnoDB for a replication slave can be wrong".
      This code contains conditional #if to distinguish between versions;
      it should be merged into 4.1 and 5.0.
      
      
      sql/ha_innodb.cc:
        correcting the binlog position stored in InnoDB in a slave.
      sql/log_event.cc:
        better code to store the binlog position in InnoDB for a slave.
      sql/slave.h:
        Better code for storing the binlog position in InnoDB for a slave.
      12ede13a
  13. 29 Feb, 2004 1 commit
    • unknown's avatar
      Fix for BUG#3017 · bf53c870
      unknown authored
      "wrong Relay_Log_Pos if Rotate is in the middle of a transaction in relay log"
      increment 'pending' instead of 'relay_log_pos'.
      
      
      mysql-test/r/rpl_trunc_binlog.result:
        result update
      sql/log_event.cc:
        - corrected error message
        - in Rotate_log_event::exec_event(), if we're in a transaction (which
        can happen if the I/O slave thread reconnected while reading a
        transaction), don't increment relay_log_pos but pending instead.
        Otherwise, relay_log_pos becomes garbage (and so if slave stops at that
        moment, it will never restart).
      bf53c870
  14. 27 Feb, 2004 1 commit
    • unknown's avatar
      Changes to fix errors encountered in test builds on Windows. · 588b8b93
      unknown authored
      VC++Files/innobase/innobase.dsp:
        odbc0odbc.c was removed from the tree.
      VC++Files/libmysql/libmysql.dsp:
        strxnmov.c is needed in this module.
      sql/log_event.cc:
        Cast required to resolve compile error on Windows - byte * is 
        not equivalent to char *.
      sql/opt_range.cc:
        Cast to const char * required to resolve compile error on Windows.
      BitKeeper/etc/logging_ok:
        Logging to logging@openlogging.org accepted
      588b8b93
  15. 13 Feb, 2004 1 commit
    • unknown's avatar
      Always use libtool with "--preserve-dup-deps" · 0a95bda2
      unknown authored
      Always use all LOAD DATA options in replication.
      Fixed problem in mysqlbinlog where LOAD DATA options could be overwritten.
      
      
      client/mysqlbinlog.cc:
        Ensure that we don't call init_dynamic_array() before my_init() has been done
      configure.in:
        Always use libtool with "--preserve-dup-deps" to prevent link problems with g++
      mysql-test/r/mysqlbinlog.result:
        new results
      mysql-test/r/range.result:
        new results
      mysql-test/t/range.test:
        add missing DROP TABLE
      sql/log_event.cc:
        Always use all LOAD DATA options. This is needed to handle commands of type "FIELDS TERMINATED BY ''"
        Allocate memory for Create_file_log_event options as these may be overwritten in mysqlbinlog
      sql/log_event.h:
        Free buffer
      0a95bda2
  16. 06 Feb, 2004 1 commit
    • unknown's avatar
      fixed bug #1378 "mysqlbinlog for remote host is broken" · 7db76e5a
      unknown authored
      client/mysqlbinlog.cc:
        fixed bug #1378 "mysqlbinlog for remote host is broken"
        by using shared part of code for local and remote variant 
        (function process_event)
      mysql-test/r/mysqlbinlog.result:
        fixed results for remote variant 
        (they are the same as for local now)
      mysql-test/t/mysqlbinlog.test:
        discarded note 'V. Vagin should ...' 
        because V.Vagin done
      sql/log_event.cc:
        added special local_fname flag to Load_log_event for 
        using in Load_log_event::check_fname_outside_temp_buf 
        instead of ugly condition
      sql/log_event.h:
        added special local_fname flag to Load_log_event for 
        using in Load_log_event::check_fname_outside_temp_buf 
        instead of ugly condition
      7db76e5a
  17. 28 Jan, 2004 1 commit
    • unknown's avatar
      Fix for BUG#2542 "If slave ignores a query it may make the next LOAD DATA INFILE fail": · f138cd10
      unknown authored
      reset errors (in thd) before executing the event. Otherwise if an event is ignored
      because of replicate-*-table rules (error ER_SLAVE_IGNORED_TABLE) this error code
      may remain in thd->net and the next event may pick it. 
      
      
      sql/log_event.cc:
        Reset errors (in thd) before executing the event. Otherwise if an event is ignored
        because of replicate-*-table rules (error ER_SLAVE_IGNORED_TABLE) this error code
        may remain in thd->net and the next event may pick it.
      f138cd10
  18. 16 Dec, 2003 1 commit
    • unknown's avatar
      Fix for BUG#2083 · e97722e4
      unknown authored
      "EE_ error codes (EE_DELETE, EE_WRITE) end up in the binlog, making slave stop".
      The problem was that during execution of the command on the master, an error
      can occur (for example, not space left on device, then mysqld waits and when
      there is space it completes successfully: so finally it worked but the error
      EE_WRITE remains in thd->net.last_errno and thd->net.last_error).
      To know if finally the command succeeded, we test the 'error' variable in
      every place, and if it shows no failure we reset thd->net.last_err* using
      the function THD::clear_error() which is backported from 4.1.
      A new test to see if now only real errors get to the binlog (note: the test
      uses "rm").
      
      Also a bit of memory free/alloc saving in log_event.cc (do not free the whole
      mem_root after every query in the slave SQL thread: we can keep the initial
      block of it; which will be freed when the thread terminates).
      
      
      sql/log_event.cc:
        In the slave SQL thread, it's a waste to free the initial block of the mem_root
        after every query. We can instead keep it. It will be freed when the thread
        terminates (in THD::~THD()).
      sql/sql_acl.cc:
        clear the error in thd->net.last_errno as there was no error
      sql/sql_base.cc:
        clear the error in thd->net.last_errno as there was no error
      sql/sql_class.h:
        Backport of THD::clear_error() from 4.1:
        clears the error in thd->net.last_errno
      sql/sql_db.cc:
        clear the error in thd->net.last_errno as there was no error
      sql/sql_delete.cc:
        clear the error in thd->net.last_errno as there was no error
      sql/sql_insert.cc:
        clear the error in thd->net.last_errno as there was no error
      sql/sql_parse.cc:
        clear the error in thd->net.last_errno as there was no error
      sql/sql_rename.cc:
        clear the error in thd->net.last_errno as there was no error
      sql/sql_table.cc:
        clear the error in thd->net.last_errno as there was no error
      sql/sql_update.cc:
        clear the error in thd->net.last_errno as there was no error
      e97722e4
  19. 08 Dec, 2003 1 commit
    • unknown's avatar
      Fix for BUG#2045 "Sending SIGHUP to mysqld crashes it if running with --log-bin". · a50761a5
      unknown authored
      The constructor of Rotate_log_event used when we are rotating our binlog or
      relay log, should not assume that there is a nonzero THD available.
      For example, when we are reacting to SIGHUP, the THD is 0.
      In fact we don't need to use the THD in this constructor;
      we can do like for Stop_log_event, and use the minimal Log_event
      constructor.
      If we were allowed to put Unix-specific commands in the testsuite,
      I'd add a test for this (<sigh>).
      
      
      sql/log.cc:
        A comment to warn that thd can be 0.
        The part about LOG_EVENT_FORCED_ROTATE_F is just to avoid segfault;
        this flag is already removed in 4.1 anyway.
      sql/log_event.cc:
        A comment.
      sql/log_event.h:
        The constructor of Rotate_log_event used when we are rotating our binlog or
        relay log, should not assume that there is a nonzero THD available.
        For example, when we are reacting to SIGHUP, the THD is 0.
        In fact we don't need to use the THD in this constructor;
        we can do like for Stop_log_event, and use the minimal Log_event
        constructor.
        This fixes BUG#2045 
        "Sending SIGHUP to mysqld crashes it if running with --log-bin"
      a50761a5
  20. 31 Oct, 2003 2 commits
    • unknown's avatar
      4 small items in this: · b920ab26
      unknown authored
      - when we don't have in_addr_t, use uint32.
      - a forgotten initialization of slave_proxy_id in sql/log_event.cc (was not really "forgot", was
      "we needn't init it there", but there was one case where we needed...).
      - made slave_proxy_id always meaningful in THD and Log_event, so we can
      rely more on it (no need to test if it's meaningful). THD::slave_proxy_id
      is equal to THD::thread_id except for the slave SQL thread.
      - clean up the slave's temporary table (i.e. free their memory) when slave
      server shuts down.
      
      
      extra/resolveip.c:
        removed #define as it is simpler to put it in my_net.h
        (because we need the #define elsewhere)
      include/my_net.h:
        When in_addr_t is not defined, use uint32.
      libmysql/libmysql.c:
        using in_addr_t is more generic.
      libmysql/manager.c:
        using in_addr_t is more generic.
      mysql-test/t/rpl_chain_temp_table.test:
        comments
      sql/log_event.cc:
        * Had forgot to initialize slave_proxy_id in the event constructor (char* buf...).
        Initializing is in fact only needed for Create_file_log_event, because
        it uses slave_proxy_id even if it does not write an event to the binlog
        (it uses slave_proxy_id to write it to SQL-LOAD.info).
        * When we write events we now always write slave_proxy_id, which is now always
        meaningful (as thd->slave_proxy_id is now always meaningful, see change in
        sql_class.cc).
      sql/mini_client.cc:
        in_addr_t is more generic.
      sql/slave.cc:
        A RELAY_LOG_INFO method to free the slave's temporary tables from memory
        at slave's server shutdown.
        It is called by end_slave(), which is called by close_connections(),
        which is called when the server terminates
        (close_connections() is just before clean_up(); putting the call in 
        clean_up() was buggy, as active_mi is already deleted by close_connections().
      sql/slave.h:
        new method
      sql/sql_class.cc:
        By default we set THD::slave_proxy_id to THD::thread_id,
        so THD::slave_proxy_id is always meaningful (not 0).
        It's always the same as the thread id except for the slave
        SQL thread.
      b920ab26
    • unknown's avatar
      thd->query assignment moved out · 9396db01
      unknown authored
      of lock scope
      
      
      9396db01
  21. 29 Oct, 2003 1 commit
    • unknown's avatar
      Fix for BUG#1686 · 03dbf8cc
      unknown authored
      "If 2 master threads with same-name temp table, slave makes bad binlog"
      and (two birds with one stone) for
      BUG#1240 "slave of slave breaks when STOP SLAVE was issud on parent slave
      and temp tables".
      
      Here is the design change:
      in a slave running with --log-slave-updates, events are now logged with the
      thread id they had on the master. So no more id conflicts between master threads,
      but introduces id conflicts between one master thread and one normal 
      client thread connected to the slave. This is solved by storing the server id
      in the temp table's name.
      
      New test which requires mysql-test-run to be run with --manager,
      otherwise it will be skipped.
      
      Undoing a Monty's change (hum, a chill runs down my spine ;) which was
      "Cleanup temporary tables when slave ends" in ChangeSet 1.1572.1.1.
      
      
      mysql-test/mysql-test-run.sh:
        One new test which needs more than one slave so must be hardcoded in mysql-test-run.sh.
      sql/log_event.cc:
        The event needs to carry a slave_proxy_id (which is set at event's creation
        and used at event's logging).
        This is used for events created by ::exec_event() in the slave SQL thread:
        now we want to log these events with the thread id they had on the master.
        This is so that several same-name temp tables simultaneously created on
        the master end up with not the same thread id in the slave's binlog.
      sql/log_event.h:
        Query and Load need to carry a slave_proxy_id, like they carried a thread_id
        (to replicate temp tables well).
      sql/slave.cc:
        Do not free temp tables in the slave SQL thread. Or they will be lost when
        one does STOP SLAVE / START SLAVE.
        We even save them in rli->save_temporary_tables and set thd->temporary_tables=0
        to prevent them to be freed.
      sql/sql_base.cc:
        Put the server id in the table cache key name for temp tables
        (we already put the slave_proxy_id, but we also need the server id
        in case normal clients (not slave threads) are using temp tables
        on the slave).
      sql/unireg.h:
        4 more bytes, to store the server id.
      03dbf8cc
  22. 11 Oct, 2003 1 commit
    • unknown's avatar
      Add new user variables for tuning memory usage: · 74ea4594
      unknown authored
      query_alloc_block_size, query_prealloc_size, range_alloc_block_size,transaction_alloc_block_size and transaction_prealloc_size
      Add more checks for "out of memory" detection in range optimization
      
      
      configure.in:
        Added detection of mallinfo
      mysql-test/r/variables.result:
        Test of new variables
      mysql-test/t/variables.test:
        Test of new variables
      sql/ha_berkeley.cc:
        Use init_sql_alloc instead of init_alloc_root for better OOM detection
      sql/log_event.cc:
        Add new user variables for tuning memory usage
      sql/mysql_priv.h:
        Add new user variables for tuning memory usage
      sql/mysqld.cc:
        Add new user variables for tuning memory usage
      sql/opt_ft.cc:
        Add new user variables for tuning memory usage
      sql/opt_ft.h:
        Add new user variables for tuning memory usage
      sql/opt_range.cc:
        Add new user variables for tuning memory usage
        Add more checks for out of memory conditions
      sql/opt_range.h:
        Add new user variables for tuning memory usage
      sql/set_var.cc:
        Add new user variables for tuning memory usage
      sql/sql_acl.cc:
        Add new user variables for tuning memory usage
      sql/sql_class.h:
        Add new user variables for tuning memory usage
      sql/sql_delete.cc:
        Add new user variables for tuning memory usage
      sql/sql_parse.cc:
        Add new user variables for tuning memory usage
      sql/sql_select.cc:
        Add new user variables for tuning memory usage
      sql/sql_test.cc:
        Add information about memory useage if system supports mallinfo()
      sql/sql_udf.cc:
        Add new user variables for tuning memory usage
      sql/sql_update.cc:
        Add new user variables for tuning memory usage
      sql/table.cc:
        Add new user variables for tuning memory usage
      74ea4594
  23. 06 Oct, 2003 1 commit
    • unknown's avatar
      After merge fixes · bc4a57f0
      unknown authored
      extra/resolveip.c:
        After merge fix
      mysql-test/mysql-test-run.sh:
        Fixed comment
      mysql-test/r/rpl_trunc_binlog.result:
        Updated results
      sql/log_event.cc:
        Better (shorter) error message
      bc4a57f0
  24. 03 Oct, 2003 1 commit
    • unknown's avatar
      When the I/O thread was stopped while copying a long transaction, and restarted, · 1bd7662b
      unknown authored
      Rotate_log_event::exec_event() believed that the relay log was corrupted. Fixed it
      by moving the test for corruption to Start_log_event::exec_event(). 
      Changed Rotate_log_event::exec_event() to not increment positions when the
      event is seen in the middle of a transaction.
      I did a separate commit in 4.1 (so this should not be merged to 4.0) because
      code is a bit different in 4.1.
      A test to see if the slave detects when the master died while writing a 
      transaction to the binlog (uses a forged truncated binlog I made).
      
      
      sql/log_event.cc:
        When the I/O thread was stopped while copying a long transaction, and restarted,
        Rotate_log_event::exec_event() believed that the relay log was corrupted. Fixed it
        by moving the test for corruption to Start_log_event::exec_event(). 
        Changed Rotate_log_event::exec_event() to not increment positions when the
        event is seen in the middle of a transaction.
      1bd7662b
  25. 29 Sep, 2003 1 commit
    • unknown's avatar
      Removed random chars after filename for LOAD DATA INFILE (in mysqlbinlog) · e03265d4
      unknown authored
      Add quoting for use `database` for mysqlbinlog
      Removed test ins0000001
      Add support for --replace for exec in mysqltest
      Don't refer to install dir in mysqlbinlog.result
      
      
      BitKeeper/deleted/.del-ins000001.result~f45c599efdf8352b:
        Delete: mysql-test/r/ins000001.result
      BitKeeper/deleted/.del-ins000001.test~2428ee5c9b1bc483:
        Delete: mysql-test/t/ins000001.test
      client/mysqlbinlog.cc:
        Removed random chars after filename for LOAD DATA INFILE
      client/mysqltest.c:
        Add support for --replace for 'exec'
      mysql-test/r/drop_temp_table.result:
        Updated results after quoting change
      mysql-test/r/fulltext_multi.result:
        Updated results after quoting change
      mysql-test/r/fulltext_order_by.result:
        Updated results after quoting change
      mysql-test/r/insert.result:
        New tests
      mysql-test/r/insert_select.result:
        Updated results after quoting change
      mysql-test/r/mix_innodb_myisam_binlog.result:
        Updated results after quoting change
      mysql-test/r/mysqlbinlog.result:
        Updated results after quoting change
      mysql-test/r/rpl_log.result:
        Updated results after quoting change
      mysql-test/t/fulltext_multi.test:
        Remove 'use'
      mysql-test/t/fulltext_order_by.test:
        Remove 'use'
      mysql-test/t/insert.test:
        Merge test with ins0000001.test
      mysql-test/t/mysqlbinlog.test:
        Don't refer to install dir in result
      sql/log_event.cc:
        Add quoting for use `database` for mysqlbinlog
      support-files/mysql.server.sh:
        Move pid_file test after arguments have been parsed
      e03265d4
  26. 24 Sep, 2003 2 commits
    • unknown's avatar
      Fixed BUG#1357 MySQL too eagerly cleanups temporary files for LOAD DATA (SQL_LOAD-...) · b608c790
      unknown authored
      sql/log_event.cc:
        Now cleaning up only our files during processing of Start_log_event
      b608c790
    • unknown's avatar
      Fix for · 874783ab
      unknown authored
      Bug #1392 "On Win, slave leaves one temp file after successf. replicating LOAD DATA INFILE"
      Windows-specific bug (we forgot to close a file before deleting it).
      Patch written by me, tested by Miguel (thanks!) and it works.
      
      
      sql/log.cc:
        changed the comment to mean the truth
      sql/log_event.cc:
        When you finish replicating LOAD DATA INFILE, close the SQL_LOADxxx.data file
        before deleting it, or Windows will refuse to delete.
        No need to do the same thing for the SQL_LOADxxx.data file, it's not opened
        at this moment.
      874783ab
  27. 28 Aug, 2003 1 commit
    • unknown's avatar
      Portability fixes · 6fd5403d
      unknown authored
      client/mysqltest.c:
        Removed not used functions
      myisam/mi_dynrec.c:
        Added assert to avoid compilation errors
      mysql-test/r/isam.result:
        Updated results after merge
      sql/log_event.cc:
        Cleanup
      sql/mysql_priv.h:
        Cleanup
      sql/sql_class.cc:
        Moved Table_ident functions to .cc file to allow them to use table_case_convert()
      sql/sql_class.h:
        Moved Table_ident functions to .cc file to allow them to use table_case_convert()
      6fd5403d
  28. 25 Aug, 2003 1 commit
    • unknown's avatar
      Update of VC++ project files (to remove link warnings) · e8007ae7
      unknown authored
      Fix unlock error in myisamchk on windows when doing --sort-index
      Use SetFilePointer instead of SetFilePointerEx
      
      
      VC++Files/client/mysql.dsp:
        Update of project files
      VC++Files/client/mysqladmin.dsp:
        Update of project files
      VC++Files/client/mysqlclient.dsp:
        Update of project files
      VC++Files/client/mysqldump.dsp:
        Update of project files
      VC++Files/client/mysqlimport.dsp:
        Update of project files
      VC++Files/client/mysqlshow.dsp:
        Update of project files
      VC++Files/comp_err/comp_err.dsp:
        Update of project files
      VC++Files/innobase/innobase.dsp:
        Update of project files
      VC++Files/isamchk/isamchk.dsp:
        Update of project files
      VC++Files/libmysql/libmysql.dsp:
        Update of project files
      VC++Files/libmysqld/libmysqld.dsp:
        Update of project files
      VC++Files/libmysqltest/myTest.dsp:
        Update of project files
      VC++Files/my_print_defaults/my_print_defaults.dsp:
        Update of project files
      VC++Files/myisamlog/myisamlog.dsp:
        Update of project files
      VC++Files/mysql.dsw:
        Update of project files
      VC++Files/mysqlbinlog/mysqlbinlog.dsp:
        Update of project files
      VC++Files/mysqlcheck/mysqlcheck.dsp:
        Update of project files
      VC++Files/mysqldemb/mysqldemb.dsp:
        Update of project files
      VC++Files/mysqlmanager/MySqlManager.dsp:
        Update of project files
      VC++Files/mysqlserver/mysqlserver.dsp:
        Update of project files
      VC++Files/mysqlshutdown/mysqlshutdown.dsp:
        Update of project files
      VC++Files/mysys/mysys.dsp:
        Update of project files
      VC++Files/pack_isam/pack_isam.dsp:
        Update of project files
      VC++Files/perror/perror.dsp:
        Update of project files
      VC++Files/replace/replace.dsp:
        Update of project files
      VC++Files/sql/mysqld.dsp:
        Update of project files
      VC++Files/test1/test1.dsp:
        Update of project files
      VC++Files/thr_test/thr_test.dsp:
        Update of project files
      VC++Files/vio/vio.dsp:
        Update of project files
      VC++Files/zlib/zlib.dsp:
        Update of project files
      myisam/mi_check.c:
        Fix unlock error in myisamchk on windows when doing --sort-index
      myisam/mi_locking.c:
        Fix unlock error in myisamchk on windows when doing --sort-index
      myisam/myisamchk.c:
        New comment
      mysys/my_chsize.c:
        Use SetFilePointer instead of SetFilePointerEx, as the first is more portable
      sql/handler.cc:
        Fix compiler warning
      sql/log_event.cc:
        Fix compiler warning
      e8007ae7
  29. 23 Aug, 2003 1 commit
    • unknown's avatar
      * Fix for a potential bug: · 6e10224d
      unknown authored
      when the SQL thread stops, set rli->inside_transaction to 0. This is needed if the user
      later restarts replication from a completely different place where there are only autocommit
      statements.
      * Detect the case where the master died while flushing the binlog cache to the binlog
      and stop with error. Cannot add a testcase for this in 4.0 (I tested it manually)
      as the slave always runs with --skip-innodb.
      
      
      sql/log_event.cc:
        Detect the case where the master died while flushing the binlog cache to the binlog:
        in that case, we have a BEGIN with no COMMIT/ROLLBACK in the relay log; we detect
        this with rli->inside_transaction in Rotate_log_event::exec_event() (which is the
        only right place to detect this, see comments). When we see it, we stop with error.
        In 4.1, I had put code in Start_log_event::exec_event(); I'll remove it next time
        I push in the 4.1 tree.
      sql/slave.cc:
        * Use slave_print_error instead of sql_print_error, to put the info in SHOW SLAVE STATUS too.
        * Fix for a potential bug:
        when the SQL thread stops, set rli->inside_transaction to 0. This is not needed if
        replication later restarts from the same position; but this is needed if the user
        restarts replication from a completely different place where there are only autocommit
        statements (in that case, if we didn't set to 0, the position would never increment in SHOW
        SLAVE STATUS, even if queries are processed well).
      6e10224d
  30. 22 Aug, 2003 1 commit
    • unknown's avatar
      2 minor edits, plus · fdfb10f2
      unknown authored
      fix for BUG#1113 "INSERT into non-trans table SELECT ; ROLLBACK" does not send warning"
      and
      fix for BUG#873 "In transaction, INSERT to non-trans table is written too early to binlog".
      Now we don't always write the non-trans update immediately to the binlog;
      if there is something in the binlog cache we write it to the binlog cache
      (because the non-trans update could depend on a trans table which was modified
      earlier in the transaction); then in case of ROLLBACK, we write the binlog
      cache to the binlog, wrapped with BEGIN/ROLLBACK.
      This guarantees that the slave does the same updates.
      For ROLLBACK TO SAVEPOINT: when we execute a SAVEPOINT command we write it
      to the binlog cache. At ROLLBACK TO SAVEPOINT, if some non-trans table was updated,
      we write ROLLBACK TO SAVEPOINT to the binlog cache; when the transaction
      terminates (COMMIT/ROLLBACK), the binlog cache will be flushed to the binlog
      (because of the non-trans update) so we'll have SAVEPOINT and ROLLBACK TO
      SAVEPOINT in the binlog.
      
      Apart from this rare case of updates of mixed table types in transaction, the
      usual way is still clear the binlog cache at ROLLBACK, or chop it at
      ROLLBACK TO SAVEPOINT (meaning the SAVEPOINT command is also chopped, which
      is fine).
      Note that BUG#873 encompasses subbugs 1) and 2) of BUG#333 "3 binlogging bugs when doing INSERT with mixed InnoDB/MyISAM".
      
      
      client/mysqldump.c:
        Minor edit: one CHANGE MASTER with 2 arguments instead of 2 CHANGE MASTER with one argument each.
      mysql-test/r/rpl_loaddata.result:
        result update
      mysql-test/t/rpl_loaddata.test:
        minor edit: simplifying the test.
      sql/handler.cc:
        Fix for BUG#873. See comments in code, and the description of the changeset.
      sql/log.cc:
        * Previously, if a query updated a non-transactional table we wrote it immediately
        to the real binlog. This causes a bug when the update is done inside a transaction
        and uses the content of an updated transactional table (because this makes
        a wrong order of queries in the binlog). So if the binlog cache is not empty,
        we write the query to the binlog cache; otherwise we can write it to the binlog.
        * Previously, when we flushed the binlog cache to the binlog, we wrapped it
        with BEGIN/COMMIT. Now it's also possible to wrap it with BEGIN/ROLLBACK, to handle
        transactions which update both transactional and non-transactional tables.
      sql/log_event.cc:
        The slave thread can leave a transaction if COMMIT or if ROLLBACK.
      sql/sql_class.h:
        prototype
      sql/sql_insert.cc:
        Fix for BUG#1113:
        this was because the INSERT SELECT code did not set OPTION_STATUS_NO_TRANS_UPDATE.
      sql/sql_parse.cc:
        Don't send ER_WARNING_NOT_COMPLETE_ROLLBACK if this is the SQL slave thread (see comments).
      fdfb10f2
  31. 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
  32. 19 Aug, 2003 3 commits
    • unknown's avatar
      Fix for BUG#1086. Now we don't preserve event's log_pos through · e3541b8a
      unknown authored
      log-slave-updates since this causes unexpected values in 
      Exec_master_log_pos in A->B->C replication setup, synchronization
       problems in master_pos_wait()... 
      Still this brokes some functionality in sql/repl_failsafe.cc 
      (but this file is not used now)
      
      
      mysql-test/r/rpl_log.result:
        SHOW BINLOG EVENTS for binlog on slave should give the same 
        Orig_log_pos and Pos values
      sql/log_event.cc:
        Do not propagate our master's log pos to our bin log
      sql/repl_failsafe.cc:
        Added comment about broken SHOW NEW MASTER
      sql/slave.cc:
        Do not propagate our master's log pos to our bin log
      sql/sql_class.cc:
        THD::log_pos is no longer needed
      sql/sql_class.h:
        THD::log_pos is no longer needed
      sql/sql_parse.cc:
        Added comment about broken SHOW NEW MASTER
      e3541b8a
    • unknown's avatar
      Use my_b_append instead of my_b_write on a SEQ_READ_APPEND cache, when we write · d43a347d
      unknown authored
      the first 4 bytes of the relay log. Indeed comments in mysys/mf_iocache.c 
      say we must always use my_b_append for such a cache.
      This *could* avoid a very rare assertion failure which is: 
      030524 19:32:38  Slave SQL thread initialized, starting replication in log 'FIRST' at position 0, relay log '/
      users/gbichot/4.1.1/mysql-test/var/log/slave-relay-bin.000001' position: 4
      030524 19:32:38  next log '/users/gbichot/4.1.1/mysql-test/var/log/slave-relay-bin.000002' is currently active
      mysqld: mf_iocache.c:701: _my_b_seq_read: Assertion `pos_in_file == info->end_of_file' failed.
      and which seemed to happen always when the SQL thread and/or the I/O thread
      were at position 4 in a relay log.
      
      
      include/my_sys.h:
        moving a function from log_event.cc so that it can be widely used
      mysys/mf_iocache.c:
        moving a function from log_event.cc so that it can be widely used
      sql/log.cc:
        my_b_write should not be used on a SEQ_READ_APPEND cache, one should use my_b_append
        (otherwise there could be some locking problems).
      sql/log_event.cc:
        moved to mysys/mf_iocache.c for wider use.
        A typo.
      d43a347d
    • unknown's avatar
      Fix for BUG#1096 which is: · fe0e5464
      unknown authored
      "mysqlbinlog does not comment the original LOAD DATA INFILE if it has a "use xx""
      
      
      client/mysqlbinlog.cc:
        a comment
      sql/log_event.cc:
        in mysqlbinlog we want to have a leading '#' before LOAD DATA INFILE when we
        print a Create_file event.
        This was not done properly when the query had *2* lines: only the "use db" got
        commented.
        To fix this I had to add an argument to Load_log_event::print, it could not be
        handled in Create_file_log_event::print alone.
      sql/log_event.h:
        prototype
      fe0e5464
  33. 10 Aug, 2003 1 commit
    • unknown's avatar
      Remove wrong bug fix when calling create_sort_index. · 20901eda
      unknown authored
      Fix possible replication bug with LOAD DATA ... IGNORE LINES #
      
      
      mysql-test/r/rpl_log.result:
        Test of load data ... ignore # lines
      mysql-test/t/rpl_log.test:
        Test of load data ... ignore # lines
      sql/log_event.cc:
        Fix replication bug with LOAD DATA ... IGNORE LINES #
        (Note that the code that is probably not executed in 4.0)
      sql/sql_parse.cc:
        Indentation fix
      sql/sql_select.cc:
        Remove wrong bug fix (all tests passes)
      sql/sql_yacc.yy:
        Indentation cleanup
      20901eda
  34. 07 Aug, 2003 1 commit
    • unknown's avatar
      Review of changesets since last pull. · fa1613be
      unknown authored
      (Mostly code cleanups)
      
      
      include/my_sys.h:
        Removed not used define
      myisam/mi_check.c:
        Indentation change
      mysql-test/t/rpl_insert_id.test:
        Add test if server supports innodb
      mysys/mf_format.c:
        Remove QUOTE handling from fn_format()
        (fn_format() should not have anything to do with quoting things)
      sql/log_event.cc:
        Removed some unnecessary casts (by changing functions to use const char *)
        Cleaned up some error messages to make them shorter and (hopefully) more readable.
        Fixed wrong format strings
        Restored 'thd->options' on error.
      sql/mini_client.cc:
        Changed order of include files to remove compilation warning
      sql/mysqld.cc:
        Add proper quoting of service arguments (don't use fn_format)
      sql/slave.cc:
        Simple optimization and cleanup.
        Changed rewrite_db() and print_slave_db_safe() to use const char* to avoid casting of arguments when calling functions.
        Cleanup of some error messages.
      sql/slave.h:
        Changed protypes to use const char *
      sql/sql_acl.cc:
        Simple optimization
      vio/viosslfactories.c:
        Changed order of include files to remove compilation warning
      fa1613be
  35. 24 Jul, 2003 1 commit
    • unknown's avatar
      WL#1036 (print the db in slave error messages). · ab34adf6
      unknown authored
      I extended the task to cleaning error messages, making them look nicer,
      and making the output of SHOW SLAVE STATUS (column Last_error) be as complete
      as what's printed on the .err file;
      previously we would have, for a failure of a replicated LOAD DATA INFILE:
      - in the .err, 2 lines:
      "duplicate entry 2708 for key 1"
      "failed loading SQL_LOAD-5-2-2.info"
      - and in SHOW SLAVE STATUS, only:
      "failed loading SQL_LOAD-5-2-2.info".
      Now SHOW SLAVE STATUS will contain the concatenation of the 2 messages.
      
      
      sql/log_event.cc:
        Print the default database when replication stops because of an error. Previously, we had:
        "error "Duplicate entry 87987 for key 1", query 'insert into t values(87987)'", ie the db
        was not mentioned, making it hard for cases where the same table name is used in
        several databases.
        Lengthened some error messages (for failing replication of LOAD DATA: mention the table
        and the db).
        Changes so that SHOW SLAVE STATUS reports as complete errors as the .err file.
      sql/slave.cc:
        Removed a useless declaration (the rewrite_db() function is already declared in slave.h).
        Added missing ')' in error messages.
        Tried to make error messages look nicer (previously we had
        "do START SLAVE;, error_code=1062"
        now we'll have
        "do START SLAVE; . Error_code=1062".
        This form has been discussed, I agree it's no panacea, but it's still more readable
        like this. To be improved in the future :)
      sql/slave.h:
        declarations.
      ab34adf6