mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fix Bug#53046 dict_update_statistics_low can still be run concurrently on same table
Replace the array of mutexes that used to protect dict_index_t::stat_n_diff_key_vals[] with an array of rw locks that protects all the stats related members in dict_table_t and all of its indexes. Approved by: Jimmy (rb://503)
This commit is contained in:
27
mysql-test/suite/innodb_plugin/r/innodb_bug53046.result
Normal file
27
mysql-test/suite/innodb_plugin/r/innodb_bug53046.result
Normal file
@ -0,0 +1,27 @@
|
||||
CREATE TABLE bug53046_1 (c1 INT PRIMARY KEY) ENGINE=INNODB;
|
||||
CREATE TABLE bug53046_2 (c2 INT PRIMARY KEY,
|
||||
FOREIGN KEY (c2) REFERENCES bug53046_1(c1)
|
||||
ON UPDATE CASCADE ON DELETE CASCADE) ENGINE=INNODB;
|
||||
INSERT INTO bug53046_1 VALUES (1);
|
||||
INSERT INTO bug53046_1 SELECT c1+(SELECT MAX(c1) FROM bug53046_1)
|
||||
FROM bug53046_1;
|
||||
INSERT INTO bug53046_1 SELECT c1+(SELECT MAX(c1) FROM bug53046_1)
|
||||
FROM bug53046_1;
|
||||
INSERT INTO bug53046_1 SELECT c1+(SELECT MAX(c1) FROM bug53046_1)
|
||||
FROM bug53046_1;
|
||||
INSERT INTO bug53046_1 SELECT c1+(SELECT MAX(c1) FROM bug53046_1)
|
||||
FROM bug53046_1;
|
||||
INSERT INTO bug53046_1 SELECT c1+(SELECT MAX(c1) FROM bug53046_1)
|
||||
FROM bug53046_1;
|
||||
INSERT INTO bug53046_2 VALUES (1), (2);
|
||||
ANALYZE TABLE bug53046_1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.bug53046_1 analyze status OK
|
||||
SHOW TABLE STATUS LIKE 'bug53046_1';
|
||||
UPDATE bug53046_1 SET c1 = c1 - 1;
|
||||
DELETE FROM bug53046_1;
|
||||
INSERT INTO bug53046_1 VALUES (1);
|
||||
INSERT INTO bug53046_2 VALUES (1);
|
||||
TRUNCATE TABLE bug53046_2;
|
||||
DROP TABLE bug53046_2;
|
||||
DROP TABLE bug53046_1;
|
Reference in New Issue
Block a user