67 lines
1.5 KiB
Plaintext
67 lines
1.5 KiB
Plaintext
Bug #28733170
|
|
PERFORMANCE_SCHEMA.DATA_LOCKS DOES NOT HANDLE JOINS CORRECTLY
|
|
CREATE TABLE t1(
|
|
id INT PRIMARY KEY
|
|
) Engine=XENGINE;
|
|
BEGIN;
|
|
INSERT INTO t1 VALUES (1),(2);
|
|
SELECT * FROM t1 FOR UPDATE;
|
|
id
|
|
1
|
|
2
|
|
BEGIN;
|
|
SET DEBUG_SYNC = 'lock_wait_will_wait SIGNAL C1_will_wait';
|
|
SELECT * FROM t1 WHERE id=1 FOR UPDATE;
|
|
SET DEBUG_SYNC = 'now WAIT_FOR C1_will_wait';
|
|
CREATE TABLE t2 (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
lock_id VARCHAR(200) NOT NULL
|
|
) Engine=XENGINE;
|
|
INSERT INTO t2 (lock_id)
|
|
SELECT blocking_engine_lock_id
|
|
FROM performance_schema.data_lock_waits;
|
|
SELECT COUNT(*) FROM t2;
|
|
COUNT(*)
|
|
2
|
|
SELECT COUNT(t2.id)
|
|
FROM t2
|
|
JOIN performance_schema.data_lock_waits dlw
|
|
ON(dlw.blocking_engine_lock_id = t2.lock_id)
|
|
ORDER BY t2.id;
|
|
COUNT(t2.id)
|
|
2
|
|
CREATE TABLE t3 (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
lock_id VARCHAR(200) NOT NULL
|
|
) Engine=XENGINE;
|
|
INSERT INTO t3 (lock_id)
|
|
SELECT requesting_engine_lock_id
|
|
FROM performance_schema.data_lock_waits
|
|
LIMIT 1;
|
|
INSERT INTO t3 (lock_id)
|
|
SELECT requesting_engine_lock_id
|
|
FROM performance_schema.data_lock_waits
|
|
LIMIT 1;
|
|
SELECT COUNT(DISTINCT t3.id)
|
|
FROM t3
|
|
JOIN performance_schema.data_lock_waits dlw
|
|
ON(dlw.requesting_engine_lock_id = t3.lock_id)
|
|
ORDER BY t3.id;
|
|
COUNT(DISTINCT t3.id)
|
|
2
|
|
SELECT COUNT(*) FROM performance_schema.data_lock_waits;
|
|
COUNT(*)
|
|
2
|
|
SELECT COUNT(*)
|
|
FROM performance_schema.data_lock_waits
|
|
JOIN performance_schema.data_locks r
|
|
ON(r.engine_lock_id = requesting_engine_lock_id)
|
|
JOIN performance_schema.data_locks b
|
|
ON(b.engine_lock_id = blocking_engine_lock_id);
|
|
COUNT(*)
|
|
2
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
ROLLBACK;
|
|
DROP TABLE t1;
|