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