mirror of
https://github.com/MariaDB/server.git
synced 2025-08-31 22:22:30 +03:00
Merge with MySQL 5.1.60
This commit is contained in:
@@ -55,3 +55,20 @@ id x
|
||||
1 1
|
||||
2 10
|
||||
drop table t1;
|
||||
#
|
||||
#Bug#12842206 INNODB LOCKING REGRESSION FOR INSERT IGNORE
|
||||
#fixed by re-fixing Bug#7975
|
||||
#aka Bug#11759688 52020: InnoDB can still deadlock on just INSERT...
|
||||
#
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(3,1);
|
||||
BEGIN;
|
||||
INSERT IGNORE INTO t1 VALUES(3,14);
|
||||
BEGIN;
|
||||
INSERT IGNORE INTO t1 VALUES(3,23);
|
||||
SELECT * FROM t1 FOR UPDATE;
|
||||
COMMIT;
|
||||
a b
|
||||
3 1
|
||||
COMMIT;
|
||||
DROP TABLE t1;
|
||||
|
@@ -1295,6 +1295,20 @@ ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fail
|
||||
update t3 set t3.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
|
||||
ERROR 42S22: Unknown column 't1.id' in 'where clause'
|
||||
drop table t3,t2,t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 VARCHAR(8), c2 VARCHAR(8),
|
||||
PRIMARY KEY (c1, c2)
|
||||
) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (
|
||||
c0 INT PRIMARY KEY,
|
||||
c1 VARCHAR(8) UNIQUE,
|
||||
FOREIGN KEY (c1) REFERENCES t1 (c1) ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES ('old', 'somevalu'), ('other', 'anyvalue');
|
||||
INSERT INTO t2 VALUES (10, 'old'), (20, 'other');
|
||||
UPDATE t1 SET c1 = 'other' WHERE c1 = 'old';
|
||||
ERROR 23000: Upholding foreign key constraints for table 't1', entry 'other-somevalu', key 2 would lead to a duplicate entry
|
||||
DROP TABLE t2,t1;
|
||||
create table t1(
|
||||
id int primary key,
|
||||
pid int,
|
||||
@@ -1673,7 +1687,7 @@ variable_value - @innodb_rows_deleted_orig
|
||||
71
|
||||
SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted';
|
||||
variable_value - @innodb_rows_inserted_orig
|
||||
1063
|
||||
1067
|
||||
SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated';
|
||||
variable_value - @innodb_rows_updated_orig
|
||||
865
|
||||
|
2
mysql-test/suite/innodb/r/innodb_bug12661768.result
Normal file
2
mysql-test/suite/innodb/r/innodb_bug12661768.result
Normal file
@@ -0,0 +1,2 @@
|
||||
SET SESSION foreign_key_checks=0;
|
||||
ERROR 23000: Upholding foreign key constraints for table 'bug12661768_1', entry '3-bbb', key 2 would lead to a duplicate entry
|
77
mysql-test/suite/innodb/r/innodb_replace.result
Normal file
77
mysql-test/suite/innodb/r/innodb_replace.result
Normal file
@@ -0,0 +1,77 @@
|
||||
#
|
||||
#Bug#11759688 52020: InnoDB can still deadlock
|
||||
#on just INSERT...ON DUPLICATE KEY
|
||||
#a.k.a. Bug#7975 deadlock without any locking, simple select and update
|
||||
#
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT NOT NULL) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(3,1);
|
||||
BEGIN;
|
||||
SET DEBUG_SYNC='write_row_noreplace SIGNAL insert1 WAIT_FOR select1';
|
||||
INSERT INTO t1 VALUES(3,2);
|
||||
SET DEBUG_SYNC='now WAIT_FOR insert1';
|
||||
SELECT * FROM t1 LOCK IN SHARE MODE;
|
||||
a b
|
||||
3 1
|
||||
SELECT * FROM t1 FOR UPDATE;
|
||||
SET DEBUG_SYNC='now SIGNAL select1';
|
||||
ERROR 23000: Duplicate entry '3' for key 'PRIMARY'
|
||||
INSERT INTO t1 VALUES(3,3) ON DUPLICATE KEY UPDATE b=b+10;
|
||||
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||
COMMIT;
|
||||
SET DEBUG_SYNC='write_row_replace SIGNAL insert2 WAIT_FOR select2';
|
||||
REPLACE INTO t1 VALUES(3,4);
|
||||
SET DEBUG_SYNC='now WAIT_FOR insert2';
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
3 11
|
||||
SELECT * FROM t1 LOCK IN SHARE MODE;
|
||||
SET DEBUG_SYNC='now SIGNAL select2';
|
||||
SET DEBUG_SYNC='write_row_replace SIGNAL insert3 WAIT_FOR select3';
|
||||
INSERT INTO t1 VALUES(3,5) ON DUPLICATE KEY UPDATE b=b+20;
|
||||
a b
|
||||
3 4
|
||||
SET DEBUG_SYNC='now WAIT_FOR insert3';
|
||||
SELECT b FROM t1 LOCK IN SHARE MODE;
|
||||
SET DEBUG_SYNC='now SIGNAL select3';
|
||||
b
|
||||
24
|
||||
SET DEBUG_SYNC='write_row_noreplace SIGNAL insert4 WAIT_FOR select4';
|
||||
LOAD DATA INFILE '../../std_data/loaddata5.dat' INTO TABLE t1 FIELDS TERMINATED BY '' ENCLOSED BY '' (a, b);
|
||||
SET DEBUG_SYNC='now WAIT_FOR insert4';
|
||||
SELECT b FROM t1 WHERE a=3 LOCK IN SHARE MODE;
|
||||
b
|
||||
24
|
||||
SELECT b FROM t1 WHERE a=3 FOR UPDATE;
|
||||
SET DEBUG_SYNC='now SIGNAL select4';
|
||||
b
|
||||
24
|
||||
ERROR 23000: Duplicate entry '3' for key 'PRIMARY'
|
||||
SET DEBUG_SYNC='write_row_noreplace SIGNAL insert5 WAIT_FOR select5';
|
||||
LOAD DATA INFILE '../../std_data/loaddata5.dat' IGNORE INTO TABLE t1 FIELDS TERMINATED BY '' ENCLOSED BY '' (a, b);
|
||||
SET DEBUG_SYNC='now WAIT_FOR insert5';
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
3 24
|
||||
SELECT * FROM t1 WHERE a=3 LOCK IN SHARE MODE;
|
||||
a b
|
||||
3 24
|
||||
SELECT * FROM t1 WHERE a=3 FOR UPDATE;
|
||||
SET DEBUG_SYNC='now SIGNAL select5';
|
||||
a b
|
||||
3 24
|
||||
SET DEBUG_SYNC='write_row_replace SIGNAL insert6 WAIT_FOR select6';
|
||||
LOAD DATA INFILE '../../std_data/loaddata5.dat' REPLACE INTO TABLE t1 FIELDS TERMINATED BY '' ENCLOSED BY '' (a, b);
|
||||
SET DEBUG_SYNC='now WAIT_FOR insert6';
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2
|
||||
3 24
|
||||
5 6
|
||||
SELECT a,b FROM t1 LOCK IN SHARE MODE;
|
||||
SET DEBUG_SYNC='now SIGNAL select6';
|
||||
a b
|
||||
1 2
|
||||
3 4
|
||||
5 6
|
||||
SET DEBUG_SYNC='RESET';
|
||||
DROP TABLE t1;
|
Reference in New Issue
Block a user