include/master-slave.inc
Warnings:
Note	####	Sending passwords in plain text without SSL/TLS is extremely insecure.
Note	####	Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
[connection master]
include/rpl_set_gtid_mode.inc
CREATE TABLE t1(c1 INTEGER) ENGINE= Innodb;
include/sync_slave_sql_with_master.inc
[connection slave]
include/stop_slave.inc
[connection master]
INSERT INTO t1 VALUES(2);
INSERT INTO t1 VALUES(3);
INSERT INTO t1 VALUES(4);
INSERT INTO t1 VALUES(5);
INSERT INTO t1 VALUES(6);
INSERT INTO t1 VALUES(7);
INSERT INTO t1 VALUES(8);
INSERT INTO t1 VALUES(9);
INSERT INTO t1 VALUES(10);
[connection slave]
START SLAVE UNTIL SQL_BEFORE_GTIDS= "MASTER_UUID:4-5", MASTER_LOG_FILE= 'foo.bin', MASTER_LOG_POS= 100;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
START SLAVE SQL_THREAD UNTIL SQL_BEFORE_GTIDS= "MASTER_UUID:4-5", MASTER_LOG_FILE= 'foo.bin', MASTER_LOG_POS= 100;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
START SLAVE IO_THREAD UNTIL SQL_BEFORE_GTIDS= "MASTER_UUID:4-5", MASTER_LOG_FILE= 'foo.bin', MASTER_LOG_POS= 100;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
START SLAVE FOO UNTIL SQL_BEFORE_GTIDS= "MASTER_UUID:4-5";
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOO UNTIL SQL_BEFORE_GTIDS= "MASTER_UUID:4-5"' at line 1
Check that START SLAVE IO_THREAD UNTIL ... maintains old behaviour, condition is ignored.
START SLAVE IO_THREAD UNTIL SQL_BEFORE_GTIDS= "MASTER_UUID:4-5";
Warnings:
Note	1279	SQL thread is not to be started so UNTIL options are ignored
Wait until IO Thread reads all master binlog and stop slave.
include/wait_for_slave_param.inc [Retrieved_Gtid_Set]
include/stop_slave_io.inc
SQL thread must stop *before* INSERT 4
START SLAVE SQL_THREAD UNTIL SQL_BEFORE_GTIDS= "MASTER_UUID:4-5";
include/wait_for_slave_sql_to_stop.inc
include/assert.inc [Rows until 3 in t1 must be replicated now]
SQL thread must stop *after* INSERT 5
START SLAVE SQL_THREAD UNTIL SQL_AFTER_GTIDS= "MASTER_UUID:4-5";
include/wait_for_slave_sql_to_stop.inc
include/assert.inc [Rows until 5 in t1 must be replicated now]
SQL thread must stop *before* INSERT 6
START SLAVE SQL_THREAD, IO_THREAD UNTIL SQL_BEFORE_GTIDS= "MASTER_UUID:2-7";
include/wait_for_slave_sql_to_stop.inc
include/assert.inc [Rows until 5 in t1 must be replicated now]
SQL thread must stop *after* INSERT 5
1-5 are already applied so it will stop immediately
START SLAVE SQL_THREAD, IO_THREAD UNTIL SQL_AFTER_GTIDS= "MASTER_UUID:1-5";
include/wait_for_slave_sql_to_stop.inc
include/assert.inc [Rows until 5 in t1 must be replicated now]
SQL thread must stop *before* INSERT 10
START SLAVE UNTIL SQL_BEFORE_GTIDS= "MASTER_UUID:10";
include/wait_for_slave_sql_to_stop.inc
include/assert.inc [Rows until 9 in t1 must be replicated now]
SQL thread must stop *before* INSERT 3-6
3-6 is already applied so it will stop immediately
START SLAVE UNTIL SQL_BEFORE_GTIDS= "MASTER_UUID:3-6";
include/wait_for_slave_sql_to_stop.inc
include/assert.inc [Rows until 9 in t1 must be replicated now]
SQL thread must stop *before* INSERT 9
9 is already applied so it will stop immediately
START SLAVE UNTIL SQL_BEFORE_GTIDS= "MASTER_UUID:9";
include/wait_for_slave_sql_to_stop.inc
include/assert.inc [Rows until 9 in t1 must be replicated now]
Sync slave with master
include/start_slave.inc
SELECT WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS('MASTER_UUID:10');
include/assert.inc [Rows until 10 in t1 must be replicated now]
Test WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS function with negative timeout
value. When SQL_MODE is strict, then it will throw
WRONG_ARGUMENTS error.
SET @save_sql_mode=@@SESSION.SQL_MODE;
SET @@SESSION.SQL_MODE="STRICT_ALL_TABLES";
SELECT WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS('MASTER_UUID:100', -1);;
ERROR HY000: Incorrect arguments to WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS.
When SQL_MODE is non-strict mode, then it will return NULL immediately
without doing any work and generates WRONG_ARGUMENTS warning.
SET @@SESSION.SQL_MODE="";
SELECT WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS('MASTER_UUID:100', -1);;
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS('MASTER_UUID:100', -1)
NULL
Warnings:
Warning	1210	Incorrect arguments to WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS.
SET @@SESSION.SQL_MODE=@save_sql_mode;
Test WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS function with fractional timeout
value. Earlier(before fix), 0.4 is read as integer value '0' and
the function hanged forever (or till all the specified gtids are
executed). Now(after fix) 0.4 will be read as double 0.4 and will waitfor
atleast 0.4 seconds (or till all the specified  gtids are executed).
Also check that function returns -1 if the timeout has been exceeded.
include/assert.inc [WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS returns -1 if the timeout has been exceeded.]
DROP TABLE t1;
include/rpl_end.inc
