MINI MINI MANI MO

Path : /opt/mysql/mysql-test/suite/rpl/r/
File Upload :
Current File : //opt/mysql/mysql-test/suite/rpl/r/rpl_binlog_transaction_dependency_tracking_with_indexes.result

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]
#### INITIALIZE ####
[connection slave]
include/stop_slave.inc
SET @save_slave_parallel_workers= @@GLOBAL.slave_parallel_workers;
SET @@GLOBAL.slave_parallel_workers= 4;
include/start_slave.inc
[connection master]
SET @save_binlog_transaction_dependency_tracking = @@GLOBAL.binlog_transaction_dependency_tracking;
SET @save_transaction_write_set_extraction = @@GLOBAL.transaction_write_set_extraction;
SET GLOBAL binlog_transaction_dependency_tracking = COMMIT_ORDER;
SET GLOBAL transaction_write_set_extraction = XXHASH64;
SET SESSION transaction_write_set_extraction = XXHASH64;
SET GLOBAL binlog_transaction_dependency_tracking = WRITESET;

#### 0.0.0.0: WITHOUT PK, NULLABLE, NOT UNIQUE, NO INDEX ####

CREATE TABLE t1 (a INT, b INT , c INT  );
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;3 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;5 6]
# TRX7: independent
INSERT INTO t1 VALUES (3, NULL, 2);
# now t1 contains two rows: (1, 2, 2), (3, NULL, 2)
include/include/assert_logical_timestamps.inc [6 7]
# TRX8: independent
INSERT INTO t2 VALUES (8);
# TRX9: independent (no conflict with TRX7 since multiple NULLs are allowed)
INSERT INTO t1 VALUES (4, NULL, 2);
# now t1 contains three rows: (1, 2, 2), (3, NULL, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 8;8 9]
# TRX10: independent
INSERT INTO t2 VALUES (10);
# TRX11: conflict with TRX7 (not with TRX9 since multiple NULLs are allowed)
DELETE FROM t1 WHERE a = 3;
# now t1 contains two rows: (1, 2, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 10;10 11]
DROP TABLE t1;
DROP TABLE t2;

#### 0.0.0.1: WITHOUT PK, NULLABLE, NOT UNIQUE, 1-COLUMN INDEX ####

CREATE TABLE t1 (a INT, b INT , c INT  ,  INDEX(b));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;3 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;5 6]
# TRX7: independent
INSERT INTO t1 VALUES (3, NULL, 2);
# now t1 contains two rows: (1, 2, 2), (3, NULL, 2)
include/include/assert_logical_timestamps.inc [6 7]
# TRX8: independent
INSERT INTO t2 VALUES (8);
# TRX9: independent (no conflict with TRX7 since multiple NULLs are allowed)
INSERT INTO t1 VALUES (4, NULL, 2);
# now t1 contains three rows: (1, 2, 2), (3, NULL, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 8;8 9]
# TRX10: independent
INSERT INTO t2 VALUES (10);
# TRX11: conflict with TRX7 (not with TRX9 since multiple NULLs are allowed)
DELETE FROM t1 WHERE a = 3;
# now t1 contains two rows: (1, 2, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 10;10 11]
DROP TABLE t1;
DROP TABLE t2;

#### 0.0.0.2: WITHOUT PK, NULLABLE, NOT UNIQUE, 2-COLUMN INDEX ####

CREATE TABLE t1 (a INT, b INT , c INT  ,  INDEX(b, c));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;3 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;5 6]
# TRX7: independent
INSERT INTO t1 VALUES (3, NULL, 2);
# now t1 contains two rows: (1, 2, 2), (3, NULL, 2)
include/include/assert_logical_timestamps.inc [6 7]
# TRX8: independent
INSERT INTO t2 VALUES (8);
# TRX9: independent (no conflict with TRX7 since multiple NULLs are allowed)
INSERT INTO t1 VALUES (4, NULL, 2);
# now t1 contains three rows: (1, 2, 2), (3, NULL, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 8;8 9]
# TRX10: independent
INSERT INTO t2 VALUES (10);
# TRX11: conflict with TRX7 (not with TRX9 since multiple NULLs are allowed)
DELETE FROM t1 WHERE a = 3;
# now t1 contains two rows: (1, 2, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 10;10 11]
DROP TABLE t1;
DROP TABLE t2;

