--disable_abort_on_error # Run this test only when mysqld has partitioning, but it is disabled. # The statements are not expected to work, just check that we # can't crash the server. if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'partition' AND PLUGIN_STATUS='DISABLED'`) { --skip Test requires disabled partitioning } --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings let $MYSQLD_DATADIR= `SELECT @@datadir`; # # Bug#39893: Crash if select on a partitioned table, # when partitioning is disabled FLUSH TABLES; --copy_file $MYSQLTEST_VARDIR/std_data/parts/t1.frm $MYSQLD_DATADIR/test/t1.frm SELECT * FROM t1; TRUNCATE TABLE t1; ANALYZE TABLE t1; CHECK TABLE t1; OPTIMIZE TABLE t1; REPAIR TABLE t1; ALTER TABLE t1 REPAIR PARTITION ALL; ALTER TABLE t1 CHECK PARTITION ALL; ALTER TABLE t1 OPTIMIZE PARTITION ALL; ALTER TABLE t1 ANALYZE PARTITION ALL; ALTER TABLE t1 REBUILD PARTITION ALL; ALTER TABLE t1 ENGINE Memory; ALTER TABLE t1 ADD (new INT); --disable_warnings DROP TABLE t1; --enable_warnings --error ER_OPTION_PREVENTS_STATEMENT CREATE TABLE t1 ( firstname VARCHAR(25) NOT NULL, lastname VARCHAR(25) NOT NULL, username VARCHAR(16) NOT NULL, email VARCHAR(35), joined DATE NOT NULL ) PARTITION BY KEY(joined) PARTITIONS 6; --error ER_OPTION_PREVENTS_STATEMENT ALTER TABLE t1 PARTITION BY KEY(joined) PARTITIONS 2; --error ER_BAD_TABLE_ERROR drop table t1; --error ER_OPTION_PREVENTS_STATEMENT CREATE TABLE t1 ( firstname VARCHAR(25) NOT NULL, lastname VARCHAR(25) NOT NULL, username VARCHAR(16) NOT NULL, email VARCHAR(35), joined DATE NOT NULL ) PARTITION BY RANGE( YEAR(joined) ) ( PARTITION p0 VALUES LESS THAN (1960), PARTITION p1 VALUES LESS THAN (1970), PARTITION p2 VALUES LESS THAN (1980), PARTITION p3 VALUES LESS THAN (1990), PARTITION p4 VALUES LESS THAN MAXVALUE ); --error ER_BAD_TABLE_ERROR drop table t1; --error ER_OPTION_PREVENTS_STATEMENT CREATE TABLE t1 (id INT, purchased DATE) PARTITION BY RANGE( YEAR(purchased) ) SUBPARTITION BY HASH( TO_DAYS(purchased) ) SUBPARTITIONS 2 ( PARTITION p0 VALUES LESS THAN (1990), PARTITION p1 VALUES LESS THAN (2000), PARTITION p2 VALUES LESS THAN MAXVALUE ); --error ER_BAD_TABLE_ERROR drop table t1; # Create a table without partitions to test "EXPLAIN PARTITIONS" create table t1 (a varchar(10) charset latin1 collate latin1_bin); insert into t1 values (''),(' '),('a'),('a '),('a '); explain partitions select * from t1 where a='a ' OR a='a'; drop table t1; --echo # --echo # bug#11760213-52599: ALTER TABLE REMOVE PARTITIONING ON NON-PARTITIONED --echo # TABLE CORRUPTS MYISAM --disable_warnings DROP TABLE if exists `t1`; --enable_warnings CREATE TABLE `t1`(`a` INT)ENGINE=myisam; ALTER TABLE `t1` ADD COLUMN `b` INT; CREATE UNIQUE INDEX `i1` ON `t1`(`b`); CREATE UNIQUE INDEX `i2` ON `t1`(`a`); ALTER TABLE `t1` ADD PRIMARY KEY (`a`); --error ER_PARTITION_MGMT_ON_NONPARTITIONED ALTER TABLE `t1` REMOVE PARTITIONING; CHECK TABLE `t1` EXTENDED; DROP TABLE t1;