# The include statement below is a temp one for tests that are yet to #be ported to run with InnoDB, #but needs to be kept for tests that would need MyISAM in future. --source include/force_myisam_default.inc --disable_abort_on_error # Run this test only when mysqld don't has partitioning (not compiled with) # 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 partitioning not to be active. } 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 TRUNCATE PARTITION ALL; ALTER TABLE t1 ENGINE Memory; ALTER TABLE t1 ADD (new INT); DROP TABLE t1; --remove_file $MYSQLD_DATADIR/test/t1.frm 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; 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 ); ALTER TABLE t1 PARTITION BY KEY(joined) PARTITIONS 2; drop table t1; 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 ); 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 ); # 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 '); --replace_column 11 # 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 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`); ALTER TABLE `t1` REMOVE PARTITIONING; CHECK TABLE `t1` EXTENDED; DROP TABLE t1; --enable_abort_on_error