polardbxengine/mysql-test/suite/xengine/t/online_ddl_bug24478790.test

648 lines
22 KiB
Plaintext

--source suite/xengine/include/have_xengine.inc
--source include/have_debug.inc
# after DDL finish unique check and before DDL commit changes
# unique check of all delte records is done during DML
--echo # Establish dml connection (user=root)
connect (dml,localhost,root,,);
connection default;
--echo ================================================================
--echo # case 1 add unique key
--echo ================================================================
--echo # case 1.1 duplicate record generated by updating in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b INT)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
INSERT INTO t1 VALUES(2, 2);
SET DEBUG_SYNC='xengine.inplace_create_sk_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD UNIQUE INDEX t1_ub(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the create sk ddl enter the inplace_create_sk_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
UPDATE t1 SET b=2 WHERE a=1;
UPDATE t1 SET b=1 WHERE a=2;
SELECT * FROM t1;
COMMIT;
# signal create sk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 1.2 duplicate record in base in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b INT)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
SET DEBUG_SYNC='xengine.inplace_create_sk_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD UNIQUE INDEX t1_ub(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the create sk ddl enter the inplace_create_sk_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
INSERT INTO t1 VALUES(3, 1); # last_wb_status is NonExist
# found conflict in base
SELECT * FROM t1;
# signal create sk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 1.3 duplicate record in a write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b INT)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
SET DEBUG_SYNC='xengine.inplace_create_sk_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD UNIQUE INDEX t1_ub(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the create sk ddl enter the inplace_create_sk_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
DELETE FROM t1 WHERE b=1;
INSERT INTO t1 VALUES(3, 1); # last_wb_status is DEL
INSERT INTO t1 VALUES(2, 1); # last_wb_status is PUT <-- conflict
COMMIT;
SELECT * FROM t1;
# signal create sk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 1.4 duplicate record in different write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b INT)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
SET DEBUG_SYNC='xengine.inplace_create_sk_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD UNIQUE INDEX t1_ub(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the create sk ddl enter the inplace_create_sk_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
DELETE FROM t1 WHERE b=1;
INSERT INTO t1 VALUES(3, 1); # last_wb_status is DEL
COMMIT;
INSERT INTO t1 VALUES(2, 1); # last_wb_status is NonExist
# found conflict in delta
SELECT * FROM t1;
# signal create sk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 1.5 duplicate record in different write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(10))ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, '222');
SET DEBUG_SYNC='xengine.inplace_create_sk_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD UNIQUE INDEX t1_ub(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the create sk ddl enter the inplace_create_sk_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
INSERT INTO t1 VALUES(2, '111'); # delta is empty, just check with L2
INSERT INTO t1 VALUES(4, '11'); # change to empty base
COMMIT;
SELECT * FROM t1;
# signal create sk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 1.6 duplicate record in different write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(10))ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, '222');
SET DEBUG_SYNC='xengine.inplace_create_sk_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD UNIQUE INDEX t1_ub(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the create sk ddl enter the inplace_create_sk_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
INSERT INTO t1 VALUES(2, '11'); # delta is empty, just check with L2
BEGIN;
INSERT INTO t1 VALUES(3, '111'); # delta is empty, just check with L2
INSERT INTO t1 VALUES(4, '11'); # change to non empty base
COMMIT;
SELECT * FROM t1;
# signal create sk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 1.7 test match till end in same write batch is wrong
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(10) NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, '222');
SET DEBUG_SYNC='xengine.inplace_create_sk_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD UNIQUE KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the add uk ddl enter the inplace_create_sk_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
INSERT INTO t1 VALUES(3, '11'); # delta is empty, just check with L2
BEGIN;
DELETE FROM t1 WHERE a=3;
INSERT INTO t1 VALUES(2, '11'); # change to non empty base
INSERT INTO t1 VALUES(4, '11'); # should be conflicted with previous record
COMMIT;
SELECT * FROM t1;
# signal add uk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 2 modify PRIMARY key
--echo ================================================================
--echo # case 2.1 duplicate record generated by updating in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
INSERT INTO t1 VALUES(2, 2);
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the modify pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
UPDATE t1 SET b=2 WHERE a=1;
UPDATE t1 SET b=1 WHERE a=2;
SELECT * FROM t1;
COMMIT;
# signal modify pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 2.2 duplicate record in base in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the modify pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
INSERT INTO t1 VALUES(3, 1); # last_wb_status is NonExist
# found conflict in base
SELECT * FROM t1;
# signal modify pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 2.3 duplicate record in a write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the modify pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
DELETE FROM t1 WHERE b=1;
INSERT INTO t1 VALUES(3, 1); # last_wb_status is DEL
INSERT INTO t1 VALUES(2, 1); # last_wb_status is PUT <-- conflict
COMMIT;
SELECT * FROM t1;
# signal modify pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 2.4 duplicate record in different write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the modify pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
DELETE FROM t1 WHERE b=1;
INSERT INTO t1 VALUES(3, 1); # last_wb_status is DEL
COMMIT;
INSERT INTO t1 VALUES(2, 1); # last_wb_status is NonExist
# found conflict in delta
SELECT * FROM t1;
# signal modify pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 2.5 duplicate record in different write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(10) NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, '222');
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the modify pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
INSERT INTO t1 VALUES(2, '111'); # delta is empty, just check with L2
INSERT INTO t1 VALUES(4, '11'); # change to empty base
COMMIT;
SELECT * FROM t1;
# signal modify pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 2.6 duplicate record in different write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(10) NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, '222');
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the modify pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
INSERT INTO t1 VALUES(2, '11'); # delta is empty, just check with L2
BEGIN;
INSERT INTO t1 VALUES(3, '111'); # delta is empty, just check with L2
INSERT INTO t1 VALUES(4, '11'); # change to non empty base
COMMIT;
SELECT * FROM t1;
# signal modify pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 2.7 test match till end in same write batch is wrong
--echo ================================================================
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(10) NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, '222');
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 DROP PRIMARY KEY, ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the add pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
INSERT INTO t1 VALUES(3, '11'); # delta is empty, just check with L2
BEGIN;
DELETE FROM t1 WHERE a=3;
INSERT INTO t1 VALUES(2, '11'); # change to non empty base
INSERT INTO t1 VALUES(4, '11'); # should be conflicted with previous record
COMMIT;
SELECT * FROM t1;
# signal add pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 3 add PRIMARY key
--echo ================================================================
--echo # case 3.1 duplicate record generated by updating in d3
--echo ================================================================
CREATE TABLE t1 (a INT, b INT NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
INSERT INTO t1 VALUES(2, 2);
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the add pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
UPDATE t1 SET b=2 WHERE a=1;
UPDATE t1 SET b=1 WHERE a=2;
SELECT * FROM t1;
COMMIT;
# signal add pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 3.2 duplicate record in base in d3
--echo ================================================================
CREATE TABLE t1 (a INT, b INT NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the add pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
INSERT INTO t1 VALUES(3, 1); # last_wb_status is NonExist
# found conflict in base
SELECT * FROM t1;
# signal add pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 3.3 duplicate record in a write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT, b INT NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the add pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
DELETE FROM t1 WHERE b=1;
INSERT INTO t1 VALUES(3, 1); # last_wb_status is DEL
INSERT INTO t1 VALUES(2, 1); # last_wb_status is PUT <-- conflict
COMMIT;
SELECT * FROM t1;
# signal add pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 3.4 duplicate record in different write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT, b INT NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, 1);
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the add pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
DELETE FROM t1 WHERE b=1;
INSERT INTO t1 VALUES(3, 1); # last_wb_status is DEL
COMMIT;
INSERT INTO t1 VALUES(2, 1); # last_wb_status is NonExist
# found conflict in delta
SELECT * FROM t1;
# signal add pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 3.5 duplicate record in different write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT, b CHAR(10) NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, '222');
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the add pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
BEGIN;
INSERT INTO t1 VALUES(2, '111'); # delta is empty, just check with L2
INSERT INTO t1 VALUES(4, '11'); # change to empty base
COMMIT;
SELECT * FROM t1;
# signal add pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo ================================================================
--echo # case 3.6 duplicate record in different write batch in d3
--echo ================================================================
CREATE TABLE t1 (a INT, b CHAR(10) NOT NULL)ENGINE=XENGINE;
INSERT INTO t1 VALUES(1, '222');
SET DEBUG_SYNC='xengine.inplace_unique_check_constraint_done SIGNAL start_dml WAIT_FOR dml_finish';
send ALTER TABLE t1 ADD PRIMARY KEY(b), ALGORITHM=INPLACE, LOCK=DEFAULT;
--echo # Switch to dml connection
connection dml;
# wait the add pk ddl enter the inplace_unique_check_constraint_done point
SET DEBUG_SYNC='now WAIT_FOR start_dml';
INSERT INTO t1 VALUES(2, '11'); # delta is empty, just check with L2
BEGIN;
INSERT INTO t1 VALUES(3, '111'); # delta is empty, just check with L2
INSERT INTO t1 VALUES(4, '11'); # change to non empty base
COMMIT;
SELECT * FROM t1;
# signal add pk ddl the key2 has been inserted
SET DEBUG_SYNC='now SIGNAL dml_finish';
--echo # Switch to connection default
connection default;
--error 1062
reap;
CHECK TABLE t1;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--source suite/xengine/include/check_xengine_log_error.inc