1# The include statement below is a temp one for tests that are yet to
2#be ported to run with InnoDB,
3#but needs to be kept for tests that would need MyISAM in future.
4--source include/force_myisam_default.inc
5
6--disable_abort_on_error
7# Run this test only when mysqld don't has partitioning (not compiled with)
8# the statements are not expected to work, just check that we
9# can't crash the server
10if (`SELECT COUNT(*) != 0 FROM information_schema.plugins WHERE plugin_name = 'partition' AND PLUGIN_STATUS != "DISABLED"`)
11{
12  --skip Test requires partitioning not to be active.
13}
14
15let $MYSQLD_DATADIR= `SELECT @@datadir`;
16
17#
18# Bug#39893: Crash if select on a partitioned table,
19#            when partitioning is disabled
20FLUSH TABLES;
21--copy_file $MYSQLTEST_VARDIR/std_data/parts/t1.frm $MYSQLD_DATADIR/test/t1.frm
22SELECT * FROM t1;
23TRUNCATE TABLE t1;
24ANALYZE TABLE t1;
25CHECK TABLE t1;
26OPTIMIZE TABLE t1;
27REPAIR TABLE t1;
28ALTER TABLE t1 REPAIR PARTITION ALL;
29ALTER TABLE t1 CHECK PARTITION ALL;
30ALTER TABLE t1 OPTIMIZE PARTITION ALL;
31ALTER TABLE t1 ANALYZE PARTITION ALL;
32ALTER TABLE t1 REBUILD PARTITION ALL;
33ALTER TABLE t1 TRUNCATE PARTITION ALL;
34ALTER TABLE t1 ENGINE Memory;
35ALTER TABLE t1 ADD (new INT);
36DROP TABLE t1;
37--remove_file $MYSQLD_DATADIR/test/t1.frm
38
39CREATE TABLE t1 (
40    firstname VARCHAR(25) NOT NULL,
41    lastname VARCHAR(25) NOT NULL,
42    username VARCHAR(16) NOT NULL,
43    email VARCHAR(35),
44    joined DATE NOT NULL
45)
46PARTITION BY KEY(joined)
47PARTITIONS 6;
48
49CREATE TABLE t1 (
50    firstname VARCHAR(25) NOT NULL,
51    lastname VARCHAR(25) NOT NULL,
52    username VARCHAR(16) NOT NULL,
53    email VARCHAR(35),
54    joined DATE NOT NULL
55);
56ALTER TABLE t1 PARTITION BY KEY(joined) PARTITIONS 2;
57
58drop table t1;
59
60CREATE TABLE t1 (
61    firstname VARCHAR(25) NOT NULL,
62    lastname VARCHAR(25) NOT NULL,
63    username VARCHAR(16) NOT NULL,
64    email VARCHAR(35),
65    joined DATE NOT NULL
66)
67PARTITION BY RANGE( YEAR(joined) ) (
68    PARTITION p0 VALUES LESS THAN (1960),
69    PARTITION p1 VALUES LESS THAN (1970),
70    PARTITION p2 VALUES LESS THAN (1980),
71    PARTITION p3 VALUES LESS THAN (1990),
72    PARTITION p4 VALUES LESS THAN MAXVALUE
73);
74
75CREATE TABLE t1 (id INT, purchased DATE)
76    PARTITION BY RANGE( YEAR(purchased) )
77    SUBPARTITION BY HASH( TO_DAYS(purchased) )
78    SUBPARTITIONS 2 (
79        PARTITION p0 VALUES LESS THAN (1990),
80        PARTITION p1 VALUES LESS THAN (2000),
81        PARTITION p2 VALUES LESS THAN MAXVALUE
82    );
83
84# Create a table without partitions to test "EXPLAIN PARTITIONS"
85create table t1 (a varchar(10) charset latin1 collate latin1_bin);
86insert into t1 values (''),(' '),('a'),('a '),('a  ');
87--replace_column 11 #
88explain partitions select * from t1 where a='a ' OR a='a';
89drop table t1;
90--echo #
91--echo # bug#11760213-52599: ALTER TABLE REMOVE PARTITIONING ON NON-PARTITIONED
92--echo #                                 TABLE CORRUPTS MYISAM
93CREATE TABLE `t1` (`a` INT) ENGINE=myisam;
94ALTER TABLE `t1` ADD COLUMN `b` INT;
95CREATE UNIQUE INDEX `i1` ON `t1`(`b`);
96CREATE UNIQUE INDEX `i2` ON `t1`(`a`);
97ALTER TABLE `t1` ADD PRIMARY KEY  (`a`);
98ALTER TABLE `t1` REMOVE PARTITIONING;
99CHECK TABLE `t1` EXTENDED;
100DROP TABLE t1;
101--enable_abort_on_error
102