Skip to content

Commit ade3568

Browse files
committed
InnoDB General Tablespace Portability
Bug#20563954 - INNODB: SUPPORT MOVING A WHOLE DATADIR WITH GENERAL TABLESPACES. Bug#19896685 - INNODB: RECOGNIZE DIFFERENT PATH STRINGS THAT POINT TO THE SAME LOCATION Bug#20555168 - INNODB: MAKE GENERAL TABLESPACES PORTABLE FROM WINDOWS TO UNIX Bug#21068487 - INNODB: PREVENT RELATIVE ISL PATHS UNDER THE DATADIR RB#8293 - Approved by Marko and Jimmy
1 parent 7eda2af commit ade3568

31 files changed

+3358
-723
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Remember some variables.
2+
LET $MYSQLD_DATADIR = `select @@datadir`;
3+
LET $INNODB_PAGE_SIZE = `select @@innodb_page_size`;
4+
5+
--echo #
6+
--echo # Try a series of invalid relative ADD DATAFILE entries.
7+
--echo # General tablespace files can be in the datadir but they cannot be under the datadir.
8+
--echo #
9+
--error ER_WRONG_FILE_NAME
10+
CREATE TABLESPACE bad ADD DATAFILE '';
11+
SHOW WARNINGS;
12+
--error ER_WRONG_FILE_NAME
13+
CREATE TABLESPACE bad ADD DATAFILE '.ibd';
14+
SHOW WARNINGS;
15+
--error ER_WRONG_FILE_NAME
16+
CREATE TABLESPACE bad ADD DATAFILE './ibd';
17+
SHOW WARNINGS;
18+
--error ER_WRONG_FILE_NAME
19+
CREATE TABLESPACE bad ADD DATAFILE './.ibd';
20+
SHOW WARNINGS;
21+
--error ER_WRONG_FILE_NAME
22+
CREATE TABLESPACE bad ADD DATAFILE '../spaces/';
23+
SHOW WARNINGS;
24+
--error ER_WRONG_FILE_NAME
25+
CREATE TABLESPACE bad ADD DATAFILE 'test/bad.ibd';
26+
SHOW WARNINGS;
27+
--error ER_WRONG_FILE_NAME
28+
CREATE TABLESPACE bad ADD DATAFILE './test/bad.ibd';
29+
SHOW WARNINGS;
30+
--error ER_WRONG_FILE_NAME
31+
CREATE TABLESPACE bad ADD DATAFILE './test//bad.ibd';
32+
SHOW WARNINGS;
33+
--error ER_WRONG_FILE_NAME
34+
CREATE TABLESPACE bad ADD DATAFILE '../data/test/bad.ibd';
35+
SHOW WARNINGS;
36+
--error ER_WRONG_FILE_NAME
37+
CREATE TABLESPACE bad ADD DATAFILE '../data/../data/test/bad.ibd';
38+
SHOW WARNINGS;
39+
--error ER_WRONG_FILE_NAME
40+
CREATE TABLESPACE bad ADD DATAFILE '../does_not_exist/bad.ibd';
41+
SHOW WARNINGS;
42+
43+
--echo #
44+
--echo # Try a series of valid relative ADD DATAFILE entries.
45+
--echo # General tablespace files can be in the datadir but they cannot be under the datadir.
46+
--echo #
47+
CREATE TABLESPACE ibport_s01 ADD DATAFILE 'ibport_s01.ibd';
48+
CREATE TABLESPACE ibport_s02 ADD DATAFILE './ibport_s02.ibd';
49+
CREATE TABLESPACE ibport_s03 ADD DATAFILE '../data/ibport_s03.ibd';
50+
CREATE TABLESPACE ibport_s04 ADD DATAFILE 'test/../ibport_s04.ibd';
51+
CREATE TABLESPACE ibport_s05 ADD DATAFILE './test/../ibport_s05.ibd';
52+
CREATE TABLESPACE ibport_s06 ADD DATAFILE '..///data//test///..//ibport_s06.ibd';
53+
CREATE TABLESPACE ibport_s12 ADD DATAFILE '.\\ibport_s12.ibd';
54+
CREATE TABLESPACE ibport_s13 ADD DATAFILE '..\\data\\ibport_s13.ibd';
55+
CREATE TABLESPACE ibport_s14 ADD DATAFILE 'test\\..\\ibport_s14.ibd';
56+
CREATE TABLESPACE ibport_s15 ADD DATAFILE '.\\test\\..\\ibport_s15.ibd';
57+
CREATE TABLESPACE ibport_s16 ADD DATAFILE '..\\\\\\data\\\\test\\\\\\..\\\\ibport_s16.ibd';
58+
59+
--echo # Directory listing of MYSQLD_DATADIR/ ibport*
60+
--list_files $MYSQLD_DATADIR/ ibport*
61+
62+
--replace_result $MYSQLD_DATADIR/ MYSQLD_DATADIR/ $MYSQLD_DATADIR MYSQLD_DATADIR/
63+
SELECT s.space_type 'Type', s.name 'Space Name', d.path 'Path'
64+
FROM information_schema.innodb_sys_tablespaces s, information_schema.innodb_sys_datafiles d
65+
WHERE s.name like '%ibport%' AND s.space = d.space ORDER BY s.space;
66+
67+
--replace_result $MYSQLD_DATADIR/ MYSQLD_DATADIR/ $MYSQLD_DATADIR MYSQLD_DATADIR/
68+
SELECT s.space_type 'Type', s.name 'Space Name', f.file_name 'Path'
69+
FROM information_schema.innodb_sys_tablespaces s, information_schema.files f
70+
WHERE s.name like '%ibport%' AND s.space = f.file_id ORDER BY s.space;
71+
72+
DROP TABLESPACE ibport_s01;
73+
DROP TABLESPACE ibport_s02;
74+
DROP TABLESPACE ibport_s03;
75+
DROP TABLESPACE ibport_s04;
76+
DROP TABLESPACE ibport_s05;
77+
DROP TABLESPACE ibport_s06;
78+
DROP TABLESPACE ibport_s12;
79+
DROP TABLESPACE ibport_s13;
80+
DROP TABLESPACE ibport_s14;
81+
DROP TABLESPACE ibport_s15;
82+
DROP TABLESPACE ibport_s16;
83+

0 commit comments

Comments
 (0)