Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug #68148: drop index on a foreign key column leads to missing table
MDEV-8845: Table disappear after modifying FK Added test case.
- Loading branch information
Jan Lindström
committed
Sep 30, 2015
1 parent
a95711e
commit 006acf7
Showing
2 changed files
with
77 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
|
||
|