mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +03:00
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
58 lines
2.1 KiB
Plaintext
58 lines
2.1 KiB
Plaintext
#
|
|
# Archive can only use an existing directory for DATA 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';
|
|
ERROR HY000: Can't create table `test`.`t1` (errno: 2 "No such file or directory")
|
|
#
|
|
# mkdir MYSQL_TMP_DIR/archive and try again...
|
|
# Archive will use a symlink for DATA DIRECTORY but ignore INDEX 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:
|
|
Note 1618 INDEX DIRECTORY option ignored
|
|
INSERT INTO t1 VALUES (NULL, "blue");
|
|
INSERT INTO t1 VALUES (NULL, "red");
|
|
INSERT INTO t1 VALUES (NULL, "yellow");
|
|
# Checking if archive file exists where we specified in DATA DIRECTORY
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) NOT NULL AUTO_INCREMENT,
|
|
`b` char(30) DEFAULT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=ARCHIVE AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci DATA DIRECTORY='MYSQL_TMP_DIR/archive/'
|
|
DROP TABLE t1;
|
|
#
|
|
# Be sure SQL MODE "NO_DIR_IN_CREATE" prevents the use of DATA DIRECTORY
|
|
#
|
|
SET @org_mode=@@sql_mode;
|
|
SET @@sql_mode='NO_DIR_IN_CREATE';
|
|
SELECT @@sql_mode;
|
|
@@sql_mode
|
|
NO_DIR_IN_CREATE
|
|
CREATE TABLE t1 (a int AUTO_INCREMENT KEY, b char(30))
|
|
ENGINE archive DATA DIRECTORY = 'MYSQL_TMP_DIR/archive';
|
|
Warnings:
|
|
Warning 1618 DATA DIRECTORY option ignored
|
|
INSERT INTO t1 VALUES (NULL, "blue");
|
|
INSERT INTO t1 VALUES (NULL, "red");
|
|
INSERT INTO t1 VALUES (NULL, "yellow");
|
|
# Checking if archive file exists in --datadir since DATA DIRECTORY was ignored.
|
|
DROP TABLE t1;
|
|
set @@sql_mode=@org_mode;
|
|
#
|
|
# MySQL engine does not allow DATA DIRECTORY to be
|
|
# within --datadir for any engine, including Archive
|
|
#
|
|
CREATE TABLE t1 (a int AUTO_INCREMENT KEY, b char(30))
|
|
ENGINE archive DATA DIRECTORY 'MYSQLD_DATADIR/test';
|
|
ERROR HY000: Incorrect arguments to DATA DIRECTORY
|
|
CREATE TABLE t1 (c1 int(10), PRIMARY KEY (c1))
|
|
ENGINE archive INDEX DIRECTORY 'MYSQLD_DATADIR/test';
|
|
ERROR HY000: Incorrect arguments to INDEX DIRECTORY
|
|
#
|
|
# Cleanup
|
|
#
|