124 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			124 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | DROP TABLE IF EXISTS t1; | ||
|  | DROP DATABASE IF EXISTS mysqltest2; | ||
|  | # Creating two non colliding tables mysqltest2.t1 and test.t1 | ||
|  | # test.t1 have partitions in mysqltest2-directory! | ||
|  | # user root: | ||
|  | CREATE USER mysqltest_1@localhost; | ||
|  | CREATE DATABASE mysqltest2; | ||
|  | USE mysqltest2; | ||
|  | CREATE TABLE t1 (a INT); | ||
|  | INSERT INTO t1 VALUES (0); | ||
|  | # user mysqltest_1: | ||
|  | USE test; | ||
|  | CREATE TABLE t1 (a INT) | ||
|  | PARTITION BY LIST (a) ( | ||
|  | PARTITION p0 VALUES IN (0) | ||
|  | DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp' | ||
|  |      INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp', | ||
|  | PARTITION p1 VALUES IN (1) | ||
|  | DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp' | ||
|  |      INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp', | ||
|  | PARTITION p2 VALUES IN (2) | ||
|  | ); | ||
|  | # without the patch for bug#32091 this would create | ||
|  | # files mysqltest2/t1.MYD + .MYI and possible overwrite | ||
|  | # the mysqltest2.t1 table (depending on bug#32111) | ||
|  | ALTER TABLE t1 REMOVE PARTITIONING; | ||
|  | INSERT INTO t1 VALUES (1); | ||
|  | SELECT * FROM t1; | ||
|  | a | ||
|  | 1 | ||
|  | # user root: | ||
|  | USE mysqltest2; | ||
|  | FLUSH TABLES; | ||
|  | # if the patch works, this should be different | ||
|  | # and before the patch they were the same! | ||
|  | SELECT * FROM t1; | ||
|  | a | ||
|  | 0 | ||
|  | USE test; | ||
|  | SELECT * FROM t1; | ||
|  | a | ||
|  | 1 | ||
|  | DROP TABLE t1; | ||
|  | DROP DATABASE mysqltest2; | ||
|  | # test that symlinks can not overwrite files when CREATE TABLE | ||
|  | # user root: | ||
|  | CREATE DATABASE mysqltest2; | ||
|  | USE mysqltest2; | ||
|  | CREATE TABLE t1 (a INT) | ||
|  | PARTITION BY LIST (a) ( | ||
|  | PARTITION p0 VALUES IN (0) | ||
|  | DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp' | ||
|  |      INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp', | ||
|  | PARTITION p1 VALUES IN (1) | ||
|  | DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp' | ||
|  |      INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp' | ||
|  |    ); | ||
|  | # user mysqltest_1: | ||
|  | USE test; | ||
|  | CREATE TABLE t1 (a INT) | ||
|  | PARTITION BY LIST (a) ( | ||
|  | PARTITION p0 VALUES IN (0) | ||
|  | DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp' | ||
|  |      INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp', | ||
|  | PARTITION p1 VALUES IN (1) | ||
|  | DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp' | ||
|  |      INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp' | ||
|  |    ); | ||
|  | Got one of the listed errors | ||
|  | CREATE TABLE t1 (a INT) | ||
|  | PARTITION BY LIST (a) ( | ||
|  | PARTITION p0 VALUES IN (0) | ||
|  | DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp' | ||
|  |      INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp', | ||
|  | PARTITION p1 VALUES IN (1) | ||
|  | DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp' | ||
|  |      INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp' | ||
|  |   ); | ||
|  | Got one of the listed errors | ||
|  | # user root (cleanup): | ||
|  | DROP DATABASE mysqltest2; | ||
|  | USE test; | ||
|  | DROP USER mysqltest_1@localhost; | ||
|  | 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" | ||
|  | ); | ||
|  | set @org_mode=@@sql_mode; | ||
|  | set @@sql_mode='NO_DIR_IN_CREATE'; | ||
|  | select @@sql_mode; | ||
|  | @@sql_mode | ||
|  | NO_DIR_IN_CREATE | ||
|  | create table t1 (i int ) | ||
|  | partition by range (i) | ||
|  | ( | ||
|  | partition p01 values less than (1000) | ||
|  | data directory='/not/existing' | ||
|  |     index directory='/not/existing' | ||
|  | ); | ||
|  | Warnings: | ||
|  | Warning	1618	<DATA DIRECTORY> option ignored | ||
|  | Warning	1618	<INDEX DIRECTORY> option ignored | ||
|  | show create table t2; | ||
|  | Table	Create Table | ||
|  | t2	CREATE TABLE `t2` ( | ||
|  |   `i` int(11) DEFAULT NULL | ||
|  | ) ENGINE=MyISAM DEFAULT CHARSET=latin1 | ||
|  | /*!50100 PARTITION BY RANGE (i) | ||
|  | (PARTITION p01 VALUES LESS THAN (1000) ENGINE = MyISAM) */ | ||
|  | DROP TABLE t1, t2; | ||
|  | set @@sql_mode=@org_mode; | ||
|  | create table t1 (a int) | ||
|  | partition by key (a) | ||
|  | (partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data'); | ||
|  | Got one of the listed errors | ||
|  | create table t1 (a int) | ||
|  | partition by key (a) | ||
|  | (partition p0, | ||
|  | partition p1 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data'); | ||
|  | Got one of the listed errors |