#### 0.0.1.1: WITHOUT PK, NULLABLE, UNIQUE, 1-COLUMN INDEX ####

CREATE TABLE t1 (a INT, b INT , c INT  , UNIQUE INDEX(b));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;3 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;5 6]
# TRX7: independent
INSERT INTO t1 VALUES (3, NULL, 2);
# now t1 contains two rows: (1, 2, 2), (3, NULL, 2)
include/include/assert_logical_timestamps.inc [6 7]
# TRX8: independent
INSERT INTO t2 VALUES (8);
# TRX9: independent (no conflict with TRX7 since multiple NULLs are allowed)
INSERT INTO t1 VALUES (4, NULL, 2);
# now t1 contains three rows: (1, 2, 2), (3, NULL, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 8;8 9]
# TRX10: independent
INSERT INTO t2 VALUES (10);
# TRX11: conflict with TRX7 (not with TRX9 since multiple NULLs are allowed)
DELETE FROM t1 WHERE a = 3;
# now t1 contains two rows: (1, 2, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 10;10 11]
DROP TABLE t1;
DROP TABLE t2;

#### 0.0.1.2: WITHOUT PK, NULLABLE, UNIQUE, 2-COLUMN INDEX ####

CREATE TABLE t1 (a INT, b INT , c INT  , UNIQUE INDEX(b, c));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;3 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;5 6]
# TRX7: independent
INSERT INTO t1 VALUES (3, NULL, 2);
# now t1 contains two rows: (1, 2, 2), (3, NULL, 2)
include/include/assert_logical_timestamps.inc [6 7]
# TRX8: independent
INSERT INTO t2 VALUES (8);
# TRX9: independent (no conflict with TRX7 since multiple NULLs are allowed)
INSERT INTO t1 VALUES (4, NULL, 2);
# now t1 contains three rows: (1, 2, 2), (3, NULL, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 8;8 9]
# TRX10: independent
INSERT INTO t2 VALUES (10);
# TRX11: conflict with TRX7 (not with TRX9 since multiple NULLs are allowed)
DELETE FROM t1 WHERE a = 3;
# now t1 contains two rows: (1, 2, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 10;10 11]
DROP TABLE t1;
DROP TABLE t2;

#### 0.1.0.0: WITHOUT PK, NOT NULL, NOT UNIQUE, NO INDEX ####

CREATE TABLE t1 (a INT, b INT NOT NULL, c INT NOT NULL );
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;3 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;5 6]
DROP TABLE t1;
DROP TABLE t2;

#### 0.1.0.1: WITHOUT PK, NOT NULL, NOT UNIQUE, 1-COLUMN INDEX ####

CREATE TABLE t1 (a INT, b INT NOT NULL, c INT NOT NULL ,  INDEX(b));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;3 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;5 6]
DROP TABLE t1;
DROP TABLE t2;

#### 0.1.0.2: WITHOUT PK, NOT NULL, NOT UNIQUE, 2-COLUMN INDEX ####

CREATE TABLE t1 (a INT, b INT NOT NULL, c INT NOT NULL ,  INDEX(b, c));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;3 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;5 6]
DROP TABLE t1;
DROP TABLE t2;

#### 0.1.1.1: WITHOUT PK, NOT NULL, UNIQUE, 1-COLUMN INDEX ####

CREATE TABLE t1 (a INT, b INT NOT NULL, c INT NOT NULL , UNIQUE INDEX(b));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;4 6]
DROP TABLE t1;
DROP TABLE t2;

#### 0.1.1.2: WITHOUT PK, NOT NULL, UNIQUE, 2-COLUMN INDEX ####

CREATE TABLE t1 (a INT, b INT NOT NULL, c INT NOT NULL , UNIQUE INDEX(b, c));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;4 6]
DROP TABLE t1;
DROP TABLE t2;

#### 1.0.0.0: WITH PK, NULLABLE, NOT UNIQUE, NO INDEX ####

