mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
MDEV-20938 Double free of dict_foreign_t during instant ALTER TABLE
innobase_drop_foreign_try(): Don't evict and reload the dict_foreign_t
during instant ALTER TABLE if the FOREIGN KEY constraint is being
dropped.
The MDEV-19630 fix (commit 07b1a26c33)
was incomplete, because it did not cover a case where the
FOREIGN KEY constraint is being dropped.
This commit is contained in:
committed by
Marko Mäkelä
parent
6dce6aeceb
commit
162f475c4b
@@ -128,6 +128,10 @@ HANDLER h READ `PRIMARY` PREV WHERE 0;
|
||||
pk f1 f2 f3 f4 f5 f6 f7 f8 filler
|
||||
HANDLER h CLOSE;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-19630 ALTER TABLE ... ADD COLUMN damages foreign keys
|
||||
# which are pointed to the table being altered
|
||||
#
|
||||
CREATE TABLE t1(f1 int not null, primary key(f1))engine=innodb;
|
||||
CREATE TABLE t2(f1 INT AUTO_INCREMENT NOT NULL, f2 INT NOT NULL,
|
||||
status ENUM ('a', 'b', 'c'), INDEX idx1(f2),
|
||||
@@ -154,3 +158,14 @@ t2 CREATE TABLE `t2` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
ALTER TABLE t2 CHANGE status status VARCHAR(20) DEFAULT NULL;
|
||||
DROP TABLE t2, t1;
|
||||
#
|
||||
# MDEV-20938 Double free of dict_foreign_t during instant ALTER TABLE
|
||||
#
|
||||
CREATE TABLE t1 (id INT UNSIGNED PRIMARY KEY) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a INT UNSIGNED PRIMARY KEY, b INT UNSIGNED UNIQUE,
|
||||
FOREIGN KEY fk1 (b) REFERENCES t1 (id)) ENGINE=InnoDB;
|
||||
ALTER TABLE t2
|
||||
DROP FOREIGN KEY fk1,
|
||||
CHANGE b d INT UNSIGNED,
|
||||
ADD c INT;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
Reference in New Issue
Block a user