--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. --require r/disabled_partition.require --disable_query_log show variables like "have_partitioning"; --enable_query_log --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;