CREATE TABLE t1 (a INT PRIMARY KEY, b INT , c INT  );
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;1 6]
# TRX7: independent
INSERT INTO t1 VALUES (3, NULL, 2);
# now t1 contains two rows: (1, 2, 2), (3, NULL, 2)
include/include/assert_logical_timestamps.inc [1 7]
# TRX8: independent
INSERT INTO t2 VALUES (8);
# TRX9: independent (no conflict with TRX7 since multiple NULLs are allowed)
INSERT INTO t1 VALUES (4, NULL, 2);
# now t1 contains three rows: (1, 2, 2), (3, NULL, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 8;1 9]
# TRX10: independent
INSERT INTO t2 VALUES (10);
# TRX11: conflict with TRX7 (not with TRX9 since multiple NULLs are allowed)
DELETE FROM t1 WHERE a = 3;
# now t1 contains two rows: (1, 2, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 10;7 11]
DROP TABLE t1;
DROP TABLE t2;

#### 1.0.0.1: WITH PK, NULLABLE, NOT UNIQUE, 1-COLUMN INDEX ####

CREATE TABLE t1 (a INT PRIMARY KEY, b INT , c INT  ,  INDEX(b));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;1 6]
# TRX7: independent
INSERT INTO t1 VALUES (3, NULL, 2);
# now t1 contains two rows: (1, 2, 2), (3, NULL, 2)
include/include/assert_logical_timestamps.inc [1 7]
# TRX8: independent
INSERT INTO t2 VALUES (8);
# TRX9: independent (no conflict with TRX7 since multiple NULLs are allowed)
INSERT INTO t1 VALUES (4, NULL, 2);
# now t1 contains three rows: (1, 2, 2), (3, NULL, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 8;1 9]
# TRX10: independent
INSERT INTO t2 VALUES (10);
# TRX11: conflict with TRX7 (not with TRX9 since multiple NULLs are allowed)
DELETE FROM t1 WHERE a = 3;
# now t1 contains two rows: (1, 2, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 10;7 11]
DROP TABLE t1;
DROP TABLE t2;

#### 1.0.0.2: WITH PK, NULLABLE, NOT UNIQUE, 2-COLUMN INDEX ####

CREATE TABLE t1 (a INT PRIMARY KEY, b INT , c INT  ,  INDEX(b, c));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;1 6]
# TRX7: independent
INSERT INTO t1 VALUES (3, NULL, 2);
# now t1 contains two rows: (1, 2, 2), (3, NULL, 2)
include/include/assert_logical_timestamps.inc [1 7]
# TRX8: independent
INSERT INTO t2 VALUES (8);
# TRX9: independent (no conflict with TRX7 since multiple NULLs are allowed)
INSERT INTO t1 VALUES (4, NULL, 2);
# now t1 contains three rows: (1, 2, 2), (3, NULL, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 8;1 9]
# TRX10: independent
INSERT INTO t2 VALUES (10);
# TRX11: conflict with TRX7 (not with TRX9 since multiple NULLs are allowed)
DELETE FROM t1 WHERE a = 3;
# now t1 contains two rows: (1, 2, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 10;7 11]
DROP TABLE t1;
DROP TABLE t2;

#### 1.0.1.1: WITH PK, NULLABLE, UNIQUE, 1-COLUMN INDEX ####

CREATE TABLE t1 (a INT PRIMARY KEY, b INT , c INT  , UNIQUE INDEX(b));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;4 6]
# TRX7: independent
INSERT INTO t1 VALUES (3, NULL, 2);
# now t1 contains two rows: (1, 2, 2), (3, NULL, 2)
include/include/assert_logical_timestamps.inc [1 7]
# TRX8: independent
INSERT INTO t2 VALUES (8);
# TRX9: independent (no conflict with TRX7 since multiple NULLs are allowed)
INSERT INTO t1 VALUES (4, NULL, 2);
# now t1 contains three rows: (1, 2, 2), (3, NULL, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 8;1 9]
# TRX10: independent
INSERT INTO t2 VALUES (10);
# TRX11: conflict with TRX7 (not with TRX9 since multiple NULLs are allowed)
DELETE FROM t1 WHERE a = 3;
# now t1 contains two rows: (1, 2, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 10;7 11]
DROP TABLE t1;
DROP TABLE t2;

