mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
9fe681c9e4
after previous error upon multi-RENAME - InnoDB fails to rename the foreign key constraint while rollbacking the rename operation. In that case, InnoDB should rename the FK constraint too.
61 lines
1.8 KiB
Text
61 lines
1.8 KiB
Text
--source include/have_innodb.inc
|
|
--source include/not_embedded.inc
|
|
|
|
call mtr.add_suppression("InnoDB: In RENAME TABLE table `test`.`t4` is referenced in foreign key constraints which are not compatible with the new table definition.");
|
|
|
|
CREATE DATABASE test_jfg;
|
|
CREATE DATABASE test_jfg2;
|
|
CREATE TABLE test_jfg.test (a int unsigned PRIMARY KEY) ENGINE=InnoDB;
|
|
RENAME TABLE test_jfg.test TO test_jfg2.test;
|
|
|
|
SELECT REPLACE(filename,'\\','/') path
|
|
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE filename LIKE '%test%';
|
|
|
|
DROP DATABASE test_jfg;
|
|
|
|
--source include/restart_mysqld.inc
|
|
|
|
DROP DATABASE test_jfg2;
|
|
|
|
CREATE DATABASE abc_def;
|
|
CREATE DATABASE abc_def2;
|
|
|
|
CREATE TABLE abc_def.test (a int unsigned PRIMARY KEY) ENGINE=InnoDB;
|
|
RENAME TABLE abc_def.test TO abc_def2.test1;
|
|
|
|
SELECT REPLACE(filename,'\\','/') path
|
|
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE filename LIKE '%test%';
|
|
|
|
DROP DATABASE abc_def;
|
|
|
|
--source include/restart_mysqld.inc
|
|
|
|
DROP DATABASE abc_def2;
|
|
|
|
call mtr.add_suppression("InnoDB: (Operating system error|The error means|Cannot rename file)");
|
|
|
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|
--replace_result "\\" "/"
|
|
--error ER_ERROR_ON_RENAME
|
|
RENAME TABLE t1 TO non_existing_db.t1;
|
|
|
|
--let SEARCH_PATTERN= \[ERROR\] InnoDB: Cannot rename file '.*t1\.ibd' to '.*non_existing_db
|
|
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
# Cleanup
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # MDEV-25509 Atomic DDL: Assertion `err != DB_DUPLICATE_KEY'
|
|
--echo # fails after previous error upon multi-RENAME
|
|
--echo #
|
|
SET FOREIGN_KEY_CHECKS= OFF;
|
|
CREATE TABLE t1 (pk INT PRIMARY KEY, f INT, FOREIGN KEY (f) REFERENCES t4 (x)) ENGINE=InnoDB;
|
|
ALTER TABLE t1 DROP KEY f;
|
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
|
--error ER_ERROR_ON_RENAME
|
|
RENAME TABLE t1 TO t3, t3 TO t4;
|
|
RENAME TABLE t2 TO t3;
|
|
DROP TABLE t3, t1;
|
|
SET FOREIGN_KEY_CHECKS=DEFAULT;
|