mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
This patch fixes two issues: First, it fixes test failure due to GTID List events having inconsistent ordering of domain ids. In particular, this patch ensures that a GTID list log event will have its GTIDs ordered by domain id (ascending) followed by sequence number (ascending). Second, it fixes an assert which could use an unintialized variable. Reviewed By: ============ Andrei Elkin <andrei.elkin@mariadb.com>
926 lines
31 KiB
Plaintext
926 lines
31 KiB
Plaintext
###############################
|
|
# Test Setup
|
|
###############################
|
|
RESET MASTER;
|
|
####################################################
|
|
# Test Case Group 1
|
|
#
|
|
# Tests with --gtid-strict-mode should error and
|
|
# immediately quit with error on out of order GTIDs
|
|
####################################################
|
|
#
|
|
# Test Case 1:
|
|
# Sequential sequence numbers results in no errors or warnings
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
INSERT INTO t1 values (3);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /ERROR/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 2:
|
|
# A skipped sequence number results in no errors or warnings if all
|
|
# numbers are monotonic (i.e. gaps in sequence number are allowed
|
|
# provided they never decrease)
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 5;
|
|
INSERT INTO t1 values (3);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /ERROR/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 3:
|
|
# A sequence number lower than the last processed value results in a
|
|
# warning or error
|
|
CREATE TABLE t1 (a int);
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 1;
|
|
INSERT INTO t1 values (1);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 4:
|
|
# Skipping a GTID and later receiving it results in a warning or error
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (3);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (4);
|
|
INSERT INTO t1 values (5);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 5:
|
|
# Repeat sequence numbers produce a warning
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 6:
|
|
# Warnings from different domains are all displayed
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (3);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (4);
|
|
SET @@session.gtid_domain_id= 1;
|
|
SET @@session.server_id= 2;
|
|
CREATE TABLE t2 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t2 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t2 values (3);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t2 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 7:
|
|
# A decreasing seq_no before a start-position is ignored
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (4);
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (5);
|
|
FLUSH LOGS;
|
|
# GTID-based start-position
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-4 --gtid-strict-mode > log_error_ > OUT_FILE
|
|
NOT FOUND /ERROR/ in out.err
|
|
# Position-based start-position
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=start_binlog_pos --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /ERROR/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 8:
|
|
# A decreasing seq_no inside of a --start/--stop position window is
|
|
# displayed
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 5;
|
|
INSERT INTO t1 values (4);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (3);
|
|
SET @@session.gtid_seq_no= 6;
|
|
INSERT INTO t1 values (5);
|
|
FLUSH LOGS;
|
|
# GTID-based window
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-1 --stop-position=0-1-6 --gtid-strict-mode > log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: Found out of order GTID/ in out.err
|
|
# Position-based window
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=start_binlog_pos --stop-position=stop_binlog_pos --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 9:
|
|
# Error if --stop-position is not greater than or equal to
|
|
# --start-position
|
|
#
|
|
# Note: Error is only displayed in strict mode, -vvv has no effect here
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-2 --stop-position=0-1-1 --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: Queried GTID range is invalid in strict mode/ in out.err
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-2,1-2-1 --stop-position=0-1-1,1-2-2 --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: Queried GTID range is invalid in strict mode/ in out.err
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 10:
|
|
# Strict mode warnings should be independent of --offset option
|
|
# specification
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-1 --offset=8 --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 11:
|
|
# Strict mode warnings should be independent of --start-timestamp
|
|
# option specification
|
|
set @a=UNIX_TIMESTAMP("1970-01-21 15:32:22");
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 1;
|
|
SET timestamp=@a;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
SET timestamp=@a+1;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_seq_no= 2;
|
|
SET timestamp=@a+2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 4;
|
|
SET timestamp=@a+3;
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-1 --start-datetime="1970-01-21 15:32:24" --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 12:
|
|
# Specifying multiple binary logs with a log-position start should
|
|
# skip GTID state verification
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_domain_id= 1;
|
|
SET @@session.server_id= 2;
|
|
CREATE TABLE t2 (a int);
|
|
INSERT INTO t2 values (1);
|
|
FLUSH LOGS;
|
|
INSERT INTO t2 values (2);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/BINLOG_FILE1 MYSQLD_DATADIR/BINLOG_FILE2 --start-position=b2_start_pos --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
#
|
|
# Test Case 13:
|
|
# If multiple binary logs should be specified but a middle log is
|
|
# missing, we should detect that and warn when using -vvv
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
FLUSH LOGS;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_domain_id= 1;
|
|
SET @@session.server_id= 2;
|
|
CREATE TABLE t2 (a int);
|
|
FLUSH LOGS;
|
|
SET @@session.gtid_domain_id= 2;
|
|
SET @@session.server_id= 3;
|
|
CREATE TABLE t3 (a int);
|
|
FLUSH LOGS;
|
|
#
|
|
# GLLE from each log for state reference
|
|
show binlog events in 'master-bin.000001' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid_list 1 # []
|
|
show binlog events in 'master-bin.000002' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000002 # Gtid_list 1 # [0-1-1]
|
|
show binlog events in 'master-bin.000003' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000003 # Gtid_list 1 # [0-1-2,1-2-1]
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/BINLOG_FILE1 MYSQLD_DATADIR/BINLOG_FILE3 --gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
# We should have two warnings about missing data from domains 0 and 1 if
|
|
# -vvv is specified
|
|
NOT FOUND /WARNING: Binary logs are missing data for domain 0[^\n]+the last seen event was/ in out.err
|
|
NOT FOUND /WARNING: Binary logs are missing data for domain 1[^\n]+neither the starting GTID position list nor any processed events/ in out.err
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 14:
|
|
# If a --stop-position GTID occurs before the first specified binlog's
|
|
# GLLE, error
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
FLUSH LOGS;
|
|
INSERT INTO t1 values (3);
|
|
FLUSH LOGS;
|
|
#
|
|
# GLLE from each log for state reference
|
|
show binlog events in 'master-bin.000001' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid_list 1 # []
|
|
show binlog events in 'master-bin.000002' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000002 # Gtid_list 1 # [0-1-3]
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/BINLOG_FILE2 --gtid-strict-mode --stop-position=0-1-2 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: --stop-position GTID/ in out.err
|
|
DROP TABLE t1;
|
|
####################################################
|
|
# Test Case Group 2
|
|
#
|
|
# Test cases with --skip-gtid-strict-mode -vvv
|
|
# should not quit early or with error when
|
|
# encountering out of order GTIDs; however should
|
|
# produce warnings after binlog processing
|
|
####################################################
|
|
#
|
|
# Test Case 1:
|
|
# Sequential sequence numbers results in no errors or warnings
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
INSERT INTO t1 values (3);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
NOT FOUND /WARNING/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 2:
|
|
# A skipped sequence number results in no errors or warnings if all
|
|
# numbers are monotonic (i.e. gaps in sequence number are allowed
|
|
# provided they never decrease)
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 5;
|
|
INSERT INTO t1 values (3);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
NOT FOUND /WARNING/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 3:
|
|
# A sequence number lower than the last processed value results in a
|
|
# warning or error
|
|
CREATE TABLE t1 (a int);
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 1;
|
|
INSERT INTO t1 values (1);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
FOUND 1 /WARNING: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 4:
|
|
# Skipping a GTID and later receiving it results in a warning or error
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (3);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (4);
|
|
INSERT INTO t1 values (5);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
FOUND 1 /WARNING: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 5:
|
|
# Repeat sequence numbers produce a warning
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
FOUND 1 /WARNING: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 6:
|
|
# Warnings from different domains are all displayed
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (3);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (4);
|
|
SET @@session.gtid_domain_id= 1;
|
|
SET @@session.server_id= 2;
|
|
CREATE TABLE t2 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t2 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t2 values (3);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t2 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
FOUND 2 /WARNING: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 7:
|
|
# A decreasing seq_no before a start-position is ignored
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (4);
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (5);
|
|
FLUSH LOGS;
|
|
# GTID-based start-position
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-4 --skip-gtid-strict-mode -vvv > log_error_ > OUT_FILE
|
|
NOT FOUND /WARNING/ in out.err
|
|
# Position-based start-position
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=start_binlog_pos --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
NOT FOUND /WARNING/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 8:
|
|
# A decreasing seq_no inside of a --start/--stop position window is
|
|
# displayed
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 5;
|
|
INSERT INTO t1 values (4);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (3);
|
|
SET @@session.gtid_seq_no= 6;
|
|
INSERT INTO t1 values (5);
|
|
FLUSH LOGS;
|
|
# GTID-based window
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-1 --stop-position=0-1-6 --skip-gtid-strict-mode -vvv > log_error_ > OUT_FILE
|
|
FOUND 1 /WARNING: Found out of order GTID/ in out.err
|
|
# Position-based window
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=start_binlog_pos --stop-position=stop_binlog_pos --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
FOUND 1 /WARNING: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 9:
|
|
# Error if --stop-position is not greater than or equal to
|
|
# --start-position
|
|
#
|
|
# Note: Error is only displayed in strict mode, -vvv has no effect here
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-2 --stop-position=0-1-1 --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
NOT FOUND /ERROR: Queried GTID range is invalid in strict mode/ in out.err
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-2,1-2-1 --stop-position=0-1-1,1-2-2 --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
NOT FOUND /ERROR: Queried GTID range is invalid in strict mode/ in out.err
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 10:
|
|
# Strict mode warnings should be independent of --offset option
|
|
# specification
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-1 --offset=8 --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
FOUND 1 /WARNING: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 11:
|
|
# Strict mode warnings should be independent of --start-timestamp
|
|
# option specification
|
|
set @a=UNIX_TIMESTAMP("1970-01-21 15:32:22");
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 1;
|
|
SET timestamp=@a;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
SET timestamp=@a+1;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_seq_no= 2;
|
|
SET timestamp=@a+2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 4;
|
|
SET timestamp=@a+3;
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-1 --start-datetime="1970-01-21 15:32:24" --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
FOUND 1 /WARNING: Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 12:
|
|
# Specifying multiple binary logs with a log-position start should
|
|
# skip GTID state verification
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_domain_id= 1;
|
|
SET @@session.server_id= 2;
|
|
CREATE TABLE t2 (a int);
|
|
INSERT INTO t2 values (1);
|
|
FLUSH LOGS;
|
|
INSERT INTO t2 values (2);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/BINLOG_FILE1 MYSQLD_DATADIR/BINLOG_FILE2 --start-position=b2_start_pos --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
#
|
|
# Test Case 13:
|
|
# If multiple binary logs should be specified but a middle log is
|
|
# missing, we should detect that and warn when using -vvv
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
FLUSH LOGS;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_domain_id= 1;
|
|
SET @@session.server_id= 2;
|
|
CREATE TABLE t2 (a int);
|
|
FLUSH LOGS;
|
|
SET @@session.gtid_domain_id= 2;
|
|
SET @@session.server_id= 3;
|
|
CREATE TABLE t3 (a int);
|
|
FLUSH LOGS;
|
|
#
|
|
# GLLE from each log for state reference
|
|
show binlog events in 'master-bin.000001' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid_list 1 # []
|
|
show binlog events in 'master-bin.000002' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000002 # Gtid_list 1 # [0-1-1]
|
|
show binlog events in 'master-bin.000003' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000003 # Gtid_list 1 # [0-1-2,1-2-1]
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/BINLOG_FILE1 MYSQLD_DATADIR/BINLOG_FILE3 --skip-gtid-strict-mode -vvv 2> log_error_ > OUT_FILE
|
|
# We should have two warnings about missing data from domains 0 and 1 if
|
|
# -vvv is specified
|
|
FOUND 1 /WARNING: Binary logs are missing data for domain 0[^\n]+the last seen event was/ in out.err
|
|
FOUND 1 /WARNING: Binary logs are missing data for domain 1[^\n]+neither the starting GTID position list nor any processed events/ in out.err
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 14:
|
|
# If a --stop-position GTID occurs before the first specified binlog's
|
|
# GLLE, error
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
FLUSH LOGS;
|
|
INSERT INTO t1 values (3);
|
|
FLUSH LOGS;
|
|
#
|
|
# GLLE from each log for state reference
|
|
show binlog events in 'master-bin.000001' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid_list 1 # []
|
|
show binlog events in 'master-bin.000002' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000002 # Gtid_list 1 # [0-1-3]
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/BINLOG_FILE2 --skip-gtid-strict-mode -vvv --stop-position=0-1-2 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: --stop-position GTID/ in out.err
|
|
DROP TABLE t1;
|
|
####################################################
|
|
# Test Case Group 3
|
|
#
|
|
# Run test cases with --skip-gtid-strict-mode should
|
|
# neither produce errors nor warnings when
|
|
# encountering out of order GTIDs
|
|
####################################################
|
|
#
|
|
# Test Case 1:
|
|
# Sequential sequence numbers results in no errors or warnings
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
INSERT INTO t1 values (3);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING)/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 2:
|
|
# A skipped sequence number results in no errors or warnings if all
|
|
# numbers are monotonic (i.e. gaps in sequence number are allowed
|
|
# provided they never decrease)
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 5;
|
|
INSERT INTO t1 values (3);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING)/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 3:
|
|
# A sequence number lower than the last processed value results in a
|
|
# warning or error
|
|
CREATE TABLE t1 (a int);
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 1;
|
|
INSERT INTO t1 values (1);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING): Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 4:
|
|
# Skipping a GTID and later receiving it results in a warning or error
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (3);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (4);
|
|
INSERT INTO t1 values (5);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING): Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 5:
|
|
# Repeat sequence numbers produce a warning
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING): Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 6:
|
|
# Warnings from different domains are all displayed
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (3);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (4);
|
|
SET @@session.gtid_domain_id= 1;
|
|
SET @@session.server_id= 2;
|
|
CREATE TABLE t2 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t2 values (2);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t2 values (3);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t2 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING): Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 7:
|
|
# A decreasing seq_no before a start-position is ignored
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (4);
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (5);
|
|
FLUSH LOGS;
|
|
# GTID-based start-position
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-4 --skip-gtid-strict-mode > log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING)/ in out.err
|
|
# Position-based start-position
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=start_binlog_pos --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING)/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 8:
|
|
# A decreasing seq_no inside of a --start/--stop position window is
|
|
# displayed
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 5;
|
|
INSERT INTO t1 values (4);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (3);
|
|
SET @@session.gtid_seq_no= 6;
|
|
INSERT INTO t1 values (5);
|
|
FLUSH LOGS;
|
|
# GTID-based window
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-1 --stop-position=0-1-6 --skip-gtid-strict-mode > log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING): Found out of order GTID/ in out.err
|
|
# Position-based window
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=start_binlog_pos --stop-position=stop_binlog_pos --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING): Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 9:
|
|
# Error if --stop-position is not greater than or equal to
|
|
# --start-position
|
|
#
|
|
# Note: Error is only displayed in strict mode, -vvv has no effect here
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-2 --stop-position=0-1-1 --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /ERROR: Queried GTID range is invalid in strict mode/ in out.err
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-2,1-2-1 --stop-position=0-1-1,1-2-2 --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /ERROR: Queried GTID range is invalid in strict mode/ in out.err
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 10:
|
|
# Strict mode warnings should be independent of --offset option
|
|
# specification
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 1;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_seq_no= 2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 4;
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-1 --offset=8 --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING): Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 11:
|
|
# Strict mode warnings should be independent of --start-timestamp
|
|
# option specification
|
|
set @a=UNIX_TIMESTAMP("1970-01-21 15:32:22");
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
SET @@session.gtid_seq_no= 1;
|
|
SET timestamp=@a;
|
|
CREATE TABLE t1 (a int);
|
|
SET @@session.gtid_seq_no= 3;
|
|
SET timestamp=@a+1;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_seq_no= 2;
|
|
SET timestamp=@a+2;
|
|
INSERT INTO t1 values (2);
|
|
SET @@session.gtid_seq_no= 4;
|
|
SET timestamp=@a+3;
|
|
INSERT INTO t1 values (3);
|
|
INSERT INTO t1 values (4);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/master-bin.000001 --start-position=0-1-1 --start-datetime="1970-01-21 15:32:24" --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
NOT FOUND /(ERROR|WARNING): Found out of order GTID/ in out.err
|
|
DROP TABLE t1;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 12:
|
|
# Specifying multiple binary logs with a log-position start should
|
|
# skip GTID state verification
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_domain_id= 1;
|
|
SET @@session.server_id= 2;
|
|
CREATE TABLE t2 (a int);
|
|
INSERT INTO t2 values (1);
|
|
FLUSH LOGS;
|
|
INSERT INTO t2 values (2);
|
|
FLUSH LOGS;
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/BINLOG_FILE1 MYSQLD_DATADIR/BINLOG_FILE2 --start-position=b2_start_pos --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
#
|
|
# Test Case 13:
|
|
# If multiple binary logs should be specified but a middle log is
|
|
# missing, we should detect that and warn when using -vvv
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
FLUSH LOGS;
|
|
INSERT INTO t1 values (1);
|
|
SET @@session.gtid_domain_id= 1;
|
|
SET @@session.server_id= 2;
|
|
CREATE TABLE t2 (a int);
|
|
FLUSH LOGS;
|
|
SET @@session.gtid_domain_id= 2;
|
|
SET @@session.server_id= 3;
|
|
CREATE TABLE t3 (a int);
|
|
FLUSH LOGS;
|
|
#
|
|
# GLLE from each log for state reference
|
|
show binlog events in 'master-bin.000001' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid_list 1 # []
|
|
show binlog events in 'master-bin.000002' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000002 # Gtid_list 1 # [0-1-1]
|
|
show binlog events in 'master-bin.000003' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000003 # Gtid_list 1 # [0-1-2,1-2-1]
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/BINLOG_FILE1 MYSQLD_DATADIR/BINLOG_FILE3 --skip-gtid-strict-mode 2> log_error_ > OUT_FILE
|
|
# We should have two warnings about missing data from domains 0 and 1 if
|
|
# -vvv is specified
|
|
NOT FOUND /WARNING: Binary logs are missing data for domain 0[^\n]+the last seen event was/ in out.err
|
|
NOT FOUND /WARNING: Binary logs are missing data for domain 1[^\n]+neither the starting GTID position list nor any processed events/ in out.err
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
RESET MASTER;
|
|
#
|
|
# Test Case 14:
|
|
# If a --stop-position GTID occurs before the first specified binlog's
|
|
# GLLE, error
|
|
RESET MASTER;
|
|
SET @@session.gtid_domain_id= 0;
|
|
SET @@session.server_id= 1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 values (1);
|
|
INSERT INTO t1 values (2);
|
|
FLUSH LOGS;
|
|
INSERT INTO t1 values (3);
|
|
FLUSH LOGS;
|
|
#
|
|
# GLLE from each log for state reference
|
|
show binlog events in 'master-bin.000001' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Gtid_list 1 # []
|
|
show binlog events in 'master-bin.000002' limit 1,1;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000002 # Gtid_list 1 # [0-1-3]
|
|
# MYSQL_BINLOG MYSQLD_DATADIR/BINLOG_FILE2 --skip-gtid-strict-mode --stop-position=0-1-2 2> log_error_ > OUT_FILE
|
|
FOUND 1 /ERROR: --stop-position GTID/ in out.err
|
|
DROP TABLE t1;
|
|
##############################
|
|
# Cleanup
|
|
##############################
|
|
SET @@global.gtid_domain_id= 0;
|
|
SET @@global.server_id= 1;
|
|
End of the tests
|