#### 1.0.1.2: WITH PK, NULLABLE, UNIQUE, 2-COLUMN INDEX ####

CREATE TABLE t1 (a INT PRIMARY KEY, b INT , c INT  , UNIQUE INDEX(b, c));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;4 6]
# TRX7: independent
INSERT INTO t1 VALUES (3, NULL, 2);
# now t1 contains two rows: (1, 2, 2), (3, NULL, 2)
include/include/assert_logical_timestamps.inc [1 7]
# TRX8: independent
INSERT INTO t2 VALUES (8);
# TRX9: independent (no conflict with TRX7 since multiple NULLs are allowed)
INSERT INTO t1 VALUES (4, NULL, 2);
# now t1 contains three rows: (1, 2, 2), (3, NULL, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 8;1 9]
# TRX10: independent
INSERT INTO t2 VALUES (10);
# TRX11: conflict with TRX7 (not with TRX9 since multiple NULLs are allowed)
DELETE FROM t1 WHERE a = 3;
# now t1 contains two rows: (1, 2, 2), (4, NULL, 2)
include/include/assert_logical_timestamps.inc [1 10;7 11]
DROP TABLE t1;
DROP TABLE t2;

#### 1.1.0.0: WITH PK, NOT NULL, NOT UNIQUE, NO INDEX ####

CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL, c INT NOT NULL );
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;1 6]
DROP TABLE t1;
DROP TABLE t2;

#### 1.1.0.1: WITH PK, NOT NULL, NOT UNIQUE, 1-COLUMN INDEX ####

CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL, c INT NOT NULL ,  INDEX(b));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;1 6]
DROP TABLE t1;
DROP TABLE t2;

#### 1.1.0.2: WITH PK, NOT NULL, NOT UNIQUE, 2-COLUMN INDEX ####

CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL, c INT NOT NULL ,  INDEX(b, c));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;1 6]
DROP TABLE t1;
DROP TABLE t2;

#### 1.1.1.1: WITH PK, NOT NULL, UNIQUE, 1-COLUMN INDEX ####

CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL, c INT NOT NULL , UNIQUE INDEX(b));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;4 6]
DROP TABLE t1;
DROP TABLE t2;

#### 1.1.1.2: WITH PK, NOT NULL, UNIQUE, 2-COLUMN INDEX ####

CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL, c INT NOT NULL , UNIQUE INDEX(b, c));
CREATE TABLE t2 (a INT PRIMARY KEY);
FLUSH LOGS;
include/save_binlog_position.inc
# TRX1: independent
INSERT INTO t1 VALUES (1, 1, 1);
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [0 1]
# TRX2: independent
BEGIN;
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t2 VALUES (1);
COMMIT;
# now t1 contains two rows: (1, 1, 1), (2, 2, 2)
include/include/assert_logical_timestamps.inc [1 2]
# TRX3: independent
INSERT INTO t2 VALUES (3);
# TRX4: depends on TRX2
DELETE FROM t1 WHERE a = 2;
# now t1 contains one row: (1, 1, 1)
include/include/assert_logical_timestamps.inc [1 3;2 4]
# TRX5: independent
INSERT INTO t2 VALUES (5);
# TRX6: conflict with TRX4 if unique, else with TRX1
UPDATE t1 SET b = 2, c = 2 WHERE a = 1;
# now t1 contains one row: (1, 2, 2)
include/include/assert_logical_timestamps.inc [1 5;4 6]
DROP TABLE t1;
DROP TABLE t2;
#### CLEAN UP ####
SET @@GLOBAL.binlog_transaction_dependency_tracking= @save_binlog_transaction_dependency_tracking;
SET @@GLOBAL.transaction_write_set_extraction= @save_transaction_write_set_extraction;
include/sync_slave_sql_with_master.inc
SET @@GLOBAL.slave_parallel_workers= @save_slave_parallel_workers;
include/rpl_end.inc

OHA YOOOO