1. 31 Oct, 2006 1 commit
    • unknown's avatar
      Refactoring: Moved master info functionality into rpl_mi.cc to · 13fa02a5
      unknown authored
      make code easier to maintain.
      
      
      sql/CMakeLists.txt:
        New file
      sql/Makefile.am:
        New file
      sql/rpl_rli.h:
        Changed master_info into a class
      sql/slave.cc:
        Moved master info functionality into rpl_mi.cc
      sql/slave.h:
        Moved master info functionality into rpl_mi.cc
      sql/rpl_mi.cc:
        Moved master info functionality into rpl_mi.cc
      sql/rpl_mi.h:
        Moved master info functionality into rpl_mi.cc
      13fa02a5
  2. 27 Sep, 2006 1 commit
  3. 08 Sep, 2006 1 commit
    • unknown's avatar
      after merge fix · 9ab428e3
      unknown authored
      sql/mysql_priv.h:
        after merge fix
        added charset parameter to check_string_length() function
      sql/slave.h:
        after merge fix
        USERNAME_LENGTH const is changed to USERNAME_BYTE_LENGTH
      sql/sql_parse.cc:
        after merge fix
        added charset parameter to check_string_length() function
      sql/sql_yacc.yy:
        after merge fix
        added charset parameter to check_string_length() function
      9ab428e3
  4. 17 Aug, 2006 1 commit
    • unknown's avatar
      Bug #2717: include/my_global.h mis-defines __attribute__ · e26a7f07
      unknown authored
        Fix when __attribute__() is stubbed out, add ATTRIBUTE_FORMAT() for specifying
        __attribute__((format(...))) safely, make more use of the format attribute,
        and fix some of the warnings that this turns up (plus a bonus unrelated one).
      
      
      include/m_ctype.h:
        Add ATTRIBUTE_FORMAT to printf-like functions.
      include/m_string.h:
        Add ATTRIBUTE_FORMAT to my_snprintf() declaration.
      include/my_global.h:
        Fix neutering of __attribute__() on old versions of GCC and non-GCC compilers.
        Add ATTRIBUTE_FORMAT() macro for setting __attribute_((format(...)), since it
        is available from different versions of gcc and g++.
      include/my_sys.h:
        Add ATTRIBUTE_FORMAT() to my_printf_error declaration
      sql/item_subselect.cc:
        Silence warning about members being initialized out-of-order
      sql/item_timefunc.cc:
        Fix format specifier in snprintf() calls with milliseconds
      sql/mysql_priv.h:
        Add ATTRIBUTE_FORMAT to printf-like functions.
      sql/mysqld.cc:
        Fix various format specifiers
        Make sure that method_conv is always set by myisam_stats_method
      sql/opt_range.cc:
        Cast pointers to correct type for %lx
      sql/set_var.cc:
        Fix __attribute__((unused)) (missing inner set of parens)
      sql/slave.cc:
        Fix format specifier
      sql/slave.h:
        Add ATTRIBUTE_FORMAT to slave_print_error() declaration.
      sql/sql_acl.cc:
        Fix number of  arguments passed for formatting, and fix acl_host_or_ip being
        passed instead of just the hostname.
      sql/sql_class.h:
        Add ATTRIBUTE_FORMAT to MYSQL_LOG::write().
      e26a7f07
  5. 28 Jun, 2006 1 commit
    • unknown's avatar
      A fix for Bug#19022 "Memory bug when switching db during trigger execution". · 17f77591
      unknown authored
      No test case as the bug is in an existing test case (rpl_trigger.test
      when it is run under valgrind).
      The warning was caused by memory corruption in replication slave: thd->db
      was pointing at a stack address that was previously used by 
      sp_head::execute()::old_db. This happened because mysql_change_db
      behaved differently in replication slave and did not make a copy of the 
      argument to assign to thd->db. 
      The solution is to always free the old value of thd->db and allocate a new
      copy, regardless whether we're running in a replication slave or not.
      
      
      sql/log_event.cc:
        Move rewrite_db to log_event.cc, the only place where it is used.
      sql/slave.cc:
        Move rewrite_db to log_event.cc
      sql/slave.h:
        Remove an unneeded declaration.
      sql/sql_class.h:
        Fix set_db to always free the old db, even if the argument is NULL.
        Add a comment.
      sql/sql_db.cc:
        Always make a deep copy of the argument in mysql_change_db, even 
        if running in a replication slave. This is necessary because 
        sp_use_new_db (stored procedures) assumes that mysql_change_db always makes
        a deep copy of the argument, and thus passes a pointer to stack into it.
        This assumption was true for all cases except the replication slave thread.
      17f77591
  6. 27 Jun, 2006 1 commit
  7. 26 Jun, 2006 1 commit
    • unknown's avatar
      A fix and a test case for · 2783fc82
      unknown authored
       Bug#19022 "Memory bug when switching db during trigger execution"
       Bug#17199 "Problem when view calls function from another database."
       Bug#18444 "Fully qualified stored function names don't work correctly in
                  SELECT statements"
      
       Documentation note: this patch introduces a change in behaviour of prepared
       statements.
      
       This patch adds a few new invariants with regard to how THD::db should
       be used. These invariants should be preserved in future:
      
        - one should never refer to THD::db by pointer and always make a deep copy
          (strmake, strdup)
        - one should never compare two databases by pointer, but use strncmp or
          my_strncasecmp
        - TABLE_LIST object table->db should be always initialized in the parser or
          by creator of the object.
      
          For prepared statements it means that if the current database is changed
          after a statement is prepared, the database that was current at prepare
          remains active. This also means that you can not prepare a statement that
          implicitly refers to the current database if the latter is not set.
          This is not documented, and therefore needs documentation. This is NOT a
          change in behavior for almost all SQL statements except:
           - ALTER TABLE t1 RENAME t2 
           - OPTIMIZE TABLE t1
           - ANALYZE TABLE t1
           - TRUNCATE TABLE t1 --
           until this patch t1 or t2 could be evaluated at the first execution of
           prepared statement. 
      
           CURRENT_DATABASE() still works OK and is evaluated at every execution
           of prepared statement.
      
           Note, that in stored routines this is not an issue as the default
           database is the database of the stored procedure and "use" statement
           is prohibited in stored routines.
      
        This patch makes obsolete the use of check_db_used (it was never used in the
        old code too) and all other places that check for table->db and assign it
        from THD::db if it's NULL, except the parser.
      
       How this patch was created: THD::{db,db_length} were replaced with a
       LEX_STRING, THD::db. All the places that refer to THD::{db,db_length} were
       manually checked and:
        - if the place uses thd->db by pointer, it was fixed to make a deep copy
        - if a place compared two db pointers, it was fixed to compare them by value
          (via strcmp/my_strcasecmp, whatever was approproate)
       Then this intermediate patch was used to write a smaller patch that does the
       same thing but without a rename.
      
       TODO in 5.1:
         - remove check_db_used
         - deploy THD::set_db in mysql_change_db
      
       See also comments to individual files.
      
      
      mysql-test/r/create.result:
        Modify the result file: a database can never be NULL.
      mysql-test/r/ps.result:
        Update test results (Bug#17199 et al)
      mysql-test/r/sp.result:
        Update test results (Bug#17199 et al)
      mysql-test/t/create.test:
        Update the id of the returned error.
      mysql-test/t/ps.test:
        Add test coverage for prepared statements and current database. In scope of
        work on Bug#17199 "Problem when view calls function from another database."
      mysql-test/t/sp.test:
        Add a test case for Bug#17199 "Problem when view calls function from another
        database." and Bug#18444 "Fully qualified stored function names don't work
        correctly in SELECT statements". Test a complementary problem.
      sql/item_strfunc.cc:
        Touch the code that reads thd->db (cleanup).
      sql/log_event.cc:
        While we are at it, replace direct access to thd->db with a method.
        Should simplify future conversion of THD::db to LEX_STRING.
      sql/slave.cc:
        While we are at it, replace direct access to thd->db with a method.
        Should simplify future conversion of THD::db to LEX_STRING.
      sql/slave.h:
        Remove a declaration for a method that is used only in one module.
      sql/sp.cc:
        Rewrite sp_use_new_db: this is a cleanup that I needed in order to understand
        this function and ensure that it has no bugs.
      sql/sp.h:
        Add a new declaration for sp_use_new_db (uses LEX_STRINGs) and a comment.
      sql/sp_head.cc:
        - drop sp_name_current_db_new - a creator of sp_name class that was used
        when sp_name was created for an identifier without an explicitly initialized
        database. Now we pass thd->db to constructor of sp_name right in the 
        parser.
        - rewrite sp_head::init_strings: name->m_db is always set now
        - use the new variant of sp_use_new_db
        - we don't need to update thd->db with SP MEM_ROOT pointer anymore when
        parsing a stored procedure, as noone will refer to it (yes!)
      sql/sp_head.h:
        - remove unneded methods and members
      sql/sql_class.h:
        - introduce 3 THD  methods to work with THD::db:
          .set_db to assign the current database
          .reset_db to reset the current database (temporarily) or set it to NULL
          .opt_copy_db_to - to deep-copy thd->db to a pointer if it's not NULL
      sql/sql_db.cc:
        While we are at it, replace direct access to thd->db with a method.
        Should simplify future conversion of THD::db to LEX_STRING.
      sql/sql_insert.cc:
        - replace checks with asserts: table_list->db must be always set in the parser.
      sql/sql_lex.h:
        - add a comment
      sql/sql_parse.cc:
        - implement the invariant described in the changeset comment.
        - remove juggling with lex->sphead in SQLCOM_CREATE_PROCEDURE:
          now db_load_routine uses its own LEX object and doesn't damage the main
          LEX.
        - add DBUG_ASSERT(0) to unused "check_db_used"
      sql/sql_table.cc:
        - replace a check with an assert (table_ident->db)
      sql/sql_trigger.cc:
        While we are at it, replace direct access to thd->db with a method.
        Should simplify future conversion of THD::db to LEX_STRING.
      sql/sql_udf.cc:
        - use thd->set_db instead of direct modification of to thd->db
      sql/sql_view.cc:
        - replace a check with an assert (view->db)
      sql/sql_yacc.yy:
        - make sure that we always copy table->db or name->db or ident->db or
          select_lex->db from thd->db if the former is not set. If thd->db
          is not set but is accessed, return an error.
      sql/tztime.cc:
        - be nice, never copy thd->db by pointer.
      2783fc82
  8. 05 May, 2006 1 commit
    • unknown's avatar
      WL#3153 "Split logs". Recommit with post-review fixes · 0f5d9df3
      unknown authored
      sql/ha_ndbcluster_binlog.cc:
        use MYSQL_BIN_LOG instead of MYSQL_LOG
      sql/log.cc:
         Split MYSQL_LOG into base MYSQL_LOG and
         MYSQL_GENERAL_LOG, MYSQL_SLOW_LOG, MYSQL_BIN_LOG
      sql/log.h:
        Split MYSQL_LOG into base MYSQL_LOG and
        MYSQL_GENERAL_LOG, MYSQL_SLOW_LOG, MYSQL_BIN_LOG
      sql/log_event.h:
        use MYSQL_BIN_LOG instead of MYSQL_LOG
      sql/mysql_priv.h:
        use MYSQL_BIN_LOG instead of MYSQL_LOG
      sql/mysqld.cc:
        fix appropriate comments: use MYSQL_BIN_LOG instead of MYSQL_LOG
      sql/rpl_injector.cc:
        use MYSQL_BIN_LOG instead of MYSQL_LOG
      sql/rpl_injector.h:
        use MYSQL_BIN_LOG instead of MYSQL_LOG
      sql/rpl_rli.h:
        use MYSQL_BIN_LOG instead of MYSQL_LOG
      sql/slave.cc:
        Fix appropriate comments: use MYSQL_BIN_LOG instead of MYSQL_LOG.
        Fix usage of new_file(): now we don't need to pass locking-related
        info to the function.
      sql/slave.h:
        Use MYSQL_BIN_LOG instead of MYSQL_LOG in appropriate comments
      0f5d9df3
  9. 03 Jan, 2006 1 commit
    • unknown's avatar
      many warnings (practically safe but annoying) corrected · 12e22065
      unknown authored
      client/mysqladmin.cc:
        don't use the handler after it's closed
      client/mysqlbinlog.cc:
        memory leak
      client/mysqldump.c:
        many "ignore return value" warnings, one "NULL dereference"
      cmd-line-utils/libedit/history.c:
        memory leak
      include/my_base.h:
        cleanup
      libmysql/libmysql.c:
        "return value ignored" warning
      myisam/mi_delete.c:
        "return value ignored" warning
      myisam/myisampack.c:
        "out-of-bound access" warning
      myisam/sort.c:
        "double free" warning
      mysys/default_modify.c:
        "double free" warning
      mysys/mf_iocache2.c:
        "return value ignored" warnings
      mysys/my_bitmap.c:
        s/return/DBUG_RETURN/
      mysys/my_error.c:
        memory leak
      server-tools/instance-manager/parse.cc:
        "NULL dereference" warning
      sql-common/client.c:
        "NULL dereference" warning
      sql/field.cc:
        deadcode, "NULL dereference", "uninitialized" warnings
      sql/field.h:
        unused parameters removed from constructor
      sql/ha_myisam.cc:
        "return value ignored" warnings
      sql/item.cc:
        "return val...
      12e22065
  10. 22 Dec, 2005 1 commit
    • unknown's avatar
      WL#1012: All changes as one single changeset. · 00d4af11
      unknown authored
      This includes both code and test cases.
      
      
      BitKeeper/deleted/.del-ctype_ucs_binlog.result~280d136b1a0bcf17:
        Delete: mysql-test/r/ctype_ucs_binlog.result
      BitKeeper/deleted/.del-rpl_delete_all.result~7c050d592614b3f:
        Delete: mysql-test/r/rpl_delete_all.result
      BitKeeper/deleted/.del-rpl000013-slave.opt~18266ad8a2403e8d:
        Delete: mysql-test/t/rpl000013-slave.opt
      BitKeeper/deleted/.del-rpl_delete_all.test~700a1490277780e0:
        Delete: mysql-test/t/rpl_delete_all.test
      mysql-test/extra/binlog_tests/binlog.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/blackhole.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/ctype_cp932.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/ctype_cp932_binlog.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/ctype_ucs_binlog.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/drop_temp_table.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/insert_select-binlog.test:
        Import patch wl1012.patch
      mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_ddl.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_deadlock.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_err_ignoredtable.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_flsh_tbls.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_loaddata_m.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_log.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_max_relay_size.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_multi_query.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_reset_slave.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_stm_000001.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_stm_EE_err.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_stm_charset.test:
        Import patch wl1012.patch
      mysql-test/extra/rpl_tests/rpl_user_variables.test:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_binlog.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_blackhole.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_ctype_cp932.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_ctype_ucs.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_drop_tmp_tbl.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_insert_select.result:
        Import patch wl1012.patch
      mysql-test/r/binlog_stm_mix_innodb_myisam.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_000012.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_000015.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_deadlock_innodb.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_flushlog_loop.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_loaddata_s.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_000001.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_EE_err.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_charset.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_ddl.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_err_ignoredtable.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_flsh_tbls.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_loaddata_m.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_log.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_max_relay_size.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_multi_query.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_mystery22.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_reset_slave.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_rewrt_db.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_sp.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_timezone.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_until.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_user_variables.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_stm_view.result:
        Import patch wl1012.patch
      mysql-test/t/binlog_row_binlog-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_000012.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_000015-slave.sh:
        Import patch wl1012.patch
      mysql-test/t/rpl_000015.slave-mi:
        Import patch wl1012.patch
      mysql-test/t/rpl_000015.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_deadlock_innodb-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_flushlog_loop-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_flushlog_loop-master.sh:
        Import patch wl1012.patch
      mysql-test/t/rpl_flushlog_loop-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_flushlog_loop-slave.sh:
        Import patch wl1012.patch
      mysql-test/t/rpl_flushlog_loop.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_loaddata_s-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_loaddata_s.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_000001-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_err_ignoredtable-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_loaddata_m-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_log-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_log-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_mystery22.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_rewrt_db-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_rewrt_db.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_sp-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_sp-slave.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_sp.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_timezone-master.opt:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_timezone-slave.opt:
        Import patch wl1012.patch
      BUILD/SETUP.sh:
        Import patch wl1012.patch
      Makefile.am:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_timezone.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_until.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_stm_view.test:
        Import patch wl1012.patch
      client/Makefile.am:
        Import patch wl1012.patch
      client/client_priv.h:
        Import patch wl1012.patch
      client/mysqlbinlog.cc:
        Import patch wl1012.patch
      configure.in:
        Import patch wl1012.patch
      include/Makefile.am:
        Import patch wl1012.patch
      include/base64.h:
        Import patch wl1012.patch
      include/config-win.h:
        Import patch wl1012.patch
      include/my_base.h:
        Import patch wl1012.patch
      include/my_global.h:
        Import patch wl1012.patch
      mysql-test/Makefile.am:
        Import patch wl1012.patch
      mysql-test/mysql-test-run.pl:
        Import patch wl1012.patch
      mysql-test/mysql-test-run.sh:
        Import patch wl1012.patch
      mysql-test/r/date_formats.result:
        Import patch wl1012.patch
      mysql-test/r/flush_block_commit.result:
        Import patch wl1012.patch
      mysql-test/r/innodb.result:
        Import patch wl1012.patch
      mysql-test/r/rpl000017.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_change_master.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_commit_after_flush.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_create_database.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_do_grant.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_loaddata.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_log_pos.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_multi_delete.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_multi_update.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_openssl.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_replicate_do.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_rotate_logs.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_server_id1.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_server_id2.result:
        Import patch wl1012.patch
      mysql-test/r/rpl_temporary.result:
        Import patch wl1012.patch
      mysql-test/r/user_var-binlog.result:
        Import patch wl1012.patch
      mysql-test/t/create_select_tmp.test:
        Import patch wl1012.patch
      mysql-test/t/date_formats.test:
        Import patch wl1012.patch
      mysql-test/t/disabled.def:
        Import patch wl1012.patch
      mysql-test/t/innodb.test:
        Import patch wl1012.patch
      mysql-test/t/mysqlbinlog.test:
        Import patch wl1012.patch
      mysql-test/t/mysqlbinlog2.test:
        Import patch wl1012.patch
      mysql-test/t/rpl000002.test:
        Import patch wl1012.patch
      mysql-test/t/rpl000006.test:
        Import patch wl1012.patch
      mysql-test/t/rpl000013.test:
        Import patch wl1012.patch
      mysql-test/t/rpl000017.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_auto_increment.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_change_master.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_commit_after_flush.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_create_database.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_do_grant.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_drop.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_empty_master_crash.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_failed_optimize.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_heap.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_insert_id.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_insert_ignore.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_loaddata.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_log_pos.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_multi_delete.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_multi_update.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_multi_update2.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_multi_update3.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_openssl.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_redirect.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_relayrotate.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_replicate_do.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_rotate_logs.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_server_id1.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_sp_effects.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_temporary.test:
        Import patch wl1012.patch
      mysql-test/t/rpl_trigger.test:
        Import patch wl1012.patch
      mysql-test/t/sp.test:
        Import patch wl1012.patch
      mysql-test/t/user_var-binlog.test:
        Import patch wl1012.patch
      mysys/Makefile.am:
        Import patch wl1012.patch
      mysys/base64.c:
        Import patch wl1012.patch
      sql/Makefile.am:
        Import patch wl1012.patch
      sql/ha_innodb.cc:
        Import patch wl1012.patch
      sql/ha_innodb.h:
        Import patch wl1012.patch
      sql/ha_partition.cc:
        Import patch wl1012.patch
      sql/handler.cc:
        Import patch wl1012.patch
      sql/handler.h:
        Import patch wl1012.patch
      sql/item_sum.cc:
        Import patch wl1012.patch
      sql/log.cc:
        Import patch wl1012.patch
      sql/log_event.cc:
        Import patch wl1012.patch
      sql/log_event.h:
        Import patch wl1012.patch
      sql/mysql_priv.h:
        Import patch wl1012.patch
      sql/mysqld.cc:
        Import patch wl1012.patch
      sql/rpl_filter.h:
        Import patch wl1012.patch
      sql/set_var.cc:
        Import patch wl1012.patch
      sql/share/errmsg.txt:
        Import patch wl1012.patch
      sql/slave.cc:
        Import patch wl1012.patch
      sql/slave.h:
        Import patch wl1012.patch
      sql/sp.cc:
        Import patch wl1012.patch
      sql/sp_head.cc:
        Import patch wl1012.patch
      sql/sql_acl.cc:
        Import patch wl1012.patch
      sql/sql_base.cc:
        Import patch wl1012.patch
      sql/sql_class.cc:
        Import patch wl1012.patch
      sql/sql_class.h:
        Import patch wl1012.patch
      sql/sql_delete.cc:
        Import patch wl1012.patch
      sql/sql_insert.cc:
        Import patch wl1012.patch
      sql/sql_lex.h:
        Import patch wl1012.patch
      sql/sql_list.h:
        Import patch wl1012.patch
      sql/sql_load.cc:
        Import patch wl1012.patch
      sql/sql_parse.cc:
        Import patch wl1012.patch
      sql/sql_plugin.cc:
        Import patch wl1012.patch
      sql/sql_rename.cc:
        Import patch wl1012.patch
      sql/sql_repl.h:
        Import patch wl1012.patch
      sql/sql_select.cc:
        Import patch wl1012.patch
      sql/sql_show.cc:
        Import patch wl1012.patch
      sql/sql_table.cc:
        Import patch wl1012.patch
      sql/sql_udf.cc:
        Import patch wl1012.patch
      sql/sql_union.cc:
        Import patch wl1012.patch
      sql/sql_update.cc:
        Import patch wl1012.patch
      sql/sql_yacc.yy:
        Import patch wl1012.patch
      sql/table.cc:
        Import patch wl1012.patch
      sql/table.h:
        Import patch wl1012.patch
      storage/innobase/include/lock0lock.h:
        Import patch wl1012.patch
      storage/innobase/include/row0mysql.h:
        Import patch wl1012.patch
      storage/innobase/include/row0vers.h:
        Import patch wl1012.patch
      storage/innobase/lock/lock0lock.c:
        Import patch wl1012.patch
      storage/innobase/row/row0mysql.c:
        Import patch wl1012.patch
      storage/innobase/row/row0sel.c:
        Import patch wl1012.patch
      storage/innobase/row/row0vers.c:
        Import patch wl1012.patch
      00d4af11
  11. 12 Oct, 2005 1 commit
    • unknown's avatar
      Fix for BUG#13023: "SQL Thread is up but doesn't move forward". Details in slave.cc; · d536481f
      unknown authored
      in short we now record whenever the slave I/O thread ignores a master's event because of its server id,
      and use this info in the slave SQL thread to advance Exec_master_log_pos. Because if we
      do not, this variable stays at the position of the last executed event, i.e. the last *non-ignored*
      executed one, which may not be the last of the master's binlog (and so the slave *looks* behind
      the master though it's data-wise it's not).
      
      
      mysql-test/t/rpl_dual_pos_advance-master.opt:
        empty; its goal is just to trigger a server restart after running the test,
        so that the master forgets that it was a slave (otherwise it affects the following tests).
      sql/log.cc:
        No more default arguments for Rotate_log_event constructor.
        MYSQL_LOG::appendv() is now called without mutex.
      sql/log_event.cc:
        Moving one Rotate_log_event constructor from log_event.h. Support for on-demand choice of
        duplicating the string argument of the construc...
      d536481f
  12. 08 Oct, 2005 1 commit
  13. 04 Oct, 2005 1 commit
    • unknown's avatar
      Fixed several boolean type options used in my_long_options[]. · ba6ad9fe
      unknown authored
      Some options were declared as 'bool', but since those are being
      handled in my_getopt.c, bool can be machine dependent. To make
      sure it works in all circumstances, the type should be my_bool
      for C (not C++) programs.
      
      
      sql/mysql_priv.h:
        Fixed some bools to my_bools.
      sql/mysqld.cc:
        Changed several bools to my_bools.
      sql/slave.cc:
        Changed bool to my_bool.
      sql/slave.h:
        Changed bool to my_bool.
      ba6ad9fe
  14. 30 Jul, 2005 1 commit
  15. 29 Jul, 2005 1 commit
    • unknown's avatar
      patch for bug 10780 · 324c1b47
      unknown authored
      sql/slave.cc:
        bug 10780
      sql/slave.h:
        bug 10780
      mysql-test/r/rpl_slave_status.result:
        New BitKeeper file ``mysql-test/r/rpl_slave_status.result''
      324c1b47
  16. 23 Mar, 2005 1 commit
    • unknown's avatar
      "After Monty's review" changes to the fix for BUG#8325 "Deadlock in... · 832800cc
      unknown authored
      "After Monty's review" changes to the fix for BUG#8325 "Deadlock in replication thread stops replication":
      s/sleep/safe_sleep (thread safe); sleep 0/1/2/3/4/5/5/5 (get slave less late);
      no message on error log (deadlock is too common sometimes), a global counter
      instead (SHOW STATUS LIKE 'slave_retried_transactions').
      Plus a fix for libmysql/Makefile.shared
      
      
      libmysql/Makefile.shared:
        When we "make clean" in libmysql/ we remove the symlinks there, so we
        need to mark that they have to be recreated later: this is done by removing
        ../linked_libmysql_sources. If we don't do this, 'make' will fail after 'cd libmysql;make clean'.
        This Makefile.shared is used by libmysql_r too.
        No reason to remove linked_client_sources as we don't remove the links in client/.
      mysql-test/r/rpl_deadlock.result:
        result fix
      mysql-test/t/rpl_deadlock.test:
        small test addition
      sql/mysqld.cc:
        if active_mi could not be alloced, die. New SHOW STATUS LIKE "slave_retried_transactions".
      sql/slave.cc:
        If slave retries automatically a transaction, no message on error log
        (too common situation); sleep 0 secs at first retry, then 1, 2, 3, 4,
        5, 5, 5... Sleeping 0 is to get the least possible late, as deadlocks
        are usually resolved at first try. New global counter rli->retried_trans
        (for SHOW STATUS: total number of times the slave had to retry
        any transaction). safe_sleep() is thread-safe, sleep() was not.
        I change the rli->trans_retries counter to go from 0 to max instead
        of the other way (better for new sleep()).
      sql/slave.h:
        new global counter rli->retried_trans
      sql/sql_show.cc:
        SHOW STATUS LIKE "slave_retried_transactions"; needs replication mutexes.
        Can't be a simple SHOW_LONG, because active_mi is unset (not alloced yet)
        when the static global status_vars is created (active_mi is set
        in init_slave()).
      sql/structs.h:
        new SHOW_SLAVE_RETRIED_TRANS
      BitKeeper/etc/logging_ok:
        Logging to logging@openlogging.org accepted
      832800cc
  17. 22 Mar, 2005 1 commit
  18. 21 Mar, 2005 2 commits
    • unknown's avatar
      Last part of WL#1062: better replication of timezones: no more use · 61eb9e40
      unknown authored
      of SET ONE_SHOT; storing tz info directly in event (if this info is needed),
      it's now allowed to have different global tz on master and slave.
      
      
      client/mysqlbinlog.cc:
        we need MAX_TIME_ZONE_NAME_LENGTH when processing log_event.h, and it's declared in mysql_priv.h
      mysql-test/r/rpl_timezone.result:
        result update
      mysql-test/t/rpl_timezone-slave.opt:
        Now that we can have different global value of timezone on master and slave, let's test it.
      mysql-test/t/rpl_timezone.test:
        Tests of the new replication of timezones: checking the output of mysqlbinlog,
        replication of CONVERT_TZ().
      sql/ha_innodb.cc:
        No very fast shutdown on Netware (anyway it's disabled on all platforms,
        but this is so that we don't forget to keep it disabled on Netware in the future).
      sql/log.cc:
        No more need to write SET ONE_SHOT to binlog for character set and timezone
        (as we store this info  directly nin the Query_log_event now).
      sql/log_event.cc:
        Exclude :...
      61eb9e40
    • unknown's avatar
      WL#2472: · faf5f9db
      unknown authored
      Renamed Table_filter to Rpl_filter
      Eliminated very annoying memory leak
      
      
      sql/Makefile.am:
        Renamed Table_filter to Rpl_filter
      sql/log.cc:
        Renamed Table_filter to Rpl_filter
      sql/log_event.cc:
        Renamed Table_filter to Rpl_filter
      sql/mysqld.cc:
        Renamed Table_filter to Rpl_filter
        Eliminated very annoying memory leak
      sql/repl_failsafe.cc:
        Renamed Table_filter to Rpl_filter
      sql/slave.cc:
        Renamed Table_filter to Rpl_filter
      sql/slave.h:
        Renamed Table_filter to Rpl_filter
      sql/sql_acl.h:
        Renamed Table_filter to Rpl_filter
      sql/sql_parse.cc:
        Renamed Table_filter to Rpl_filter
      sql/sql_repl.cc:
        Renamed Table_filter to Rpl_filter
      sql/rpl_filter.cc:
        Renamed Table_filter to Rpl_filter
      sql/rpl_filter.h:
        Renamed Table_filter to Rpl_filter
      sql/sql_repl.h:
        Renamed Table_filter to Rpl_filter
      faf5f9db
  19. 10 Mar, 2005 1 commit
  20. 08 Mar, 2005 1 commit
    • unknown's avatar
      WL#2472: Refactoring of replication and binlog filtering. · 4e732a60
      unknown authored
      Needed to be able to have multiple masters connected 
      to same slave server with different filters.
      
      
      sql/Makefile.am:
        Add table_filter.cc
      sql/log.cc:
        Use Table_filter
      sql/log_event.cc:
        Use Table_filter
      sql/mysql_priv.h:
        Use Table_filter
      sql/mysqld.cc:
        Use Table_filter
      sql/repl_failsafe.cc:
        Use Table_filter
      sql/slave.cc:
        Use Table_filter
      sql/slave.h:
        Use Table_filter
      sql/sql_acl.cc:
        Use Table_filter
      sql/sql_class.h:
        Use const since they should not be changed
      sql/sql_parse.cc:
        Use Table_filter
      sql/sql_repl.cc:
        Use Table_filter
      sql/sql_repl.h:
        Use Table_filter
      4e732a60
  21. 02 Mar, 2005 1 commit
    • unknown's avatar
      Fix for BUG#8325 "Deadlock in replication thread stops replication": · 932f63ac
      unknown authored
      in slave SQL thread: if a transaction fails because of InnoDB deadlock or innodb_lock_wait_timeout exceeded,
      optionally retry the transaction a certain number of times (new variable --slave_transaction_retries).
      
      
      sql/mysql_priv.h:
        new var slave_transaction_retries
      sql/mysqld.cc:
        new variable slave_transaction_retries. Plus fixing a typo.
      sql/set_var.cc:
        new global variable slave_transaction_retries (will be one per subslave, when we have multimaster).
      sql/slave.cc:
        Slave SQL thread: if a transaction fails because of InnoDB deadlock or innodb_lock_wait_timeout exceeded,
        optionally retry the transaction a certain number of times (--slave_transaction_retries).
      sql/slave.h:
        new RELAY_LOG_INFO::trans_retries.
      932f63ac
  22. 03 Feb, 2005 1 commit
    • unknown's avatar
      WL#1062 "log charset info into all Query_log_event": · 417c215d
      unknown authored
      we store 7 bytes (1 + 2*3) in every Query_log_event.
      In the future if users want binlog optimized for small size and less safe,
      we could add --binlog-no-charset (and binlog-no-sql-mode etc): charset info
      is something by design optional (even if for now we don't offer possibility to disable it):
      it's not a binlog format change.
      We try to reduce the number of get_charset() calls in the slave SQL thread to a minimum
      by caching the charset read from the previous event (which will often be equal to the one of the current event).
      We don't use SET ONE_SHOT for charset-aware repl (we still do for timezones, will be fixed later).
      No more errors if one changes the global value of charset vars on master or slave
      (as we log charset info in all Query_log_event).
      Not fixing Load_log_event as it will be rewritten soon by Dmitri.
      Testing how mysqlbinlog behaves in rpl_charset.test.
      mysqlbinlog needs to know where charset file is (to be able to convert a charset number found
      in binlog (e.g. in User_var_log_event) to a charset name); mysql-test-run needs to pass
      the correct value for this option to mysqlbinlog.
      Many result udpates (adding charset info into every event shifts log_pos in SHOW BINLOG EVENTS).
      Roughly the same job is to be done for timezones :)
      
      
      client/mysqlbinlog.cc:
        mysqlbinlog needs charsets knowledge, to be able to convert a charset
        number found in binlog to a charset name (to be able to print things
        like this:
        SET @`a`:=_cp850 0x4DFC6C6C6572 COLLATE `cp850_general_ci`;
      mysql-test/mysql-test-run.sh:
        tell mysqlbinlog about charsets dir
      mysql-test/r/ctype_ucs.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/drop_temp_table.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/insert_select.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/mix_innodb_myisam_binlog.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/mysqlbinlog.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/mysqlbinlog2.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
        The log_pos shift is why the SET INSERT_ID=4 event changes position in the result.
      mysql-test/r/rpl_charset.result:
        Running mysqlbinlog to check how it behaves on charset stuff.
        SET ONE_SHOT is now gone.
        Repl of LOAD DATA INFILE is not yet charset-aware (will soon be, when WL#874 is pushed)
        and, anyway result has a dependency on the temp filename (SQL-LOAD-*-[0-9] which is not constant).
        No more errors if one changes global character sets.
      mysql-test/r/rpl_error_ignored_table.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_flush_log_loop.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_flush_tables.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_loaddata.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_loaddata_rule_m.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_log.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_max_relay_size.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_relayrotate.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_replicate_do.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_rotate_logs.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_temporary.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_timezone.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/rpl_user_variables.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/r/user_var.result:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      mysql-test/t/rpl_charset.test:
        Running mysqlbinlog to check how it behaves on charset stuff (so, need fixed timestamp).
        SET ONE_SHOT is not printed to binlog anymore, so no need to test if ::exec_event() works ok.
        Repl of LOAD DATA INFILE is not yet charset-aware (will soon be, when WL#874 is pushed)
        and, anyway result has a dependency on the temp filename (SQL-LOAD-*-[0-9] which is not constant).
        No more errors if one changes global character sets.
      mysql-test/t/rpl_user_variables.test:
        different binlogging of charsets results in shifted log_pos and
        one added SET @@CHARACTER_SET... per mysqlbinlog run.
      sql/log.cc:
        No more SET ONE_SHOT for charsets (remains for TZ until solved with Dmitri).
      sql/log_event.cc:
        We now log charset info in each Query_log_event in binlog. It's 2*3 = 6 bytes:
        session character_set_client, session collation_connection, session collation_server.
        Now we would need only one byte per variable, but Bar said 2 is safer for the future.
        When slave or mysqlbinlog reads that info, it needs to get_charset() on these numbers (so, 3 get_charset() calls),
        as most of the time the 6-byte charset info will be equal to the previous event's,
        we cache the previous event's charset and if equal, no need to get_charset().
        As "flags2", SQL_MODE, catalog, autoinc variables, charset info is not a permanent addition:
        in the future we can add options to the master to not log any of these, old 5.0 should be able
        to parse these.
        A little bit of cleanup on autoinc stuff in replication.
        Fixing a bug in Start_log_event_v3::exec_event() where we used rli->relay_log.description_event_for_exec->binlog_version
        while we should use binlog_version (if it's a 3.23 master, that's all that counts; not the fact that the relay log is
        in 5.0 format).
      sql/log_event.h:
        binlogging of charset info in each Query_log_event.
      sql/mysql_priv.h:
        comment
      sql/set_var.cc:
        checks to refuse change of global charset variables are removed: they were needed for 4.1->4.1
        but not for 5.0.3->5.0.3.
        Yes this opens a breach if one does 4.1->5.0.3, where the checks would still be needed. But these checks would need
        reading relay_log.description_event_for_queue, which is currently an object used in many places by the I/O
        thread and only it. So, currently we don't take mutexes for this object, and if we read the object in set_var.cc
        (client thread) we need to add mutexes everywhere, but the replication code is already too broken with mutexes
        now (no consistent use of mutexes); mutex usage in replication should be fixed but preferrably during/after
        multimaster coding as it's going to shuffle mutexes already.
      sql/set_var.h:
        Since we don't forbid global change of charset vars for replication/binlogging,
        don't need specific ::check() methods anymore
      sql/slave.cc:
        Some little debug info which has nothing to do with charsets.
        Disabling master's charset check when slave I/O thread connects.
        Functions for charset caching/invalidating in the slave SQL thread.
      sql/slave.h:
        Cached charset in the slave SQL thread.
      417c215d
  23. 01 Feb, 2005 1 commit
    • unknown's avatar
      open binlog index file *before* tc_log->open() and binlog itself *after* · 0820d47f
      unknown authored
      sql/mysql_priv.h:
        checkpoint: open_log() removed
      sql/sql_yacc.yy:
        checkpoint: open_log() removed
      sql/log.cc:
        split the opening of the .index file and binlog itself - now they are done by separate functions
      sql/slave.cc:
        init_relay_log_info() made static
        split the opening of the .index file and binlog itself - now they are done by separate functions
      sql/slave.h:
        init_relay_log_info() made static
      sql/sql_class.h:
        split the opening of the .index file and binlog itself - now they are done by separate functions
      0820d47f
  24. 16 Dec, 2004 1 commit
    • unknown's avatar
      A change of behaviour of Seconds_Behind_Master from SHOW SLAVE STATUS. It's going into 4.1 · b3d56a7d
      unknown authored
      because old behaviour was somewhat nonsensical (kind of bug). Changes are that if repl threads are
      down or disconnected the column will be NULL, and if master is idle the column will not grow indefinitely anymore.
      
      
      sql/slave.cc:
        mi->slave_running and rli->slave_running now uints (was needed only for mi but because of start_slave_thread() usage,
        had to change both).
        So mi->slave_running can now take 3 values: not running, running & not connected, running and connected.
        The last value serves for calculation of Seconds_Behind_Master in SHOW SLAVE STATUS.
        Changing this column's behaviour: if SQL or I/O thread is not running, or if I/O thread is not connected
        (for example if it is reconnecting), it's NULL (to mean "unknown"). And if master is idle, the column will
        not grow indefinitely like it used to (that was meaningless); this is fixed by forcing a value of 0
        when the slave SQL thread has hit EOF of relay log (which has only a limited number of caveats explained
        in comments in code).
      sql/slave.h:
        slave_running used to be bool but we need to distinguish, for the I/O slave thread, between 
        "running & connected" and "running & not connected" ("running" means the thread exists).
      sql/sql_repl.cc:
        we don't need anymore to set rli->last_master_timestamp to 0 (we used that to make Seconds_Behind_Master
        be NULL) in RESET SLAVE and CHANGE MASTER, as these commands imply that slave threads are not running
        and so Seconds_Behind_Master is already NULL because of that.
      b3d56a7d
  25. 03 Dec, 2004 1 commit
    • unknown's avatar
      Due to a compiler bug, slave.cc:tables_ok() sometimes wrongly returns · e6f04fe7
      unknown authored
      1 if the return type is int or int_fast8_t.  The test case that showed
      this problem is rpl000001 and the tested version was MySQL 5.0.2.  The
      compiler with the problem is GCC 3.0.4 runing on "Linux bitch 2.4.18
      #2 Thu Apr 11 14:37:17 EDT 2002 sparc64 unknown".
      
      By changing the return type to bool the problem disappear.  (Another
      way to make the problem disappear is to simply print the returned
      value with printf("%d",?).  The printed returned value is always 0 in
      the test cases I have run.)  This is only a partial solution to the
      problem, since someone could later change the return type of the
      function back to int or some other type that does not work.
      
      
      sql/slave.cc:
        Changed type
      sql/slave.h:
        Changed type
      e6f04fe7
  26. 25 Nov, 2004 1 commit
    • unknown's avatar
      Fix for Bug#6148. Only rewind read position in binary log when the · 324b3a45
      unknown authored
      slave SQL thread is started.
      
      
      sql/slave.cc:
        Adding threads to init as parameter to init_master_info.
        Only rewind read position when starting SQL thread.
      sql/slave.h:
        Adding threads to init as parameter to init_master_info.
        Only rewind read position when starting SQL thread.
      sql/sql_repl.cc:
        Adding threads to init as parameter to init_master_info.
        Only rewind read position when starting SQL thread.
      sql/repl_failsafe.cc:
        Adding threads to init as parameter to init_master_info.
        Only rewind read position when starting SQL thread.
      324b3a45
  27. 17 Nov, 2004 1 commit
    • unknown's avatar
      Fixes for compilation errors in Windows (casts from uint32* to uint*) in repl and charset code. · cfc1b1dc
      unknown authored
      Moving the part of user_var.test using UCS2 to ctype_ucs.test
      
      
      mysql-test/r/ctype_ucs.result:
        result update
      mysql-test/r/user_var.result:
        result update
      mysql-test/t/ctype_ucs.test:
        importing test piece from user_var.test
      mysql-test/t/user_var.test:
        using UCS2 in this test fails on non-USC2-capable binaries, so let's move this piece to ctype_ucs.test.
      sql/slave.cc:
        changing arg type to uint32* (as what is used in this arg is &thd->db_length which is uint32*)
      sql/slave.h:
        changing arg type to uint32*
      sql/sql_parse.cc:
        changing arg types to uint32, as what is used in these args is a create_field::length which is uint32.
      cfc1b1dc
  28. 20 Oct, 2004 1 commit
    • unknown's avatar
      errors without code removed · 9d3fe09b
      unknown authored
      net_printf/send_error calls replaced by my_error family functions
      -1/1 (sent/unsent) error reporting removed
      (WL#2133)
      
      
      include/mysqld_error.h:
        new errors added.
      mysql-test/r/rpl_charset.result:
        new error
      mysql-test/r/rpl_timezone.result:
        new error
      mysql-test/r/sp-security.result:
        more clean error message
      mysql-test/r/sp.result:
        now error state intercepted correctly
      mysql-test/t/connect.test:
        new error message
      mysql-test/t/rpl_charset.test:
        new error message
      mysql-test/t/rpl_timezone.test:
        new error
      mysql-test/t/sp-security.test:
        more correct error handling
      mysql-test/t/sp.test:
        now error state intercepted correctly
      sql/ha_innodb.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/ha_innodb.h:
        -1/1 (sent/unsent) error reporting removed
      sql/item.cc:
        only boolean values should be returned by fix_fields()
      sql/item_cmpfunc.cc:
        only boolean values should be returned by fix_fields()
      sql/item_func.cc:
        only boolean values should be returned by fix_fields()
        net_printf/send_error calls replaced by my_error family functions
      sql/item_row.cc:
        only boolean values should be returned by fix_fields()
      sql/item_subselect.cc:
        only boolean values should be returned by fix_fields()
        -1/1 (sent/unsent) error reporting removed
      sql/item_subselect.h:
        -1/1 (sent/unsent) error reporting removed
      sql/item_sum.cc:
        only boolean values should be returned by fix_fields()
      sql/item_timefunc.cc:
        only boolean values should be returned by fix_fields()
      sql/item_uniq.h:
        only boolean values should be returned by fix_fields()
      sql/mysql_priv.h:
        -1/1 (sent/unsent) error reporting removed
      sql/mysqld.cc:
        net_printf/send_error calls replaced by my_error family functions
        changes in my_message_sql to support error handling correctly
      sql/protocol.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/protocol_cursor.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/repl_failsafe.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/repl_failsafe.h:
        -1/1 (sent/unsent) error reporting removed
      sql/set_var.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/share/czech/errmsg.txt:
        new error messages
      sql/share/danish/errmsg.txt:
        new error messages
      sql/share/dutch/errmsg.txt:
        new error messages
      sql/share/english/errmsg.txt:
        new error messages
      sql/share/estonian/errmsg.txt:
        new error messages
      sql/share/french/errmsg.txt:
        new error messages
      sql/share/german/errmsg.txt:
        new error messages
      sql/share/greek/errmsg.txt:
        new error messages
      sql/share/hungarian/errmsg.txt:
        new error messages
      sql/share/italian/errmsg.txt:
        new error messages
      sql/share/japanese/errmsg.txt:
        new error messages
      sql/share/korean/errmsg.txt:
        new error messages
      sql/share/norwegian-ny/errmsg.txt:
        new error messages
      sql/share/norwegian/errmsg.txt:
        new error messages
      sql/share/polish/errmsg.txt:
        new error messages
      sql/share/portuguese/errmsg.txt:
        new error messages
      sql/share/romanian/errmsg.txt:
        new error messages
      sql/share/russian/errmsg.txt:
        new error messages
      sql/share/serbian/errmsg.txt:
        new error messages
      sql/share/slovak/errmsg.txt:
        new error messages
      sql/share/spanish/errmsg.txt:
        new error messages
      sql/share/swedish/errmsg.txt:
        new error messages
      sql/share/ukrainian/errmsg.txt:
        new error messages
      sql/slave.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/slave.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sp.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/sp_head.cc:
        new eror handling support
        net_printf/send_error calls replaced by my_error family functions
      sql/sp_rcontext.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_acl.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/sql_acl.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_base.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_class.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_class.h:
        my_messhage_sql now set/reset query_error flag
      sql/sql_db.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_delete.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_do.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_error.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_handler.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_help.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/sql_insert.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_lex.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_load.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_map.cc:
        errors without code removed
      sql/sql_parse.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed from mysql_execute_command
      sql/sql_prepare.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/sql_repl.cc:
        error messages fixed
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/sql_repl.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_select.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_select.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_show.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_table.cc:
        net_printf/send_error calls replaced by my_error family functions
        -1/1 (sent/unsent) error reporting removed
      sql/sql_trigger.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_udf.cc:
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_union.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_update.cc:
        -1/1 (sent/unsent) error reporting removed
        net_printf/send_error calls replaced by my_error family functions
      sql/sql_view.cc:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_view.h:
        -1/1 (sent/unsent) error reporting removed
      sql/sql_yacc.yy:
        net_printf/send_error calls replaced by my_error family functions
      9d3fe09b
  29. 19 Oct, 2004 1 commit
    • unknown's avatar
      Optimization: in the replication slave, we can avoid doing one strlen() per event's execution, · 9aca45b3
      unknown authored
      as we already have db_len in Log_event. Only if rewrite_db() changed the db we need a strlen
      (so we now do the strlen() in rewrite_db). Plus a test (we had none for --replicate-rewrite-db :( ).
      
      
      sql/log_event.cc:
        The goal is to get of rid of one strlen() per replication event in slave:
        we don't need to compute strlen(thd->db) as we already have db_len in the event;
        only case where we need to do a strlen() is if rewrite_db() changed the db.
        Note that db_len is always a meaningful value. It's 0 if event's db is 0.
      sql/slave.cc:
        rewrite_db now returns the len of the returned db.
        print_slave_db_safe() needn't call rewrite_db() as rewrite_db() is already called by caller.
      sql/slave.h:
        declaration updates for slave.cc
      9aca45b3
  30. 09 Sep, 2004 1 commit
    • unknown's avatar
      Updating the headers on a few files to include GPL header. · ca4c39eb
      unknown authored
      sql/repl_failsafe.cc:
        Removed reference to old maintainer.
      sql/repl_failsafe.h:
        Added license header.
      sql/slave.h:
        Added license header.
      sql/sql_repl.cc:
        Removed old maintainer.
      sql/sql_repl.h:
        Added license header
      BitKeeper/etc/logging_ok:
        Logging to logging@openlogging.org accepted
      ca4c39eb
  31. 14 May, 2004 1 commit
    • unknown's avatar
      Post-merge fixes. · bf3ad869
      unknown authored
      Note: One sp.test still fails (prime), and rpl_server_id2.test fails (will be fixed by guilhem ASAP).
      
      
      mysql-test/r/index_merge.result:
        Fixed syntax error (no ',' after last index in create table any more).
      mysql-test/r/index_merge_bdb.result:
        Fixed syntax error (no ',' after last index in create table any more).
      mysql-test/r/index_merge_innodb.result:
        Fixed syntax error (no ',' after last index in create table any more).
      mysql-test/r/index_merge_innodb2.result:
        Fixed syntax error (no ',' after last index in create table any more).
      mysql-test/r/rpl_server_id1.result:
        Update result after merge.
      mysql-test/r/sp-error.result:
        Update result after merge.
      mysql-test/r/variables.result:
        Update result after merge.
      mysql-test/t/index_merge.test:
        Fixed syntax error (no ',' after last index in create table any more).
      mysql-test/t/index_merge_bdb.test:
        Fixed syntax error (no ',' after last index in create table any more).
      mysql-test/t/index_merge_innodb.test:
        Fixed syntax error (no ',' after last index in create table any more).
      mysql-test/t/index_merge_innodb2.test:
        Fixed syntax error (no ',' after last index in create table any more).
      mysql-test/t/sp-error.test:
        Post-merge fix of error codes.
      sql/opt_range.cc:
        Manually merged by Monty.
      sql/opt_range.h:
        Manually merged by Monty.
      sql/slave.cc:
        Post-merge fixes with some help from Guilhem.
      sql/slave.h:
        Post-merge fixes with some help from Guilhem.
      sql/sp_head.cc:
        Got rid of warning (reordering initialization).
      sql/sql_parse.cc:
        Post-merge fix: Need to set/reset select_limit at SP CALL time as well.
      tests/client_test.c:
        Post-merge fix: key_len length in explain has changed.
      bf3ad869
  32. 28 Apr, 2004 1 commit
    • unknown's avatar
      A new option --replicate-same-server-id to force a slave to execute queries originating from itself · 078bda30
      unknown authored
      (WL#794). This can be of interest in some recovery-from-backup scenarios, and also when you have
      two databases in one mysqld, having a certain similarity and you want one db to be updated when the other is
      (some sort of trigger).
      Plus small fix for BUG#3568 "MySQL server crashes when built --with-debug and CHANGE MASTER +MASTER_POS_WAIT"
      
      
      sql/mysqld.cc:
        new option --replicate-same-server-id
      sql/slave.cc:
        new option replicate_same_server_id, to force a slave to execute its own queries.
        Small fix for BUG#3568 "MySQL server crashes when built --with-debug and CHANGE MASTER +MASTER_POS_WAIT"
      sql/slave.h:
        new option --replicate-same-server-id
      078bda30
  33. 27 Apr, 2004 1 commit
    • unknown's avatar
      After merge fixes · 6fdb9848
      unknown authored
      Changed 'SHOW FIELD STATUS' to use 'Engine' instead of 'Type'
      
      
      client/client_priv.h:
        Added option 'create_options' for mysqldump
      client/mysqldump.c:
        Changed '--all' to '--create-options' as the old name was meaningless
      innobase/buf/buf0buf.c:
        After merge fixes
      innobase/buf/buf0lru.c:
        After merge fixes
      innobase/buf/buf0rea.c:
        After merge fixes
      innobase/dict/dict0load.c:
        After merge fixes
      innobase/fil/fil0fil.c:
        After merge fixes
      innobase/ibuf/ibuf0ibuf.c:
        After merge fixes
      innobase/include/fil0fil.h:
        After merge fixes
      innobase/include/row0mysql.h:
        After merge fixes
      innobase/include/ut0mem.h:
        After merge fixes
      innobase/log/log0recv.c:
        After merge fixes
      innobase/row/row0mysql.c:
        After merge fixes
      innobase/row/row0sel.c:
        After merge fixes
      innobase/srv/srv0start.c:
        After merge fixes
      innobase/sync/sync0rw.c:
        After merge fixes
      innobase/sync/sync0sync.c:
        After merge fixes
      myisam/ft_boolean_search.c:
        After merge fixes
      myisam/ft_nlq_search.c:
        After merge fixes
      mysql-test/r/mysqldump.result:
        After merge fixes
      mysql-test/t/mysqldump.test:
        Make result file smaller
        Some new tests
      sql/ha_innodb.cc:
        After merge fixes
      sql/set_var.cc:
        Removed compiler warning
      sql/slave.cc:
        After merge fixes
      sql/slave.h:
        After merge fixes
      sql/sql_show.cc:
        Type -> Engine
      6fdb9848
  34. 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 · 66bade03
      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.
      66bade03
  35. 17 Mar, 2004 1 commit
  36. 11 Mar, 2004 1 commit
    • unknown's avatar
      Fix for BUG#2921 "Replication problem on mutex lock in mySQL-4.0.18": · 92fe7556
      unknown authored
      re-using unused LOCK_active_mi to serialize all administrative
      commands related to replication:
      START SLAVE, STOP SLAVE, RESET SLAVE, CHANGE MASTER, init_slave()
      (replication autostart at server startup), end_slave() (replication
      autostop at server shutdown), LOAD DATA FROM MASTER.
      This protects us against a handful of deadlocks (like BUG#2921
      when two START SLAVE, but when two STOP SLAVE too).
      Removing unused variables.
      
      
      sql/item_func.cc:
        We don't need LOCK_active_mi just to MASTER_POS_WAIT().
      sql/repl_failsafe.cc:
        no need for macro
      sql/set_var.cc:
        no need for macro
      sql/slave.cc:
        Re-using unused LOCK_active_mi to serialize all administrative
        commands related to replication:
        START SLAVE, STOP SLAVE, RESET SLAVE, CHANGE MASTER, init_slave()
        (replication autostart at server startup), end_slave() (replication
        autostop at server shutdown), LOAD DATA FROM MASTER.
        This protects us against a handful of deadlocks.
        Removing unused variables.
      sql/slave.h:
        Re-using LOCK_active_mi to serialize administrative replication commands.
        Macros unneeded. Removing unneeded variables.
      sql/sql_parse.cc:
        found unused variable.
        Replacing macros.
      sql/sql_show.cc:
        replacing macros
      92fe7556
  37. 10 Mar, 2004 3 commits
    • unknown's avatar
      Backporting parts of · fc192448
      unknown authored
      ChangeSet 1.1620.12.1 and ChangeSet 1.1625.2.1
      from 4.1. This makes the slave I/O thread flush the relay log 
      after every event, which provides additional safety in case
      of brutal crash (reduces chances to lose a part of the relay log).
      
      
      sql/repl_failsafe.cc:
        update for new prototype
      sql/slave.cc:
        The slave I/O thread now flushes the relay log after writing
        every event to it, like we already do in 4.1.
      sql/slave.h:
        new prototype
      sql/sql_repl.cc:
        update for new prototype
      fc192448
    • unknown's avatar
      Undoing 2 parts of changeset 1.1730.1.1 : · 3768f9ef
      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
      3768f9ef
    • unknown's avatar
      Fixed memory leak in DROP DATABASE when using RAID tables (Bug #2882) · 98cd9f93
      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...
      98cd9f93