mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Bug#60111 storage type for table not saved in .frm
- Add new "format section" in extra data segment with additional table and column properties. This was originally introduced in 5.1.20 based MySQL Cluster - Remove hardcoded STORAGE DISK for table and instead output the real storage format used. Keep both TABLESPACE and STORAGE inside same version guard. - Implement default version of handler::get_tablespace_name() since tablespace is now available in share and it's unnecessary for each handler to implement. (the function could actually be removed totally now). - Add test for combinations of TABLESPACE and STORAGE with CREATE TABLE and ALTER TABLE - Add test to show that 5.5 now can read a .frm file created by MySQL Cluster 7.0.22. Although it does not yet show the column level attributes, they are read.
This commit is contained in:
112
mysql-test/r/tablespace.result
Normal file
112
mysql-test/r/tablespace.result
Normal file
@@ -0,0 +1,112 @@
|
||||
CREATE TABLE t1(a int) TABLESPACE ts ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) /*!50100 TABLESPACE ts */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a int) TABLESPACE ts STORAGE DISK ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) /*!50100 TABLESPACE ts STORAGE DISK */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a int) TABLESPACE ts STORAGE MEMORY ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) /*!50100 TABLESPACE ts STORAGE MEMORY */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a int) STORAGE MEMORY ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) /*!50100 STORAGE MEMORY */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a int) STORAGE DISK ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) /*!50100 STORAGE DISK */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a int) TABLESPACE ts ENGINE=MyISAM;
|
||||
ALTER TABLE t1 ADD COLUMN b int;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` int(11) DEFAULT NULL
|
||||
) /*!50100 TABLESPACE ts */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a int) TABLESPACE ts STORAGE DISK ENGINE=MyISAM;
|
||||
ALTER TABLE t1 ADD COLUMN b int;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` int(11) DEFAULT NULL
|
||||
) /*!50100 TABLESPACE ts STORAGE DISK */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a int) ENGINE=MyISAM;
|
||||
ALTER TABLE t1 TABLESPACE ts;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) /*!50100 TABLESPACE ts */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
ALTER TABLE t1 TABLESPACE ts2;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) /*!50100 TABLESPACE ts2 */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a int) ENGINE=MyISAM;
|
||||
ALTER TABLE t1 STORAGE MEMORY;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) /*!50100 STORAGE MEMORY */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
ALTER TABLE t1 STORAGE DISK;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) /*!50100 STORAGE DISK */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a int) ENGINE=MyISAM;
|
||||
ALTER TABLE t1 STORAGE MEMORY TABLESPACE ts;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) /*!50100 TABLESPACE ts STORAGE MEMORY */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
ALTER TABLE t1 STORAGE DISK TABLESPACE ts2;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) /*!50100 TABLESPACE ts2 STORAGE DISK */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) NOT NULL,
|
||||
`b` int(11) DEFAULT NULL,
|
||||
`c` int(11) DEFAULT NULL,
|
||||
`d` int(11) NOT NULL,
|
||||
`e` int(11) DEFAULT NULL,
|
||||
`f` int(11) DEFAULT NULL,
|
||||
`g` int(11) DEFAULT NULL,
|
||||
`h` int(11) NOT NULL,
|
||||
`i` int(11) DEFAULT NULL,
|
||||
`j` int(11) DEFAULT NULL,
|
||||
`k` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) /*!50100 TABLESPACE the_tablespacename STORAGE DISK */ ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
0
mysql-test/std_data/cluster_7022_table.MYD
Normal file
0
mysql-test/std_data/cluster_7022_table.MYD
Normal file
BIN
mysql-test/std_data/cluster_7022_table.MYI
Normal file
BIN
mysql-test/std_data/cluster_7022_table.MYI
Normal file
Binary file not shown.
BIN
mysql-test/std_data/cluster_7022_table.frm
Normal file
BIN
mysql-test/std_data/cluster_7022_table.frm
Normal file
Binary file not shown.
122
mysql-test/t/tablespace.test
Normal file
122
mysql-test/t/tablespace.test
Normal file
@@ -0,0 +1,122 @@
|
||||
#
|
||||
# BUG#60111 storage type for table not saved in .frm
|
||||
#
|
||||
|
||||
#
|
||||
# Check that the table options for TABLESPACE and STORAGE
|
||||
# are printed in SHOW CREATE TABLE
|
||||
#
|
||||
|
||||
# TABLESPACE only
|
||||
CREATE TABLE t1(a int) TABLESPACE ts ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# TABLESPACE + STORAGE DISK
|
||||
CREATE TABLE t1(a int) TABLESPACE ts STORAGE DISK ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# TABLESPACE + STORAGE MEMORY
|
||||
CREATE TABLE t1(a int) TABLESPACE ts STORAGE MEMORY ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# STORAGE MEMORY only
|
||||
CREATE TABLE t1(a int) STORAGE MEMORY ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# STORAGE DISK only
|
||||
CREATE TABLE t1(a int) STORAGE DISK ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Check that the table options for TABLESPACE and STORAGE
|
||||
# are kept in an ALTER
|
||||
#
|
||||
|
||||
# TABLESPACE only
|
||||
CREATE TABLE t1(a int) TABLESPACE ts ENGINE=MyISAM;
|
||||
ALTER TABLE t1 ADD COLUMN b int;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# TABLESPACE and STORAGE DISK
|
||||
CREATE TABLE t1(a int) TABLESPACE ts STORAGE DISK ENGINE=MyISAM;
|
||||
ALTER TABLE t1 ADD COLUMN b int;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Check that the table options for TABLESPACE and STORAGE
|
||||
# can be changed with an ALTER
|
||||
#
|
||||
|
||||
# TABLESPACE only
|
||||
CREATE TABLE t1(a int) ENGINE=MyISAM;
|
||||
|
||||
ALTER TABLE t1 TABLESPACE ts;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
ALTER TABLE t1 TABLESPACE ts2;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# STORAGE only
|
||||
CREATE TABLE t1(a int) ENGINE=MyISAM;
|
||||
|
||||
ALTER TABLE t1 STORAGE MEMORY;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
ALTER TABLE t1 STORAGE DISK;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# TABLESPACE and STORAGE
|
||||
CREATE TABLE t1(a int) ENGINE=MyISAM;
|
||||
|
||||
ALTER TABLE t1 STORAGE MEMORY TABLESPACE ts;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
ALTER TABLE t1 STORAGE DISK TABLESPACE ts2;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Check that it's possible to read a .frm fle created
|
||||
# by MySQL Cluster 7.0(which introduced the new "format
|
||||
# section) with this statement:
|
||||
#
|
||||
# CREATE TABLE cluster_7022_table
|
||||
# (
|
||||
# a int primary key,
|
||||
# b int,
|
||||
# c int STORAGE DISK,
|
||||
# d int STORAGE MEMORY NOT NULL,
|
||||
# e int COLUMN_FORMAT DYNAMIC,
|
||||
# f int COLUMN_FORMAT FIXED,
|
||||
# g int COLUMN_FORMAT DEFAULT,
|
||||
# h int STORAGE DISK COLUMN_FORMAT DYNAMIC NOT NULL,
|
||||
# i int STORAGE MEMORY COLUMN_FORMAT DYNAMIC,
|
||||
# j int STORAGE DISK COLUMN_FORMAT FIXED,
|
||||
# k int STORAGE MEMORY COLUMN_FORMAT FIXED
|
||||
# ) STORAGE DISK TABLESPACE the_tablespacename ENGINE=MyISAM;
|
||||
#
|
||||
# NOTE! The column level properties will not yet show up
|
||||
# in SHOW CREATE TABLE of MySQL Server(although they are
|
||||
# visible in .trace file)
|
||||
#
|
||||
|
||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||
copy_file std_data/cluster_7022_table.frm $MYSQLD_DATADIR/test/t1.frm;
|
||||
copy_file std_data/cluster_7022_table.MYD $MYSQLD_DATADIR/test/t1.MYD;
|
||||
copy_file std_data/cluster_7022_table.MYI $MYSQLD_DATADIR/test/t1.MYI;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
Reference in New Issue
Block a user