mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 22:12:30 +01:00
6673b2849a
symlink.test failed when run in an environment that has mysql-test/var symlinked to elsewhere, e.g. a memory file system. This is the case when running mysql-test-run --mem. In this case the server does not detect that the directory specified with a DATA/INDEX DIRECTORY clause is within its data home directory. This problem was reported as Bug#39277 (Creation of table with data and/or index files in data home directory succeeds). It was decided that it will not be fixed in 5.1. Hence, the current behavior is accepted for 5.1. It will be fixed in 6.0 though. Fixed the test case so that it works in both environments. 1. When no symbolic link is involved, the server notices that the data/index directory is in its data hone directory and rejects the CREATE/ALTER TABLE statement. 2. When the data home directory is symlinked, it does not notice the problem and executes the statement sucessfully.
171 lines
6 KiB
Text
171 lines
6 KiB
Text
drop table if exists t1,t2,t7,t8,t9;
|
|
drop database if exists mysqltest;
|
|
create table t1 (a int not null auto_increment, b char(16) not null, primary key (a));
|
|
create table t2 (a int not null auto_increment, b char(16) not null, primary key (a));
|
|
insert into t1 (b) values ("test"),("test1"),("test2"),("test3");
|
|
insert into t2 (b) select b from t1;
|
|
insert into t1 (b) select b from t2;
|
|
insert into t2 (b) select b from t1;
|
|
insert into t1 (b) select b from t2;
|
|
insert into t2 (b) select b from t1;
|
|
insert into t1 (b) select b from t2;
|
|
insert into t2 (b) select b from t1;
|
|
insert into t1 (b) select b from t2;
|
|
insert into t2 (b) select b from t1;
|
|
insert into t1 (b) select b from t2;
|
|
insert into t2 (b) select b from t1;
|
|
insert into t1 (b) select b from t2;
|
|
insert into t2 (b) select b from t1;
|
|
insert into t1 (b) select b from t2;
|
|
insert into t2 (b) select b from t1;
|
|
insert into t1 (b) select b from t2;
|
|
insert into t2 (b) select b from t1;
|
|
insert into t1 (b) select b from t2;
|
|
drop table t2;
|
|
create table t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="MYSQLTEST_VARDIR/tmp" index directory="MYSQLTEST_VARDIR/run";
|
|
insert into t9 select * from t1;
|
|
check table t9;
|
|
Table Op Msg_type Msg_text
|
|
test.t9 check status OK
|
|
optimize table t9;
|
|
Table Op Msg_type Msg_text
|
|
test.t9 optimize status OK
|
|
repair table t9;
|
|
Table Op Msg_type Msg_text
|
|
test.t9 repair status OK
|
|
alter table t9 add column c int not null;
|
|
show create table t9;
|
|
Table Create Table
|
|
t9 CREATE TABLE `t9` (
|
|
`a` int(11) NOT NULL AUTO_INCREMENT,
|
|
`b` char(16) NOT NULL,
|
|
`c` int(11) NOT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=MyISAM AUTO_INCREMENT=16725 DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/' INDEX DIRECTORY='MYSQLTEST_VARDIR/run/'
|
|
alter table t9 rename t8, add column d int not null;
|
|
alter table t8 rename t7;
|
|
rename table t7 to t9;
|
|
drop table t1;
|
|
SHOW CREATE TABLE t9;
|
|
Table Create Table
|
|
t9 CREATE TABLE `t9` (
|
|
`a` int(11) NOT NULL AUTO_INCREMENT,
|
|
`b` char(16) NOT NULL,
|
|
`c` int(11) NOT NULL,
|
|
`d` int(11) NOT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=MyISAM AUTO_INCREMENT=16725 DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/' INDEX DIRECTORY='MYSQLTEST_VARDIR/run/'
|
|
create database mysqltest;
|
|
create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="/this-dir-does-not-exist";
|
|
Got one of the listed errors
|
|
create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="MYSQLTEST_VARDIR/run";
|
|
Got one of the listed errors
|
|
create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="MYSQLTEST_VARDIR/tmp";
|
|
Got one of the listed errors
|
|
alter table t9 rename mysqltest.t9;
|
|
select count(*) from mysqltest.t9;
|
|
count(*)
|
|
16724
|
|
show create table mysqltest.t9;
|
|
Table Create Table
|
|
t9 CREATE TABLE `t9` (
|
|
`a` int(11) NOT NULL AUTO_INCREMENT,
|
|
`b` char(16) NOT NULL,
|
|
`c` int(11) NOT NULL,
|
|
`d` int(11) NOT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=MyISAM AUTO_INCREMENT=16725 DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/' INDEX DIRECTORY='MYSQLTEST_VARDIR/run/'
|
|
drop database mysqltest;
|
|
create table t1 (a int not null) engine=myisam;
|
|
alter table t1 data directory="MYSQLTEST_VARDIR/tmp";
|
|
Warnings:
|
|
Warning 1618 <DATA DIRECTORY> option ignored
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
alter table t1 add b int;
|
|
alter table t1 data directory="MYSQLTEST_VARDIR/log";
|
|
Warnings:
|
|
Warning 1618 <DATA DIRECTORY> option ignored
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL,
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
alter table t1 index directory="MYSQLTEST_VARDIR/log";
|
|
Warnings:
|
|
Warning 1618 <INDEX DIRECTORY> option ignored
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL,
|
|
`b` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
drop table t1;
|
|
CREATE TABLE t1(a INT)
|
|
DATA DIRECTORY='TEST_DIR/tmp'
|
|
INDEX DIRECTORY='TEST_DIR/tmp';
|
|
Got one of the listed errors
|
|
CREATE TABLE t2(a INT)
|
|
DATA DIRECTORY='TEST_DIR/tmp'
|
|
INDEX DIRECTORY='TEST_DIR/tmp';
|
|
RENAME TABLE t2 TO t1;
|
|
ERROR HY000: Can't create/write to file 'TEST_DIR/tmp/t1.MYI' (Errcode: 17)
|
|
DROP TABLE t2;
|
|
create temporary table t1 (a int) engine=myisam data directory="MYSQLTEST_VARDIR/log" select 9 a;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TEMPORARY TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/log/'
|
|
create temporary table t1 (a int) engine=myisam data directory="MYSQLTEST_VARDIR/log" select 99 a;
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TEMPORARY TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/log/'
|
|
create table t1 (a int) engine=myisam select 42 a;
|
|
select * from t1;
|
|
a
|
|
9
|
|
select * from t1;
|
|
a
|
|
99
|
|
select * from t1;
|
|
a
|
|
42
|
|
drop table t1;
|
|
End of 4.1 tests
|
|
SET SESSION keep_files_on_create = TRUE;
|
|
CREATE TABLE t1 (a INT) ENGINE MYISAM;
|
|
Got one of the listed errors
|
|
SET SESSION keep_files_on_create = FALSE;
|
|
CREATE TABLE t1 (a INT) ENGINE MYISAM;
|
|
DROP TABLE t1;
|
|
End of 5.0 tests
|
|
CREATE TABLE t1(a INT)
|
|
INDEX DIRECTORY='TEST_DIR/master-data/mysql';
|
|
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1(a INT)
|
|
DATA DIRECTORY='TEST_DIR/master-data/test';
|
|
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1(a INT)
|
|
DATA DIRECTORY='TEST_DIR/master-data/';
|
|
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1(a INT)
|
|
INDEX DIRECTORY='TEST_DIR/master-data';
|
|
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1(a INT)
|
|
INDEX DIRECTORY='TEST_DIR/master-data_var';
|
|
ERROR HY000: Can't create/write to file 'TEST_DIR/master-data_var/t1.MYI' (Errcode: 2)
|
|
SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE='NO_DIR_IN_CREATE';
|
|
CREATE TABLE t1(a INT) DATA DIRECTORY='MYSQLTEST_VARDIR/tmp' INDEX DIRECTORY='MYSQLTEST_VARDIR/tmp';
|
|
Warnings:
|
|
Warning 1618 <DATA DIRECTORY> option ignored
|
|
Warning 1618 <INDEX DIRECTORY> option ignored
|
|
DROP TABLE t1;
|
|
SET @@SQL_MODE=@OLD_SQL_MODE;
|
|
End of 5.1 tests
|