1
# Ignore startup/shutdown events
3
--source ../plugin/transaction_log/tests/t/truncate_log.inc
7
DROP TABLE IF EXISTS t1;
8
DROP TABLE IF EXISTS t2;
11
CREATE TABLE t1(a INT NOT NULL AUTO_INCREMENT, b VARCHAR(10), c VARCHAR(10), PRIMARY KEY(a));
12
CREATE TABLE t2(a INT NOT NULL AUTO_INCREMENT, b VARCHAR(10), c VARCHAR(10), PRIMARY KEY(a));
13
CREATE TABLE t3(a INT NOT NULL AUTO_INCREMENT, b VARCHAR(10), c VARCHAR(10), PRIMARY KEY(a));
15
INSERT INTO t1 (b,c) VALUES ('1','ok'), ('3','ok');
16
INSERT INTO t2 (b,c) VALUES ('2','ok'), ('4','ok');
17
INSERT INTO t3 (b,c) VALUES ('1','ok'), ('2','ok'), ('3','ok'), ('4','ok'), ('5','ok'), ('6','ok'), ('7','ok'), ('8','ok'), ('9','ok'), ('10','ok');
19
--source ../plugin/transaction_log/tests/t/truncate_log.inc
25
# To create a deadlock (without a lock wait timeout), we need two
26
# connections dependent on each other:
29
# con2> lock t1; <-- a deadlock that would timeout
30
# con1> lock t2; <-- a deadlock causing InnoDB to choose a trx to rollback
32
connect (con1, localhost, root, , test);
33
connect (con2, localhost, root, , test);
38
UPDATE t1 SET c = 'trx1' WHERE a > 0;
41
--echo Should have one savepoint: A
42
SELECT * FROM DATA_DICTIONARY.USER_DEFINED_SAVEPOINTS;
48
UPDATE t2 SET a = a*3;
49
send UPDATE t1 SET b = 'trx2' WHERE a > 0;
54
DELETE FROM t2 WHERE a > 0;
57
--echo Should have no savepoints
58
SELECT * FROM DATA_DICTIONARY.USER_DEFINED_SAVEPOINTS;
62
UPDATE t3 SET c = 'TRX1a' WHERE a < 10 ORDER BY b LIMIT 4;
63
UPDATE t3 SET b = 'TRX1b' WHERE a < 10 ORDER BY c LIMIT 4;
64
ROLLBACK TO SAVEPOINT A;
70
--echo Definitely should have no savepoints
71
SELECT * FROM DATA_DICTIONARY.USER_DEFINED_SAVEPOINTS;
73
UPDATE t3 SET b = 'TRX1c' WHERE a > 7;
75
ROLLBACK TO SAVEPOINT A;
95
--replace_regex /start_timestamp: [0-9]+/START_TIMESTAMP/g /end_timestamp: [0-9]+/END_TIMESTAMP/g /creation_timestamp: [0-9]+/CREATE_TIMESTAMP/ /update_timestamp: [0-9]+/UPDATE_TIMESTAMP/ /transaction_id: [0-9]+/TRANSACTION_ID/
96
SELECT PRINT_TRANSACTION_MESSAGE('transaction.log', ENTRY_OFFSET) FROM DATA_DICTIONARY.TRANSACTION_LOG_TRANSACTIONS;
100
--source ../plugin/transaction_log/tests/t/truncate_log.inc