-
Notifications
You must be signed in to change notification settings - Fork 4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug#30190199 - ERROR WHEN IMPORTING TABLESPACE WITH DIFFERENT DATA
DIRECTORY LACKS DETAILS Bug#30190227 - CRASH IMPORTING TABLESPACE WITH DIFFERENT DATA DIRECTORY BUT NOT .CFG FILE Problem: During tablespace import, If the source table was created by specifying the DATA DIRECTORY clause, then the table that we replace on the destination instance must be defined with the same DATA DIRECTORY clause. If the clauses do not match then schema mismatch error is reported. Issue-1: The error message do not specify the exact reason of this error. Issue-2: If .cfg file is not found during import then we do not validate table flags to fsp flags. Later due to table flags mismatch, server terminates due to fatal error. Solution: Fix-1: If .cfg file is available during import then check if the source table meta-data (.cfg file) flag for data_dir do not match with server table flag for data_dir then throw an error and terminate import operation. Fix-2: If .cfg file is not available during import then check if the source table fsp (.ibd file) flag for data_dir do not match with server table flag for data_dir then throw an error and terminate import operation. RB: 23024 Reviewed by : Kevin Lewis <[email protected]>
- Loading branch information
1 parent
9a8fef9
commit bd24fc6
Showing
3 changed files
with
206 additions
and
0 deletions.
There are no files selected for viewing
57 changes: 57 additions & 0 deletions
57
mysql-test/suite/innodb/r/import_tablespace_schema_missmatch.result
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,57 @@ | ||
# | ||
# Bug #30190227 CRASH IMPORTING TABLESPACE WITH DIFFERENT DATA DIRECTORY | ||
# BUT NOT .CFG FILE | ||
# | ||
# Test-case-1 | ||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY) DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir'; | ||
INSERT INTO t1 VALUES (1), (2), (3); | ||
FLUSH TABLES t1 FOR EXPORT; | ||
UNLOCK TABLES; | ||
DROP TABLE t1; | ||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY); | ||
ALTER TABLE t1 DISCARD TABLESPACE; | ||
ALTER TABLE t1 IMPORT TABLESPACE; | ||
ERROR HY000: Schema mismatch (Table data_dir flag don't match, server table has data_dir flag = 0 and .ibd file has data_dir flag = 1) | ||
DROP TABLE t1; | ||
# | ||
# Test-case-2 | ||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY); | ||
INSERT INTO t1 VALUES (1), (2), (3); | ||
FLUSH TABLES t1 FOR EXPORT; | ||
UNLOCK TABLES; | ||
DROP TABLE t1; | ||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY) DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir'; | ||
ALTER TABLE t1 DISCARD TABLESPACE; | ||
ALTER TABLE t1 IMPORT TABLESPACE; | ||
ERROR HY000: Schema mismatch (Table data_dir flag don't match, server table has data_dir flag = 1 and .ibd file has data_dir flag = 0) | ||
DROP TABLE t1; | ||
# | ||
# Bug #30190199 ERROR WHEN IMPORTING TABLESPACE WITH DIFFERENT DATA | ||
# DIRECTORY LACKS DETAILS | ||
# | ||
# Test-case-3 | ||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY) DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir'; | ||
INSERT INTO t1 VALUES (1), (2), (3); | ||
FLUSH TABLES t1 FOR EXPORT; | ||
UNLOCK TABLES; | ||
DROP TABLE t1; | ||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY); | ||
ALTER TABLE t1 DISCARD TABLESPACE; | ||
ALTER TABLE t1 IMPORT TABLESPACE; | ||
ERROR HY000: Schema mismatch (Table data_dir flag don't match, server table has data_dir flag = 0 and the meta-data file has data_dir flag = 1) | ||
DROP TABLE t1; | ||
# | ||
# Test-case-4 | ||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY); | ||
INSERT INTO t1 VALUES (1), (2), (3); | ||
FLUSH TABLES t1 FOR EXPORT; | ||
UNLOCK TABLES; | ||
DROP TABLE t1; | ||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY) DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir'; | ||
ALTER TABLE t1 DISCARD TABLESPACE; | ||
ALTER TABLE t1 IMPORT TABLESPACE; | ||
ERROR HY000: Schema mismatch (Table data_dir flag don't match, server table has data_dir flag = 1 and the meta-data file has data_dir flag = 0) | ||
DROP TABLE t1; | ||
# | ||
# Cleanup | ||
# |
119 changes: 119 additions & 0 deletions
119
mysql-test/suite/innodb/t/import_tablespace_schema_missmatch.test
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,119 @@ | ||
--echo # | ||
--echo # Bug #30190227 CRASH IMPORTING TABLESPACE WITH DIFFERENT DATA DIRECTORY | ||
--echo # BUT NOT .CFG FILE | ||
--echo # | ||
--echo # Test-case-1 | ||
# Source tablespace is created with DATA DIRECTORY clause, | ||
# whereas destination table is defined without DATA DIRECTORY clause. | ||
|
||
--let $MYSQLD_DATADIR=`select @@datadir` | ||
--let $DB = `SELECT DATABASE()` | ||
--let $data_directory = DATA DIRECTORY='$MYSQL_TMP_DIR/alt_dir' | ||
|
||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR | ||
eval CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY) $data_directory; | ||
INSERT INTO t1 VALUES (1), (2), (3); | ||
FLUSH TABLES t1 FOR EXPORT; | ||
|
||
--copy_file '$MYSQL_TMP_DIR/alt_dir/$DB/t1.ibd' $MYSQL_TMP_DIR/t1.ibd | ||
|
||
UNLOCK TABLES; | ||
DROP TABLE t1; | ||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY); | ||
ALTER TABLE t1 DISCARD TABLESPACE; | ||
|
||
--move_file $MYSQL_TMP_DIR/t1.ibd $MYSQLD_DATADIR/$DB/t1.ibd | ||
--error ER_TABLE_SCHEMA_MISMATCH | ||
|
||
ALTER TABLE t1 IMPORT TABLESPACE; | ||
DROP TABLE t1; | ||
--remove_file $MYSQLD_DATADIR/$DB/t1.ibd | ||
|
||
--echo # | ||
--echo # Test-case-2 | ||
# Source tablespace is created without DATA DIRECTORY clause, | ||
# whereas destination table is defined with DATA DIRECTORY clause. | ||
|
||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY); | ||
INSERT INTO t1 VALUES (1), (2), (3); | ||
FLUSH TABLES t1 FOR EXPORT; | ||
|
||
--copy_file '$MYSQLD_DATADIR/$DB/t1.ibd' $MYSQL_TMP_DIR/t1.ibd | ||
|
||
UNLOCK TABLES; | ||
DROP TABLE t1; | ||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR | ||
eval CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY) $data_directory; | ||
ALTER TABLE t1 DISCARD TABLESPACE; | ||
|
||
--move_file $MYSQL_TMP_DIR/t1.ibd $MYSQL_TMP_DIR/alt_dir/$DB/t1.ibd | ||
|
||
--error ER_TABLE_SCHEMA_MISMATCH | ||
ALTER TABLE t1 IMPORT TABLESPACE; | ||
DROP TABLE t1; | ||
--remove_file $MYSQL_TMP_DIR/alt_dir/$DB/t1.ibd | ||
|
||
|
||
--echo # | ||
--echo # Bug #30190199 ERROR WHEN IMPORTING TABLESPACE WITH DIFFERENT DATA | ||
--echo # DIRECTORY LACKS DETAILS | ||
--echo # | ||
--echo # Test-case-3 | ||
# Same as test-case-1 but .cfg file is available during | ||
# import tablespace. | ||
|
||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR | ||
eval CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY) $data_directory; | ||
INSERT INTO t1 VALUES (1), (2), (3); | ||
FLUSH TABLES t1 FOR EXPORT; | ||
|
||
--copy_file '$MYSQL_TMP_DIR/alt_dir/$DB/t1.ibd' $MYSQL_TMP_DIR/t1.ibd | ||
--copy_file '$MYSQL_TMP_DIR/alt_dir/$DB/t1.cfg' $MYSQL_TMP_DIR/t1.cfg | ||
|
||
UNLOCK TABLES; | ||
DROP TABLE t1; | ||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY); | ||
ALTER TABLE t1 DISCARD TABLESPACE; | ||
|
||
--move_file $MYSQL_TMP_DIR/t1.cfg $MYSQLD_DATADIR/$DB/t1.cfg | ||
--move_file $MYSQL_TMP_DIR/t1.ibd $MYSQLD_DATADIR/$DB/t1.ibd | ||
|
||
--error ER_TABLE_SCHEMA_MISMATCH | ||
ALTER TABLE t1 IMPORT TABLESPACE; | ||
DROP TABLE t1; | ||
--remove_file $MYSQLD_DATADIR/$DB/t1.ibd | ||
--remove_file $MYSQLD_DATADIR/$DB/t1.cfg | ||
|
||
--echo # | ||
--echo # Test-case-4 | ||
# Same as test-case-2 but .cfg file is available during | ||
# import tablespace. | ||
|
||
CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY); | ||
INSERT INTO t1 VALUES (1), (2), (3); | ||
FLUSH TABLES t1 FOR EXPORT; | ||
|
||
--copy_file '$MYSQLD_DATADIR/$DB/t1.ibd' $MYSQL_TMP_DIR/t1.ibd | ||
--copy_file '$MYSQLD_DATADIR/$DB/t1.cfg' $MYSQL_TMP_DIR/t1.cfg | ||
|
||
UNLOCK TABLES; | ||
DROP TABLE t1; | ||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR | ||
eval CREATE TABLE t1 (id int unsigned NOT NULL PRIMARY KEY) $data_directory; | ||
ALTER TABLE t1 DISCARD TABLESPACE; | ||
|
||
--move_file $MYSQL_TMP_DIR/t1.ibd $MYSQL_TMP_DIR/alt_dir/$DB/t1.ibd | ||
--move_file $MYSQL_TMP_DIR/t1.cfg $MYSQL_TMP_DIR/alt_dir/$DB/t1.cfg | ||
|
||
--error ER_TABLE_SCHEMA_MISMATCH | ||
ALTER TABLE t1 IMPORT TABLESPACE; | ||
DROP TABLE t1; | ||
--remove_file $MYSQL_TMP_DIR/alt_dir/$DB/t1.ibd | ||
--remove_file $MYSQL_TMP_DIR/alt_dir/$DB/t1.cfg | ||
|
||
--echo # | ||
--echo # Cleanup | ||
--echo # | ||
|
||
--rmdir $MYSQL_TMP_DIR/alt_dir/test | ||
--rmdir $MYSQL_TMP_DIR/alt_dir |
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