mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-23685 SIGSEGV on ADD FOREIGN KEY after failed ADD KEY
dict_foreign_qualify_index(): Reject corrupted or garbage indexes. For index stubs that are created on virtual columns, no dict_field_t::col would be assign. Instead, the entire table definition would be reloaded on a successful operation.
This commit is contained in:
@ -740,4 +740,15 @@ t2 CREATE TABLE `t2` (
|
||||
CREATE TABLE t2 (f1 INT NOT NULL)ENGINE=InnoDB;
|
||||
ERROR 42S01: Table 't2' already exists
|
||||
DROP TABLE t2, t1;
|
||||
#
|
||||
# MDEV-23685 SIGSEGV on ADD FOREIGN KEY after failed attempt
|
||||
# to create unique key on virtual column
|
||||
#
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, a INT, b INT AS (a)) ENGINE=InnODB;
|
||||
INSERT INTO t1 (pk,a) VALUES (1,10),(2,10);
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX ind9 (b), LOCK=SHARED;
|
||||
ERROR 23000: Duplicate entry '10' for key 'ind9'
|
||||
SET FOREIGN_KEY_CHECKS= 0;
|
||||
ALTER TABLE t1 ADD FOREIGN KEY (a) REFERENCES t1 (pk);
|
||||
DROP TABLE t1;
|
||||
# End of 10.2 tests
|
||||
|
@ -720,6 +720,19 @@ SHOW CREATE TABLE t2;
|
||||
CREATE TABLE t2 (f1 INT NOT NULL)ENGINE=InnoDB;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-23685 SIGSEGV on ADD FOREIGN KEY after failed attempt
|
||||
--echo # to create unique key on virtual column
|
||||
--echo #
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, a INT, b INT AS (a)) ENGINE=InnODB;
|
||||
|
||||
INSERT INTO t1 (pk,a) VALUES (1,10),(2,10);
|
||||
--error ER_DUP_ENTRY
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX ind9 (b), LOCK=SHARED;
|
||||
SET FOREIGN_KEY_CHECKS= 0;
|
||||
ALTER TABLE t1 ADD FOREIGN KEY (a) REFERENCES t1 (pk);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # End of 10.2 tests
|
||||
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
Reference in New Issue
Block a user