mirror of
https://github.com/MariaDB/server.git
synced 2025-01-26 00:34:18 +01:00
ed3e19aca8
There was memory leak when running some tests on PB2. The reason of the failure is an early return from change_master() that was supposed to deallocate a dyn-array. Actually the same bug58915 was fixed in trunk with relocating the dyn-array destruction into THD::cleanup_after_query() which can't be bypassed. The current patch backports magne.mahre@oracle.com-20110203101306-q8auashb3d7icxho and adds two optimizations: were done: the static buffer for the dyn-array to base on, and the array initialization is called precisely when it's necessary rather than per each CHANGE-MASTER as before. mysql-test/suite/rpl/t/rpl_empty_master_host.test: the test is binlog-format insensitive so it will be run with MIXED mode only. mysql-test/suite/rpl/t/rpl_server_id_ignore.test: the test is binlog-format insensitive so it will be run with MIXED mode only. sql/sql_class.cc: relocating the dyn-array destruction into THD::cleanup_after_query(). sql/sql_lex.cc: LEX.mi zero initialization is done in LEX(). sql/sql_lex.h: Optimization for repl_ignore_server_ids to base on a static buffer which size is chosen to fit to most common use cases. sql/sql_repl.cc: dyn-array destruction is relocated to THD::cleanup_after_query(). sql/sql_yacc.yy: Refining logics of Lex->mi.repl_ignore_server_ids initialization. The array is initialized once a corresponding option in CHANGE MASTER token sequence is found.
53 lines
1.8 KiB
Text
53 lines
1.8 KiB
Text
#
|
|
# BUG
|
|
# ---
|
|
# BUG#28796: CHANGE MASTER TO MASTER_HOST="" leads to invalid master.info
|
|
#
|
|
# Description
|
|
# -----------
|
|
#
|
|
# This test aims at:
|
|
# i) verifying that an error is thrown when setting MASTER_HOST=''
|
|
# ii) no error is thrown when setting non empty MASTER_HOST
|
|
# iii) replication works after setting a correct host name/ip
|
|
#
|
|
# Implementation is performed by feeding different values (according
|
|
# to i), ii) and iii) ) to CHANGE MASTER TO MASTER_HOST= x and checking
|
|
# along the way if error/no error is thrown and/or if replication starts
|
|
# working when expected.
|
|
|
|
--source include/master-slave.inc
|
|
--source include/have_binlog_format_mixed.inc
|
|
|
|
connection slave;
|
|
STOP SLAVE;
|
|
--source include/wait_for_slave_to_stop.inc
|
|
|
|
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
|
|
--echo Master_Host = '$master_host' (expected '127.0.0.1')
|
|
|
|
# attempt to change to an empty master host should
|
|
# result in error ER_WRONG_ARGUMENTS: "Incorrect arguments to ..."
|
|
error ER_WRONG_ARGUMENTS;
|
|
CHANGE MASTER TO MASTER_HOST="";
|
|
|
|
# show slave status still holds previous information
|
|
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
|
|
--echo Master_Host = '$master_host' (expected '127.0.0.1')
|
|
|
|
# changing master to other than empty master host succeeds
|
|
CHANGE MASTER TO MASTER_HOST="foo";
|
|
|
|
# show slave status should hold "foo" as master host
|
|
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
|
|
--echo Master_Host = '$master_host' (expected 'foo')
|
|
|
|
# changing back to localhost
|
|
CHANGE MASTER TO MASTER_HOST="127.0.0.1";
|
|
let $master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1);
|
|
--echo Master_Host = '$master_host' (expected '127.0.0.1')
|
|
|
|
# start slave must succeed.
|
|
START SLAVE;
|
|
--source include/wait_for_slave_to_start.inc
|
|
--source include/rpl_end.inc
|