mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #68148: drop index on a foreign key column leads to missing table
MDEV-8845: Table disappear after modifying FK Added test case.
This commit is contained in:
36
mysql-test/suite/innodb/r/innodb_bug68148.result
Normal file
36
mysql-test/suite/innodb/r/innodb_bug68148.result
Normal file
@ -0,0 +1,36 @@
|
||||
set global innodb_file_per_table=1;
|
||||
CREATE TABLE ref_table1 (id int(11) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
|
||||
CREATE TABLE ref_table2 (id int(11) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
|
||||
CREATE TABLE `main` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ref_id1` int(11) NOT NULL,
|
||||
`ref_id2` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `idx_1` (`ref_id1`,`ref_id2`),
|
||||
KEY `FK_set_out_analysis_route_id` (`ref_id2`),
|
||||
CONSTRAINT `FK_1` FOREIGN KEY (`ref_id1`) REFERENCES `ref_table1` (`id`) ,
|
||||
CONSTRAINT `FK_2` FOREIGN KEY (`ref_id2`) REFERENCES `ref_table2` (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
DROP INDEX `idx_1` ON `main`;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
main
|
||||
ref_table1
|
||||
ref_table2
|
||||
# restart and see if we can still access the main table
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
ALTER TABLE `main` ADD INDEX `idx_1` (`ref_id1`);
|
||||
SHOW CREATE TABLE `main`;
|
||||
Table Create Table
|
||||
main CREATE TABLE `main` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ref_id1` int(11) NOT NULL,
|
||||
`ref_id2` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `FK_set_out_analysis_route_id` (`ref_id2`),
|
||||
KEY `idx_1` (`ref_id1`),
|
||||
CONSTRAINT `FK_1` FOREIGN KEY (`ref_id1`) REFERENCES `ref_table1` (`id`),
|
||||
CONSTRAINT `FK_2` FOREIGN KEY (`ref_id2`) REFERENCES `ref_table2` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
DROP TABLE main, ref_table1, ref_table2;
|
41
mysql-test/suite/innodb/t/innodb_bug68148.test
Normal file
41
mysql-test/suite/innodb/t/innodb_bug68148.test
Normal file
@ -0,0 +1,41 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
#
|
||||
# Bug #68148: drop index on a foreign key column leads to missing table
|
||||
# MDEV-8845: Table disappear after modifying FK
|
||||
#
|
||||
|
||||
set global innodb_file_per_table=1;
|
||||
|
||||
CREATE TABLE ref_table1 (id int(11) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE ref_table2 (id int(11) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
|
||||
|
||||
CREATE TABLE `main` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ref_id1` int(11) NOT NULL,
|
||||
`ref_id2` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `idx_1` (`ref_id1`,`ref_id2`),
|
||||
KEY `FK_set_out_analysis_route_id` (`ref_id2`),
|
||||
CONSTRAINT `FK_1` FOREIGN KEY (`ref_id1`) REFERENCES `ref_table1` (`id`) ,
|
||||
CONSTRAINT `FK_2` FOREIGN KEY (`ref_id2`) REFERENCES `ref_table2` (`id`)
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
|
||||
DROP INDEX `idx_1` ON `main`;
|
||||
SHOW TABLES;
|
||||
|
||||
--echo # restart and see if we can still access the main table
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
# This is required to access the table
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
ALTER TABLE `main` ADD INDEX `idx_1` (`ref_id1`);
|
||||
SHOW CREATE TABLE `main`;
|
||||
|
||||
DROP TABLE main, ref_table1, ref_table2;
|
||||
|
||||
|
Reference in New Issue
Block a user