mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge 11.2 into 11.4
This commit is contained in:
18
mysql-test/suite/innodb/r/foreign_null,COPY.rdiff
Normal file
18
mysql-test/suite/innodb/r/foreign_null,COPY.rdiff
Normal file
@ -0,0 +1,18 @@
|
||||
--- foreign_null.result
|
||||
+++ foreign_null,COPY.result
|
||||
@@ -139,6 +139,7 @@
|
||||
ALTER TABLE `t#2` DROP INDEX f1;
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
ALTER TABLE `t#1` MODIFY COLUMN f2 INT;
|
||||
+ERROR HY000: Error on rename of './test/#sql-alter' to './test/t@00231' (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
DROP TABLE `t#2`, `t#1`;
|
||||
# Drop referenced index and modify column
|
||||
CREATE TABLE `t#1`(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
@@ -147,6 +148,7 @@
|
||||
ALTER TABLE `t#1` DROP INDEX f2;
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
ALTER TABLE `t#2` MODIFY COLUMN f1 INT NOT NULL;
|
||||
+ERROR HY000: Error on rename of './test/#sql-alter' to './test/t@00232' (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
DROP TABLE `t#2`, `t#1`;
|
||||
# Self referential modifying column
|
||||
CREATE TABLE t1(f1 INT, f2 INT, index(f2), foreign key(f1) references t1(f2) ON UPDATE CASCADE)engine=innodb;
|
156
mysql-test/suite/innodb/r/foreign_null.result
Normal file
156
mysql-test/suite/innodb/r/foreign_null.result
Normal file
@ -0,0 +1,156 @@
|
||||
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
|
||||
DROP TABLE t2, t1;
|
||||
# modify child column NOT NULL ON DELETE 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 DELETE CASCADE)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f1 INT NOT 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
|
||||
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 child column NOT NULL ON UPDATE RESTRICT..parent column 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 UPDATE RESTRICT)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL;
|
||||
DROP TABLE t2, t1;
|
||||
# modify child column NOT NULL ON DELETE RESTRICT..parent column 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 RESTRICT)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL;
|
||||
DROP TABLE t2, t1;
|
||||
# modify child column NOT NULL ON UPDATE NO ACTION..PARENT COLUMN 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 UPDATE NO ACTION)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL;
|
||||
DROP TABLE t2, t1;
|
||||
# modify child column NOT NULL ON DELETE NO ACTION..PARENT COLUMN 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 NO ACTION)ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY COLUMN f2 INT NOT 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'
|
||||
DROP TABLE `t#2`, `t#1`;
|
||||
# modify parent column NULL ON DELETE CASCADE child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON DELETE CASCADE)ENGINE=InnoDB;
|
||||
ALTER TABLE t1 MODIFY COLUMN f2 INT;
|
||||
DROP TABLE t2, t1;
|
||||
# modify parent column NULL ON UPDATE SET NULL child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE SET NULL)ENGINE=InnoDB;
|
||||
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
DROP TABLE t1;
|
||||
# modify parent column NULL ON DELETE SET NULL child NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON DELETE SET NULL)ENGINE=InnoDB;
|
||||
ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
DROP TABLE t1;
|
||||
# modify parent column NULL ON UPDATE RESTRICT child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE RESTRICT)ENGINE=InnoDB;
|
||||
ALTER TABLE t1 MODIFY COLUMN f2 INT;
|
||||
DROP TABLE t2, t1;
|
||||
# modify parent column NULL ON DELETE RESTRICT child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE RESTRICT)ENGINE=InnoDB;
|
||||
ALTER TABLE t1 MODIFY COLUMN f2 INT;
|
||||
DROP TABLE t2, t1;
|
||||
# modify parent column NULL ON UPDATE NO ACTION child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE NO ACTION)ENGINE=InnoDB;
|
||||
ALTER TABLE t1 MODIFY COLUMN f2 INT;
|
||||
DROP TABLE t2, t1;
|
||||
# modify parent column NULL ON DELETE NO ACTION child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON DELETE NO ACTION)ENGINE=InnoDB;
|
||||
ALTER TABLE t1 MODIFY COLUMN f2 INT;
|
||||
DROP TABLE t2, t1;
|
||||
# foreign key constraint for multiple columns
|
||||
# modify parent column NULL ON UPDATE CASCADE child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
INDEX(f1, f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
INDEX(f1, f2),
|
||||
FOREIGN KEY(f1, f2) REFERENCES t1(f1, f2) ON
|
||||
UPDATE CASCADE)ENGINE=InnoDB;
|
||||
ALTER TABLE t1 MODIFY COLUMN f1 INT;
|
||||
ERROR HY000: Cannot change column 'f1': used in a foreign key constraint 't2_ibfk_1' of table 'test.t2'
|
||||
DROP TABLE t2, t1;
|
||||
# modify child column NOT NULL ON UPDATE CASCADE parent column NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT, INDEX(f1, f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, f2 INT, INDEX(f1, f2),
|
||||
FOREIGN KEY(f1, f2) REFERENCES t1(f1, f2) ON
|
||||
UPDATE CASCADE)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;
|
||||
# allow foreign key constraints when parent table created later
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
CREATE TABLE t2(f1 INT, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL;
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
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)
|
||||
SELECT * FROM t2;
|
||||
f1
|
||||
1
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
UPDATE t1 SET f2= NULL;
|
||||
SELECT * FROM t2;
|
||||
f1
|
||||
1
|
||||
DROP TABLE t2, t1;
|
||||
# Modify column + Drop column & Drop foreign key constraint
|
||||
CREATE TABLE t1(f1 INT, f2 INT, KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, f2 INT, f3 INT,
|
||||
FOREIGN KEY fdx(f2) REFERENCES t1(f1),
|
||||
FOREIGN KEY fdx2(f3) REFERENCES t1(f2))ENGINE=InnoDB;
|
||||
ALTER TABLE t2 MODIFY f2 INT NOT NULL, DROP FOREIGN KEY fdx;
|
||||
ALTER TABLE t2 ADD FOREIGN KEY fdx (f2) REFERENCES t1(f1);
|
||||
ALTER TABLE t2 DROP COLUMN f2, DROP FOREIGN KEY fdx;
|
||||
DROP TABLE t2, t1;
|
||||
# Drop foreign index & modify column
|
||||
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;
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
ALTER TABLE `t#2` DROP INDEX f1;
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
ALTER TABLE `t#1` MODIFY COLUMN f2 INT;
|
||||
DROP TABLE `t#2`, `t#1`;
|
||||
# Drop referenced index and modify column
|
||||
CREATE TABLE `t#1`(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE `t#2`(f1 INT, FOREIGN KEY(f1) REFERENCES `t#1`(f2) ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
ALTER TABLE `t#1` DROP INDEX f2;
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
ALTER TABLE `t#2` MODIFY COLUMN f1 INT NOT NULL;
|
||||
DROP TABLE `t#2`, `t#1`;
|
||||
# Self referential modifying column
|
||||
CREATE TABLE t1(f1 INT, f2 INT, index(f2), foreign key(f1) references t1(f2) ON UPDATE CASCADE)engine=innodb;
|
||||
ALTER TABLE t1 MODIFY COLUMN f2 INT NOT NULL;
|
||||
ALTER TABLE t1 MODIFY COLUMN f1 INT NOT NULL;
|
||||
ALTER TABLE t1 MODIFY COLUMN f1 INT;
|
||||
DROP TABLE t1;
|
@ -1,3 +1,5 @@
|
||||
SET @save_adaptive=@@GLOBAL.innodb_adaptive_hash_index;
|
||||
SET GLOBAL innodb_adaptive_hash_index=ON;
|
||||
call mtr.add_suppression("InnoDB: Added system generated FTS_DOC_ID and FTS_DOC_ID_INDEX while importing the tablespace");
|
||||
CREATE TABLE t1(f1 INT NOT NULL PRIMARY KEY,
|
||||
f2 CHAR(2) not null, fulltext f_idx(f2),
|
||||
@ -9,7 +11,7 @@ INSERT INTO t1(f1, f2) SELECT seq, "si" FROM seq_2_to_256;
|
||||
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
|
||||
ALTER TABLE t1 DROP COLUMN f6;
|
||||
ALTER TABLE t1 DROP INDEX f_idx;
|
||||
connect con1,localhost,root,,;
|
||||
connect block_purge,localhost,root,,;
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
connection default;
|
||||
DELETE FROM t1 WHERE f1 > 1;
|
||||
@ -22,6 +24,7 @@ UNLOCK TABLES;
|
||||
Warnings:
|
||||
Warning 1235 This version of MariaDB doesn't yet support 'FLUSH TABLES on a table that had an FTS index, created on a hidden column, the auxiliary tables haven't been dropped as yet. FTS auxiliary tables will not be flushed.'
|
||||
DROP TABLE t1;
|
||||
disconnect block_purge;
|
||||
CREATE TABLE t1(f1 INT NOT NULL PRIMARY KEY,
|
||||
f2 CHAR(2) not null,
|
||||
f3 INT as (f1) VIRTUAL, INDEX(f3),
|
||||
@ -43,3 +46,4 @@ t1 CREATE TABLE `t1` (
|
||||
KEY `f4` (`f4`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL innodb_adaptive_hash_index=@save_adaptive;
|
||||
|
@ -455,11 +455,11 @@ ERROR HY000: Cannot drop index 'b': needed in a foreign key constraint
|
||||
alter table t2 drop index b, drop index c, drop index d;
|
||||
ERROR HY000: Cannot drop index 'b': needed in a foreign key constraint
|
||||
alter table t2 MODIFY b INT NOT NULL, ALGORITHM=COPY;
|
||||
ERROR HY000: Cannot change column 'b': used in a foreign key constraint 't2_ibfk_1'
|
||||
ERROR HY000: Column 'b' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
set @old_sql_mode = @@sql_mode;
|
||||
set @@sql_mode = 'STRICT_TRANS_TABLES';
|
||||
alter table t2 MODIFY b INT NOT NULL, ALGORITHM=INPLACE;
|
||||
ERROR HY000: Column 'b' cannot be NOT NULL: needed in a foreign key constraint 'test/t2_ibfk_1' SET NULL
|
||||
ERROR HY000: Column 'b' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
set @@sql_mode = @old_sql_mode;
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
alter table t2 DROP COLUMN b, ALGORITHM=COPY;
|
||||
@ -480,10 +480,10 @@ info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
set @@sql_mode = 'STRICT_TRANS_TABLES';
|
||||
alter table t2 add primary key (alpha), change a alpha int,
|
||||
change b beta int not null, change c charlie int not null;
|
||||
ERROR HY000: Column 'b' cannot be NOT NULL: needed in a foreign key constraint 'test/t2_ibfk_1' SET NULL
|
||||
ERROR HY000: Column 'b' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
alter table t2 add primary key (alpha), change a alpha int,
|
||||
change c charlie int not null, change d delta int not null;
|
||||
ERROR HY000: Column 'd' cannot be NOT NULL: needed in a foreign key constraint 'test/t2_ibfk_3' SET NULL
|
||||
ERROR HY000: Column 'd' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_3' SET NULL
|
||||
alter table t2 add primary key (alpha), change a alpha int,
|
||||
change b beta int, modify c int not null;
|
||||
affected rows: 0
|
||||
|
@ -3072,7 +3072,7 @@ ALTER TABLE t2 ADD FOREIGN KEY (a) REFERENCES t1 (a) ON DELETE SET NULL;
|
||||
set @old_sql_mode = @@sql_mode;
|
||||
set @@sql_mode = 'STRICT_TRANS_TABLES';
|
||||
ALTER TABLE t2 MODIFY a INT NOT NULL;
|
||||
ERROR HY000: Column 'a' cannot be NOT NULL: needed in a foreign key constraint 'test/t2_ibfk_1' SET NULL
|
||||
ERROR HY000: Column 'a' cannot be NOT NULL: needed in a foreign key constraint 't2_ibfk_1' SET NULL
|
||||
set @@sql_mode = @old_sql_mode;
|
||||
DELETE FROM t1;
|
||||
DROP TABLE t2,t1;
|
||||
|
@ -19,6 +19,12 @@ SHOW VARIABLES LIKE 'innodb_log_file_size';
|
||||
Variable_name Value
|
||||
innodb_log_file_size 4194304
|
||||
FOUND 1 /InnoDB: Resized log to 4\.000MiB/ in mysqld.1.err
|
||||
SET @save=@@GLOBAL.innodb_log_file_buffering;
|
||||
SET GLOBAL innodb_log_file_buffering=OFF;
|
||||
SET GLOBAL innodb_log_file_buffering=ON;
|
||||
SET GLOBAL innodb_log_file_buffering=@save;
|
||||
SET GLOBAL innodb_log_file_mmap=OFF;
|
||||
Got one of the listed errors
|
||||
SET GLOBAL innodb_log_file_size=5242880;
|
||||
connect con1,localhost,root;
|
||||
UPDATE t SET b='' WHERE a<10;
|
||||
|
@ -116,6 +116,29 @@ t12963823 CREATE TABLE `t12963823` (
|
||||
KEY `ndx_o` (`o`(500)),
|
||||
KEY `ndx_p` (`p`(500))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=DYNAMIC
|
||||
BEGIN NOT ATOMIC
|
||||
DECLARE c TEXT DEFAULT(SELECT CONCAT('CREATE TABLE t1(c',
|
||||
GROUP_CONCAT(seq SEPARATOR
|
||||
' INT DEFAULT 0, c'),
|
||||
' INT DEFAULT 0, PRIMARY KEY(c',
|
||||
GROUP_CONCAT(seq SEPARATOR ', c'),
|
||||
')) ENGINE=InnoDB;') FROM seq_1_to_33);
|
||||
EXECUTE IMMEDIATE c;
|
||||
END;
|
||||
$$
|
||||
ERROR 42000: Too many key parts specified; max 32 parts allowed
|
||||
BEGIN NOT ATOMIC
|
||||
DECLARE c TEXT DEFAULT(SELECT CONCAT('CREATE TABLE t1(c',
|
||||
GROUP_CONCAT(seq SEPARATOR
|
||||
' INT DEFAULT 0, c'),
|
||||
' INT DEFAULT 0, PRIMARY KEY(c',
|
||||
GROUP_CONCAT(seq SEPARATOR ', c'),
|
||||
')) ENGINE=InnoDB;') FROM seq_1_to_32);
|
||||
EXECUTE IMMEDIATE c;
|
||||
END;
|
||||
$$
|
||||
INSERT INTO t1() VALUES();
|
||||
InnoDB 0 transactions not purged
|
||||
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t1_purge, t2_purge, t3_purge, t4_purge, t12637786, t12963823;
|
||||
|
@ -82,4 +82,22 @@ WHERE database_name='test' AND table_name='t1' AND stat_name='size';
|
||||
TIMESTAMPDIFF(DAY,last_update,now())<=1
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-34207: ALTER TABLE...STATS_PERSISTENT=0 fails to drop statistics
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=InnoDB STATS_PERSISTENT 1;
|
||||
ALTER TABLE t1 STATS_PERSISTENT 0;
|
||||
DROP TABLE t1;
|
||||
SET @save_persistent=@@GLOBAL.innodb_stats_persistent;
|
||||
SET GLOBAL innodb_stats_persistent=1;
|
||||
CREATE TABLE t2 (c1 INT) ENGINE=InnoDB;
|
||||
RENAME TABLE t2 TO t1;
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL innodb_stats_persistent=0;
|
||||
CREATE TABLE t2 (c1 INT) ENGINE=InnoDB STATS_PERSISTENT 1;
|
||||
RENAME TABLE t2 TO t1;
|
||||
SET GLOBAL innodb_stats_persistent=@save_persistent;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=InnoDB STATS_PERSISTENT 1;
|
||||
DROP TABLE t1;
|
||||
# End of 10.6 tests
|
||||
|
@ -4,7 +4,9 @@
|
||||
--source include/have_debug_sync.inc
|
||||
--source include/not_embedded.inc
|
||||
|
||||
--disable_cursor_protocol
|
||||
select count_star into @init_count from performance_schema.events_waits_summary_global_by_event_name WHERE event_name LIKE '%wait%io%file%innodb%innodb_temp_file%';
|
||||
--enable_cursor_protocol
|
||||
connect (ddl, localhost, root,,);
|
||||
update performance_schema.setup_instruments set enabled='yes';
|
||||
update performance_schema.setup_consumers set enabled='yes';
|
||||
@ -26,7 +28,9 @@ send ALTER TABLE t1 ADD INDEX(b), ALGORITHM=INPLACE;
|
||||
connection default;
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR go';
|
||||
|
||||
--disable_cursor_protocol
|
||||
select count_star into @final_count from performance_schema.events_waits_summary_global_by_event_name WHERE event_name LIKE '%wait%io%file%innodb%innodb_temp_file%';
|
||||
--enable_cursor_protocol
|
||||
|
||||
SELECT @final_count - @init_count;
|
||||
|
||||
|
2
mysql-test/suite/innodb/t/foreign_null.combinations
Normal file
2
mysql-test/suite/innodb/t/foreign_null.combinations
Normal file
@ -0,0 +1,2 @@
|
||||
[COPY]
|
||||
[INPLACE]
|
225
mysql-test/suite/innodb/t/foreign_null.test
Normal file
225
mysql-test/suite/innodb/t/foreign_null.test
Normal file
@ -0,0 +1,225 @@
|
||||
--source include/have_innodb.inc
|
||||
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.");
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
let $algorithm=`select regexp_replace('$MTR_COMBINATIONS', 'innodb,\|,innodb', '')`;
|
||||
|
||||
--echo # 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;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
--error ER_FK_COLUMN_NOT_NULL
|
||||
eval ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # modify child column NOT NULL ON DELETE 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 DELETE CASCADE)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # 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;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
--error ER_FK_COLUMN_NOT_NULL
|
||||
eval ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # 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;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
--error ER_FK_COLUMN_NOT_NULL
|
||||
eval ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # modify child column NOT NULL ON UPDATE RESTRICT..parent column 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 UPDATE RESTRICT)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # modify child column NOT NULL ON DELETE RESTRICT..parent column 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 RESTRICT)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # modify child column NOT NULL ON UPDATE NO ACTION..PARENT COLUMN 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 UPDATE NO ACTION)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # modify child column NOT NULL ON DELETE NO ACTION..PARENT COLUMN 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 NO ACTION)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # 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;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
--error ER_FK_COLUMN_CANNOT_CHANGE_CHILD
|
||||
eval ALTER TABLE `t#1` MODIFY COLUMN f2 INT,ALGORITHM=$algorithm;
|
||||
DROP TABLE `t#2`, `t#1`;
|
||||
|
||||
--echo # modify parent column NULL ON DELETE CASCADE child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON DELETE CASCADE)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t1 MODIFY COLUMN f2 INT,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # modify parent column NULL ON UPDATE SET NULL child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE SET NULL)ENGINE=InnoDB;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # modify parent column NULL ON DELETE SET NULL child NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON DELETE SET NULL)ENGINE=InnoDB;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # modify parent column NULL ON UPDATE RESTRICT child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE RESTRICT)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t1 MODIFY COLUMN f2 INT,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # modify parent column NULL ON DELETE RESTRICT child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE RESTRICT)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t1 MODIFY COLUMN f2 INT,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # modify parent column NULL ON UPDATE NO ACTION child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE NO ACTION)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t1 MODIFY COLUMN f2 INT,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # modify parent column NULL ON DELETE NO ACTION child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT NOT NULL, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, FOREIGN KEY(f1) REFERENCES t1(f2) ON DELETE NO ACTION)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t1 MODIFY COLUMN f2 INT,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # foreign key constraint for multiple columns
|
||||
--echo # modify parent column NULL ON UPDATE CASCADE child column NOT NULL
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
INDEX(f1, f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
INDEX(f1, f2),
|
||||
FOREIGN KEY(f1, f2) REFERENCES t1(f1, f2) ON
|
||||
UPDATE CASCADE)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
--error ER_FK_COLUMN_CANNOT_CHANGE_CHILD
|
||||
eval ALTER TABLE t1 MODIFY COLUMN f1 INT,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # modify child column NOT NULL ON UPDATE CASCADE parent column NULL
|
||||
CREATE TABLE t1(f1 INT, f2 INT, INDEX(f1, f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, f2 INT, INDEX(f1, f2),
|
||||
FOREIGN KEY(f1, f2) REFERENCES t1(f1, f2) ON
|
||||
UPDATE CASCADE)ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
--error ER_FK_COLUMN_NOT_NULL
|
||||
eval ALTER TABLE t2 MODIFY COLUMN f2 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # allow foreign key constraints when parent table created later
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
CREATE TABLE t2(f1 INT, FOREIGN KEY(f1) REFERENCES t1(f2) ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
ALTER TABLE t2 MODIFY COLUMN f1 INT NOT NULL;
|
||||
CREATE TABLE t1(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(1, 1);
|
||||
INSERT INTO t2 VALUES(1);
|
||||
--error ER_ROW_IS_REFERENCED_2
|
||||
UPDATE t1 SET f2= NULL;
|
||||
SELECT * FROM t2;
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
UPDATE t1 SET f2= NULL;
|
||||
SELECT * FROM t2;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # Modify column + Drop column & Drop foreign key constraint
|
||||
CREATE TABLE t1(f1 INT, f2 INT, KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT, f2 INT, f3 INT,
|
||||
FOREIGN KEY fdx(f2) REFERENCES t1(f1),
|
||||
FOREIGN KEY fdx2(f3) REFERENCES t1(f2))ENGINE=InnoDB;
|
||||
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t2 MODIFY f2 INT NOT NULL, DROP FOREIGN KEY fdx,ALGORITHM=$algorithm;
|
||||
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t2 ADD FOREIGN KEY fdx (f2) REFERENCES t1(f1),ALGORITHM=$algorithm;
|
||||
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t2 DROP COLUMN f2, DROP FOREIGN KEY fdx,ALGORITHM=$algorithm;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo # Drop foreign index & modify column
|
||||
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;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE `t#2` DROP INDEX f1,ALGORITHM=$algorithm;
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
|
||||
let $error_code=0;
|
||||
if ($algorithm == "COPY")
|
||||
{
|
||||
let $error_code= ER_ERROR_ON_RENAME;
|
||||
}
|
||||
|
||||
--replace_regex /#sql-alter-[0-9a-f_\-]*/#sql-alter/
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '' $MYSQLD_DATADIR ./;
|
||||
--error $error_code
|
||||
eval ALTER TABLE `t#1` MODIFY COLUMN f2 INT,ALGORITHM=$algorithm;
|
||||
DROP TABLE `t#2`, `t#1`;
|
||||
|
||||
--echo # Drop referenced index and modify column
|
||||
CREATE TABLE `t#1`(f1 INT, f2 INT, PRIMARY KEY(f1), KEY(f2))ENGINE=InnoDB;
|
||||
CREATE TABLE `t#2`(f1 INT, FOREIGN KEY(f1) REFERENCES `t#1`(f2) ON UPDATE CASCADE)ENGINE=InnoDB;
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE `t#1` DROP INDEX f2,ALGORITHM=$algorithm;
|
||||
SET FOREIGN_KEY_CHECKS=1;
|
||||
|
||||
--replace_regex /#sql-alter-[0-9a-f_\-]*/#sql-alter/
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '' $MYSQLD_DATADIR ./;
|
||||
--error $error_code
|
||||
eval ALTER TABLE `t#2` MODIFY COLUMN f1 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
DROP TABLE `t#2`, `t#1`;
|
||||
|
||||
--echo # Self referential modifying column
|
||||
CREATE TABLE t1(f1 INT, f2 INT, index(f2), foreign key(f1) references t1(f2) ON UPDATE CASCADE)engine=innodb;
|
||||
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t1 MODIFY COLUMN f2 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t1 MODIFY COLUMN f1 INT NOT NULL,ALGORITHM=$algorithm;
|
||||
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t1 MODIFY COLUMN f1 INT,ALGORITHM=$algorithm;
|
||||
DROP TABLE t1;
|
@ -14,10 +14,12 @@ CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) ENGINE=innodb;
|
||||
# So concurrent insert won't happen on the table
|
||||
INSERT INTO t1 VALUES(100);
|
||||
|
||||
--disable_cursor_protocol
|
||||
SELECT variable_value INTO @commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_commits';
|
||||
SELECT variable_value INTO @group_commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_group_commits';
|
||||
--enable_cursor_protocol
|
||||
|
||||
connect(con1,localhost,root,,);
|
||||
connect(con2,localhost,root,,);
|
||||
|
@ -14,10 +14,12 @@ CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) ENGINE=innodb;
|
||||
# So concurrent insert won't happen on the table
|
||||
INSERT INTO t1 VALUES("default");
|
||||
|
||||
--disable_cursor_protocol
|
||||
SELECT variable_value INTO @commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_commits';
|
||||
SELECT variable_value INTO @group_commits FROM information_schema.global_status
|
||||
WHERE variable_name = 'binlog_group_commits';
|
||||
--enable_cursor_protocol
|
||||
|
||||
connect(con1,localhost,root,,);
|
||||
connect(con2,localhost,root,,);
|
||||
|
@ -1,5 +1,11 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_sequence.inc
|
||||
|
||||
--error 0,ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
SET @save_adaptive=@@GLOBAL.innodb_adaptive_hash_index;
|
||||
--error 0,ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
SET GLOBAL innodb_adaptive_hash_index=ON;
|
||||
|
||||
# Table with virtual, fulltext, instant add, instant drop column
|
||||
# and purgeable rows
|
||||
call mtr.add_suppression("InnoDB: Added system generated FTS_DOC_ID and FTS_DOC_ID_INDEX while importing the tablespace");
|
||||
@ -13,7 +19,7 @@ INSERT INTO t1(f1, f2) SELECT seq, "si" FROM seq_2_to_256;
|
||||
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
|
||||
ALTER TABLE t1 DROP COLUMN f6;
|
||||
ALTER TABLE t1 DROP INDEX f_idx;
|
||||
connect(con1,localhost,root,,);
|
||||
connect(block_purge,localhost,root,,);
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
|
||||
connection default;
|
||||
@ -26,6 +32,7 @@ ib_backup_tablespaces("test", "t1");
|
||||
EOF
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1;
|
||||
disconnect block_purge;
|
||||
|
||||
CREATE TABLE t1(f1 INT NOT NULL PRIMARY KEY,
|
||||
f2 CHAR(2) not null,
|
||||
@ -44,3 +51,5 @@ ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
--enable_warnings
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
--error 0,ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
SET GLOBAL innodb_adaptive_hash_index=@save_adaptive;
|
||||
|
@ -167,7 +167,7 @@ alter table t4 drop index d;
|
||||
alter table t2 drop index b;
|
||||
--error ER_DROP_INDEX_FK
|
||||
alter table t2 drop index b, drop index c, drop index d;
|
||||
--error ER_FK_COLUMN_CANNOT_CHANGE
|
||||
--error ER_FK_COLUMN_NOT_NULL
|
||||
alter table t2 MODIFY b INT NOT NULL, ALGORITHM=COPY;
|
||||
# NULL -> NOT NULL only allowed INPLACE if strict sql_mode is on.
|
||||
set @old_sql_mode = @@sql_mode;
|
||||
@ -1187,8 +1187,10 @@ DROP TABLE t;
|
||||
--echo #
|
||||
CREATE TABLE t1 (a VARCHAR(8), PRIMARY KEY(a DESC)) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 RENAME COLUMN a TO b, ALGORITHM=INPLACE;
|
||||
--disable_cursor_protocol
|
||||
SELECT TABLE_ID INTO @table_id FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME="test/t1";
|
||||
SELECT INDEX_ID INTO @index_id FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES WHERE TABLE_ID = @table_id;
|
||||
--enable_cursor_protocol
|
||||
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS WHERE INDEX_ID=@index_id;
|
||||
DROP TABLE t1;
|
||||
|
||||
@ -1217,8 +1219,10 @@ DROP TABLE t1;
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY, a CHAR(8), b INT, KEY(a DESC,b)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1,'foo',10);
|
||||
ALTER TABLE t1 RENAME COLUMN b TO c, ALGORITHM=INPLACE;
|
||||
--disable_cursor_protocol
|
||||
SELECT TABLE_ID INTO @table_id FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME="test/t1";
|
||||
SELECT INDEX_ID INTO @index_id FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES WHERE TABLE_ID = @table_id ORDER BY INDEX_ID DESC LIMIT 1;
|
||||
--enable_cursor_protocol
|
||||
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_SYS_FIELDS WHERE INDEX_ID=@index_id;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
@ -6,8 +6,9 @@
|
||||
|
||||
SET @save_compression_algorithm=@@GLOBAL.innodb_compression_algorithm;
|
||||
SET GLOBAL innodb_compression_algorithm=0;
|
||||
--disable_cursor_protocol
|
||||
SELECT VARIABLE_VALUE INTO @compress_errors FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_num_pages_page_compression_error';
|
||||
|
||||
--enable_cursor_protocol
|
||||
|
||||
CREATE TABLE t (c INT) page_compressed=1 page_compression_level=4 ENGINE=InnoDB;
|
||||
INSERT INTO t VALUES (1);
|
||||
|
@ -13,10 +13,12 @@ LET $INNODB_PAGE_SIZE = `select @@innodb_page_size`;
|
||||
# The IDs of mysql.innodb_table_stats and mysql.innodb_index_stats may
|
||||
# vary depending on whether the tables have been rebuilt
|
||||
# by previously run tests.
|
||||
--disable_cursor_protocol
|
||||
SELECT table_id INTO @table_stats_id FROM information_schema.innodb_sys_tables
|
||||
WHERE name = 'mysql/innodb_table_stats';
|
||||
SELECT table_id INTO @index_stats_id FROM information_schema.innodb_sys_tables
|
||||
WHERE name = 'mysql/innodb_index_stats';
|
||||
--enable_cursor_protocol
|
||||
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
|
||||
WHERE table_id NOT IN (@table_stats_id, @index_stats_id) ORDER BY table_id;
|
||||
|
@ -30,8 +30,10 @@ ENGINE=INNODB;
|
||||
SELECT PAGE_NUMBER FROM information_schema.innodb_buffer_page_lru
|
||||
WHERE table_name = '`test`.`ib_bp_test`';
|
||||
|
||||
--disable_cursor_protocol
|
||||
SELECT SPACE INTO @space FROM information_schema.innodb_buffer_page_lru
|
||||
WHERE table_name = '`test`.`ib_bp_test`' AND PAGE_NUMBER=3;
|
||||
--enable_cursor_protocol
|
||||
|
||||
let SPACE=`SELECT @space`;
|
||||
|
||||
|
@ -22,11 +22,13 @@ let $wait_condition =
|
||||
WHERE INFO="UPDATE bug51920 SET i=2";
|
||||
-- source include/wait_condition.inc
|
||||
|
||||
--disable_cursor_protocol
|
||||
--enable_prepare_warnings
|
||||
SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE INFO="UPDATE bug51920 SET i=2"
|
||||
INTO @thread_id;
|
||||
--disable_prepare_warnings
|
||||
--enable_cursor_protocol
|
||||
|
||||
KILL @thread_id;
|
||||
let $wait_condition =
|
||||
|
@ -21,15 +21,19 @@ SET GLOBAL innodb_fast_shutdown = 0;
|
||||
--source include/restart_mysqld.inc
|
||||
let $status=`SHOW ENGINE INNODB STATUS`;
|
||||
|
||||
--disable_cursor_protocol
|
||||
SELECT CAST(variable_value AS INTEGER) INTO @read1
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
|
||||
WHERE VARIABLE_NAME='innodb_buffer_pool_read_requests';
|
||||
--enable_cursor_protocol
|
||||
|
||||
select * from t1;
|
||||
|
||||
--disable_cursor_protocol
|
||||
SELECT CAST(variable_value AS INTEGER) INTO @read2
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
|
||||
WHERE VARIABLE_NAME='innodb_buffer_pool_read_requests';
|
||||
--enable_cursor_protocol
|
||||
|
||||
SELECT @read1>0, @read2>@read1;
|
||||
|
||||
|
@ -625,7 +625,9 @@ CREATE TABLE t2 (a INT, b INT,
|
||||
--echo # set up our data elements
|
||||
INSERT INTO t1 (d) VALUES (1);
|
||||
INSERT INTO t2 (a,b) VALUES (1,1);
|
||||
--disable_cursor_protocol
|
||||
SELECT SECOND(c) INTO @bug47453 FROM t2;
|
||||
--enable_cursor_protocol
|
||||
|
||||
SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a;
|
||||
UPDATE t1 JOIN t2 ON d=a SET b=1 WHERE a=1;
|
||||
|
@ -99,8 +99,10 @@ ANALYZE TABLE bug12429573;
|
||||
# innodb_index_stats have been updated to the same value. If the bug is
|
||||
# present this check will fail.
|
||||
|
||||
--disable_cursor_protocol
|
||||
SELECT last_update INTO @last FROM mysql.innodb_table_stats
|
||||
WHERE table_name = 'bug12429573';
|
||||
--enable_cursor_protocol
|
||||
SELECT * FROM mysql.innodb_index_stats
|
||||
WHERE table_name = 'bug12429573' AND last_update!=@last;
|
||||
|
||||
|
@ -560,9 +560,11 @@ DROP TABLE t;
|
||||
--echo #
|
||||
CREATE TABLE t (id INT) ENGINE=InnoDB;
|
||||
--replace_result $MYSQLTEST_VARDIR VARDIR
|
||||
--disable_cursor_protocol
|
||||
--disable_ps2_protocol
|
||||
eval select 1 into outfile "$MYSQLTEST_VARDIR/tmp/t.outfile";
|
||||
--enable_ps2_protocol
|
||||
--enable_cursor_protocol
|
||||
BEGIN;
|
||||
--replace_result $MYSQLTEST_VARDIR VARDIR
|
||||
eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/tmp/t.outfile' INTO TABLE t;
|
||||
|
@ -808,18 +808,24 @@ SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
eval CREATE TABLE t1 (t TINYINT PRIMARY KEY, m MEDIUMINT UNIQUE) $engine;
|
||||
--disable_cursor_protocol
|
||||
SELECT table_id INTO @table_id1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
|
||||
WHERE name = 'test/t1';
|
||||
--enable_cursor_protocol
|
||||
INSERT INTO t1 VALUES (-42, -123456);
|
||||
--enable_info
|
||||
ALTER TABLE t1 CHANGE t s SMALLINT;
|
||||
--disable_cursor_protocol
|
||||
SELECT table_id INTO @table_id2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
|
||||
WHERE name = 'test/t1';
|
||||
--enable_cursor_protocol
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
||||
ALTER TABLE t1 CHANGE m i INT, ALGORITHM=INSTANT;
|
||||
ALTER TABLE t1 CHANGE m i INT;
|
||||
--disable_cursor_protocol
|
||||
SELECT table_id INTO @table_id3 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
|
||||
WHERE name = 'test/t1';
|
||||
--enable_cursor_protocol
|
||||
--disable_info
|
||||
SELECT @table_id1 = @table_id2, @table_id2 = @table_id3;
|
||||
INSERT IGNORE INTO t1 VALUES (0, -123456);
|
||||
|
@ -129,9 +129,11 @@ INSERT INTO t1 (f1,f2,f3,f4,f5,f6,f7,f8) VALUES
|
||||
INSERT INTO t1 (f1,f2,f3,f4,f5,f6,f7,f8) VALUES ('impact', 'b', 'h', 185, 'fj', 7, 7, 3);
|
||||
|
||||
ALTER TABLE t1 ADD COLUMN filler VARCHAR(255) DEFAULT '';
|
||||
--disable_cursor_protocol
|
||||
--disable_ps2_protocol
|
||||
SELECT * INTO OUTFILE 'load.data' FROM t1;
|
||||
--enable_ps2_protocol
|
||||
--enable_cursor_protocol
|
||||
UPDATE IGNORE t1 SET pk = 0;
|
||||
LOAD DATA INFILE 'load.data' REPLACE INTO TABLE t1;
|
||||
HANDLER t1 OPEN AS h;
|
||||
|
@ -25,6 +25,17 @@ SHOW VARIABLES LIKE 'innodb_log_file_size';
|
||||
let SEARCH_PATTERN = InnoDB: Resized log to 4\\.000MiB;
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--error 0,ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
SET @save=@@GLOBAL.innodb_log_file_buffering;
|
||||
--error 0,ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
SET GLOBAL innodb_log_file_buffering=OFF;
|
||||
--error 0,ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
SET GLOBAL innodb_log_file_buffering=ON;
|
||||
--error 0,ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
SET GLOBAL innodb_log_file_buffering=@save;
|
||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR,ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
SET GLOBAL innodb_log_file_mmap=OFF;
|
||||
|
||||
send SET GLOBAL innodb_log_file_size=5242880;
|
||||
|
||||
--connect con1,localhost,root
|
||||
|
@ -24,9 +24,11 @@ SET GLOBAL innodb_limit_optimistic_insert_debug=@save_limit;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--disable_cursor_protocol
|
||||
SELECT CAST(VARIABLE_VALUE AS INTEGER) INTO @dirty_prev
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
|
||||
WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty';
|
||||
--enable_cursor_protocol
|
||||
|
||||
set debug_dbug="d,trigger_garbage_collection";
|
||||
SET GLOBAL innodb_buffer_pool_size=@@innodb_buffer_pool_size;
|
||||
|
@ -1,5 +1,6 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_innodb_16k.inc
|
||||
--source include/have_sequence.inc
|
||||
|
||||
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
|
||||
SET GLOBAL innodb_stats_persistent = 0;
|
||||
@ -110,9 +111,35 @@ CREATE INDEX ndx_n ON t12963823 (n(500));
|
||||
CREATE INDEX ndx_o ON t12963823 (o(500));
|
||||
CREATE INDEX ndx_p ON t12963823 (p(500));
|
||||
SHOW CREATE TABLE t12963823;
|
||||
# We need to activate the purge thread before DROP TABLE.
|
||||
|
||||
DELIMITER $$;
|
||||
--error ER_TOO_MANY_KEY_PARTS
|
||||
BEGIN NOT ATOMIC
|
||||
DECLARE c TEXT DEFAULT(SELECT CONCAT('CREATE TABLE t1(c',
|
||||
GROUP_CONCAT(seq SEPARATOR
|
||||
' INT DEFAULT 0, c'),
|
||||
' INT DEFAULT 0, PRIMARY KEY(c',
|
||||
GROUP_CONCAT(seq SEPARATOR ', c'),
|
||||
')) ENGINE=InnoDB;') FROM seq_1_to_33);
|
||||
EXECUTE IMMEDIATE c;
|
||||
END;
|
||||
$$
|
||||
BEGIN NOT ATOMIC
|
||||
DECLARE c TEXT DEFAULT(SELECT CONCAT('CREATE TABLE t1(c',
|
||||
GROUP_CONCAT(seq SEPARATOR
|
||||
' INT DEFAULT 0, c'),
|
||||
' INT DEFAULT 0, PRIMARY KEY(c',
|
||||
GROUP_CONCAT(seq SEPARATOR ', c'),
|
||||
')) ENGINE=InnoDB;') FROM seq_1_to_32);
|
||||
EXECUTE IMMEDIATE c;
|
||||
END;
|
||||
$$
|
||||
DELIMITER ;$$
|
||||
INSERT INTO t1() VALUES();
|
||||
|
||||
# We need to activate the purge thread before DROP TABLE.
|
||||
-- source include/wait_all_purged.inc
|
||||
|
||||
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t1_purge, t2_purge, t3_purge, t4_purge, t12637786, t12963823;
|
||||
|
@ -102,8 +102,10 @@ let $wait_condition =
|
||||
FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_resize_status';
|
||||
|
||||
--disable_cursor_protocol
|
||||
SELECT @@innodb_buffer_pool_size INTO @innodb_buffer_pool_size_orig;
|
||||
SELECT CEILING((256 + 64) * @@innodb_page_size / 1048576) * 1048576 INTO @min_pool_size;
|
||||
--enable_cursor_protocol
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
EXECUTE IMMEDIATE 'SET GLOBAL innodb_buffer_pool_size = ?' USING (@min_pool_size -1);
|
||||
|
||||
|
@ -80,5 +80,29 @@ SELECT TIMESTAMPDIFF(DAY,last_update,now())<=1 FROM mysql.innodb_index_stats
|
||||
WHERE database_name='test' AND table_name='t1' AND stat_name='size';
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-34207: ALTER TABLE...STATS_PERSISTENT=0 fails to drop statistics
|
||||
--echo #
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=InnoDB STATS_PERSISTENT 1;
|
||||
ALTER TABLE t1 STATS_PERSISTENT 0;
|
||||
DROP TABLE t1;
|
||||
|
||||
SET @save_persistent=@@GLOBAL.innodb_stats_persistent;
|
||||
SET GLOBAL innodb_stats_persistent=1;
|
||||
|
||||
CREATE TABLE t2 (c1 INT) ENGINE=InnoDB;
|
||||
RENAME TABLE t2 TO t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL innodb_stats_persistent=0;
|
||||
|
||||
CREATE TABLE t2 (c1 INT) ENGINE=InnoDB STATS_PERSISTENT 1;
|
||||
RENAME TABLE t2 TO t1;
|
||||
|
||||
SET GLOBAL innodb_stats_persistent=@save_persistent;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=InnoDB STATS_PERSISTENT 1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # End of 10.6 tests
|
||||
|
@ -141,9 +141,11 @@ update ignore t5 set c1 = 20 where c1 = 140 ;
|
||||
select count(*) from t5 where c1 = 140;
|
||||
|
||||
--replace_result $MYSQLTEST_VARDIR VARDIR
|
||||
--disable_cursor_protocol
|
||||
--disable_ps2_protocol
|
||||
eval select * into outfile "$MYSQLTEST_VARDIR/tmp/t5.outfile" from t5;
|
||||
--enable_ps2_protocol
|
||||
--enable_cursor_protocol
|
||||
|
||||
|
||||
create temporary table temp_1 engine = innodb as select * from t5 where 1=2;
|
||||
|
Reference in New Issue
Block a user