mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge branch '10.6' into 10.11
This commit is contained in:
43
mysql-test/suite/innodb/r/auto_increment_lock_mode.result
Normal file
43
mysql-test/suite/innodb/r/auto_increment_lock_mode.result
Normal file
@@ -0,0 +1,43 @@
|
||||
CREATE TABLE t1(a TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TABLE t2(a TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TABLE t3(a TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TABLE t4(a TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TABLE t5(a TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TABLE t6(a SERIAL, b INT) ENGINE=InnoDB;
|
||||
CREATE FUNCTION p1() RETURNS INT
|
||||
BEGIN
|
||||
INSERT INTO t1() VALUES();
|
||||
INSERT INTO t2() VALUES();
|
||||
INSERT INTO t3() VALUES();
|
||||
INSERT INTO t4() VALUES();
|
||||
INSERT INTO t5() VALUES();
|
||||
RETURN 1;
|
||||
END$$
|
||||
INSERT INTO t6(b) SELECT p1();
|
||||
UPDATE t1,t2,t3,t4,t5 SET t1.a=2,t2.a=2,t3.a=2,t4.a=2,t5.a=2;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
2
|
||||
connect con1,localhost,root,,;
|
||||
connect con2,localhost,root,,;
|
||||
connect con3,localhost,root,,;
|
||||
connection con1;
|
||||
INSERT INTO t6(b) SELECT SLEEP(p1());
|
||||
connection con2;
|
||||
INSERT INTO t6(b) SELECT SLEEP(p1());
|
||||
connection con3;
|
||||
UPDATE t1,t2,t3,t4,t5 SET t1.a=0,t2.a=0,t3.a=0,t4.a=0,t5.a=0
|
||||
WHERE t1.a=2 AND t2.a=2 AND t3.a=2 AND t4.a=2 AND t5.a=2;
|
||||
connection default;
|
||||
KILL QUERY $ID1;
|
||||
KILL QUERY $ID2;
|
||||
KILL QUERY $ID3;
|
||||
connection con1;
|
||||
disconnect con1;
|
||||
connection con2;
|
||||
disconnect con2;
|
||||
connection con3;
|
||||
disconnect con3;
|
||||
connection default;
|
||||
DROP FUNCTION p1;
|
||||
DROP TABLE t1,t2,t3,t4,t5,t6;
|
@@ -164,9 +164,6 @@ DELETE FROM parent;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`a`) REFERENCES `parent` (`a`) ON DELETE CASCADE)
|
||||
ALTER TABLE child ADD INDEX(a);
|
||||
DELETE FROM parent;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`a`) REFERENCES `parent` (`a`) ON DELETE CASCADE)
|
||||
ALTER TABLE child FORCE;
|
||||
DELETE FROM parent;
|
||||
DROP TABLE child,parent;
|
||||
SELECT unique_constraint_name FROM information_schema.referential_constraints
|
||||
WHERE table_name = 't2';
|
||||
@@ -1023,6 +1020,23 @@ t2 CREATE TABLE `t2` (
|
||||
CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`) REFERENCES `t1` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
drop tables t2, t1;
|
||||
#
|
||||
# MDEV-29182 Assertion fld->field_no < table->n_v_def failed on cascade
|
||||
#
|
||||
CREATE TABLE t1(a INT PRIMARY KEY, b VARCHAR(3), c INT AS (LENGTH(b)) VIRTUAL,
|
||||
INDEX(c)) ENGINE=InnoDB;
|
||||
CREATE TABLE t2(a INT REFERENCES t1(a) ON UPDATE CASCADE,
|
||||
b INT GENERATED ALWAYS AS(a) VIRTUAL, INDEX(b)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 SET a=1,b='fu';
|
||||
INSERT INTO t2 SET a=1;
|
||||
UPDATE t1 SET a=2,b='bar';
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
2 bar 3
|
||||
SELECT * FROM t2;
|
||||
a b
|
||||
2 2
|
||||
DROP TABLE t2,t1;
|
||||
# End of 10.5 tests
|
||||
#
|
||||
# MDEV-26554 Table-rebuilding DDL on parent table causes crash
|
||||
@@ -1118,6 +1132,56 @@ test.binaries check status OK
|
||||
test.collections check status OK
|
||||
disconnect con1;
|
||||
DROP TABLE binaries, collections;
|
||||
CREATE SCHEMA `#mysql50##mysql50#d-b`;
|
||||
CREATE TABLE `#mysql50##mysql50#d-b`.t1 (a INT PRIMARY KEY, b INT UNIQUE) engine=InnoDB;
|
||||
USE `#mysql50##mysql50#d-b`;
|
||||
CREATE TABLE t2 (a INT PRIMARY KEY, b INT UNIQUE REFERENCES t1(b)) ENGINE=InnoDB;
|
||||
SET STATEMENT foreign_key_checks=0 FOR
|
||||
ALTER TABLE t2 ADD FOREIGN KEY (a) REFERENCES t1(a);
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) NOT NULL,
|
||||
`b` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`a`),
|
||||
UNIQUE KEY `b` (`b`),
|
||||
CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`b`),
|
||||
CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`a`) REFERENCES `t1` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
INSERT INTO t1 SET a=1;
|
||||
INSERT INTO t2 SET a=1;
|
||||
DELETE FROM t1;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`#mysql50#d-b`.`t2`, CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`a`) REFERENCES `t1` (`a`))
|
||||
DELETE FROM t2;
|
||||
DELETE FROM t1;
|
||||
DROP DATABASE `#mysql50##mysql50#d-b`;
|
||||
USE test;
|
||||
#
|
||||
# MDEV-35962 CREATE INDEX fails to heal a FOREIGN KEY constraint
|
||||
#
|
||||
CREATE TABLE t2 (b INT, FOREIGN KEY (b) REFERENCES t1(a)) ENGINE=InnoDB;
|
||||
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
SET STATEMENT foreign_key_checks=0 FOR
|
||||
CREATE TABLE t2 (b INT, FOREIGN KEY (b) REFERENCES t1(a)) ENGINE=InnoDB;
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
SET STATEMENT foreign_key_checks=0 FOR
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (1);
|
||||
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`a`))
|
||||
ALTER TABLE t1 ADD KEY(a), ALGORITHM=NOCOPY;
|
||||
INSERT INTO t2 VALUES (1);
|
||||
DROP INDEX b ON t2;
|
||||
ERROR HY000: Cannot drop index 'b': needed in a foreign key constraint
|
||||
SET STATEMENT foreign_key_checks=0 FOR
|
||||
DROP INDEX b ON t2;
|
||||
DELETE FROM t2;
|
||||
DELETE FROM t1;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`a`))
|
||||
ALTER TABLE t2 ADD KEY(b), ALGORITHM=NOCOPY;
|
||||
DELETE FROM t1;
|
||||
DROP TABLE t2, t1;
|
||||
# End of 10.6 tests
|
||||
CREATE TABLE t1
|
||||
(
|
||||
|
@@ -0,0 +1,57 @@
|
||||
--- foreign_sql_mode.result
|
||||
+++ foreign_sql_mode,COPY,NON-STRICT.rdiff
|
||||
@@ -3,14 +3,14 @@
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL;
|
||||
-ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
INSERT INTO t1 VALUES(1, 1);
|
||||
INSERT INTO t2 VALUES(1);
|
||||
UPDATE t1 SET f2= NULL;
|
||||
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t1` (`f2`) ON UPDATE CASCADE)
|
||||
DELETE FROM t2;
|
||||
SELECT * FROM t1;
|
||||
f1 f2
|
||||
-1 NULL
|
||||
+1 1
|
||||
UPDATE t1 SET f2 = NULL;
|
||||
SELECT * FROM t1;
|
||||
f1 f2
|
||||
@@ -20,7 +20,7 @@
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY(f1) REFERENCES t1(f1) ON UPDATE SET NULL)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL;
|
||||
-ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
+ERROR HY000: Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME' (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
INSERT INTO t1 VALUES(1, 1);
|
||||
INSERT INTO t2 VALUES(1, 1);
|
||||
UPDATE t1 SET f1= 2;
|
||||
@@ -32,7 +32,7 @@
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY (f2) REFERENCES t1(f2) ON DELETE SET NULL)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL;
|
||||
-ERROR HY000: Column 'f2' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
+ERROR HY000: Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME' (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
DROP TABLE t2, t1;
|
||||
# modify parent column NULL ON UPDATE CASCADE child column NOT NULL
|
||||
CREATE TABLE `t#1`(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
@@ -40,11 +40,10 @@
|
||||
FOREIGN KEY(f1) REFERENCES `t#1`(f2)
|
||||
ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
ALTER TABLE `t#1` MODIFY COLUMN f2 INT;
|
||||
-ERROR HY000: Cannot change column 'f2': used in a foreign key constraint 't#2_ibfk_1' of table 'test.t#2'
|
||||
INSERT INTO `t#1` VALUES(1, 1);
|
||||
INSERT INTO `t#2` VALUES(1);
|
||||
UPDATE `t#1` SET f2= NULL;
|
||||
-ERROR 23000: Column 'f2' cannot be null
|
||||
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t#2`, CONSTRAINT `t#2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t#1` (`f2`) ON UPDATE CASCADE)
|
||||
DELETE FROM `t#2`;
|
||||
SELECT * FROM `t#1`;
|
||||
f1 f2
|
||||
@@ -60,6 +59,5 @@
|
||||
PRIMARY KEY(f1, f2),
|
||||
FOREIGN KEY(f2, f3) REFERENCES t1(f2, f1)
|
||||
ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
-ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
DROP TABLE IF EXISTS t2;
|
||||
DROP TABLE IF EXISTS t1;
|
@@ -0,0 +1,55 @@
|
||||
--- foreign_sql_mode.result 2025-01-21 17:23:46.014938931 +0530
|
||||
+++ foreign_sql_mode.reject 2025-01-21 17:24:11.783981181 +0530
|
||||
@@ -3,20 +3,20 @@
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL;
|
||||
-ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
INSERT INTO t1 VALUES(1, 1);
|
||||
INSERT INTO t2 VALUES(1);
|
||||
UPDATE t1 SET f2= NULL;
|
||||
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t1` (`f2`) ON UPDATE CASCADE)
|
||||
DELETE FROM t2;
|
||||
SELECT * FROM t1;
|
||||
f1 f2
|
||||
-1 NULL
|
||||
+1 1
|
||||
DROP TABLE t2, t1;
|
||||
# modify child column NOT NULL ON UPDATE SET NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY(f1) REFERENCES t1(f1) ON UPDATE SET NULL)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL;
|
||||
-ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
+ERROR HY000: Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME' (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
INSERT INTO t1 VALUES(1, 1);
|
||||
INSERT INTO t2 VALUES(1, 1);
|
||||
UPDATE t1 SET f1= 2;
|
||||
@@ -28,7 +28,7 @@
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY (f2) REFERENCES t1(f2) ON DELETE SET NULL)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL;
|
||||
-ERROR HY000: Column 'f2' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
+ERROR HY000: Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME' (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
DROP TABLE t2, t1;
|
||||
# modify parent column NULL ON UPDATE CASCADE child column NOT NULL
|
||||
CREATE TABLE `t#1`(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
@@ -36,11 +36,10 @@
|
||||
FOREIGN KEY(f1) REFERENCES `t#1`(f2)
|
||||
ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
ALTER TABLE `t#1` MODIFY COLUMN f2 INT;
|
||||
-ERROR HY000: Cannot change column 'f2': used in a foreign key constraint 't#2_ibfk_1' of table 'test.t#2'
|
||||
INSERT INTO `t#1` VALUES(1, 1);
|
||||
INSERT INTO `t#2` VALUES(1);
|
||||
UPDATE `t#1` SET f2= NULL;
|
||||
-ERROR 23000: Column 'f2' cannot be null
|
||||
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t#2`, CONSTRAINT `t#2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t#1` (`f2`) ON UPDATE CASCADE)
|
||||
DELETE FROM `t#2`;
|
||||
SELECT * FROM `t#1`;
|
||||
f1 f2
|
||||
@@ -56,6 +55,5 @@
|
||||
PRIMARY KEY(f1, f2),
|
||||
FOREIGN KEY(f2, f3) REFERENCES t1(f2, f1)
|
||||
ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
-ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
DROP TABLE IF EXISTS t2;
|
||||
DROP TABLE IF EXISTS t1;
|
@@ -0,0 +1,39 @@
|
||||
--- foreign_sql_mode.result
|
||||
+++ foreign_sql_mode,INPLACE,NON-STRICT.rdiff
|
||||
@@ -3,14 +3,14 @@
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL;
|
||||
-ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
INSERT INTO t1 VALUES(1, 1);
|
||||
INSERT INTO t2 VALUES(1);
|
||||
UPDATE t1 SET f2= NULL;
|
||||
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t1` (`f2`) ON UPDATE CASCADE)
|
||||
DELETE FROM t2;
|
||||
SELECT * FROM t1;
|
||||
f1 f2
|
||||
-1 NULL
|
||||
+1 1
|
||||
UPDATE t1 SET f2 = NULL;
|
||||
SELECT * FROM t1;
|
||||
f1 f2
|
||||
@@ -40,11 +40,10 @@
|
||||
FOREIGN KEY(f1) REFERENCES `t#1`(f2)
|
||||
ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
ALTER TABLE `t#1` MODIFY COLUMN f2 INT;
|
||||
-ERROR HY000: Cannot change column 'f2': used in a foreign key constraint 't#2_ibfk_1' of table 'test.t#2'
|
||||
INSERT INTO `t#1` VALUES(1, 1);
|
||||
INSERT INTO `t#2` VALUES(1);
|
||||
UPDATE `t#1` SET f2= NULL;
|
||||
-ERROR 23000: Column 'f2' cannot be null
|
||||
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t#2`, CONSTRAINT `t#2_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t#1` (`f2`) ON UPDATE CASCADE)
|
||||
DELETE FROM `t#2`;
|
||||
SELECT * FROM `t#1`;
|
||||
f1 f2
|
||||
@@ -60,6 +59,5 @@
|
||||
PRIMARY KEY(f1, f2),
|
||||
FOREIGN KEY(f2, f3) REFERENCES t1(f2, f1)
|
||||
ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
-ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
DROP TABLE IF EXISTS t2;
|
||||
DROP TABLE IF EXISTS t1;
|
65
mysql-test/suite/innodb/r/foreign_sql_mode.result
Normal file
65
mysql-test/suite/innodb/r/foreign_sql_mode.result
Normal file
@@ -0,0 +1,65 @@
|
||||
call mtr.add_suppression("InnoDB: In ALTER TABLE .* has or is referenced in foreign key constraints which are not compatible with the new table definition.");
|
||||
# modify child column NOT NULL on UPDATE CASCADE..parent column NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL;
|
||||
ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
INSERT INTO t1 VALUES(1, 1);
|
||||
INSERT INTO t2 VALUES(1);
|
||||
UPDATE t1 SET f2= NULL;
|
||||
DELETE FROM t2;
|
||||
SELECT * FROM t1;
|
||||
f1 f2
|
||||
1 NULL
|
||||
UPDATE t1 SET f2 = NULL;
|
||||
SELECT * FROM t1;
|
||||
f1 f2
|
||||
1 NULL
|
||||
DROP TABLE t2, t1;
|
||||
# modify child column NOT NULL ON UPDATE SET NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY(f1) REFERENCES t1(f1) ON UPDATE SET NULL)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL;
|
||||
ERROR HY000: Column 'f1' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
INSERT INTO t1 VALUES(1, 1);
|
||||
INSERT INTO t2 VALUES(1, 1);
|
||||
UPDATE t1 SET f1= 2;
|
||||
SELECT * FROM t2;
|
||||
f1 f2
|
||||
NULL 1
|
||||
DROP TABLE t2, t1;
|
||||
# modify child column NOT NULL ON DELETE SET NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, f2 INT, FOREIGN KEY (f2) REFERENCES t1(f2) ON DELETE SET NULL)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL;
|
||||
ERROR HY000: Column 'f2' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
DROP TABLE t2, t1;
|
||||
# modify parent column NULL ON UPDATE CASCADE child column NOT NULL
|
||||
CREATE TABLE `t#1`(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE `t#2`(f1 INT NOT NULL,
|
||||
FOREIGN KEY(f1) REFERENCES `t#1`(f2)
|
||||
ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
ALTER TABLE `t#1` MODIFY COLUMN f2 INT;
|
||||
ERROR HY000: Cannot change column 'f2': used in a foreign key constraint 't#2_ibfk_1' of table 'test.t#2'
|
||||
INSERT INTO `t#1` VALUES(1, 1);
|
||||
INSERT INTO `t#2` VALUES(1);
|
||||
UPDATE `t#1` SET f2= NULL;
|
||||
ERROR 23000: Column 'f2' cannot be null
|
||||
DELETE FROM `t#2`;
|
||||
SELECT * FROM `t#1`;
|
||||
f1 f2
|
||||
1 1
|
||||
DROP TABLE `t#2`, `t#1`;
|
||||
CREATE TABLE t1(f1 INT NOT NULL AUTO_INCREMENT,
|
||||
f2 INT DEFAULT NULL,
|
||||
PRIMARY KEY(f1),
|
||||
FOREIGN KEY(f2) REFERENCES t1(f1))ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT DEFAULT NULL,
|
||||
PRIMARY KEY(f1, f2),
|
||||
FOREIGN KEY(f2, f3) REFERENCES t1(f2, f1)
|
||||
ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
DROP TABLE IF EXISTS t2;
|
||||
DROP TABLE IF EXISTS t1;
|
@@ -1,15 +1,6 @@
|
||||
DROP TABLE IF EXISTS t1_56228;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'test.t1_56228'
|
||||
DROP TABLE IF EXISTS t2_56228;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'test.t2_56228'
|
||||
DROP FUNCTION IF EXISTS bug56228;
|
||||
Warnings:
|
||||
Note 1305 FUNCTION test.bug56228 does not exist
|
||||
CREATE TEMPORARY TABLE t1_56228(
|
||||
CREATE TABLE t1_56228(
|
||||
c1 iNT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TEMPORARY TABLE t2_56228(
|
||||
CREATE TABLE t2_56228(
|
||||
c1 iNT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE FUNCTION bug56228() RETURNS INT DETERMINISTIC
|
||||
BEGIN
|
||||
@@ -17,14 +8,18 @@ INSERT INTO t1_56228 VALUES(NULL);
|
||||
INSERT INTO t2_56228 VALUES(NULL);
|
||||
INSERT INTO t1_56228 VALUES(NULL);
|
||||
INSERT INTO t2_56228 VALUES(NULL);
|
||||
DROP TEMPORARY TABLE t1_56228;
|
||||
DROP TABLE t1_56228;
|
||||
RETURN 42;
|
||||
END //
|
||||
SELECT bug56228();
|
||||
bug56228()
|
||||
42
|
||||
DROP FUNCTION bug56228;
|
||||
DROP TEMPORARY TABLE t2_56228;
|
||||
DROP TEMPORARY TABLE IF EXISTS t1_56228;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'test.t1_56228'
|
||||
ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger
|
||||
CREATE PROCEDURE bug56228()
|
||||
BEGIN
|
||||
INSERT INTO t1_56228 VALUES(NULL);
|
||||
INSERT INTO t2_56228 VALUES(NULL);
|
||||
INSERT INTO t1_56228 VALUES(NULL);
|
||||
INSERT INTO t2_56228 VALUES(NULL);
|
||||
DROP TABLE t1_56228;
|
||||
END //
|
||||
CALL bug56228();
|
||||
DROP PROCEDURE bug56228;
|
||||
DROP TABLE t2_56228;
|
||||
|
@@ -659,6 +659,8 @@ NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 15000
|
||||
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 16000
|
||||
ALTER TABLE testdb_wl5522.t1 ADD INDEX idx1 (col_1);
|
||||
ALTER TABLE testdb_wl5522.t1 ADD INDEX idx6 (col_1(255));
|
||||
Warnings:
|
||||
Note 1831 Duplicate index `idx6`. This is deprecated and will be disallowed in a future release
|
||||
ALTER TABLE testdb_wl5522.t1 ADD INDEX idx10 (col_10(255));
|
||||
SELECT
|
||||
col_1 = REPEAT("col1_00001",10),
|
||||
|
@@ -3338,3 +3338,9 @@ Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
ALTER TABLE t1 FORCE;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-35723: applying zero offset to null pointer on INSERT
|
||||
#
|
||||
CREATE TABLE t1(c TEXT(1) NOT NULL, INDEX (c)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 SET c='';
|
||||
DROP TABLE t1;
|
||||
|
Reference in New Issue
Block a user