mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
MDEV-36050 DATA/INDEX DIRECTORY handling is inconsistent
consistently issue a Note 1618 DATA DIRECTORY option ignored Note 1618 INDEX DIRECTORY option ignored in archive/csv/innodb/rocksdb whenever an option is ignored. Note that csv doesn't say "INDEX DIRECTORY option ignored" because it does not create index files at all anywhere. Other engines don't say "INDEX DIRECTORY option ignored" if the table has no indexes. additionally InnoDB doesn't say that if INDEX DIRECTORY is the same as DATA DIRECTORY, because in that case indexes are technically stored in INDEX DIRECTORY. collateral fix: use strmake to zero-terminate the string
This commit is contained in:
@@ -10,8 +10,8 @@ PRIMARY KEY (c1))
|
||||
ENGINE = archive
|
||||
DATA DIRECTORY = 'MYSQL_TMP_DIR/archive' INDEX DIRECTORY = 'MYSQL_TMP_DIR/archive';
|
||||
Warnings:
|
||||
Warning 1618 DATA DIRECTORY option ignored
|
||||
Warning 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 DATA DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
INSERT INTO t1 VALUES (NULL, "first", 1);
|
||||
INSERT INTO t1 VALUES (NULL, "second", 2);
|
||||
INSERT INTO t1 VALUES (NULL, "third", 3);
|
||||
|
||||
@@ -11,7 +11,7 @@ ERROR HY000: Can't create table `test`.`t1` (errno: 2 "No such file or directory
|
||||
CREATE TABLE t1 (a int AUTO_INCREMENT KEY, b char(30))
|
||||
ENGINE archive DATA DIRECTORY = 'MYSQL_TMP_DIR/archive' INDEX DIRECTORY = 'MYSQL_TMP_DIR/archive';
|
||||
Warnings:
|
||||
Warning 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
INSERT INTO t1 VALUES (NULL, "blue");
|
||||
INSERT INTO t1 VALUES (NULL, "red");
|
||||
INSERT INTO t1 VALUES (NULL, "yellow");
|
||||
|
||||
5
mysql-test/suite/csv/symlink.result
Normal file
5
mysql-test/suite/csv/symlink.result
Normal file
@@ -0,0 +1,5 @@
|
||||
create table t1c (a int not null) engine=csv data directory='$MYSQL_TMP_DIR' index directory='$MYSQL_TMP_DIR';
|
||||
Warnings:
|
||||
Note 1618 DATA DIRECTORY option ignored
|
||||
insert t1c values (1),(2);
|
||||
drop table t1c;
|
||||
8
mysql-test/suite/csv/symlink.test
Normal file
8
mysql-test/suite/csv/symlink.test
Normal file
@@ -0,0 +1,8 @@
|
||||
--source include/have_csv.inc
|
||||
|
||||
# not supported
|
||||
evalp create table t1c (a int not null) engine=csv data directory='$MYSQL_TMP_DIR' index directory='$MYSQL_TMP_DIR';
|
||||
insert t1c values (1),(2);
|
||||
list_files $MYSQL_TMP_DIR t1c*;
|
||||
drop table t1c;
|
||||
|
||||
@@ -1,25 +1,30 @@
|
||||
SELECT @@have_symlink;
|
||||
@@have_symlink
|
||||
DISABLED
|
||||
CREATE TABLE t1(a INT) ENGINE=InnoDB DATA DIRECTORY 'MYSQL_TMP_DIR';
|
||||
CREATE TABLE t1(a INT, KEY(a)) ENGINE=InnoDB DATA DIRECTORY '$MYSQL_TMP_DIR' INDEX DIRECTORY '$MYSQL_TMP_DIR';
|
||||
Warnings:
|
||||
Warning 1618 DATA DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DATA DIRECTORY 'MYSQL_TMP_DIR';
|
||||
CREATE TABLE t1(a INT, KEY(a)) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DATA DIRECTORY '$MYSQL_TMP_DIR' INDEX DIRECTORY '$MYSQL_TMP_DIR';
|
||||
Warnings:
|
||||
Warning 1618 DATA DIRECTORY option ignored
|
||||
Warning 1618 INDEX DIRECTORY option ignored
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
`a` int(11) DEFAULT NULL,
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
DROP TABLE t1;
|
||||
# restart: --symbolic-links
|
||||
CREATE TABLE t1(a INT PRIMARY KEY, b INT) ENGINE=InnoDB
|
||||
DATA DIRECTORY 'MYSQL_TMP_DIR';
|
||||
DATA DIRECTORY '$MYSQL_TMP_DIR' INDEX DIRECTORY '$MYSQL_TMP_DIR/other';
|
||||
Warnings:
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
CREATE TABLE t2(a INT PRIMARY KEY, b INT) ENGINE=InnoDB
|
||||
DATA DIRECTORY 'MYSQL_TMP_DIR';
|
||||
DATA DIRECTORY '$MYSQL_TMP_DIR' INDEX DIRECTORY '$MYSQL_TMP_DIR';
|
||||
TRUNCATE TABLE t1;
|
||||
TRUNCATE TABLE t2;
|
||||
# restart
|
||||
|
||||
@@ -2,13 +2,11 @@
|
||||
--source include/not_windows.inc
|
||||
|
||||
SELECT @@have_symlink;
|
||||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
||||
eval CREATE TABLE t1(a INT) ENGINE=InnoDB DATA DIRECTORY '$MYSQL_TMP_DIR';
|
||||
evalp CREATE TABLE t1(a INT, KEY(a)) ENGINE=InnoDB DATA DIRECTORY '$MYSQL_TMP_DIR' INDEX DIRECTORY '$MYSQL_TMP_DIR';
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t1(a INT, KEY(a)) ENGINE=InnoDB;
|
||||
|
||||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
||||
eval ALTER TABLE t1 DATA DIRECTORY '$MYSQL_TMP_DIR';
|
||||
evalp ALTER TABLE t1 DATA DIRECTORY '$MYSQL_TMP_DIR' INDEX DIRECTORY '$MYSQL_TMP_DIR';
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
@@ -16,12 +14,10 @@ DROP TABLE t1;
|
||||
--let $restart_parameters=--symbolic-links
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
||||
eval CREATE TABLE t1(a INT PRIMARY KEY, b INT) ENGINE=InnoDB
|
||||
DATA DIRECTORY '$MYSQL_TMP_DIR';
|
||||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
||||
eval CREATE TABLE t2(a INT PRIMARY KEY, b INT) ENGINE=InnoDB
|
||||
DATA DIRECTORY '$MYSQL_TMP_DIR';
|
||||
evalp CREATE TABLE t1(a INT PRIMARY KEY, b INT) ENGINE=InnoDB
|
||||
DATA DIRECTORY '$MYSQL_TMP_DIR' INDEX DIRECTORY '$MYSQL_TMP_DIR/other';
|
||||
evalp CREATE TABLE t2(a INT PRIMARY KEY, b INT) ENGINE=InnoDB
|
||||
DATA DIRECTORY '$MYSQL_TMP_DIR' INDEX DIRECTORY '$MYSQL_TMP_DIR';
|
||||
|
||||
TRUNCATE TABLE t1;
|
||||
TRUNCATE TABLE t2;
|
||||
|
||||
@@ -10,20 +10,19 @@ SET SESSION innodb_strict_mode = ON;
|
||||
SET GLOBAL innodb_file_per_table = OFF;
|
||||
Warnings:
|
||||
Warning 1287 '@@innodb_file_per_table' is deprecated and will be removed in a future release
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
|
||||
CREATE TABLE t1 (c1 INT, KEY(c1)) ENGINE = InnoDB
|
||||
PARTITION BY HASH (c1) (
|
||||
PARTITION p0
|
||||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||
PARTITION p1
|
||||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-idx-dir'
|
||||
);
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1478 InnoDB: DATA DIRECTORY requires innodb_file_per_table.
|
||||
Warning 1478 InnoDB: INDEX DIRECTORY is not supported
|
||||
Error 1005 Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
|
||||
Error 6 Error on delete of 'MYSQLD_DATADIR/test/t1.par' (Errcode: 2 "No such file or directory")
|
||||
@@ -40,22 +39,22 @@ SET SESSION innodb_strict_mode = OFF;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
Warnings:
|
||||
Warning 1287 '@@innodb_file_per_table' is deprecated and will be removed in a future release
|
||||
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
|
||||
CREATE TABLE t1 (c1 INT, KEY(c1)) ENGINE = InnoDB
|
||||
PARTITION BY HASH (c1)
|
||||
(PARTITION p0
|
||||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-idx-dir',
|
||||
PARTITION p1
|
||||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-idx-dir'
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-idx-dir'
|
||||
);
|
||||
Warnings:
|
||||
Warning 1618 INDEX DIRECTORY option ignored
|
||||
Warning 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1618 INDEX DIRECTORY option ignored
|
||||
Warning 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
# Verifying .frm, .par, .isl & .ibd files
|
||||
---- MYSQLD_DATADIR/test
|
||||
db.opt
|
||||
@@ -74,7 +73,8 @@ FLUSH TABLES;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) DEFAULT NULL
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
KEY `c1` (`c1`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
PARTITION BY HASH (`c1`)
|
||||
(PARTITION `p0` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = InnoDB,
|
||||
@@ -87,7 +87,8 @@ ALTER TABLE t1 engine=MyISAM;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) DEFAULT NULL
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
KEY `c1` (`c1`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
PARTITION BY HASH (`c1`)
|
||||
(PARTITION `p0` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = MyISAM,
|
||||
@@ -114,7 +115,8 @@ ALTER TABLE t1 engine=InnoDB;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) DEFAULT NULL
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
KEY `c1` (`c1`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
PARTITION BY HASH (`c1`)
|
||||
(PARTITION `p0` DATA DIRECTORY = 'MYSQLTEST_VARDIR/mysql-test-data-dir' ENGINE = InnoDB,
|
||||
|
||||
@@ -2,17 +2,18 @@
|
||||
# MDEV-15953 Alter InnoDB Partitioned Table Moves Files (which were originally not in the datadir) to the datadir
|
||||
#
|
||||
CREATE TABLE t (
|
||||
a INT NOT NULL
|
||||
a INT NOT NULL, KEY(a)
|
||||
) ENGINE=INNODB
|
||||
PARTITION BY HASH (a) (
|
||||
PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/' ENGINE = INNODB,
|
||||
PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/' ENGINE = INNODB
|
||||
PARTITION p1 DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/' ENGINE = INNODB,
|
||||
PARTITION p2 DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/' ENGINE = INNODB
|
||||
);
|
||||
INSERT INTO t VALUES (1);
|
||||
SHOW CREATE TABLE t;
|
||||
Table Create Table
|
||||
t CREATE TABLE `t` (
|
||||
`a` int(11) NOT NULL
|
||||
`a` int(11) NOT NULL,
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
PARTITION BY HASH (`a`)
|
||||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB,
|
||||
@@ -24,7 +25,8 @@ SHOW CREATE TABLE t;
|
||||
Table Create Table
|
||||
t CREATE TABLE `t` (
|
||||
`a` int(11) NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
PARTITION BY HASH (`a`)
|
||||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB,
|
||||
@@ -33,7 +35,8 @@ ALTER TABLE t DROP PRIMARY KEY, ALGORITHM=COPY;
|
||||
SHOW CREATE TABLE t;
|
||||
Table Create Table
|
||||
t CREATE TABLE `t` (
|
||||
`a` int(11) NOT NULL
|
||||
`a` int(11) NOT NULL,
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
PARTITION BY HASH (`a`)
|
||||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB,
|
||||
@@ -49,7 +52,8 @@ SHOW CREATE TABLE t;
|
||||
Table Create Table
|
||||
t CREATE TABLE `t` (
|
||||
`a` int(11) NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
PARTITION BY HASH (`a`)
|
||||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB,
|
||||
@@ -68,7 +72,8 @@ SHOW CREATE TABLE t;
|
||||
Table Create Table
|
||||
t CREATE TABLE `t` (
|
||||
`a` int(11) NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
PARTITION BY HASH (`a`)
|
||||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB,
|
||||
@@ -84,7 +89,8 @@ SHOW CREATE TABLE t;
|
||||
Table Create Table
|
||||
t CREATE TABLE `t` (
|
||||
`a` int(11) NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
PARTITION BY HASH (`a`)
|
||||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB,
|
||||
@@ -100,7 +106,8 @@ SHOW CREATE TABLE t;
|
||||
Table Create Table
|
||||
t CREATE TABLE `t` (
|
||||
`a` int(11) NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
PARTITION BY HASH (`a`)
|
||||
(PARTITION `p1` DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here' ENGINE = InnoDB,
|
||||
@@ -109,37 +116,37 @@ DROP TABLE t;
|
||||
SET @strict = @@innodb_strict_mode;
|
||||
SET innodb_strict_mode=OFF;
|
||||
CREATE TABLE t (
|
||||
a INT NOT NULL
|
||||
a INT NOT NULL, KEY(a)
|
||||
) ENGINE=INNODB
|
||||
PARTITION BY RANGE (a)
|
||||
SUBPARTITION BY HASH (a)
|
||||
SUBPARTITIONS 2
|
||||
(
|
||||
PARTITION p1 VALUES LESS THAN (7)
|
||||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
ENGINE = INNODB,
|
||||
PARTITION p2 VALUES LESS THAN MAXVALUE
|
||||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
ENGINE = INNODB
|
||||
);
|
||||
Warnings:
|
||||
Warning 1618 INDEX DIRECTORY option ignored
|
||||
Warning 1618 INDEX DIRECTORY option ignored
|
||||
Warning 1618 INDEX DIRECTORY option ignored
|
||||
Warning 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
SET innodb_strict_mode=@strict;
|
||||
ALTER TABLE t
|
||||
REORGANIZE PARTITION p1,p2 INTO
|
||||
(
|
||||
PARTITION p1 VALUES LESS THAN (7)
|
||||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
ENGINE = INNODB,
|
||||
PARTITION p2 VALUES LESS THAN MAXVALUE
|
||||
DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
ENGINE = INNODB
|
||||
);
|
||||
Warnings:
|
||||
@@ -154,11 +161,12 @@ Warning 1982 INDEX DIRECTORY option ignored for InnoDB partition
|
||||
SHOW CREATE TABLE t;
|
||||
Table Create Table
|
||||
t CREATE TABLE `t` (
|
||||
`a` int(11) NOT NULL
|
||||
`a` int(11) NOT NULL,
|
||||
KEY `a` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
|
||||
PARTITION BY RANGE (`a`)
|
||||
SUBPARTITION BY HASH (`a`)
|
||||
SUBPARTITIONS 2
|
||||
(PARTITION `p1` VALUES LESS THAN (7) DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = InnoDB,
|
||||
PARTITION `p2` VALUES LESS THAN MAXVALUE DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' ENGINE = InnoDB)
|
||||
(PARTITION `p1` VALUES LESS THAN (7) DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/' ENGINE = InnoDB,
|
||||
PARTITION `p2` VALUES LESS THAN MAXVALUE DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp/partitions_here/' ENGINE = InnoDB)
|
||||
DROP TABLE t;
|
||||
|
||||
@@ -54,9 +54,8 @@ SET SESSION innodb_strict_mode = ON;
|
||||
--echo # InnoDB only supports DATA DIRECTORY with innodb_file_per_table=ON
|
||||
--echo #
|
||||
SET GLOBAL innodb_file_per_table = OFF;
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
eval CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
|
||||
evalp CREATE TABLE t1 (c1 INT, KEY(c1)) ENGINE = InnoDB
|
||||
PARTITION BY HASH (c1) (
|
||||
PARTITION p0
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||
@@ -79,8 +78,7 @@ SHOW WARNINGS;
|
||||
--echo #
|
||||
SET SESSION innodb_strict_mode = OFF;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
eval CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
|
||||
evalp CREATE TABLE t1 (c1 INT, KEY(c1)) ENGINE = InnoDB
|
||||
PARTITION BY HASH (c1)
|
||||
(PARTITION p0
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-data-dir'
|
||||
|
||||
@@ -8,9 +8,8 @@
|
||||
|
||||
mkdir $MYSQLTEST_VARDIR/tmp/partitions_here;
|
||||
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
eval CREATE TABLE t (
|
||||
a INT NOT NULL
|
||||
evalp CREATE TABLE t (
|
||||
a INT NOT NULL, KEY(a)
|
||||
) ENGINE=INNODB
|
||||
PARTITION BY HASH (a) (
|
||||
PARTITION p1 DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/' ENGINE = INNODB,
|
||||
@@ -61,9 +60,8 @@ DROP TABLE t;
|
||||
|
||||
SET @strict = @@innodb_strict_mode;
|
||||
SET innodb_strict_mode=OFF;
|
||||
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
eval CREATE TABLE t (
|
||||
a INT NOT NULL
|
||||
evalp CREATE TABLE t (
|
||||
a INT NOT NULL, KEY(a)
|
||||
) ENGINE=INNODB
|
||||
PARTITION BY RANGE (a)
|
||||
SUBPARTITION BY HASH (a)
|
||||
@@ -71,11 +69,11 @@ PARTITION BY RANGE (a)
|
||||
(
|
||||
PARTITION p1 VALUES LESS THAN (7)
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
ENGINE = INNODB,
|
||||
PARTITION p2 VALUES LESS THAN MAXVALUE
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
ENGINE = INNODB
|
||||
);
|
||||
SET innodb_strict_mode=@strict;
|
||||
@@ -86,11 +84,11 @@ REORGANIZE PARTITION p1,p2 INTO
|
||||
(
|
||||
PARTITION p1 VALUES LESS THAN (7)
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
ENGINE = INNODB,
|
||||
PARTITION p2 VALUES LESS THAN MAXVALUE
|
||||
DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_somewhere_else/'
|
||||
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp/partitions_here/'
|
||||
ENGINE = INNODB
|
||||
);
|
||||
|
||||
|
||||
@@ -826,7 +826,7 @@ int ha_archive::create(const char *name, TABLE *table_arg,
|
||||
#endif /* HAVE_READLINK */
|
||||
{
|
||||
if (create_info->data_file_name)
|
||||
my_error(WARN_OPTION_IGNORED, MYF(ME_WARNING), "DATA DIRECTORY");
|
||||
my_error(WARN_OPTION_IGNORED, MYF(ME_NOTE), "DATA DIRECTORY");
|
||||
|
||||
fn_format(name_buff, name, "", ARZ,
|
||||
MY_REPLACE_EXT | MY_UNPACK_FILENAME);
|
||||
@@ -834,8 +834,8 @@ int ha_archive::create(const char *name, TABLE *table_arg,
|
||||
}
|
||||
|
||||
/* Archive engine never uses INDEX DIRECTORY. */
|
||||
if (create_info->index_file_name)
|
||||
my_error(WARN_OPTION_IGNORED, MYF(ME_WARNING), "INDEX DIRECTORY");
|
||||
if (create_info->index_file_name && table_arg->s->keys)
|
||||
my_error(WARN_OPTION_IGNORED, MYF(ME_NOTE), "INDEX DIRECTORY");
|
||||
|
||||
/*
|
||||
There is a chance that the file was "discovered". In this case
|
||||
|
||||
@@ -1729,6 +1729,11 @@ int ha_tina::create(const char *name, TABLE *table_arg,
|
||||
}
|
||||
}
|
||||
|
||||
if (create_info->data_file_name)
|
||||
my_error(WARN_OPTION_IGNORED, ME_NOTE, "DATA DIRECTORY");
|
||||
|
||||
if (create_info->index_file_name && table_arg->s->keys)
|
||||
my_error(WARN_OPTION_IGNORED, ME_NOTE, "INDEX DIRECTORY");
|
||||
|
||||
if ((create_file= mysql_file_create(csv_key_file_metadata,
|
||||
fn_format(name_buff, name, "", CSM_EXT,
|
||||
|
||||
@@ -11274,15 +11274,6 @@ create_table_info_t::create_options_are_invalid()
|
||||
ret = "DATA DIRECTORY";
|
||||
}
|
||||
|
||||
/* Do not allow INDEX_DIRECTORY */
|
||||
if (m_create_info->index_file_name) {
|
||||
push_warning_printf(
|
||||
m_thd, Sql_condition::WARN_LEVEL_WARN,
|
||||
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||
"InnoDB: INDEX DIRECTORY is not supported");
|
||||
ret = "INDEX DIRECTORY";
|
||||
}
|
||||
|
||||
/* Don't support compressed table when page size > 16k. */
|
||||
if ((has_key_block_size || row_format == ROW_TYPE_COMPRESSED)
|
||||
&& srv_page_size > UNIV_PAGE_SIZE_DEF) {
|
||||
@@ -11557,15 +11548,16 @@ create_table_info_t::parse_table_name(
|
||||
|
||||
m_flags &= ~DICT_TF_MASK_DATA_DIR;
|
||||
} else {
|
||||
strncpy(m_remote_path,
|
||||
strmake(m_remote_path,
|
||||
m_create_info->data_file_name,
|
||||
FN_REFLEN - 1);
|
||||
FN_REFLEN - 2);
|
||||
}
|
||||
}
|
||||
|
||||
if (m_create_info->index_file_name) {
|
||||
my_error(WARN_OPTION_IGNORED, ME_WARNING,
|
||||
"INDEX DIRECTORY");
|
||||
if (m_create_info->index_file_name && m_form->s->keys &&
|
||||
(!(m_flags & DICT_TF_MASK_DATA_DIR) ||
|
||||
strcmp(m_remote_path, m_create_info->index_file_name))) {
|
||||
my_error(WARN_OPTION_IGNORED, ME_NOTE, "INDEX DIRECTORY");
|
||||
}
|
||||
|
||||
DBUG_RETURN(0);
|
||||
|
||||
@@ -7839,12 +7839,12 @@ int ha_rocksdb::create(const char *const name, TABLE *const table_arg,
|
||||
// outside the MySQL data directory. We don't support this for MyRocks.
|
||||
// The `rocksdb_datadir` setting should be used to configure RocksDB data
|
||||
// directory.
|
||||
DBUG_RETURN(HA_ERR_ROCKSDB_TABLE_DATA_DIRECTORY_NOT_SUPPORTED);
|
||||
my_error(WARN_OPTION_IGNORED, ME_NOTE, "DATA DIRECTORY");
|
||||
}
|
||||
|
||||
if (create_info->index_file_name) {
|
||||
if (create_info->index_file_name && table_arg->s->keys) {
|
||||
// Similar check for INDEX DIRECTORY as well.
|
||||
DBUG_RETURN(HA_ERR_ROCKSDB_TABLE_INDEX_DIRECTORY_NOT_SUPPORTED);
|
||||
my_error(WARN_OPTION_IGNORED, ME_NOTE, "INDEX DIRECTORY");
|
||||
}
|
||||
|
||||
int err;
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb DATA DIRECTORY = '/foo/bar/data';
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: XXX "Unknown error XXX")
|
||||
Warnings:
|
||||
Note 1618 DATA DIRECTORY option ignored
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1005 Can't create table `test`.`t1` (errno: XXX "Unknown error XXX")
|
||||
Warning 1296 Got error XXX 'Specifying DATA DIRECTORY for an individual table is not supported.' from ROCKSDB
|
||||
Note 1618 DATA DIRECTORY option ignored
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb INDEX DIRECTORY = '/foo/bar/index';
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: XXX "Unknown error XXX")
|
||||
Warnings:
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1005 Can't create table `test`.`t1` (errno: XXX "Unknown error XXX")
|
||||
Warning 1296 Got error XXX 'Specifying INDEX DIRECTORY for an individual table is not supported.' from ROCKSDB
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY) ENGINE=rocksdb PARTITION BY RANGE (id)
|
||||
(
|
||||
PARTITION P0 VALUES LESS THAN (1000)
|
||||
@@ -19,12 +20,14 @@ PARTITION P1 VALUES LESS THAN (2000)
|
||||
DATA DIRECTORY = '/foo/bar/data/',
|
||||
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
||||
);
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: XXX "Unknown error XXX")
|
||||
Warnings:
|
||||
Note 1618 DATA DIRECTORY option ignored
|
||||
Note 1618 DATA DIRECTORY option ignored
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1005 Can't create table `test`.`t1` (errno: XXX "Unknown error XXX")
|
||||
Warning 1296 Got error XXX 'Specifying DATA DIRECTORY for an individual table is not supported.' from ROCKSDB
|
||||
Error 6 Error on delete of './test/t1.par' (Errcode: 2 "No such file or directory")
|
||||
Note 1618 DATA DIRECTORY option ignored
|
||||
Note 1618 DATA DIRECTORY option ignored
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (id int not null primary key) ENGINE=rocksdb PARTITION BY RANGE (id)
|
||||
(
|
||||
PARTITION P0 VALUES LESS THAN (1000)
|
||||
@@ -33,9 +36,11 @@ PARTITION P1 VALUES LESS THAN (2000)
|
||||
INDEX DIRECTORY = '/foo/bar/data/',
|
||||
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
||||
);
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: XXX "Unknown error XXX")
|
||||
Warnings:
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1005 Can't create table `test`.`t1` (errno: XXX "Unknown error XXX")
|
||||
Warning 1296 Got error XXX 'Specifying INDEX DIRECTORY for an individual table is not supported.' from ROCKSDB
|
||||
Error 6 Error on delete of './test/t1.par' (Errcode: 2 "No such file or directory")
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
Note 1618 INDEX DIRECTORY option ignored
|
||||
drop table t1;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
--source include/have_rocksdb.inc
|
||||
|
||||
--source include/have_partition.inc
|
||||
--source include/not_windows.inc
|
||||
|
||||
@@ -9,32 +8,18 @@
|
||||
# functionality and therefore shouldn't just silently accept the values.
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
# On a Mac, strerror() prints "Unknown error: nn", as
|
||||
# opposed to "Unknown error nn" on Linux/etc.
|
||||
# Replacing 'error:' with 'error' below to make the output uniform.
|
||||
|
||||
--replace_regex /err(no:|or):? \d+/err\1 XXX/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb DATA DIRECTORY = '/foo/bar/data';
|
||||
--replace_regex /err(no:|or):? \d+/err\1 XXX/
|
||||
show warnings;
|
||||
drop table t1;
|
||||
|
||||
--replace_regex /err(no:|or):? \d+/err\1 XXX/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b CHAR(8)) ENGINE=rocksdb INDEX DIRECTORY = '/foo/bar/index';
|
||||
--replace_regex /err(no:|or):? \d+/err\1 XXX/
|
||||
show warnings;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Verify that we'll get the same error codes when using the partitions.
|
||||
#
|
||||
|
||||
--replace_regex /err(no:|or):? \d+/err\1 XXX/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY) ENGINE=rocksdb PARTITION BY RANGE (id)
|
||||
(
|
||||
PARTITION P0 VALUES LESS THAN (1000)
|
||||
@@ -43,11 +28,9 @@ CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY) ENGINE=rocksdb PARTITION BY RANGE
|
||||
DATA DIRECTORY = '/foo/bar/data/',
|
||||
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
||||
);
|
||||
--replace_regex /err(no:|or):? \d+/err\1 XXX/
|
||||
show warnings;
|
||||
drop table t1;
|
||||
|
||||
--replace_regex /err(no:|or):? \d+/err\1 XXX/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
CREATE TABLE t1 (id int not null primary key) ENGINE=rocksdb PARTITION BY RANGE (id)
|
||||
(
|
||||
PARTITION P0 VALUES LESS THAN (1000)
|
||||
@@ -56,5 +39,5 @@ CREATE TABLE t1 (id int not null primary key) ENGINE=rocksdb PARTITION BY RANGE
|
||||
INDEX DIRECTORY = '/foo/bar/data/',
|
||||
PARTITION P2 VALUES LESS THAN (MAXVALUE)
|
||||
);
|
||||
--replace_regex /err(no:|or):? \d+/err\1 XXX/
|
||||
show warnings;
|
||||
drop table t1;
|
||||
|
||||
Reference in New Issue
Block a user