rename_table.test 1.85 KB
Newer Older
1 2 3
--source include/have_innodb.inc
--source include/not_embedded.inc

4 5
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.");

6 7 8 9 10
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;

11 12
SELECT REPLACE(filename,'\\','/') path
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE filename LIKE '%test%';
13 14 15 16 17 18 19 20 21 22 23 24 25

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;

26 27
SELECT REPLACE(filename,'\\','/') path
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE filename LIKE '%test%';
28 29 30 31 32 33

DROP DATABASE abc_def;

--source include/restart_mysqld.inc

DROP DATABASE abc_def2;
34 35 36 37 38 39 40 41 42 43 44 45 46 47

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;
48 49 50 51 52 53 54 55 56 57 58 59 60 61

--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;