mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
214 lines
7.6 KiB
Text
214 lines
7.6 KiB
Text
# Non-windows specific partition tests.
|
|
--source include/not_windows.inc
|
|
--source include/have_partition.inc
|
|
# DATA DIRECTORY/INDEX DIRECTORY require symbolic link support
|
|
--source include/have_symlink.inc
|
|
|
|
# The test for Bug 20770 is disabled on Windows due to BUG#19107; it
|
|
# should be moved into partition.test once the bug has been resolved.
|
|
|
|
#
|
|
# Bug 20770 Partitions: DATA DIRECTORY clause change in reorganize
|
|
# doesn't remove old directory
|
|
|
|
let $MYSQLD_DATADIR= `select @@datadir`;
|
|
let $data_directory = DATA DIRECTORY = '$MYSQLTEST_VARDIR/tmp';
|
|
let $inx_directory = INDEX DIRECTORY = '$MYSQLTEST_VARDIR/tmp';
|
|
|
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
|
eval create table t1 (a int) engine myisam
|
|
partition by range (a)
|
|
subpartition by hash (a)
|
|
(partition p0 VALUES LESS THAN (1) $data_directory $inx_directory
|
|
(SUBPARTITION subpart00, SUBPARTITION subpart01));
|
|
|
|
--echo # Checking if file exists before alter
|
|
--file_exists $MYSQLD_DATADIR/test/t1.frm
|
|
--file_exists $MYSQLD_DATADIR/test/t1.par
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p0#SP#subpart00.MYD
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p0#SP#subpart00.MYI
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p0#SP#subpart01.MYD
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p0#SP#subpart01.MYI
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p0#SP#subpart00.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p0#SP#subpart01.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p0#SP#subpart00.MYI
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p0#SP#subpart01.MYI
|
|
|
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
|
eval ALTER TABLE t1 REORGANIZE PARTITION p0 INTO
|
|
(partition p1 VALUES LESS THAN (1) $data_directory $inx_directory
|
|
(SUBPARTITION subpart10, SUBPARTITION subpart11),
|
|
partition p2 VALUES LESS THAN (2) $data_directory $inx_directory
|
|
(SUBPARTITION subpart20, SUBPARTITION subpart21));
|
|
|
|
--echo # Checking if file exists after alter
|
|
--file_exists $MYSQLD_DATADIR/test/t1.frm
|
|
--file_exists $MYSQLD_DATADIR/test/t1.par
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p1#SP#subpart10.MYD
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p1#SP#subpart10.MYI
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p1#SP#subpart11.MYD
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p1#SP#subpart11.MYI
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p2#SP#subpart20.MYD
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p2#SP#subpart20.MYI
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p2#SP#subpart21.MYD
|
|
--file_exists $MYSQLD_DATADIR/test/t1#P#p2#SP#subpart21.MYI
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p1#SP#subpart10.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p1#SP#subpart11.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p2#SP#subpart20.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p2#SP#subpart21.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p1#SP#subpart10.MYI
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p1#SP#subpart11.MYI
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p2#SP#subpart20.MYI
|
|
--file_exists $MYSQLTEST_VARDIR/tmp/t1#P#p2#SP#subpart21.MYI
|
|
|
|
drop table t1;
|
|
|
|
#
|
|
# Bug #24633 SQL MODE "NO_DIR_IN_CREATE" does not work with partitioned tables
|
|
#
|
|
disable_query_log;
|
|
eval create table t2 (i int )
|
|
partition by range (i)
|
|
(
|
|
partition p01 values less than (1000)
|
|
data directory="$MYSQLTEST_VARDIR/tmp/"
|
|
index directory="$MYSQLTEST_VARDIR/tmp/"
|
|
);
|
|
enable_query_log;
|
|
|
|
set @org_mode=@@sql_mode;
|
|
set @@sql_mode='NO_DIR_IN_CREATE';
|
|
select @@sql_mode;
|
|
create table t1 (i int )
|
|
partition by range (i)
|
|
(
|
|
partition p01 values less than (1000)
|
|
data directory='/not/existing'
|
|
index directory='/not/existing'
|
|
);
|
|
show create table t2;
|
|
DROP TABLE t1, t2;
|
|
set @@sql_mode=@org_mode;
|
|
|
|
#
|
|
# Bug#32167: another privilege bypass with DATA/INDEX DIRECTORY
|
|
#
|
|
|
|
let $MYSQLD_DATADIR= `select @@datadir`;
|
|
|
|
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
|
|
--error ER_WRONG_ARGUMENTS
|
|
eval CREATE TABLE t1(a INT)
|
|
PARTITION BY KEY (a)
|
|
(PARTITION p0 DATA DIRECTORY '$MYSQLD_DATADIR/test');
|
|
|
|
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
|
|
--error ER_WRONG_ARGUMENTS
|
|
eval CREATE TABLE t1(a INT)
|
|
PARTITION BY KEY (a)
|
|
(PARTITION p0 INDEX DIRECTORY '$MYSQLD_DATADIR/test');
|
|
|
|
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
|
|
--error ER_WRONG_ARGUMENTS
|
|
eval CREATE TABLE ts (id INT, purchased DATE)
|
|
PARTITION BY RANGE(YEAR(purchased))
|
|
SUBPARTITION BY HASH(TO_DAYS(purchased)) (
|
|
PARTITION p0 VALUES LESS THAN (1990) (
|
|
SUBPARTITION s0a
|
|
DATA DIRECTORY = '$MYSQLD_DATADIR/test',
|
|
SUBPARTITION s0b
|
|
DATA DIRECTORY = '$MYSQLD_DATADIR/test'
|
|
));
|
|
|
|
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
|
|
--error ER_WRONG_ARGUMENTS
|
|
eval CREATE TABLE ts (id INT, purchased DATE)
|
|
PARTITION BY RANGE(YEAR(purchased))
|
|
SUBPARTITION BY HASH(TO_DAYS(purchased)) (
|
|
PARTITION p0 VALUES LESS THAN (1990) (
|
|
SUBPARTITION s0a
|
|
INDEX DIRECTORY = '$MYSQLD_DATADIR/test',
|
|
SUBPARTITION s0b
|
|
INDEX DIRECTORY = '$MYSQLD_DATADIR/test'
|
|
));
|
|
|
|
# End Windows specific test failures.
|
|
|
|
# These tests contain non-Windows specific directory/file format.
|
|
|
|
#
|
|
# Bug 25141: Crash Server on Partitioning command
|
|
#
|
|
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS `example`;
|
|
--enable_warnings
|
|
|
|
--mkdir $MYSQLTEST_VARDIR/p0Data
|
|
--mkdir $MYSQLTEST_VARDIR/p1Data
|
|
--mkdir $MYSQLTEST_VARDIR/p2Data
|
|
--mkdir $MYSQLTEST_VARDIR/p3Data
|
|
--mkdir $MYSQLTEST_VARDIR/p0Index
|
|
--mkdir $MYSQLTEST_VARDIR/p1Index
|
|
--mkdir $MYSQLTEST_VARDIR/p2Index
|
|
--mkdir $MYSQLTEST_VARDIR/p3Index
|
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
|
eval CREATE TABLE `example` (
|
|
`ID_EXAMPLE` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
|
`DESCRIPTION` varchar(30) NOT NULL,
|
|
`LEVEL` smallint(5) unsigned DEFAULT NULL,
|
|
PRIMARY KEY (`ID_EXAMPLE`)
|
|
) ENGINE = MYISAM
|
|
PARTITION BY HASH(ID_EXAMPLE)(
|
|
PARTITION p0 DATA DIRECTORY = '$MYSQLTEST_VARDIR/p0Data'
|
|
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/p0Index',
|
|
PARTITION p1 DATA DIRECTORY = '$MYSQLTEST_VARDIR/p1Data'
|
|
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/p1Index',
|
|
PARTITION p2 DATA DIRECTORY = '$MYSQLTEST_VARDIR/p2Data'
|
|
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/p2Index',
|
|
PARTITION p3 DATA DIRECTORY = '$MYSQLTEST_VARDIR/p3Data'
|
|
INDEX DIRECTORY = '$MYSQLTEST_VARDIR/p3Index'
|
|
);
|
|
|
|
let $MYSQLD_DATADIR= `select @@datadir`;
|
|
|
|
--echo # Checking that MyISAM .MYD and .MYI are in test db and data/idx dir
|
|
--file_exists $MYSQLD_DATADIR/test/example#P#p0.MYI
|
|
--file_exists $MYSQLD_DATADIR/test/example#P#p0.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/p0Data/example#P#p0.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/p0Index/example#P#p0.MYI
|
|
--file_exists $MYSQLD_DATADIR/test/example#P#p1.MYI
|
|
--file_exists $MYSQLD_DATADIR/test/example#P#p1.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/p1Data/example#P#p1.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/p1Index/example#P#p1.MYI
|
|
--file_exists $MYSQLD_DATADIR/test/example#P#p2.MYI
|
|
--file_exists $MYSQLD_DATADIR/test/example#P#p2.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/p2Data/example#P#p2.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/p2Index/example#P#p2.MYI
|
|
--file_exists $MYSQLD_DATADIR/test/example#P#p3.MYI
|
|
--file_exists $MYSQLD_DATADIR/test/example#P#p3.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/p3Data/example#P#p3.MYD
|
|
--file_exists $MYSQLTEST_VARDIR/p3Index/example#P#p3.MYI
|
|
DROP TABLE example;
|
|
--rmdir $MYSQLTEST_VARDIR/p0Data
|
|
--rmdir $MYSQLTEST_VARDIR/p1Data
|
|
--rmdir $MYSQLTEST_VARDIR/p2Data
|
|
--rmdir $MYSQLTEST_VARDIR/p3Data
|
|
--rmdir $MYSQLTEST_VARDIR/p0Index
|
|
--rmdir $MYSQLTEST_VARDIR/p1Index
|
|
--rmdir $MYSQLTEST_VARDIR/p2Index
|
|
--rmdir $MYSQLTEST_VARDIR/p3Index
|
|
|
|
--error 1
|
|
CREATE TABLE `example` (
|
|
`ID_EXAMPLE` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
|
`DESCRIPTION` varchar(30) NOT NULL,
|
|
`LEVEL` smallint(5) unsigned DEFAULT NULL,
|
|
PRIMARY KEY (`ID_EXAMPLE`)
|
|
) ENGINE = MYISAM
|
|
PARTITION BY HASH(ID_EXAMPLE)(
|
|
PARTITION p0 DATA DIRECTORY = '/not/existent/p0Data',
|
|
PARTITION p1 DATA DIRECTORY = '/not/existent/p1Data',
|
|
PARTITION p2 DATA DIRECTORY = '/not/existent/p2Data',
|
|
PARTITION p3 DATA DIRECTORY = '/not/existent/p3Data'
|
|
);
|