1. 22 Oct, 2012 1 commit
    • unknown's avatar
      MDEV-571 · 76d8a43e
      unknown authored
      Adjusted test case results after the merge 10.0-base, 10.0-monty.
      The results are in sync with MySQL 5.6.7.
      76d8a43e
  2. 20 Oct, 2012 2 commits
  3. 19 Oct, 2012 1 commit
  4. 12 Oct, 2012 1 commit
    • unknown's avatar
      MDEV-3802: Millisecond timeout support in non-blocking client library + fix incorrect blocking. · 52c84d14
      unknown authored
      After the merge of VIO stuff from MySQL 5.6, there were some bugs left
      in the non-blocking client library:
      
       - vio_io_wait() was introduced without any support for non-blocking operation,
         so async queries could turn into sync.
      
       - Timeouts were changed to milliseconds, but this was not reflected in the
         non-blocking API, also semantics was changed so signed -1 was used for
         "no timeout" rather than unsigned 0.
      
      Fix by implementing and using my_io_wait_async() in the non-blocking case. And
      by introducing a new mysql_get_timeout_value_ms() API function that provides
      the timeout with millisecond granularity. The old mysql_get_timeout_value()
      is kept and fixed to work correctly, converting the timeout to whole seconds.
      52c84d14
  5. 11 Oct, 2012 1 commit
  6. 08 Oct, 2012 1 commit
  7. 07 Oct, 2012 1 commit
  8. 06 Oct, 2012 5 commits
  9. 05 Oct, 2012 1 commit
  10. 04 Oct, 2012 10 commits
  11. 03 Oct, 2012 3 commits
    • Michael Widenius's avatar
      Automatic merge · f3261f91
      Michael Widenius authored
      f3261f91
    • Michael Widenius's avatar
      Implementation of Multi-source replication (MDEV:253) · 5eccc400
      Michael Widenius authored
      Documentation of the feature can be found at: http://kb.askmonty.org/en/multi-source-replication/
      This code is based on code from Taobao, developed by Plinux
      
      Other things:
      - Added new commands: START ALL SLAVES, STOP ALL SLAVES and SHOW FULL SLAVE STATUS
      - Almost all usage of 'active_mi' is deleted.
      - Added parameter to reset_logs() so that one can specify if new logs should be created.
      - Check wildcard match as early as possible for SHOW STATUS. This makes SHOW STATUS like 'xxx' a lot faster and use less mutex
      - Made max_relay_log_size depending on master connection.
      - Added sys_vars.default_master_connection_basic to fix a failure in sys_vars.all_vars, modified sql_slave_skip_counter_basic to allow session-level settings
      - Added commands to mysqladmin: start-all-slaves & stop-all-slaves
      - Removed logging of "next log '%s' is currently active | not active"
      - Fixed bug in my_vsnprintf() when using positional parameters with length
      - Added fn_ext2(), which returns pointer to last '.' in file name
      - max_relay_log_size now acts as a normal slave specific variable
      - Don't store replication position if innobase_overwrite_relay_log_info is not set
      - max_relay_log_size copies it's values from max_binlog_size at startup
      
      
      
      BUILD/SETUP.sh:
        Added -Wno-invalid-offsetof to get rid of warning of offsetof() on C++ class (safe in the contex we use it)
      client/mysqladmin.cc:
        Added commands start-all-slaves & stop-all-slaves
      client/mysqltest.cc:
        Added support for error names starting with 'W'
        Added connection_name support to --sync_with_master
      cmake/maintainer.cmake:
        Added -Wno-invalid-offsetof to get rid of warning of offsetof() on C++ class (safe in the contex we use it)
      include/my_sys.h:
        Added fn_ext2(), which returns pointer to last '.' in file name
      include/mysql/plugin.h:
        Added SHOW_SIMPLE_FUNC
      include/mysql/plugin_audit.h.pp:
        Updated signature file
      include/mysql/plugin_auth.h.pp:
        Updated signature file
      include/mysql/plugin_ftparser.h.pp:
        Updated signature file
      mysql-test/extra/rpl_tests/rpl_max_relay_size.test:
        Updated test
      mysql-test/include/setup_fake_relay_log.inc:
        There is no orphan relay log files anymore
      mysql-test/mysql-test-run.pl:
        Added multi_source to test suite
      mysql-test/r/flush.result:
        Added test for new syntax of flush relay logs (can't repeat relay logs or slave)
      mysql-test/r/mysqld--help.result:
        Updated result
      mysql-test/r/mysqltest.result:
        Updated result
      mysql-test/r/parser.result:
        Updated result
      mysql-test/r/signal_code.result:
        Updated result after introducing new commands
      mysql-test/r/sp-code.result:
        Updated result after introducing new commands
      mysql-test/suite/multi_source:
        Tests for multi-source
      mysql-test/suite/multi_source/info_logs-master.opt:
        Test with strange file names
      mysql-test/suite/multi_source/info_logs.result:
        Test of logs
      mysql-test/suite/multi_source/info_logs.test:
        Test of logs
      mysql-test/suite/multi_source/my.cnf:
        Setup of multi-master tests
        Added log-warnings to get more information to the log files
      mysql-test/suite/multi_source/relaylog_events.result:
        Test relay log handling
      mysql-test/suite/multi_source/relaylog_events.test:
        Test relay log handling
      mysql-test/suite/multi_source/reset_slave.result:
        Test RESET SLAVE
      mysql-test/suite/multi_source/reset_slave.test:
        Test RESET SLAVE
      mysql-test/suite/multi_source/simple.result:
        Simple basic test of multi-source functionality
      mysql-test/suite/multi_source/simple.test:
        Simple basic test of multi-source functionality
      mysql-test/suite/multi_source/skip_counter.result:
        Testing skip_counter and max_relay_log_size
      mysql-test/suite/multi_source/skip_counter.test:
        Testing skip_counter and max_relay_log_size
      mysql-test/suite/multi_source/syntax.result:
        Test of multi-source syntax
      mysql-test/suite/multi_source/syntax.test:
        Test of multi-source syntax
      mysql-test/suite/rpl/r/rpl_deadlock_innodb.result:
        New warnings
      mysql-test/suite/rpl/r/rpl_filter_dbs_dynamic.result:
        Improved error texts
      mysql-test/suite/rpl/r/rpl_filter_tables_dynamic.result:
        Improved error texts
      mysql-test/suite/rpl/r/rpl_filter_wild_tables_dynamic.result:
        Improved error texts
      mysql-test/suite/rpl/r/rpl_flush_logs.result:
        Update results
      mysql-test/suite/rpl/r/rpl_heartbeat.result:
        Warning was removed
      mysql-test/suite/rpl/r/rpl_heartbeat_basic.result:
        Warning was removed
      mysql-test/suite/rpl/r/rpl_rotate_logs.result:
        Updated results because of new error messages
      mysql-test/suite/rpl/r/rpl_row_max_relay_size.result:
        Updated results
      mysql-test/suite/rpl/r/rpl_row_show_relaylog_events.result:
        Updated results after improved RESET SLAVE (we now use less relay log files)
      mysql-test/suite/rpl/r/rpl_skip_replication.result:
        New error message
      mysql-test/suite/rpl/r/rpl_start_slave_deadlock_sys_vars.result:
        Test removed as the old DBUG_SYNC entries doesn't exist anymore
      mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result:
        Updated results
      mysql-test/suite/rpl/r/rpl_stm_mix_show_relaylog_events.result:
        Updated results after improved RESET SLAVE (we now use less relay log files)
      mysql-test/suite/rpl/t/rpl_flush_logs.test:
        Updated tests as relay log files is created a bit differently than before
      mysql-test/suite/rpl/t/rpl_start_slave_deadlock_sys_vars.test:
        Test removed as the old DBUG_SYNC entries doesn't exist anymore
      mysql-test/suite/sys_vars/r/default_master_connection_basic.result:
        New test to test usage of default_master_connection
      mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result:
        Updated results
      mysql-test/suite/sys_vars/r/sql_slave_skip_counter_basic.result:
        Updated usage of sql_slave_skip_counter
      mysql-test/suite/sys_vars/t/default_master_connection_basic.test:
        New test to test usage of default_master_connection
      mysql-test/suite/sys_vars/t/max_relay_log_size_basic.test:
        Updated results
      mysql-test/suite/sys_vars/t/sql_slave_skip_counter_basic.test:
        Updated test for multi-source
      mysql-test/t/flush.test:
        Added test for new syntax of flush relay logs (can't repeat relay logs or slave)
      mysql-test/t/parser.test:
        Updated test as master_pos_wait() now takes more arguments than before
      mysys/mf_fn_ext.c:
        Added fn_ext2(), which returns pointer to last '.' in file name
      plugin/semisync/semisync_master_plugin.cc:
        Use SHOW_SIMPLE_FUNC to optimize SHOW STATUS
      sql/event_scheduler.cc:
        No reason to initialize slave_thread (it's guaranteed to be zero here)
      sql/item_create.cc:
        Added connection_name argument to master_pos_wait()
        Simplified code
      sql/item_func.cc:
        Added connection_name argument to master_pos_wait()
      sql/item_func.h:
        Added connection_name argument to master_pos_wait()
      sql/lex.h:
        Added SLAVES keyword
      sql/log.cc:
        Added tag "Master 'connection_name'" to slave errors that has a connection name.
        Added parameter to reset_logs() so that one can specify if new logs should be created.
        Removed some wrong casts
        Changed some constants to defines
      sql/log.h:
        Added parameter to reset_logs()
        Updated comment to reflect new code
      sql/log_event.cc:
        Updated DBUG_PRINT
      sql/mysqld.cc:
        Added variable mysqld_server_initialized so that other functions can test if server is fully initialized.
        Free all slave data in one place (fewer ifdef's)
        Removed not needed call to close_active_mi()
        Initialize slaves() later in startup to ensure that everthing is really initialized when slaves start.
        Made status variable slave_running multi-source safe
        max_relay_log_size copies it's values from max_binlog_size at startup
        SHOW_FUNC -> SHOW_SIMPLE_FUNC
      sql/mysqld.h:
        Added mysqld_server_initialized
        Removed max_relay_log_size
      sql/rpl_mi.cc:
        Store connection name and cmp_connection_name (only used for show full slave status) in Master_info
        Added code for Master_info_index, which handles storage of multi-master information
        Don't write the empty "" connection_name to multi-master.info file. This is handled by the original code.
        Create Master_info_index::index_file_names once at init
        More DBUG_PRINT
        Give error if Master_info_index::check_duplicate_master_info fails
        Added start|stop all slaves
      sql/rpl_mi.h:
        Added connection_name and Master_info_index
        Updated prototypes
      sql/rpl_rli.cc:
        Added connection_name to relay log files.
        If we do a full reset, don't create any new relay log files.
        Updated comment to reflect new code
        Made max_relay_log_size depending on master connection.
      sql/rpl_rli.h:
        Fixed type of slave_skip_counter as we now access it directly in sys_vars.cc, so it must be ulong
        Made executed_entries and max_relay_log_size depending on master connection.
      sql/set_var.cc:
        Fixed that one can get variable name also when one uses DEFAULT
      sql/set_var.h:
        Made option global so that one can check and change min & max values (sorry Sergei)
      sql/share/errmsg-utf8.txt:
        Added new error messages needed for multi-source
        Added multi-source name to error ER_MASTER_INFO and WARN_NO_MASTER_INFO
        Improved error message if connection exists
      sql/slave.cc:
        Moved things a bit around to make it easier to handle error conditions.
        Create a global master_info_index and add the "" connection to it
        Ensure that new Master_info doesn't fail.
        Don't call terminate_slave_threads(active_mi..) on end_slave() as this is now done automaticly when deleting master_info_index.
        Delete not needed function close_active_mi(). One can achive same thing by calling end_slave().
        Added support for SHOW FULL SLAVE STATUS (show status for all master connections with connection_name as first column)
        Removed logging of "next log '%s' is currently active | not active"
        Added Slave_received_heartbeats and Slave_heartbeat_period
      sql/slave.h:
        Added new defines and prototypes
      sql/sql_base.cc:
        More DBUG_PRINT
      sql/sql_class.cc:
        Reset thd->connection_name and thd-->default_master_connection
      sql/sql_class.h:
        Added thd->connection_name and thd-->default_master_connection
        Made slave_skip_count and max_relay_log_size depending on master connection. These variables are in THD to make changing them thread safe.
      sql/sql_const.h:
        Added MAX_CONNECTION_NAME
      sql/sql_insert.cc:
        thd->slave_thread -> thd->rli_slave
        Removed usage of active_mi
      sql/sql_lex.cc:
        Reset 'lex->verbose' (to simplify some sql_yacc.yy code)
      sql/sql_lex.h:
        Added connection_name, relay_log_connection_name, SQLCOM_SLAVE_ALL_START and SQLCOM_SLAVE_ALL_STOP
      sql/sql_load.cc:
        thd->slave_thread -> thd->rli_slave
        Removed usage of active_mi
      sql/sql_parse.cc:
        Added support for connection_name to all SLAVE commands.
        - Instead of using active_mi, we now get the current Master_info from master_info_index.
        - Create new replication threads with CHANGE MASTER
        - Added support for show_all_master_info()-
      sql/sql_prepare.cc:
        Added SQLCOM_SLAVE_ALL_START and SQLCOM_SLAVE_ALL_STOP
      sql/sql_reload.cc:
        Made reset/full slave use master_info_index->get_master_info() instead of active_mi.
        If one uses 'RESET SLAVE "connection_name" all' the connection is removed from master_info_index.
        Fixed issues with FLUSH RELAY LOGS
      sql/sql_repl.cc:
        sql_slave_skip_counter is moved to thd->variables to make it thread safe and fix some bugs with it
        Add connection name to relay log files.
        Added connection name to errors.
        Added some logging for multi-master if log_warnings > 1
        stop_slave():
        - Don't check if thd is set. It's guaranteed to always be set.
        change_master():
        - Check for duplicate connection names in change_master()
        - Check for wrong arguments first in file (to simplify error handling)
        - Register new connections in master_info_index
        
        
        
        
        
        
        ******
        Added multi-source support to show relaylog events
        ******
        check_duplicate_master_info() now generates an error
        Added parameter to reset_logs()
        ******
        Updated calls to create_signed_file_name()
      sql/sql_show.cc:
        Check wildcard match as early as possible for SHOW STATUS. This makes SHOW STATUS like 'xxx' a lot faster and use less mutex
      sql/sql_yacc.yy:
        Added optional connection_name to a all relevant master/slave commands
        Added multi-source support to show relaylog events
        Added new commands START ALL SLAVES, STOP ALL SLAVES and SHOW FULL SLAVE STATUS
      sql/strfunc.cc:
        my_global.h shoud always be included first.
      sql/sys_vars.cc:
        Added variable default_master_connection
        Made variable sql_slave_skip_counter multi-source safe
        Made max_relay_log_size depending on master connection.
        Made old code more reusable
      sql/sys_vars.h:
        Added Sys_var_session_lexstring (needed for default_master_connection)
        Added Sys_var_multi_source_uint (needed for sql_slave_skip_counter).
        Changed Sys_var_multi_source_uint to ulong to be able to handle max_relay_log_size
        Made old code more reusable
      storage/example/ha_example.cc:
        Use SHOW_SIMPLE_FUNC to optimize SHOW STATUS
      storage/sphinx/ha_sphinx.cc:
        Use SHOW_SIMPLE_FUNC to optimize SHOW STATUS
      storage/xtradb/handler/ha_innodb.cc:
        Don't store replication position if innobase_overwrite_relay_log_info is not set
      strings/my_vsnprintf.c:
        Fixed bug when using positional parameters with length
      5eccc400
    • Michael Widenius's avatar
      Automatic merge · 3734a364
      Michael Widenius authored
      3734a364
  12. 02 Oct, 2012 3 commits
    • Michael Widenius's avatar
      Changed SHOW_FUNC variabels that don't return SHOW_ARRAY to SHOW_SIMPLE_FUNC. · 572560f3
      Michael Widenius authored
      This allows us to avoid calculating variables (including those involving mutex) that doesn't match the given
      wildcard in SHOW STATUS LIKE '...'
      Removed all references to active_mi that could cause problems for multi-source replication.
      
      Added START|STOP ALL SLAVES
      Added SHOW ALL SLAVES STATUS
      
      
      include/mysql/plugin.h:
        Added SHOW_SIMPLE_FUNC
      include/mysql/plugin_audit.h.pp:
        Updated .pp file
      include/mysql/plugin_auth.h.pp:
        Updated .pp file
      include/mysql/plugin_ftparser.h.pp:
        Updated .pp file
      mysql-test/suite/multi_source/info_logs.result:
        New columns in SHOW ALL SLAVES STATUS
      mysql-test/suite/multi_source/info_logs.test:
        Test new syntax
      mysql-test/suite/multi_source/simple.result:
        New columns in SHOW ALL SLAVES STATUS
      mysql-test/suite/multi_source/simple.test:
        test new syntax
      mysql-test/suite/multi_source/syntax.result:
        Updated result
      mysql-test/suite/multi_source/syntax.test:
        Test new syntax
      mysql-test/suite/rpl/r/rpl_skip_replication.result:
        Updated result
      plugin/semisync/semisync_master_plugin.cc:
        SHOW_FUNC -> SHOW_SIMPLE_FUNC
      sql/item_create.cc:
        Simplify code
      sql/lex.h:
        Added SLAVES keyword
      sql/log.cc:
        Constant -> define
      sql/log_event.cc:
        Added comment
      sql/mysqld.cc:
        SHOW_FUNC -> SHOW_SIMPLE_FUNC
        Made slave_retried_trans, slave_received_heartbeats and heartbeat_period multi-source safe
        Clear variable denied_connections and slave_retried_transactions on startup
      sql/mysqld.h:
        Added slave_retried_transactions
      sql/rpl_mi.cc:
        create_signed_file_name -> create_logfile_name_with_suffix
        Added start_all_slaves() and stop_all_slaves()
      sql/rpl_mi.h:
        Added prototypes
      sql/rpl_rli.cc:
        create_signed_file_name -> create_logfile_name_with_suffix
        added executed_entries
      sql/rpl_rli.h:
        Added executed_entries
      sql/share/errmsg-utf8.txt:
        More and better error messages
      sql/slave.cc:
        Added more fields to SHOW ALL SLAVES STATUS
        Added slave_retried_transactions
        Changed constants -> defines
      sql/sql_class.h:
        Added comment
      sql/sql_insert.cc:
        active_mi.rli -> thd->rli_slave
      sql/sql_lex.h:
        Added SQLCOM_SLAVE_ALL_START & SQLCOM_SLAVE_ALL_STOP
      sql/sql_load.cc:
        active_mi.rli -> thd->rli_slave
      sql/sql_parse.cc:
        Added START|STOP ALL SLAVES
      sql/sql_prepare.cc:
        Added SQLCOM_SLAVE_ALL_START & SQLCOM_SLAVE_ALL_STOP
      sql/sql_reload.cc:
        Made REFRESH RELAY LOG multi-source safe
      sql/sql_repl.cc:
        create_signed_file_name -> create_logfile_name_with_suffix
        Don't send my_ok() from start_slave() or stop_slave() so that we can call it for all master connections
      sql/sql_show.cc:
        Compare wild cards early for all variables
      sql/sql_yacc.yy:
        Added START|STOP ALL SLAVES
        Added SHOW ALL SLAVES STATUS
      sql/sys_vars.cc:
        Made replicate_events_marked_for_skip,slave_net_timeout and rpl_filter multi-source safe.
      sql/sys_vars.h:
        Simplify Sys_var_rpl_filter
      572560f3
    • Sergei Golubchik's avatar
    • Michael Widenius's avatar
      Fixed installation issues on debian: · b722aebd
      Michael Widenius authored
      - Don't abort if plugin table exists
      - Use longer timeout for start/stop of mysqld
      
      debian/dist/Debian/mariadb-server-5.5.postinst:
        Don't abort if plugin table exists
      debian/mariadb-server-5.5.mysql.init:
        Use longer timeout for start/stop of mysqld
      b722aebd
  13. 01 Oct, 2012 2 commits
    • Sergei Golubchik's avatar
      more fixes for test cases · 416d0aeb
      Sergei Golubchik authored
      mysql-test/suite/innodb/include/restart_and_reinit.inc:
        drop and recreate mysql.innodb* tables when deleting innodb table spaces
      mysql-test/t/ssl_8k_key-master.opt:
        with loose- prefix ssl errors are ignored
      sql-common/client.c:
        compiler warnings
      sql/field.cc:
        use the new function
      sql/item.cc:
        don't convert time to double or decimal via longlong,
        this loses sub-second part.
        Use dedicated functions.
      sql/item.h:
        incorrect cast_to_int type for params
      sql/item_strfunc.cc:
        use the new function
      sql/lex.h:
        unused
      sql/my_decimal.h:
        helper macro
      sql/sql_plugin.cc:
        workaround for a compiler warning
      sql/sql_yacc.yy:
        unused
      sql/transaction.cc:
        fix the merge for SERVER_STATUS_IN_TRANS_READONLY protocol flag
      storage/sphinx/CMakeLists.txt:
        compiler warnings
      416d0aeb
    • Sergei Golubchik's avatar
      win fixes in semisync plugin · adf6e145
      Sergei Golubchik authored
      adf6e145
  14. 30 Sep, 2012 1 commit
    • Michael Widenius's avatar
      Made max_relay_log_size depending on master connection. · 8ac1b41c
      Michael Widenius authored
      Changed names of multi-source log files so that original suffixes are kept.
      
      
      include/my_sys.h:
        Added fn_ext2(), which returns pointer to last '.' in file name
      mysql-test/extra/rpl_tests/rpl_max_relay_size.test:
        Updated test
      mysql-test/suite/multi_source/info_logs-master.opt:
        Test with strange file names
      mysql-test/suite/multi_source/info_logs.result:
        Updated results
      mysql-test/suite/multi_source/info_logs.test:
        Changed to test with complex names to be able to verify the filename generator code
      mysql-test/suite/multi_source/relaylog_events.result:
        Updated results
      mysql-test/suite/multi_source/reset_slave.result:
        Updated results
      mysql-test/suite/multi_source/skip_counter.result:
        Updated results
      mysql-test/suite/multi_source/skip_counter.test:
        Added testing of max_relay_log_size
      mysql-test/suite/rpl/r/rpl_row_max_relay_size.result:
        Updated results
      mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result:
        Updated results
      mysql-test/suite/sys_vars/r/max_relay_log_size_basic.result:
        Updated results
      mysql-test/suite/sys_vars/t/max_relay_log_size_basic.test:
        Updated results
      mysys/mf_fn_ext.c:
        Added fn_ext2(), which returns pointer to last '.' in file name
      sql/log.cc:
        Removed some wrong casts
      sql/log.h:
        Updated comment to reflect new code
      sql/log_event.cc:
        Updated DBUG_PRINT
      sql/mysqld.cc:
        Added that max_relay_log_size copies it's values from max_binlog_size
      sql/mysqld.h:
        Removed max_relay_log_size
      sql/rpl_mi.cc:
        Changed names of multi-source log files so that original suffixes are kept.
      sql/rpl_mi.h:
        Updated prototype
      sql/rpl_rli.cc:
        Updated comment to reflect new code
        Made max_relay_log_size depending on master connection.
      sql/rpl_rli.h:
        Made max_relay_log_size depending on master connection.
      sql/set_var.h:
        Made option global so that one can check and change min & max values (sorry Sergei)
      sql/sql_class.h:
        Made max_relay_log_size depending on master connection.
      sql/sql_repl.cc:
        Updated calls to create_signed_file_name()
      sql/sys_vars.cc:
        Made max_relay_log_size depending on master connection.
        Made old code more reusable
      sql/sys_vars.h:
        Changed Sys_var_multi_source_uint to ulong to be able to handle max_relay_log_size
        Made old code more reusable
      8ac1b41c
  15. 28 Sep, 2012 3 commits
    • Michael Widenius's avatar
      Fixed issues found by QA (Elena) · 5a4b5869
      Michael Widenius authored
      - Added parameter to reset_logs() so that one can specify if new logs should be created.
      
      mysql-test/include/setup_fake_relay_log.inc:
        There is no orphan relay log files anymore
      mysql-test/mysql-test-run.pl:
        Added multi_source to test suite
      mysql-test/suite/multi_source/info_logs.result:
        New test
      mysql-test/suite/multi_source/info_logs.test:
        New test
      mysql-test/suite/multi_source/my.cnf:
        Added log-warnings to get more information to the log files
      mysql-test/suite/multi_source/relaylog_events.result:
        Added cleanup
      mysql-test/suite/multi_source/relaylog_events.test:
        Added cleanup
      mysql-test/suite/multi_source/reset_slave.result:
        Updated results after improved RESET SLAVE
      mysql-test/suite/multi_source/simple.result:
        Updated results after improved RESET SLAVE
      mysql-test/suite/multi_source/simple.test:
        Syncronize positions before show full slave status
      mysql-test/suite/rpl/r/rpl_row_show_relaylog_events.result:
        Updated results after improved RESET SLAVE (we now use less relay log files)
      mysql-test/suite/rpl/r/rpl_stm_mix_show_relaylog_events.result:
        Updated results after improved RESET SLAVE (we now use less relay log files)
      sql/log.cc:
        Added parameter to reset_logs() so that one can specify if new logs should be created.
      sql/log.h:
        Added parameter to reset_logs()
      sql/rpl_mi.cc:
        Create Master_info_index::index_file_names once at init
        More DBUG_PRINT
        Give error if Master_info_index::check_duplicate_master_info fails
      sql/rpl_rli.cc:
        If we do a full reset, don't create any new relay log files.
      sql/share/errmsg-utf8.txt:
        Improved error message if connection exists
      sql/sql_parse.cc:
        Fixed memory leak
      sql/sql_repl.cc:
        check_duplicate_master_info() now generates an error
        Added parameter to reset_logs()
      5a4b5869
    • Elena Stepanova's avatar
      9b03041b
    • Michael Widenius's avatar
      222883b0
  16. 27 Sep, 2012 3 commits
    • Michael Widenius's avatar
      Implementation of Multi-source replication (MDEV:253) · 1864d959
      Michael Widenius authored
      Documentation of the feature can be found at: http://kb.askmonty.org/en/multi-source-replication/
      This code is based on code from Taobao, developed by Plinux
      
      BUILD/SETUP.sh:
        Added -Wno-invalid-offsetof to get rid of warning of offsetof() on C++ class (safe in the contex we use it)
      client/mysqltest.cc:
        Added support for error names starting with 'W'
        Added connection_name support to --sync_with_master
      cmake/maintainer.cmake:
        Added -Wno-invalid-offsetof to get rid of warning of offsetof() on C++ class (safe in the contex we use it)
      mysql-test/r/mysqltest.result:
        Updated results
      mysql-test/r/parser.result:
        Updated results
      mysql-test/suite/multi_source/my.cnf:
        Setup of multi-master tests
      mysql-test/suite/multi_source/simple.result:
        Simple basic test of multi-source functionality
      mysql-test/suite/multi_source/simple.test:
        Simple basic test of multi-source functionality
      mysql-test/suite/multi_source/syntax.result:
        Test of multi-source syntax
      mysql-test/suite/multi_source/syntax.test:
        Test of multi-source syntax
      mysql-test/suite/rpl/r/rpl_rotate_logs.result:
        Updated results because of new error messages
      mysql-test/t/parser.test:
        Updated test as master_pos_wait() now takes more arguments than before
      sql/event_scheduler.cc:
        No reason to initialize slave_thread (it's guaranteed to be zero here)
      sql/item_create.cc:
        Added connection_name argument to master_pos_wait()
        Simplified code
      sql/item_func.cc:
        Added connection_name argument to master_pos_wait()
      sql/item_func.h:
        Added connection_name argument to master_pos_wait()
      sql/log.cc:
        Added tag "Master 'connection_name'" to slave errors that has a connection name.
      sql/mysqld.cc:
        Added variable mysqld_server_initialized so that other functions can test if server is fully initialized.
        Free all slave data in one place (fewer ifdef's)
        Removed not needed call to close_active_mi()
        Initialize slaves() later in startup to ensure that everthing is really initialized when slaves start.
        Made status variable slave_running multi-source safe
      sql/mysqld.h:
        Added mysqld_server_initialized
      sql/rpl_mi.cc:
        Store connection name and cmp_connection_name (only used for show full slave status) in Master_info
        Added code for Master_info_index, which handles storage of multi-master information
        Don't write the empty "" connection_name to multi-master.info file. This is handled by the original code.
      sql/rpl_mi.h:
        Added connection_name and Master_info_index
      sql/rpl_rli.cc:
        Added connection_name to relay log files.
      sql/rpl_rli.h:
        Fixed type of slave_skip_counter as we now access it directly in sys_vars.cc, so it must be uint
      sql/share/errmsg-utf8.txt:
        Added new error messages needed for multi-source
        Added multi-source name to error ER_MASTER_INFO and WARN_NO_MASTER_INFO
      sql/slave.cc:
        Moved things a bit around to make it easier to handle error conditions.
        Create a global master_info_index and add the "" connection to it
        Ensure that new Master_info doesn't fail.
        Don't call terminate_slave_threads(active_mi..) on end_slave() as this is now done automaticly when deleting master_info_index.
        Delete not needed function close_active_mi(). One can achive same thing by calling end_slave().
        Added support for SHOW FULL SLAVE STATUS (show status for all master connections with connection_name as first column)
      sql/slave.h:
        Added new prototypes
      sql/sql_base.cc:
        More DBUG_PRINT
      sql/sql_class.cc:
        Reset thd->connection_name and thd-->default_master_connection
      sql/sql_class.h:
        Added thd->connection_name and thd-->default_master_connection
        Added slave_skip_count to variables to make changing the @@sql_slave_skip_count variable thread safe
      sql/sql_const.h:
        Added MAX_CONNECTION_NAME
      sql/sql_lex.cc:
        Reset 'lex->verbose' (to simplify some sql_yacc.yy code)
      sql/sql_lex.h:
        Added connection_name
      sql/sql_parse.cc:
        Added support for connection_name to all SLAVE commands.
        - Instead of using active_mi, we now get the current Master_info from master_info_index.
        - Create new replication threads with CHANGE MASTER
        - Added support for show_all_master_info()
      sql/sql_reload.cc:
        Made reset/full slave use master_info_index->get_master_info() instead of active_mi.
        If one uses 'RESET SLAVE "connection_name" all' the connection is removed from master_info_index.
      sql/sql_repl.cc:
        sql_slave_skip_counter is moved to thd->variables to make it thread safe and fix some bugs with it
        Add connection name to relay log files.
        Added connection name to errors.
        Added some logging for multi-master if log_warnings > 1
        stop_slave():
        - Don't check if thd is set. It's guaranteed to always be set.
        change_master():
        - Check for duplicate connection names in change_master()
        - Check for wrong arguments first in file (to simplify error handling)
        - Register new connections in master_info_index
      sql/sql_yacc.yy:
        Added optional connection_name to a all relevant master/slave commands
      sql/strfunc.cc:
        my_global.h shoud always be included first.
      sql/sys_vars.cc:
        Added variable default_master_connection
        Made variable sql_slave_skip_counter multi-source safe
      sql/sys_vars.h:
        Added Sys_var_session_lexstring (needed for default_master_connection)
        Added Sys_var_multi_source_uint (needed for sql_slave_skip_counter).
      1864d959
    • Sergei Golubchik's avatar
      fix the embedded build · 36c738e4
      Sergei Golubchik authored
      36c738e4
    • Sergei Golubchik's avatar
      fixes for test failures · 474fe6d9
      Sergei Golubchik authored
      and small collateral changes
      
      mysql-test/lib/My/Test.pm:
        somehow with "print" we get truncated writes sometimes
      mysql-test/suite/perfschema/r/digest_table_full.result:
        md5 hashes of statement digests differ, because yacc token codes are different in mariadb
      mysql-test/suite/perfschema/r/dml_handler.result:
        host table is not ported over yet
      mysql-test/suite/perfschema/r/information_schema.result:
        host table is not ported over yet
      mysql-test/suite/perfschema/r/nesting.result:
        this differs, because we don't rewrite general log queries, and multi-statement
        packets are logged as a one entry. this result file is identical to what mysql-5.6.5
        produces with the --log-raw option.
      mysql-test/suite/perfschema/r/relaylog.result:
        MariaDB modifies the binlog index file directly, while MySQL 5.6 has a feature "crash-safe binlog index" and modifies a special "crash-safe" shadow copy of the index file and then moves it over. That's why this test shows "NONE" index file writes in MySQL and "MANY" in MariaDB.
      mysql-test/suite/perfschema/r/server_init.result:
        MariaDB initializes the "manager" resources from the "manager" thread, and starts this thread only when --flush-time is not 0. MySQL 5.6 initializes "manager" resources unconditionally on server startup.
      mysql-test/suite/perfschema/r/stage_mdl_global.result:
        this differs, because MariaDB disables query cache when query_cache_size=0. MySQL does not
        do that, and this causes useless mutex locks and waits.
      mysql-test/suite/perfschema/r/statement_digest.result:
        md5 hashes of statement digests differ, because yacc token codes are different in mariadb
      mysql-test/suite/perfschema/r/statement_digest_consumers.result:
        md5 hashes of statement digests differ, because yacc token codes are different in mariadb
      mysql-test/suite/perfschema/r/statement_digest_long_query.result:
        md5 hashes of statement digests differ, because yacc token codes are different in mariadb
      mysql-test/suite/rpl/r/rpl_mixed_drop_create_temp_table.result:
        will be updated to match 5.6 when alfranio.correia@oracle.com-20110512172919-c1b5kmum4h52g0ni and anders.song@greatopensource.com-20110105052107-zoab0bsf5a6xxk2y are merged
      mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result:
        will be updated to match 5.6 when anders.song@greatopensource.com-20110105052107-zoab0bsf5a6xxk2y is merged
      474fe6d9
  17. 25 Sep, 2012 1 commit