215 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			215 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								# 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 ER_CANT_CREATE_TABLE,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'
							 | 
						||
| 
								 | 
							
								);
							 |