List:Commits« Previous MessageNext Message »
From:He Zhenxing Date:February 13 2009 3:22am
Subject:bzr commit into mysql-6.0 branch (zhenxing.he:2840) Bug#28796
View as plain text  
#At file:///media/sdb2/hezx/work/mysql/bzrwork/merge/6.0/

 2840 He Zhenxing	2009-02-13 [merge]
      Auto merge 6.0-rpl -> 6.0
added:
  mysql-test/suite/rpl/r/rpl_empty_master_host.result
  mysql-test/suite/rpl/t/rpl_empty_master_host.test
modified:
  sql/sql_repl.cc

=== added file 'mysql-test/suite/rpl/r/rpl_empty_master_host.result'
--- a/mysql-test/suite/rpl/r/rpl_empty_master_host.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/r/rpl_empty_master_host.result	2009-02-04 09:10:34 +0000
@@ -0,0 +1,16 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+STOP SLAVE;
+Master_Host = '127.0.0.1' (expected '127.0.0.1')
+CHANGE MASTER TO MASTER_HOST="";
+ERROR HY000: Incorrect arguments to MASTER_HOST
+Master_Host = '127.0.0.1' (expected '127.0.0.1')
+CHANGE MASTER TO MASTER_HOST="foo";
+Master_Host = 'foo' (expected 'foo')
+CHANGE MASTER TO MASTER_HOST="127.0.0.1";
+Master_Host = '127.0.0.1' (expected '127.0.0.1')
+START SLAVE;

=== added file 'mysql-test/suite/rpl/t/rpl_empty_master_host.test'
--- a/mysql-test/suite/rpl/t/rpl_empty_master_host.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/rpl_empty_master_host.test	2009-02-04 09:10:34 +0000
@@ -0,0 +1,51 @@
+# 
+# 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
+
+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

=== modified file 'sql/sql_repl.cc'
--- a/sql/sql_repl.cc	2009-02-05 12:49:39 +0000
+++ b/sql/sql_repl.cc	2009-02-12 10:05:25 +0000
@@ -1415,6 +1415,20 @@ bool change_master(THD* thd, Master_info
   }
 
   thd_proc_info(thd, "Changing master");
+  /* 
+     We need to check if there is an empty master_host. Otherwise
+     change master succeeds, a master.info file is created containing 
+     empty master_host string and when issuing: start slave; an error
+     is thrown stating that the server is not configured as slave.
+     (See BUG#28796).
+  */
+  if(lex_mi->host && !*lex_mi->host) 
+  {
+    my_error(ER_WRONG_ARGUMENTS, MYF(0), "MASTER_HOST");
+    unlock_slave_threads(mi);
+    DBUG_RETURN(TRUE);
+  }
+
   // TODO: see if needs re-write
   if (init_master_info(mi, master_info_file, relay_log_info_file, 0,
 		       thread_mask))

Thread
bzr commit into mysql-6.0 branch (zhenxing.he:2840) Bug#28796He Zhenxing13 Feb