summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattias Jonsson <mattiasj@mysql.com>2008-08-12 12:26:23 +0200
committerMattias Jonsson <mattiasj@mysql.com>2008-08-12 12:26:23 +0200
commit642bf9022ab6f3a053908e8e5bbfc7597331a91a (patch)
treec37997f38ab924c9706f08ded9e966d08e391773
parentbdab488391500e052d53fa312cbec46c5921d45a (diff)
parentc1e54765dafc87d1d244e91dbc0bd37062017d46 (diff)
downloadmariadb-git-642bf9022ab6f3a053908e8e5bbfc7597331a91a.tar.gz
manual merge of bug#37402
-rw-r--r--mysql-test/include/have_case_insensitive_file_system.inc4
-rw-r--r--mysql-test/include/have_lowercase0.inc2
-rw-r--r--mysql-test/include/have_lowercase2.inc4
-rw-r--r--mysql-test/lib/mtr_report.pl11
-rw-r--r--mysql-test/r/case_insensitive_file_system.require2
-rw-r--r--mysql-test/r/lowercase0.require1
-rw-r--r--mysql-test/suite/parts/inc/partition_mgm.inc548
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc0_archive.result834
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result829
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc0_memory.result829
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result829
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result170
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc1_archive.result797
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result797
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc1_memory.result797
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result797
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result204
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc2_archive.result797
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result797
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc2_memory.result797
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result797
-rw-r--r--mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result204
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc0_archive.test42
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc0_innodb.test41
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc0_memory.test41
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc0_myisam.test41
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc0_ndb.test47
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_archive-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_archive.test38
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_innodb-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_innodb.test38
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_memory-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_memory.test38
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_myisam-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_myisam.test38
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_ndb-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc1_ndb.test44
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_archive-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_archive.test38
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_innodb-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_innodb.test38
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_memory-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_memory.test38
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_myisam-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_myisam.test38
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_ndb-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_mgm_lc2_ndb.test43
-rw-r--r--mysql-test/t/lowercase_table3.test1
-rw-r--r--sql/ha_partition.cc45
-rw-r--r--sql/handler.cc10
-rw-r--r--sql/mysql_priv.h2
51 files changed, 11503 insertions, 15 deletions
diff --git a/mysql-test/include/have_case_insensitive_file_system.inc b/mysql-test/include/have_case_insensitive_file_system.inc
new file mode 100644
index 00000000000..78bb7c229ca
--- /dev/null
+++ b/mysql-test/include/have_case_insensitive_file_system.inc
@@ -0,0 +1,4 @@
+--require r/case_insensitive_file_system.require
+--disable_query_log
+show variables like "lower_case_file_system";
+--enable_query_log
diff --git a/mysql-test/include/have_lowercase0.inc b/mysql-test/include/have_lowercase0.inc
index 6192acb7b01..9cd21a42f6a 100644
--- a/mysql-test/include/have_lowercase0.inc
+++ b/mysql-test/include/have_lowercase0.inc
@@ -1,4 +1,4 @@
--require r/lowercase0.require
--disable_query_log
-show variables like 'lower_case_%';
+show variables like "lower_case_table_names";
--enable_query_log
diff --git a/mysql-test/include/have_lowercase2.inc b/mysql-test/include/have_lowercase2.inc
new file mode 100644
index 00000000000..43b34653f54
--- /dev/null
+++ b/mysql-test/include/have_lowercase2.inc
@@ -0,0 +1,4 @@
+--require r/lowercase2.require
+--disable_query_log
+show variables like 'lower_case_table_names';
+--enable_query_log
diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl
index bee03e82e24..3d593697ef6 100644
--- a/mysql-test/lib/mtr_report.pl
+++ b/mysql-test/lib/mtr_report.pl
@@ -327,7 +327,6 @@ sub mtr_report_stats ($) {
/Sort aborted/ or
/Time-out in NDB/ or
/One can only use the --user.*root/ or
- /Setting lower_case_table_names=2/ or
/Table:.* on (delete|rename)/ or
/You have an error in your SQL syntax/ or
/deprecated/ or
@@ -405,7 +404,15 @@ sub mtr_report_stats ($) {
/Out of sort memory; increase server sort buffer size/ or
# Bug#35161, test of auto repair --myisam-recover
- /able.*_will_crash/
+ /able.*_will_crash/ or
+
+ # lowercase_table3 using case sensitive option on
+ # case insensitive filesystem (InnoDB error).
+ /Cannot find or open table test\/BUG29839 from/ or
+
+ # When trying to set lower_case_table_names = 2
+ # on a case sensitive file system. Bug#37402.
+ /lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive. Now setting lower_case_table_names to 0 to avoid future problems./
)
{
next; # Skip these lines
diff --git a/mysql-test/r/case_insensitive_file_system.require b/mysql-test/r/case_insensitive_file_system.require
new file mode 100644
index 00000000000..062ac610ddd
--- /dev/null
+++ b/mysql-test/r/case_insensitive_file_system.require
@@ -0,0 +1,2 @@
+Variable_name Value
+lower_case_file_system ON
diff --git a/mysql-test/r/lowercase0.require b/mysql-test/r/lowercase0.require
index a63906557f8..5550a2e93b8 100644
--- a/mysql-test/r/lowercase0.require
+++ b/mysql-test/r/lowercase0.require
@@ -1,3 +1,2 @@
Variable_name Value
-lower_case_file_system ON
lower_case_table_names 0
diff --git a/mysql-test/suite/parts/inc/partition_mgm.inc b/mysql-test/suite/parts/inc/partition_mgm.inc
new file mode 100644
index 00000000000..f36b1a9921f
--- /dev/null
+++ b/mysql-test/suite/parts/inc/partition_mgm.inc
@@ -0,0 +1,548 @@
+################################################################################
+# inc/partition_mgm.inc #
+# #
+# Purpose: #
+# Test of partition management functions including different Upper/Lower #
+# case names of databases, tables and partitions #
+# #
+# #
+# Uses following variables: #
+# engine Use specified storage engine #
+# can_only_key Storage engine only able to use HASH/KEY (not range/list) #
+# (E.g. not ndbcluster) #
+# part_optA-D Extra partitioning options (E.g. INDEX/DATA DIR) #
+# #
+# have_bug33158 NDB case insensitive create, but case sensitive rename #
+# have_bug37719 Archive, crash when rename and then select #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+--enable_abort_on_error
+
+let $old_db= `SELECT DATABASE()`;
+--echo # Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+--echo # 1.0 KEY partitioning mgm
+--echo # Creating KEY partitioned table
+eval CREATE TABLE TableA (a INT)
+ENGINE = $engine
+PARTITION BY KEY (a)
+(PARTITION parta $part_optA,
+ PARTITION partB $part_optB,
+ PARTITION Partc $part_optC,
+ PARTITION PartD $part_optD);
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+--sorted_result
+SELECT * FROM TableA;
+
+--echo # Test of ADD/COALESCE PARTITIONS
+--echo # expecting duplicate partition name
+--error ER_SAME_NAME_PARTITION
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+ PARTITION Parta,
+ PARTITION PartA);
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+ PARTITION Partf,
+ PARTITION PartG);
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+ALTER TABLE TableA COALESCE PARTITION 4;
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Test of REORGANIZE PARTITIONS
+--echo # Should not work on HASH/KEY
+--error ER_REORG_HASH_ONLY_ON_SAME_NO
+eval ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA $part_optA,
+ PARTITION partc $part_optC);
+--error ER_CONSECUTIVE_REORG_PARTITIONS
+eval ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB $part_optA,
+ PARTITION parta $part_optC);
+eval ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB $part_optA COMMENT="Previusly named parta",
+ PARTITION parta $part_optB COMMENT="Previusly named partB");
+if ($fixed_bug20129)
+{
+ALTER TABLE TableA ANALYZE PARTITION parta, partB, Partc;
+ALTER TABLE TableA CHECK PARTITION parta, partB, Partc;
+ALTER TABLE TableA OPTIMIZE PARTITION parta, partB, Partc;
+ALTER TABLE TableA REPAIR PARTITION parta, partB, Partc;
+}
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+--sorted_result
+SELECT * FROM TableB;
+RENAME TABLE TableB to TableA;
+--sorted_result
+SELECT * FROM TableA;
+
+--echo # Checking name comparision Upper vs Lower case
+--echo # Error if lower_case_table_names != 0
+let $lower_case_table_names= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'lower_case_table_names'`;
+--echo # lower_case_table_names: $lower_case_table_names
+if ($lower_case_table_names)
+{
+--error ER_TABLE_EXISTS_ERROR
+eval CREATE TABLE tablea (a INT)
+ENGINE = $engine
+PARTITION BY KEY (a)
+(PARTITION parta $part_optA,
+ PARTITION partB $part_optB,
+ PARTITION Partc $part_optC,
+ PARTITION PartD $part_optD);
+SHOW TABLES;
+--error ER_TABLE_EXISTS_ERROR
+RENAME TABLE TableA to tablea;
+--error ER_TABLE_EXISTS_ERROR
+RENAME TABLE tablea to TableA;
+--sorted_result
+SELECT * FROM tablea;
+SHOW CREATE TABLE tablea;
+}
+if (!$lower_case_table_names)
+{
+if (!$have_bug33158)
+{
+eval CREATE TABLE tablea (a INT)
+ENGINE = $engine
+PARTITION BY KEY (a)
+(PARTITION parta $part_optA,
+ PARTITION partB $part_optB,
+ PARTITION Partc $part_optC,
+ PARTITION PartD $part_optD);
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+if (!$have_bug37719)
+{
+RENAME TABLE TableA to tableA;
+}
+--sorted_result
+SELECT * FROM tablea;
+if (!$have_bug37719)
+{
+--sorted_result
+SELECT * FROM tableA;
+RENAME TABLE tableA to TableA;
+}
+SHOW CREATE TABLE tablea;
+DROP TABLE tablea;
+}
+}
+
+--echo # Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+
+if (!$can_only_key)
+{
+--echo # 2.0 HASH partitioning mgm
+--echo # expecting duplicate partition name
+--error ER_SAME_NAME_PARTITION
+eval CREATE TABLE TableA (a INT)
+ENGINE = $engine
+PARTITION BY HASH (a)
+(PARTITION parta $part_optA,
+ PARTITION partA $part_optB,
+ PARTITION Parta $part_optC,
+ PARTITION PartA $part_optD);
+
+--echo # Creating Hash partitioned table
+eval CREATE TABLE TableA (a INT)
+ENGINE = $engine
+PARTITION BY HASH (a)
+(PARTITION parta $part_optA,
+ PARTITION partB $part_optB,
+ PARTITION Partc $part_optC,
+ PARTITION PartD $part_optD);
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+--sorted_result
+SELECT * FROM TableA;
+
+--echo # Test of ADD/COALESCE PARTITIONS
+--echo # expecting duplicate partition name
+--error ER_SAME_NAME_PARTITION
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+ PARTITION Parta,
+ PARTITION PartA);
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+ PARTITION Partf,
+ PARTITION PartG);
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+ALTER TABLE TableA COALESCE PARTITION 4;
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Test of REORGANIZE PARTITIONS
+--echo # Should not work on HASH/KEY
+--error ER_REORG_HASH_ONLY_ON_SAME_NO
+eval ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA $part_optA,
+ PARTITION partc $part_optC);
+--error ER_CONSECUTIVE_REORG_PARTITIONS
+eval ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB $part_optA,
+ PARTITION parta $part_optC);
+eval ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB $part_optA COMMENT="Previusly named parta",
+ PARTITION parta $part_optB COMMENT="Previusly named partB");
+if ($fixed_bug20129)
+{
+ALTER TABLE TableA ANALYZE PARTITION parta, partB, Partc;
+ALTER TABLE TableA CHECK PARTITION parta, partB, Partc;
+ALTER TABLE TableA OPTIMIZE PARTITION parta, partB, Partc;
+ALTER TABLE TableA REPAIR PARTITION parta, partB, Partc;
+}
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+--sorted_result
+SELECT * FROM TableB;
+RENAME TABLE TableB to TableA;
+--sorted_result
+SELECT * FROM TableA;
+
+--echo # Checking name comparision Upper vs Lower case
+--echo # Error if lower_case_table_names != 0
+let $lower_case_table_names= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'lower_case_table_names'`;
+--echo # lower_case_table_names: $lower_case_table_names
+if ($lower_case_table_names)
+{
+--error ER_TABLE_EXISTS_ERROR
+eval CREATE TABLE tablea (a INT)
+ENGINE = $engine
+PARTITION BY HASH (a)
+(PARTITION parta $part_optA,
+ PARTITION partB $part_optB,
+ PARTITION Partc $part_optC,
+ PARTITION PartD $part_optD);
+SHOW TABLES;
+--error ER_TABLE_EXISTS_ERROR
+RENAME TABLE TableA to tablea;
+--error ER_TABLE_EXISTS_ERROR
+RENAME TABLE tablea to TableA;
+--sorted_result
+SELECT * FROM tablea;
+SHOW CREATE TABLE tablea;
+}
+if (!$lower_case_table_names)
+{
+eval CREATE TABLE tablea (a INT)
+ENGINE = $engine
+PARTITION BY HASH (a)
+(PARTITION parta $part_optA,
+ PARTITION partB $part_optB,
+ PARTITION Partc $part_optC,
+ PARTITION PartD $part_optD);
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+if (!$have_bug37719)
+{
+RENAME TABLE TableA to tableA;
+}
+--sorted_result
+SELECT * FROM tablea;
+if (!$have_bug37719)
+{
+--sorted_result
+SELECT * FROM tableA;
+RENAME TABLE tableA to TableA;
+}
+SHOW CREATE TABLE tablea;
+DROP TABLE tablea;
+}
+
+--echo # Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+
+
+--echo # 3.0 RANGE partitioning mgm
+--echo # Creating RANGE partitioned table
+eval CREATE TABLE TableA (a INT)
+ENGINE = $engine
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) $part_optA,
+ PARTITION partB VALUES LESS THAN (7) $part_optB,
+ PARTITION Partc VALUES LESS THAN (10) $part_optC,
+ PARTITION PartD VALUES LESS THAN (13) $part_optD);
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+--sorted_result
+SELECT * FROM TableA;
+
+--echo # Test of ADD/DROP PARTITIONS
+--echo # expecting duplicate partition name
+--error ER_SAME_NAME_PARTITION
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+ PARTITION Partf VALUES LESS THAN (19),
+ PARTITION PartG VALUES LESS THAN (22));
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Test of REORGANIZE PARTITIONS
+--echo # Error since it must reorganize a consecutive range
+--error ER_CONSECUTIVE_REORG_PARTITIONS
+eval ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) $part_optA,
+ PARTITION parta VALUES LESS THAN (11) $part_optC);
+eval ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8) $part_optB
+ COMMENT="Previously partB and partly Partc",
+ PARTITION partB VALUES LESS THAN (11) $part_optC
+ COMMENT="Previously partly Partc and partly PartD",
+ PARTITION partC VALUES LESS THAN (MAXVALUE) $part_optD
+ COMMENT="Previously partly PartD");
+if ($fixed_bug20129)
+{
+ALTER TABLE TableA ANALYZE PARTITION parta, partB, Partc;
+ALTER TABLE TableA CHECK PARTITION parta, partB, Partc;
+ALTER TABLE TableA OPTIMIZE PARTITION parta, partB, Partc;
+ALTER TABLE TableA REPAIR PARTITION parta, partB, Partc;
+}
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+--sorted_result
+SELECT * FROM TableB;
+RENAME TABLE TableB to TableA;
+--sorted_result
+SELECT * FROM TableA;
+
+--echo # Checking name comparision Upper vs Lower case
+--echo # Error if lower_case_table_names != 0
+let $lower_case_table_names= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'lower_case_table_names'`;
+--echo # lower_case_table_names: $lower_case_table_names
+if ($lower_case_table_names)
+{
+--error ER_TABLE_EXISTS_ERROR
+eval CREATE TABLE tablea (a INT)
+ENGINE = $engine
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) $part_optA,
+ PARTITION partB VALUES LESS THAN (7) $part_optB,
+ PARTITION Partc VALUES LESS THAN (10) $part_optC,
+ PARTITION PartD VALUES LESS THAN (13) $part_optD);
+SHOW TABLES;
+--error ER_TABLE_EXISTS_ERROR
+RENAME TABLE TableA to tablea;
+--error ER_TABLE_EXISTS_ERROR
+RENAME TABLE tablea to TableA;
+--sorted_result
+SELECT * FROM tablea;
+SHOW CREATE TABLE tablea;
+}
+if (!$lower_case_table_names)
+{
+eval CREATE TABLE tablea (a INT)
+ENGINE = $engine
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) $part_optA,
+ PARTITION partB VALUES LESS THAN (7) $part_optB,
+ PARTITION Partc VALUES LESS THAN (10) $part_optC,
+ PARTITION PartD VALUES LESS THAN (13) $part_optD);
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+if (!$have_bug37719)
+{
+RENAME TABLE TableA to tableA;
+}
+--sorted_result
+SELECT * FROM tablea;
+if (!$have_bug37719)
+{
+--sorted_result
+SELECT * FROM tableA;
+RENAME TABLE tableA to TableA;
+}
+SHOW CREATE TABLE tablea;
+DROP TABLE tablea;
+}
+
+--echo # Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+
+--echo # 4.0 LIST partitioning mgm
+--echo # Creating LIST partitioned table
+eval CREATE TABLE TableA (a INT)
+ENGINE = $engine
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) $part_optA,
+ PARTITION partB VALUES IN (2,10,11) $part_optB,
+ PARTITION Partc VALUES IN (3,4,7) $part_optC,
+ PARTITION PartD VALUES IN (5,6,12) $part_optD);
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+--sorted_result
+SELECT * FROM TableA;
+
+--echo # Test of ADD/DROP PARTITIONS
+--echo # expecting duplicate partition name
+--error ER_SAME_NAME_PARTITION
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+ PARTITION Partf VALUES IN (19),
+ PARTITION PartG VALUES IN (22));
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Test of REORGANIZE PARTITIONS
+--error ER_CONSECUTIVE_REORG_PARTITIONS
+eval ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7) $part_optA
+ COMMENT = "Mix 1 of old parta and Partc",
+ PARTITION partF VALUES IN (3,9) $part_optC
+ COMMENT = "Mix 2 of old parta and Partc",
+ PARTITION parta VALUES IN (4,8) $part_optC
+ COMMENT = "Mix 3 of old parta and Partc");
+eval ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7) $part_optA
+ COMMENT = "Mix 1 of old parta and Partc",
+ PARTITION parta VALUES IN (3,9) $part_optC
+ COMMENT = "Mix 2 of old parta and Partc",
+ PARTITION partB VALUES IN (4,8) $part_optC
+ COMMENT = "Mix 3 of old parta and Partc");
+if ($fixed_bug20129)
+{
+ALTER TABLE TableA ANALYZE PARTITION parta, partB, Partc;
+ALTER TABLE TableA CHECK PARTITION parta, partB, Partc;
+ALTER TABLE TableA OPTIMIZE PARTITION parta, partB, Partc;
+ALTER TABLE TableA REPAIR PARTITION parta, partB, Partc;
+}
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+--sorted_result
+SELECT * FROM TableB;
+RENAME TABLE TableB to TableA;
+--sorted_result
+SELECT * FROM TableA;
+
+--echo # Checking name comparision Upper vs Lower case
+--echo # Error if lower_case_table_names != 0
+let $lower_case_table_names= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'lower_case_table_names'`;
+--echo # lower_case_table_names: $lower_case_table_names
+if ($lower_case_table_names)
+{
+--error ER_TABLE_EXISTS_ERROR
+eval CREATE TABLE tablea (a INT)
+ENGINE = $engine
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) $part_optA,
+ PARTITION partB VALUES IN (2,10,11) $part_optB,
+ PARTITION Partc VALUES IN (3,4,7) $part_optC,
+ PARTITION PartD VALUES IN (5,6,12) $part_optD);
+SHOW TABLES;
+--error ER_TABLE_EXISTS_ERROR
+RENAME TABLE TableA to tablea;
+--error ER_TABLE_EXISTS_ERROR
+RENAME TABLE tablea to TableA;
+--sorted_result
+SELECT * FROM tablea;
+SHOW CREATE TABLE tablea;
+}
+if (!$lower_case_table_names)
+{
+eval CREATE TABLE tablea (a INT)
+ENGINE = $engine
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) $part_optA,
+ PARTITION partB VALUES IN (2,10,11) $part_optB,
+ PARTITION Partc VALUES IN (3,4,7) $part_optC,
+ PARTITION PartD VALUES IN (5,6,12) $part_optD);
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+if (!$have_bug37719)
+{
+RENAME TABLE TableA to tableA;
+}
+--sorted_result
+SELECT * FROM tablea;
+if (!$have_bug37719)
+{
+--sorted_result
+SELECT * FROM tableA;
+RENAME TABLE tableA to TableA;
+}
+SHOW CREATE TABLE tablea;
+DROP TABLE tablea;
+}
+
+--echo # Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+--sorted_result
+SELECT * FROM TableA;
+SHOW CREATE TABLE TableA;
+
+--echo # Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+}
+# End of $can_only_key
+
+--echo # Cleaning up before exit
+eval USE $old_db;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc0_archive.result b/mysql-test/suite/parts/r/partition_mgm_lc0_archive.result
new file mode 100644
index 00000000000..2bb6e7421b1
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc0_archive.result
@@ -0,0 +1,834 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE, PARTITION PartD ENGINE = ARCHIVE, PARTITION partE ENGINE = ARCHIVE, PARTITION Partf ENGINE = ARCHIVE, PARTITION PartG ENGINE = ARCHIVE) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ARCHIVE, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+SELECT * FROM tablea;
+a
+1
+1
+10
+10
+11
+12
+2
+2
+3
+4
+5
+6
+7
+7
+8
+8
+9
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE, PARTITION PartD ENGINE = ARCHIVE) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+7
+8
+8
+9
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE, PARTITION PartD ENGINE = ARCHIVE, PARTITION partE ENGINE = ARCHIVE, PARTITION Partf ENGINE = ARCHIVE, PARTITION PartG ENGINE = ARCHIVE) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ARCHIVE, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+SELECT * FROM tablea;
+a
+1
+1
+10
+10
+11
+12
+2
+2
+3
+4
+5
+6
+7
+7
+8
+8
+9
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE, PARTITION PartD ENGINE = ARCHIVE) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+1
+10
+10
+11
+12
+2
+2
+3
+4
+5
+6
+7
+8
+8
+9
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (7) ENGINE = ARCHIVE, PARTITION Partc VALUES LESS THAN (10) ENGINE = ARCHIVE, PARTITION PartD VALUES LESS THAN (13) ENGINE = ARCHIVE, PARTITION partE VALUES LESS THAN (16) ENGINE = ARCHIVE, PARTITION Partf VALUES LESS THAN (19) ENGINE = ARCHIVE, PARTITION PartG VALUES LESS THAN (22) ENGINE = ARCHIVE) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (7) ENGINE = ARCHIVE, PARTITION Partc VALUES LESS THAN (10) ENGINE = ARCHIVE, PARTITION PartD VALUES LESS THAN (13) ENGINE = ARCHIVE, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = ARCHIVE, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+SELECT * FROM tablea;
+a
+1
+1
+10
+10
+11
+12
+2
+2
+3
+4
+5
+6
+7
+7
+8
+8
+9
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (7) ENGINE = ARCHIVE, PARTITION Partc VALUES LESS THAN (10) ENGINE = ARCHIVE, PARTITION PartD VALUES LESS THAN (13) ENGINE = ARCHIVE) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+1
+10
+10
+11
+12
+2
+2
+3
+4
+5
+6
+7
+7
+8
+8
+9
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = ARCHIVE, PARTITION partB VALUES IN (2,10,11) ENGINE = ARCHIVE, PARTITION Partc VALUES IN (3,4,7) ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE, PARTITION partE VALUES IN (16) ENGINE = ARCHIVE, PARTITION Partf VALUES IN (19) ENGINE = ARCHIVE, PARTITION PartG VALUES IN (22) ENGINE = ARCHIVE) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = ARCHIVE, PARTITION partB VALUES IN (2,10,11) ENGINE = ARCHIVE, PARTITION Partc VALUES IN (3,4,7) ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE, PARTITION PartE VALUES IN (13) ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = ARCHIVE, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = ARCHIVE, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE, PARTITION PartE VALUES IN (13) ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+SELECT * FROM tablea;
+a
+1
+1
+10
+12
+2
+3
+4
+5
+6
+7
+7
+8
+8
+9
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = ARCHIVE, PARTITION partB VALUES IN (2,10,11) ENGINE = ARCHIVE, PARTITION Partc VALUES IN (3,4,7) ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+1
+10
+12
+2
+3
+4
+5
+6
+7
+7
+8
+8
+9
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result b/mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result
new file mode 100644
index 00000000000..d603dbae9c2
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result
@@ -0,0 +1,829 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB, PARTITION PartD ENGINE = InnoDB, PARTITION partE ENGINE = InnoDB, PARTITION Partf ENGINE = InnoDB, PARTITION PartG ENGINE = InnoDB) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = InnoDB, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB, PARTITION PartD ENGINE = InnoDB) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB, PARTITION PartD ENGINE = InnoDB, PARTITION partE ENGINE = InnoDB, PARTITION Partf ENGINE = InnoDB, PARTITION PartG ENGINE = InnoDB) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = InnoDB, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB, PARTITION PartD ENGINE = InnoDB) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (7) ENGINE = InnoDB, PARTITION Partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION PartD VALUES LESS THAN (13) ENGINE = InnoDB, PARTITION partE VALUES LESS THAN (16) ENGINE = InnoDB, PARTITION Partf VALUES LESS THAN (19) ENGINE = InnoDB, PARTITION PartG VALUES LESS THAN (22) ENGINE = InnoDB) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (7) ENGINE = InnoDB, PARTITION Partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION PartD VALUES LESS THAN (13) ENGINE = InnoDB, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = InnoDB, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (7) ENGINE = InnoDB, PARTITION Partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION PartD VALUES LESS THAN (13) ENGINE = InnoDB) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = InnoDB, PARTITION partB VALUES IN (2,10,11) ENGINE = InnoDB, PARTITION Partc VALUES IN (3,4,7) ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB, PARTITION partE VALUES IN (16) ENGINE = InnoDB, PARTITION Partf VALUES IN (19) ENGINE = InnoDB, PARTITION PartG VALUES IN (22) ENGINE = InnoDB) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = InnoDB, PARTITION partB VALUES IN (2,10,11) ENGINE = InnoDB, PARTITION Partc VALUES IN (3,4,7) ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB, PARTITION PartE VALUES IN (13) ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = InnoDB, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = InnoDB, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB, PARTITION PartE VALUES IN (13) ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = InnoDB, PARTITION partB VALUES IN (2,10,11) ENGINE = InnoDB, PARTITION Partc VALUES IN (3,4,7) ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc0_memory.result b/mysql-test/suite/parts/r/partition_mgm_lc0_memory.result
new file mode 100644
index 00000000000..092deae1796
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc0_memory.result
@@ -0,0 +1,829 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY, PARTITION PartD ENGINE = MEMORY, PARTITION partE ENGINE = MEMORY, PARTITION Partf ENGINE = MEMORY, PARTITION PartG ENGINE = MEMORY) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MEMORY, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY, PARTITION PartD ENGINE = MEMORY) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY, PARTITION PartD ENGINE = MEMORY, PARTITION partE ENGINE = MEMORY, PARTITION Partf ENGINE = MEMORY, PARTITION PartG ENGINE = MEMORY) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MEMORY, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY, PARTITION PartD ENGINE = MEMORY) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (7) ENGINE = MEMORY, PARTITION Partc VALUES LESS THAN (10) ENGINE = MEMORY, PARTITION PartD VALUES LESS THAN (13) ENGINE = MEMORY, PARTITION partE VALUES LESS THAN (16) ENGINE = MEMORY, PARTITION Partf VALUES LESS THAN (19) ENGINE = MEMORY, PARTITION PartG VALUES LESS THAN (22) ENGINE = MEMORY) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (7) ENGINE = MEMORY, PARTITION Partc VALUES LESS THAN (10) ENGINE = MEMORY, PARTITION PartD VALUES LESS THAN (13) ENGINE = MEMORY, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = MEMORY, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (7) ENGINE = MEMORY, PARTITION Partc VALUES LESS THAN (10) ENGINE = MEMORY, PARTITION PartD VALUES LESS THAN (13) ENGINE = MEMORY) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MEMORY, PARTITION partB VALUES IN (2,10,11) ENGINE = MEMORY, PARTITION Partc VALUES IN (3,4,7) ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY, PARTITION partE VALUES IN (16) ENGINE = MEMORY, PARTITION Partf VALUES IN (19) ENGINE = MEMORY, PARTITION PartG VALUES IN (22) ENGINE = MEMORY) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MEMORY, PARTITION partB VALUES IN (2,10,11) ENGINE = MEMORY, PARTITION Partc VALUES IN (3,4,7) ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY, PARTITION PartE VALUES IN (13) ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = MEMORY, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = MEMORY, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY, PARTITION PartE VALUES IN (13) ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MEMORY, PARTITION partB VALUES IN (2,10,11) ENGINE = MEMORY, PARTITION Partc VALUES IN (3,4,7) ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result b/mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result
new file mode 100644
index 00000000000..046fb40ab35
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result
@@ -0,0 +1,829 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM, PARTITION PartD ENGINE = MyISAM, PARTITION partE ENGINE = MyISAM, PARTITION Partf ENGINE = MyISAM, PARTITION PartG ENGINE = MyISAM) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MyISAM, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM, PARTITION PartD ENGINE = MyISAM) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM, PARTITION PartD ENGINE = MyISAM, PARTITION partE ENGINE = MyISAM, PARTITION Partf ENGINE = MyISAM, PARTITION PartG ENGINE = MyISAM) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MyISAM, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM, PARTITION PartD ENGINE = MyISAM) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (7) ENGINE = MyISAM, PARTITION Partc VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION PartD VALUES LESS THAN (13) ENGINE = MyISAM, PARTITION partE VALUES LESS THAN (16) ENGINE = MyISAM, PARTITION Partf VALUES LESS THAN (19) ENGINE = MyISAM, PARTITION PartG VALUES LESS THAN (22) ENGINE = MyISAM) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (7) ENGINE = MyISAM, PARTITION Partc VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION PartD VALUES LESS THAN (13) ENGINE = MyISAM, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = MyISAM, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (7) ENGINE = MyISAM, PARTITION Partc VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION PartD VALUES LESS THAN (13) ENGINE = MyISAM) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MyISAM, PARTITION partB VALUES IN (2,10,11) ENGINE = MyISAM, PARTITION Partc VALUES IN (3,4,7) ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM, PARTITION partE VALUES IN (16) ENGINE = MyISAM, PARTITION Partf VALUES IN (19) ENGINE = MyISAM, PARTITION PartG VALUES IN (22) ENGINE = MyISAM) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MyISAM, PARTITION partB VALUES IN (2,10,11) ENGINE = MyISAM, PARTITION Partc VALUES IN (3,4,7) ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM, PARTITION PartE VALUES IN (13) ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = MyISAM, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = MyISAM, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM, PARTITION PartE VALUES IN (13) ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO tablea VALUES (1), (2), (7), (8), (9), (10);
+SHOW TABLES;
+Tables_in_MySQL_Test_DB
+TableA
+tablea
+RENAME TABLE TableA to tableA;
+SELECT * FROM tablea;
+a
+1
+10
+2
+7
+8
+9
+SELECT * FROM tableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE tableA to TableA;
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MyISAM, PARTITION partB VALUES IN (2,10,11) ENGINE = MyISAM, PARTITION Partc VALUES IN (3,4,7) ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM) */
+DROP TABLE tablea;
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result b/mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result
new file mode 100644
index 00000000000..3d28cedf3bd
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result
@@ -0,0 +1,170 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'NDBCluster'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ndbcluster, PARTITION partB ENGINE = ndbcluster, PARTITION Partc ENGINE = ndbcluster, PARTITION PartD ENGINE = ndbcluster, PARTITION partE ENGINE = ndbcluster, PARTITION Partf ENGINE = ndbcluster, PARTITION PartG ENGINE = ndbcluster) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ndbcluster, PARTITION partB ENGINE = ndbcluster, PARTITION Partc ENGINE = ndbcluster) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ndbcluster, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ndbcluster, PARTITION Partc ENGINE = ndbcluster) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 0
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc1_archive.result b/mysql-test/suite/parts/r/partition_mgm_lc1_archive.result
new file mode 100644
index 00000000000..b1eeed58ffb
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc1_archive.result
@@ -0,0 +1,797 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE, PARTITION PartD ENGINE = ARCHIVE, PARTITION partE ENGINE = ARCHIVE, PARTITION Partf ENGINE = ARCHIVE, PARTITION PartG ENGINE = ARCHIVE) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ARCHIVE, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ARCHIVE, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE, PARTITION PartD ENGINE = ARCHIVE, PARTITION partE ENGINE = ARCHIVE, PARTITION Partf ENGINE = ARCHIVE, PARTITION PartG ENGINE = ARCHIVE) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ARCHIVE, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ARCHIVE, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (7) ENGINE = ARCHIVE, PARTITION Partc VALUES LESS THAN (10) ENGINE = ARCHIVE, PARTITION PartD VALUES LESS THAN (13) ENGINE = ARCHIVE, PARTITION partE VALUES LESS THAN (16) ENGINE = ARCHIVE, PARTITION Partf VALUES LESS THAN (19) ENGINE = ARCHIVE, PARTITION PartG VALUES LESS THAN (22) ENGINE = ARCHIVE) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (7) ENGINE = ARCHIVE, PARTITION Partc VALUES LESS THAN (10) ENGINE = ARCHIVE, PARTITION PartD VALUES LESS THAN (13) ENGINE = ARCHIVE, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = ARCHIVE, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = ARCHIVE, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = ARCHIVE) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = ARCHIVE, PARTITION partB VALUES IN (2,10,11) ENGINE = ARCHIVE, PARTITION Partc VALUES IN (3,4,7) ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE, PARTITION partE VALUES IN (16) ENGINE = ARCHIVE, PARTITION Partf VALUES IN (19) ENGINE = ARCHIVE, PARTITION PartG VALUES IN (22) ENGINE = ARCHIVE) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = ARCHIVE, PARTITION partB VALUES IN (2,10,11) ENGINE = ARCHIVE, PARTITION Partc VALUES IN (3,4,7) ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE, PARTITION PartE VALUES IN (13) ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = ARCHIVE, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = ARCHIVE, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE, PARTITION PartE VALUES IN (13) ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = ARCHIVE, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = ARCHIVE, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE, PARTITION PartE VALUES IN (13) ENGINE = ARCHIVE) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result b/mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result
new file mode 100644
index 00000000000..910d985c0ea
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result
@@ -0,0 +1,797 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB, PARTITION PartD ENGINE = InnoDB, PARTITION partE ENGINE = InnoDB, PARTITION Partf ENGINE = InnoDB, PARTITION PartG ENGINE = InnoDB) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = InnoDB, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = InnoDB, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB, PARTITION PartD ENGINE = InnoDB, PARTITION partE ENGINE = InnoDB, PARTITION Partf ENGINE = InnoDB, PARTITION PartG ENGINE = InnoDB) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = InnoDB, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = InnoDB, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (7) ENGINE = InnoDB, PARTITION Partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION PartD VALUES LESS THAN (13) ENGINE = InnoDB, PARTITION partE VALUES LESS THAN (16) ENGINE = InnoDB, PARTITION Partf VALUES LESS THAN (19) ENGINE = InnoDB, PARTITION PartG VALUES LESS THAN (22) ENGINE = InnoDB) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (7) ENGINE = InnoDB, PARTITION Partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION PartD VALUES LESS THAN (13) ENGINE = InnoDB, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = InnoDB, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = InnoDB, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = InnoDB) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = InnoDB, PARTITION partB VALUES IN (2,10,11) ENGINE = InnoDB, PARTITION Partc VALUES IN (3,4,7) ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB, PARTITION partE VALUES IN (16) ENGINE = InnoDB, PARTITION Partf VALUES IN (19) ENGINE = InnoDB, PARTITION PartG VALUES IN (22) ENGINE = InnoDB) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = InnoDB, PARTITION partB VALUES IN (2,10,11) ENGINE = InnoDB, PARTITION Partc VALUES IN (3,4,7) ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB, PARTITION PartE VALUES IN (13) ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = InnoDB, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = InnoDB, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB, PARTITION PartE VALUES IN (13) ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = InnoDB, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = InnoDB, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB, PARTITION PartE VALUES IN (13) ENGINE = InnoDB) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc1_memory.result b/mysql-test/suite/parts/r/partition_mgm_lc1_memory.result
new file mode 100644
index 00000000000..0c6dfbeff94
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc1_memory.result
@@ -0,0 +1,797 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY, PARTITION PartD ENGINE = MEMORY, PARTITION partE ENGINE = MEMORY, PARTITION Partf ENGINE = MEMORY, PARTITION PartG ENGINE = MEMORY) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MEMORY, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MEMORY, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY, PARTITION PartD ENGINE = MEMORY, PARTITION partE ENGINE = MEMORY, PARTITION Partf ENGINE = MEMORY, PARTITION PartG ENGINE = MEMORY) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MEMORY, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MEMORY, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (7) ENGINE = MEMORY, PARTITION Partc VALUES LESS THAN (10) ENGINE = MEMORY, PARTITION PartD VALUES LESS THAN (13) ENGINE = MEMORY, PARTITION partE VALUES LESS THAN (16) ENGINE = MEMORY, PARTITION Partf VALUES LESS THAN (19) ENGINE = MEMORY, PARTITION PartG VALUES LESS THAN (22) ENGINE = MEMORY) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (7) ENGINE = MEMORY, PARTITION Partc VALUES LESS THAN (10) ENGINE = MEMORY, PARTITION PartD VALUES LESS THAN (13) ENGINE = MEMORY, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = MEMORY, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = MEMORY, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = MEMORY) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MEMORY, PARTITION partB VALUES IN (2,10,11) ENGINE = MEMORY, PARTITION Partc VALUES IN (3,4,7) ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY, PARTITION partE VALUES IN (16) ENGINE = MEMORY, PARTITION Partf VALUES IN (19) ENGINE = MEMORY, PARTITION PartG VALUES IN (22) ENGINE = MEMORY) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MEMORY, PARTITION partB VALUES IN (2,10,11) ENGINE = MEMORY, PARTITION Partc VALUES IN (3,4,7) ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY, PARTITION PartE VALUES IN (13) ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = MEMORY, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = MEMORY, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY, PARTITION PartE VALUES IN (13) ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = MEMORY, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = MEMORY, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY, PARTITION PartE VALUES IN (13) ENGINE = MEMORY) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result b/mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result
new file mode 100644
index 00000000000..714ae639e95
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result
@@ -0,0 +1,797 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM, PARTITION PartD ENGINE = MyISAM, PARTITION partE ENGINE = MyISAM, PARTITION Partf ENGINE = MyISAM, PARTITION PartG ENGINE = MyISAM) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MyISAM, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MyISAM, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM, PARTITION PartD ENGINE = MyISAM, PARTITION partE ENGINE = MyISAM, PARTITION Partf ENGINE = MyISAM, PARTITION PartG ENGINE = MyISAM) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MyISAM, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MyISAM, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (7) ENGINE = MyISAM, PARTITION Partc VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION PartD VALUES LESS THAN (13) ENGINE = MyISAM, PARTITION partE VALUES LESS THAN (16) ENGINE = MyISAM, PARTITION Partf VALUES LESS THAN (19) ENGINE = MyISAM, PARTITION PartG VALUES LESS THAN (22) ENGINE = MyISAM) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (7) ENGINE = MyISAM, PARTITION Partc VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION PartD VALUES LESS THAN (13) ENGINE = MyISAM, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = MyISAM, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = MyISAM, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = MyISAM) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MyISAM, PARTITION partB VALUES IN (2,10,11) ENGINE = MyISAM, PARTITION Partc VALUES IN (3,4,7) ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM, PARTITION partE VALUES IN (16) ENGINE = MyISAM, PARTITION Partf VALUES IN (19) ENGINE = MyISAM, PARTITION PartG VALUES IN (22) ENGINE = MyISAM) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MyISAM, PARTITION partB VALUES IN (2,10,11) ENGINE = MyISAM, PARTITION Partc VALUES IN (3,4,7) ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM, PARTITION PartE VALUES IN (13) ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = MyISAM, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = MyISAM, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM, PARTITION PartE VALUES IN (13) ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = MyISAM, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = MyISAM, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM, PARTITION PartE VALUES IN (13) ENGINE = MyISAM) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result b/mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result
new file mode 100644
index 00000000000..3bf9b073c80
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result
@@ -0,0 +1,204 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'NDBCluster'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ndbcluster, PARTITION partB ENGINE = ndbcluster, PARTITION Partc ENGINE = ndbcluster, PARTITION PartD ENGINE = ndbcluster, PARTITION partE ENGINE = ndbcluster, PARTITION Partf ENGINE = ndbcluster, PARTITION PartG ENGINE = ndbcluster) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ndbcluster, PARTITION partB ENGINE = ndbcluster, PARTITION Partc ENGINE = ndbcluster) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ndbcluster, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ndbcluster, PARTITION Partc ENGINE = ndbcluster) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 1
+CREATE TABLE tablea (a INT)
+ENGINE = 'NDBCluster'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+tablea
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'tablea' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ndbcluster, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ndbcluster, PARTITION Partc ENGINE = ndbcluster) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc2_archive.result b/mysql-test/suite/parts/r/partition_mgm_lc2_archive.result
new file mode 100644
index 00000000000..cdc278f36cd
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc2_archive.result
@@ -0,0 +1,797 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE, PARTITION PartD ENGINE = ARCHIVE, PARTITION partE ENGINE = ARCHIVE, PARTITION Partf ENGINE = ARCHIVE, PARTITION PartG ENGINE = ARCHIVE) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ARCHIVE, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ARCHIVE, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE, PARTITION PartD ENGINE = ARCHIVE, PARTITION partE ENGINE = ARCHIVE, PARTITION Partf ENGINE = ARCHIVE, PARTITION PartG ENGINE = ARCHIVE) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = ARCHIVE, PARTITION partB ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ARCHIVE, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ARCHIVE, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ARCHIVE, PARTITION Partc ENGINE = ARCHIVE) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (7) ENGINE = ARCHIVE, PARTITION Partc VALUES LESS THAN (10) ENGINE = ARCHIVE, PARTITION PartD VALUES LESS THAN (13) ENGINE = ARCHIVE, PARTITION partE VALUES LESS THAN (16) ENGINE = ARCHIVE, PARTITION Partf VALUES LESS THAN (19) ENGINE = ARCHIVE, PARTITION PartG VALUES LESS THAN (22) ENGINE = ARCHIVE) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (7) ENGINE = ARCHIVE, PARTITION Partc VALUES LESS THAN (10) ENGINE = ARCHIVE, PARTITION PartD VALUES LESS THAN (13) ENGINE = ARCHIVE, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = ARCHIVE, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = ARCHIVE, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = ARCHIVE, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = ARCHIVE, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = ARCHIVE) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Archive'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = ARCHIVE, PARTITION partB VALUES IN (2,10,11) ENGINE = ARCHIVE, PARTITION Partc VALUES IN (3,4,7) ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE, PARTITION partE VALUES IN (16) ENGINE = ARCHIVE, PARTITION Partf VALUES IN (19) ENGINE = ARCHIVE, PARTITION PartG VALUES IN (22) ENGINE = ARCHIVE) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = ARCHIVE, PARTITION partB VALUES IN (2,10,11) ENGINE = ARCHIVE, PARTITION Partc VALUES IN (3,4,7) ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE, PARTITION PartE VALUES IN (13) ENGINE = ARCHIVE) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = ARCHIVE, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = ARCHIVE, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE, PARTITION PartE VALUES IN (13) ENGINE = ARCHIVE) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'Archive'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = ARCHIVE, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = ARCHIVE, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = ARCHIVE, PARTITION PartD VALUES IN (5,6,12) ENGINE = ARCHIVE, PARTITION PartE VALUES IN (13) ENGINE = ARCHIVE) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result b/mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result
new file mode 100644
index 00000000000..6a71a2e2f44
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result
@@ -0,0 +1,797 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB, PARTITION PartD ENGINE = InnoDB, PARTITION partE ENGINE = InnoDB, PARTITION Partf ENGINE = InnoDB, PARTITION PartG ENGINE = InnoDB) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = InnoDB, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = InnoDB, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB, PARTITION PartD ENGINE = InnoDB, PARTITION partE ENGINE = InnoDB, PARTITION Partf ENGINE = InnoDB, PARTITION PartG ENGINE = InnoDB) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = InnoDB, PARTITION partB ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = InnoDB, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = InnoDB, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = InnoDB, PARTITION Partc ENGINE = InnoDB) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (7) ENGINE = InnoDB, PARTITION Partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION PartD VALUES LESS THAN (13) ENGINE = InnoDB, PARTITION partE VALUES LESS THAN (16) ENGINE = InnoDB, PARTITION Partf VALUES LESS THAN (19) ENGINE = InnoDB, PARTITION PartG VALUES LESS THAN (22) ENGINE = InnoDB) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (7) ENGINE = InnoDB, PARTITION Partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION PartD VALUES LESS THAN (13) ENGINE = InnoDB, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = InnoDB, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = InnoDB, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = InnoDB, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = InnoDB, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = InnoDB) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = InnoDB, PARTITION partB VALUES IN (2,10,11) ENGINE = InnoDB, PARTITION Partc VALUES IN (3,4,7) ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB, PARTITION partE VALUES IN (16) ENGINE = InnoDB, PARTITION Partf VALUES IN (19) ENGINE = InnoDB, PARTITION PartG VALUES IN (22) ENGINE = InnoDB) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = InnoDB, PARTITION partB VALUES IN (2,10,11) ENGINE = InnoDB, PARTITION Partc VALUES IN (3,4,7) ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB, PARTITION PartE VALUES IN (13) ENGINE = InnoDB) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = InnoDB, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = InnoDB, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB, PARTITION PartE VALUES IN (13) ENGINE = InnoDB) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'InnoDB'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = InnoDB, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = InnoDB, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = InnoDB, PARTITION PartD VALUES IN (5,6,12) ENGINE = InnoDB, PARTITION PartE VALUES IN (13) ENGINE = InnoDB) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc2_memory.result b/mysql-test/suite/parts/r/partition_mgm_lc2_memory.result
new file mode 100644
index 00000000000..988f60042e5
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc2_memory.result
@@ -0,0 +1,797 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY, PARTITION PartD ENGINE = MEMORY, PARTITION partE ENGINE = MEMORY, PARTITION Partf ENGINE = MEMORY, PARTITION PartG ENGINE = MEMORY) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MEMORY, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MEMORY, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY, PARTITION PartD ENGINE = MEMORY, PARTITION partE ENGINE = MEMORY, PARTITION Partf ENGINE = MEMORY, PARTITION PartG ENGINE = MEMORY) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MEMORY, PARTITION partB ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MEMORY, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MEMORY, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MEMORY, PARTITION Partc ENGINE = MEMORY) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (7) ENGINE = MEMORY, PARTITION Partc VALUES LESS THAN (10) ENGINE = MEMORY, PARTITION PartD VALUES LESS THAN (13) ENGINE = MEMORY, PARTITION partE VALUES LESS THAN (16) ENGINE = MEMORY, PARTITION Partf VALUES LESS THAN (19) ENGINE = MEMORY, PARTITION PartG VALUES LESS THAN (22) ENGINE = MEMORY) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (7) ENGINE = MEMORY, PARTITION Partc VALUES LESS THAN (10) ENGINE = MEMORY, PARTITION PartD VALUES LESS THAN (13) ENGINE = MEMORY, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = MEMORY, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MEMORY, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = MEMORY, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = MEMORY, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = MEMORY) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'Memory'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MEMORY, PARTITION partB VALUES IN (2,10,11) ENGINE = MEMORY, PARTITION Partc VALUES IN (3,4,7) ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY, PARTITION partE VALUES IN (16) ENGINE = MEMORY, PARTITION Partf VALUES IN (19) ENGINE = MEMORY, PARTITION PartG VALUES IN (22) ENGINE = MEMORY) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MEMORY, PARTITION partB VALUES IN (2,10,11) ENGINE = MEMORY, PARTITION Partc VALUES IN (3,4,7) ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY, PARTITION PartE VALUES IN (13) ENGINE = MEMORY) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = MEMORY, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = MEMORY, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY, PARTITION PartE VALUES IN (13) ENGINE = MEMORY) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'Memory'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = MEMORY, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = MEMORY, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = MEMORY, PARTITION PartD VALUES IN (5,6,12) ENGINE = MEMORY, PARTITION PartE VALUES IN (13) ENGINE = MEMORY) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result b/mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result
new file mode 100644
index 00000000000..c586347f23c
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result
@@ -0,0 +1,797 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM, PARTITION PartD ENGINE = MyISAM, PARTITION partE ENGINE = MyISAM, PARTITION Partf ENGINE = MyISAM, PARTITION PartG ENGINE = MyISAM) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MyISAM, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MyISAM, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# 2.0 HASH partitioning mgm
+# expecting duplicate partition name
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partA ,
+PARTITION Parta ,
+PARTITION PartA );
+ERROR HY000: Duplicate partition name parta
+# Creating Hash partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM, PARTITION PartD ENGINE = MyISAM, PARTITION partE ENGINE = MyISAM, PARTITION Partf ENGINE = MyISAM, PARTITION PartG ENGINE = MyISAM) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION parta ENGINE = MyISAM, PARTITION partB ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MyISAM, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY HASH (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = MyISAM, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = MyISAM, PARTITION Partc ENGINE = MyISAM) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after HASH PARTITIONING test
+DROP TABLE TableA;
+# 3.0 RANGE partitioning mgm
+# Creating RANGE partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES LESS THAN (MAXVALUE));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES LESS THAN (16),
+PARTITION Partf VALUES LESS THAN (19),
+PARTITION PartG VALUES LESS THAN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (7) ENGINE = MyISAM, PARTITION Partc VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION PartD VALUES LESS THAN (13) ENGINE = MyISAM, PARTITION partE VALUES LESS THAN (16) ENGINE = MyISAM, PARTITION Partf VALUES LESS THAN (19) ENGINE = MyISAM, PARTITION PartG VALUES LESS THAN (22) ENGINE = MyISAM) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES LESS THAN (MAXVALUE));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (7) ENGINE = MyISAM, PARTITION Partc VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION PartD VALUES LESS THAN (13) ENGINE = MyISAM, PARTITION PartE VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+# Error since it must reorganize a consecutive range
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB VALUES LESS THAN (3) ,
+PARTITION parta VALUES LESS THAN (11) );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION partB,Partc,PartD,PartE INTO
+(PARTITION partD VALUES LESS THAN (8)
+COMMENT="Previously partB and partly Partc",
+PARTITION partB VALUES LESS THAN (11)
+COMMENT="Previously partly Partc and partly PartD",
+PARTITION partC VALUES LESS THAN (MAXVALUE)
+COMMENT="Previously partly PartD");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = MyISAM, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY RANGE (a)
+(PARTITION parta VALUES LESS THAN (4) ,
+PARTITION partB VALUES LESS THAN (7) ,
+PARTITION Partc VALUES LESS THAN (10) ,
+PARTITION PartD VALUES LESS THAN (13) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION parta VALUES LESS THAN (4) ENGINE = MyISAM, PARTITION partD VALUES LESS THAN (8) COMMENT = 'Previously partB and partly Partc' ENGINE = MyISAM, PARTITION partB VALUES LESS THAN (11) COMMENT = 'Previously partly Partc and partly PartD' ENGINE = MyISAM, PARTITION partC VALUES LESS THAN MAXVALUE COMMENT = 'Previously partly PartD' ENGINE = MyISAM) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after RANGE PARTITIONING test
+DROP TABLE TableA;
+# 4.0 LIST partitioning mgm
+# Creating LIST partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/DROP PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA VALUES IN (0));
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE VALUES IN (16),
+PARTITION Partf VALUES IN (19),
+PARTITION PartG VALUES IN (22));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MyISAM, PARTITION partB VALUES IN (2,10,11) ENGINE = MyISAM, PARTITION Partc VALUES IN (3,4,7) ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM, PARTITION partE VALUES IN (16) ENGINE = MyISAM, PARTITION Partf VALUES IN (19) ENGINE = MyISAM, PARTITION PartG VALUES IN (22) ENGINE = MyISAM) */
+ALTER TABLE TableA DROP PARTITION partE, PartG;
+ALTER TABLE TableA DROP PARTITION Partf;
+ALTER TABLE TableA ADD PARTITION
+(PARTITION PartE VALUES IN (13));
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION parta VALUES IN (1,8,9) ENGINE = MyISAM, PARTITION partB VALUES IN (2,10,11) ENGINE = MyISAM, PARTITION Partc VALUES IN (3,4,7) ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM, PARTITION PartE VALUES IN (13) ENGINE = MyISAM) */
+# Test of REORGANIZE PARTITIONS
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION partF VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION parta VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION Partc VALUES IN (1,7)
+COMMENT = "Mix 1 of old parta and Partc",
+PARTITION parta VALUES IN (3,9)
+COMMENT = "Mix 2 of old parta and Partc",
+PARTITION partB VALUES IN (4,8)
+COMMENT = "Mix 3 of old parta and Partc");
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = MyISAM, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = MyISAM, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM, PARTITION PartE VALUES IN (13) ENGINE = MyISAM) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'MyISAM'
+PARTITION BY LIST (a)
+(PARTITION parta VALUES IN (1,8,9) ,
+PARTITION partB VALUES IN (2,10,11) ,
+PARTITION Partc VALUES IN (3,4,7) ,
+PARTITION PartD VALUES IN (5,6,12) );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (a) (PARTITION Partc VALUES IN (1,7) COMMENT = 'Mix 1 of old parta and Partc' ENGINE = MyISAM, PARTITION parta VALUES IN (3,9) COMMENT = 'Mix 2 of old parta and Partc' ENGINE = MyISAM, PARTITION partB VALUES IN (4,8) COMMENT = 'Mix 3 of old parta and Partc' ENGINE = MyISAM, PARTITION PartD VALUES IN (5,6,12) ENGINE = MyISAM, PARTITION PartE VALUES IN (13) ENGINE = MyISAM) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+12
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+# Cleaning up after LIST PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result b/mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result
new file mode 100644
index 00000000000..1c9952370f0
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result
@@ -0,0 +1,204 @@
+# Creating database MySQL_TEST_DB
+CREATE DATABASE MySQL_Test_DB;
+USE MySQL_Test_DB;
+# 1.0 KEY partitioning mgm
+# Creating KEY partitioned table
+CREATE TABLE TableA (a INT)
+ENGINE = 'NDBCluster'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+INSERT INTO TableA VALUES (1), (2), (7), (8), (9), (10);
+INSERT INTO TableA VALUES (3), (4), (5), (6), (11), (12);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Test of ADD/COALESCE PARTITIONS
+# expecting duplicate partition name
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partA,
+PARTITION Parta,
+PARTITION PartA);
+ERROR HY000: Duplicate partition name parta
+ALTER TABLE TableA ADD PARTITION
+(PARTITION partE,
+PARTITION Partf,
+PARTITION PartG);
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ndbcluster, PARTITION partB ENGINE = ndbcluster, PARTITION Partc ENGINE = ndbcluster, PARTITION PartD ENGINE = ndbcluster, PARTITION partE ENGINE = ndbcluster, PARTITION Partf ENGINE = ndbcluster, PARTITION PartG ENGINE = ndbcluster) */
+ALTER TABLE TableA COALESCE PARTITION 4;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION parta ENGINE = ndbcluster, PARTITION partB ENGINE = ndbcluster, PARTITION Partc ENGINE = ndbcluster) */
+# Test of REORGANIZE PARTITIONS
+# Should not work on HASH/KEY
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB,Partc INTO
+(PARTITION PARTA ,
+PARTITION partc );
+ERROR HY000: REORGANISE PARTITION can only be used to reorganise partitions not to change their numbers
+ALTER TABLE TableA REORGANIZE PARTITION parta,Partc INTO
+(PARTITION partB ,
+PARTITION parta );
+ERROR HY000: When reorganising a set of partitions they must be in consecutive order
+ALTER TABLE TableA REORGANIZE PARTITION parta,partB INTO
+(PARTITION partB COMMENT="Previusly named parta",
+PARTITION parta COMMENT="Previusly named partB");
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ndbcluster, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ndbcluster, PARTITION Partc ENGINE = ndbcluster) */
+# Test of RENAME TABLE
+RENAME TABLE TableA to TableB;
+SELECT * FROM TableB;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+RENAME TABLE TableB to TableA;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+# Checking name comparision Upper vs Lower case
+# Error if lower_case_table_names != 0
+# lower_case_table_names: 2
+CREATE TABLE tablea (a INT)
+ENGINE = 'NDBCluster'
+PARTITION BY KEY (a)
+(PARTITION parta ,
+PARTITION partB ,
+PARTITION Partc ,
+PARTITION PartD );
+ERROR 42S01: Table 'tablea' already exists
+SHOW TABLES;
+Tables_in_mysql_test_db
+TableA
+RENAME TABLE TableA to tablea;
+ERROR 42S01: Table 'tablea' already exists
+RENAME TABLE tablea to TableA;
+ERROR 42S01: Table 'TableA' already exists
+SELECT * FROM tablea;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE tablea;
+Table Create Table
+tablea CREATE TABLE `tablea` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (a) (PARTITION partB COMMENT = 'Previusly named parta' ENGINE = ndbcluster, PARTITION parta COMMENT = 'Previusly named partB' ENGINE = ndbcluster, PARTITION Partc ENGINE = ndbcluster) */
+# Test of REMOVE PARTITIONING
+ALTER TABLE TableA REMOVE PARTITIONING;
+SELECT * FROM TableA;
+a
+1
+10
+11
+12
+2
+3
+4
+5
+6
+7
+8
+9
+SHOW CREATE TABLE TableA;
+Table Create Table
+TableA CREATE TABLE `TableA` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+# Cleaning up after KEY PARTITIONING test
+DROP TABLE TableA;
+# Cleaning up before exit
+USE test;
+DROP DATABASE MySQL_Test_DB;
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc0_archive.test b/mysql-test/suite/parts/t/partition_mgm_lc0_archive.test
new file mode 100644
index 00000000000..460e08bc124
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc0_archive.test
@@ -0,0 +1,42 @@
+################################################################################
+# t/partition_mgm_lc0_archive.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# Archive branch + lower_case_table_names = 0 #
+# (usually Unix like, apart from Mac OS X) #
+# Also requires lower_case_file_system OFF #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase0.inc
+--source include/have_case_sensitive_file_system.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+let $have_bug37719= 1;
+
+##### Storage engine to be tested
+--source include/have_archive.inc
+let $engine= 'Archive';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc0_innodb.test b/mysql-test/suite/parts/t/partition_mgm_lc0_innodb.test
new file mode 100644
index 00000000000..ff218dcb1c8
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc0_innodb.test
@@ -0,0 +1,41 @@
+################################################################################
+# t/partition_mgm_lc0_innodb.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# InnoDB branch + lower_case_table_names = 0 #
+# (usually Unix like, apart from Mac OS X) #
+# Also requires lower_case_file_system OFF #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase0.inc
+--source include/have_case_sensitive_file_system.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+--source include/have_innodb.inc
+let $engine= 'InnoDB';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc0_memory.test b/mysql-test/suite/parts/t/partition_mgm_lc0_memory.test
new file mode 100644
index 00000000000..209387a548b
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc0_memory.test
@@ -0,0 +1,41 @@
+################################################################################
+# t/partition_mgm_lc0_memory.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# Memory branch + lower_case_table_names = 0 #
+# (usually Unix like, apart from Mac OS X) #
+# Also requires lower_case_file_system OFF #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase0.inc
+--source include/have_case_sensitive_file_system.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+#--source include/have_memory.inc
+let $engine= 'Memory';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc0_myisam.test b/mysql-test/suite/parts/t/partition_mgm_lc0_myisam.test
new file mode 100644
index 00000000000..31ed4776530
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc0_myisam.test
@@ -0,0 +1,41 @@
+################################################################################
+# t/partition_mgm_lc0_myisam.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# MyISAM branch + lower_case_table_names = 0 #
+# (usually Unix like, apart from Mac OS X) #
+# Also requires lower_case_file_system OFF #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase0.inc
+--source include/have_case_sensitive_file_system.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+#--source include/have_myisam.inc
+let $engine= 'MyISAM';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc0_ndb.test b/mysql-test/suite/parts/t/partition_mgm_lc0_ndb.test
new file mode 100644
index 00000000000..686c69cca25
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc0_ndb.test
@@ -0,0 +1,47 @@
+################################################################################
+# t/partition_mgm_lc0_ndb.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# NDB branch + lower_case_table_names = 0 #
+# (usually Unix like, apart from Mac OS X) #
+# Also requires lower_case_file_system OFF #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase0.inc
+--source include/have_case_sensitive_file_system.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+let $have_bug33158= 1;
+
+##### Storage engine to be tested
+--source include/have_ndb.inc
+connection default;
+# Use either $can_only_key or new=on option to run test.
+let $can_only_key= 1;
+# Allow hash/list/range partitioning with ndb
+#SET new=on;
+let $engine= 'NDBCluster';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_archive-master.opt b/mysql-test/suite/parts/t/partition_mgm_lc1_archive-master.opt
new file mode 100644
index 00000000000..62ab6dad1e0
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_archive-master.opt
@@ -0,0 +1 @@
+--lower_case_table_names=1
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_archive.test b/mysql-test/suite/parts/t/partition_mgm_lc1_archive.test
new file mode 100644
index 00000000000..2bc643db75f
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_archive.test
@@ -0,0 +1,38 @@
+################################################################################
+# t/partition_mgm_lc1_archive.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# Archive branch + lower_case_table_names = 1 (usually Windows) #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase1.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+--source include/have_archive.inc
+let $engine= 'Archive';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_innodb-master.opt b/mysql-test/suite/parts/t/partition_mgm_lc1_innodb-master.opt
new file mode 100644
index 00000000000..62ab6dad1e0
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_innodb-master.opt
@@ -0,0 +1 @@
+--lower_case_table_names=1
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_innodb.test b/mysql-test/suite/parts/t/partition_mgm_lc1_innodb.test
new file mode 100644
index 00000000000..f14012d2b5b
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_innodb.test
@@ -0,0 +1,38 @@
+################################################################################
+# t/partition_mgm_lc1_innodb.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# InnoDB branch + lower_case_table_names = 1 (usually Windows) #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase1.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+--source include/have_innodb.inc
+let $engine= 'InnoDB';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_memory-master.opt b/mysql-test/suite/parts/t/partition_mgm_lc1_memory-master.opt
new file mode 100644
index 00000000000..62ab6dad1e0
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_memory-master.opt
@@ -0,0 +1 @@
+--lower_case_table_names=1
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_memory.test b/mysql-test/suite/parts/t/partition_mgm_lc1_memory.test
new file mode 100644
index 00000000000..35d933d2a8c
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_memory.test
@@ -0,0 +1,38 @@
+################################################################################
+# t/partition_mgm_lc1_memory.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# Memory branch + lower_case_table_names = 1 (usually Windows) #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase1.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+#--source include/have_memory.inc
+let $engine= 'Memory';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_myisam-master.opt b/mysql-test/suite/parts/t/partition_mgm_lc1_myisam-master.opt
new file mode 100644
index 00000000000..62ab6dad1e0
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_myisam-master.opt
@@ -0,0 +1 @@
+--lower_case_table_names=1
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_myisam.test b/mysql-test/suite/parts/t/partition_mgm_lc1_myisam.test
new file mode 100644
index 00000000000..78b51da0a6b
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_myisam.test
@@ -0,0 +1,38 @@
+################################################################################
+# t/partition_mgm_lc1_myisam.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# MyISAM branch + lower_case_table_names = 1 (usually Windows) #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase1.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+#--source include/have_myisam.inc
+let $engine= 'MyISAM';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_ndb-master.opt b/mysql-test/suite/parts/t/partition_mgm_lc1_ndb-master.opt
new file mode 100644
index 00000000000..62ab6dad1e0
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_ndb-master.opt
@@ -0,0 +1 @@
+--lower_case_table_names=1
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc1_ndb.test b/mysql-test/suite/parts/t/partition_mgm_lc1_ndb.test
new file mode 100644
index 00000000000..a70b9b5c41c
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc1_ndb.test
@@ -0,0 +1,44 @@
+################################################################################
+# t/partition_mgm_lc1_ndb.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# NDB branch + lower_case_table_names = 1 (usually Windows) #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase1.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+let $have_bug33158= 1;
+
+##### Storage engine to be tested
+--source include/have_ndb.inc
+connection default;
+# Use either $can_only_key or new=on option to run test.
+let $can_only_key= 1;
+# Allow hash/list/range partitioning with ndb
+#SET new=on;
+let $engine= 'NDBCluster';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_archive-master.opt b/mysql-test/suite/parts/t/partition_mgm_lc2_archive-master.opt
new file mode 100644
index 00000000000..f18979f5a6a
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_archive-master.opt
@@ -0,0 +1 @@
+--lower_case_table_names=2
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_archive.test b/mysql-test/suite/parts/t/partition_mgm_lc2_archive.test
new file mode 100644
index 00000000000..d0e2591804d
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_archive.test
@@ -0,0 +1,38 @@
+################################################################################
+# t/partition_mgm_lc2_archive.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# Archive branch + lower_case_table_names = 2 (usually Mac OS X) #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase2.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+--source include/have_archive.inc
+let $engine= 'Archive';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_innodb-master.opt b/mysql-test/suite/parts/t/partition_mgm_lc2_innodb-master.opt
new file mode 100644
index 00000000000..f18979f5a6a
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_innodb-master.opt
@@ -0,0 +1 @@
+--lower_case_table_names=2
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_innodb.test b/mysql-test/suite/parts/t/partition_mgm_lc2_innodb.test
new file mode 100644
index 00000000000..edcce4f9358
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_innodb.test
@@ -0,0 +1,38 @@
+################################################################################
+# t/partition_mgm_lc2_innodb.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# InnoDB branch + lower_case_table_names = 2 (usually Mac OS X) #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase2.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+--source include/have_innodb.inc
+let $engine= 'InnoDB';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_memory-master.opt b/mysql-test/suite/parts/t/partition_mgm_lc2_memory-master.opt
new file mode 100644
index 00000000000..f18979f5a6a
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_memory-master.opt
@@ -0,0 +1 @@
+--lower_case_table_names=2
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_memory.test b/mysql-test/suite/parts/t/partition_mgm_lc2_memory.test
new file mode 100644
index 00000000000..5bed32b958a
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_memory.test
@@ -0,0 +1,38 @@
+################################################################################
+# t/partition_mgm_lc2_memory.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# Memory branch + lower_case_table_names = 2 (usually Mac OS X) #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase2.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+#--source include/have_memory.inc
+let $engine= 'Memory';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_myisam-master.opt b/mysql-test/suite/parts/t/partition_mgm_lc2_myisam-master.opt
new file mode 100644
index 00000000000..f18979f5a6a
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_myisam-master.opt
@@ -0,0 +1 @@
+--lower_case_table_names=2
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_myisam.test b/mysql-test/suite/parts/t/partition_mgm_lc2_myisam.test
new file mode 100644
index 00000000000..83d35050019
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_myisam.test
@@ -0,0 +1,38 @@
+################################################################################
+# t/partition_mgm_lc2_myisam.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# MyISAM branch + lower_case_table_names = 2 (usually Mac OS X) #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase2.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+#--source include/have_myisam.inc
+let $engine= 'MyISAM';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_ndb-master.opt b/mysql-test/suite/parts/t/partition_mgm_lc2_ndb-master.opt
new file mode 100644
index 00000000000..f18979f5a6a
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_ndb-master.opt
@@ -0,0 +1 @@
+--lower_case_table_names=2
diff --git a/mysql-test/suite/parts/t/partition_mgm_lc2_ndb.test b/mysql-test/suite/parts/t/partition_mgm_lc2_ndb.test
new file mode 100644
index 00000000000..67fdfdde70b
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_mgm_lc2_ndb.test
@@ -0,0 +1,43 @@
+################################################################################
+# t/partition_mgm_lc2_ndb.test #
+# #
+# Purpose: #
+# Test of partitioning management functions (incl upper/lower case names): #
+# NDB branch + lower_case_table_names = 2 (usually Mac OS X) #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: mattiasj #
+# Original Date: 2008-06-27 #
+################################################################################
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT INNODB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+# Please read the README at the end of inc/partition.pre before changing
+# any of the variables.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source include/have_lowercase2.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+--source include/have_ndb.inc
+connection default;
+# Use either $can_only_key or new=on option to run test.
+let $can_only_key= 1;
+# Allow hash/list/range partitioning with ndb
+#SET new=on;
+let $engine= 'NDBCluster';
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/parts/inc/partition_mgm.inc
diff --git a/mysql-test/t/lowercase_table3.test b/mysql-test/t/lowercase_table3.test
index 51385b4b178..d3c9ec5145e 100644
--- a/mysql-test/t/lowercase_table3.test
+++ b/mysql-test/t/lowercase_table3.test
@@ -6,6 +6,7 @@
--source include/have_innodb.inc
--source include/have_lowercase0.inc
+--source include/have_case_insensitive_file_system.inc
--source include/not_windows.inc
--disable_warnings
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index c7711ca37b8..dfaa58c9249 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -593,6 +593,12 @@ int ha_partition::drop_partitions(const char *path)
int error= 0;
DBUG_ENTER("ha_partition::drop_partitions");
+ /*
+ Assert that it works without HA_FILE_BASED and lower_case_table_name = 2.
+ We use m_file[0] as long as all partitions have the same storage engine.
+ */
+ DBUG_ASSERT(!strcmp(path, get_canonical_filename(m_file[0], path,
+ part_name_buff)));
do
{
partition_element *part_elem= part_it++;
@@ -682,6 +688,13 @@ int ha_partition::rename_partitions(const char *path)
partition_element *part_elem, *sub_elem;
DBUG_ENTER("ha_partition::rename_partitions");
+ /*
+ Assert that it works without HA_FILE_BASED and lower_case_table_name = 2.
+ We use m_file[0] as long as all partitions have the same storage engine.
+ */
+ DBUG_ASSERT(!strcmp(path, get_canonical_filename(m_file[0], path,
+ norm_name_buff)));
+
if (temp_partitions)
{
/*
@@ -1344,6 +1357,12 @@ int ha_partition::change_partitions(HA_CREATE_INFO *create_info,
THD *thd= current_thd;
DBUG_ENTER("ha_partition::change_partitions");
+ /*
+ Assert that it works without HA_FILE_BASED and lower_case_table_name = 2.
+ We use m_file[0] as long as all partitions have the same storage engine.
+ */
+ DBUG_ASSERT(!strcmp(path, get_canonical_filename(m_file[0], path,
+ part_name_buff)));
m_reorged_parts= 0;
if (!m_part_info->is_sub_partitioned())
no_subparts= 1;
@@ -1776,8 +1795,10 @@ uint ha_partition::del_ren_cre_table(const char *from,
{
int save_error= 0;
int error;
- char from_buff[FN_REFLEN], to_buff[FN_REFLEN];
+ char from_buff[FN_REFLEN], to_buff[FN_REFLEN], from_lc_buff[FN_REFLEN],
+ to_lc_buff[FN_REFLEN];
char *name_buffer_ptr;
+ const char *from_path, *to_path;
uint i;
handler **file, **abort_file;
DBUG_ENTER("del_ren_cre_table()");
@@ -1785,17 +1806,29 @@ uint ha_partition::del_ren_cre_table(const char *from,
if (get_from_handler_file(from, current_thd->mem_root))
DBUG_RETURN(TRUE);
DBUG_ASSERT(m_file_buffer);
+ DBUG_PRINT("enter", ("from: (%s) to: (%s)", from, to));
name_buffer_ptr= m_name_buffer_ptr;
file= m_file;
+ /*
+ Since ha_partition has HA_FILE_BASED, it must alter underlying table names
+ if they do not have HA_FILE_BASED and lower_case_table_names == 2.
+ See Bug#37402, for Mac OS X.
+ The appended #P#<partname>[#SP#<subpartname>] will remain in current case.
+ Using the first partitions handler, since mixing handlers is not allowed.
+ */
+ from_path= get_canonical_filename(*file, from, from_lc_buff);
+ if (to != NULL)
+ to_path= get_canonical_filename(*file, to, to_lc_buff);
i= 0;
do
{
- create_partition_name(from_buff, from, name_buffer_ptr, NORMAL_PART_NAME,
- FALSE);
+ create_partition_name(from_buff, from_path, name_buffer_ptr,
+ NORMAL_PART_NAME, FALSE);
+
if (to != NULL)
{ // Rename branch
- create_partition_name(to_buff, to, name_buffer_ptr, NORMAL_PART_NAME,
- FALSE);
+ create_partition_name(to_buff, to_path, name_buffer_ptr,
+ NORMAL_PART_NAME, FALSE);
error= (*file)->ha_rename_table(from_buff, to_buff);
}
else if (table_arg == NULL) // delete branch
@@ -1817,7 +1850,7 @@ create_error:
name_buffer_ptr= m_name_buffer_ptr;
for (abort_file= file, file= m_file; file < abort_file; file++)
{
- create_partition_name(from_buff, from, name_buffer_ptr, NORMAL_PART_NAME,
+ create_partition_name(from_buff, from_path, name_buffer_ptr, NORMAL_PART_NAME,
FALSE);
VOID((*file)->ha_delete_table((const char*) from_buff));
name_buffer_ptr= strend(name_buffer_ptr) + 1;
diff --git a/sql/handler.cc b/sql/handler.cc
index e550295ebba..cc2db397ad4 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -1814,8 +1814,8 @@ bool ha_flush_logs(handlerton *db_type)
return FALSE;
}
-static const char *check_lowercase_names(handler *file, const char *path,
- char *tmp_path)
+const char *get_canonical_filename(handler *file, const char *path,
+ char *tmp_path)
{
if (lower_case_table_names != 2 || (file->ha_table_flags() & HA_FILE_BASED))
return path;
@@ -1886,7 +1886,7 @@ int ha_delete_table(THD *thd, handlerton *table_type, const char *path,
! (file=get_new_handler((TABLE_SHARE*)0, thd->mem_root, table_type)))
DBUG_RETURN(ENOENT);
- path= check_lowercase_names(file, path, tmp_path);
+ path= get_canonical_filename(file, path, tmp_path);
if ((error= file->ha_delete_table(path)) && generate_warning)
{
/*
@@ -3422,7 +3422,7 @@ int ha_create_table(THD *thd, const char *path,
if (update_create_info)
update_create_info_from_table(create_info, &table);
- name= check_lowercase_names(table.file, share.path.str, name_buff);
+ name= get_canonical_filename(table.file, share.path.str, name_buff);
error= table.file->ha_create(name, &table, create_info);
VOID(closefrm(&table, 0));
@@ -3494,7 +3494,7 @@ int ha_create_table_from_engine(THD* thd, const char *db, const char *name)
update_create_info_from_table(&create_info, &table);
create_info.table_options|= HA_OPTION_CREATE_FROM_ENGINE;
- check_lowercase_names(table.file, path, path);
+ get_canonical_filename(table.file, path, path);
error=table.file->ha_create(path, &table, &create_info);
VOID(closefrm(&table, 1));
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h
index e9deb479c5e..6f2080eaa4f 100644
--- a/sql/mysql_priv.h
+++ b/sql/mysql_priv.h
@@ -2227,6 +2227,8 @@ uint tablename_to_filename(const char *from, char *to, uint to_length);
#ifdef MYSQL_SERVER
uint build_table_filename(char *buff, size_t bufflen, const char *db,
const char *table, const char *ext, uint flags);
+const char *get_canonical_filename(handler *file, const char *path,
+ char *tmp_path);
#define MYSQL50_TABLE_NAME_PREFIX "#mysql50#"
#define MYSQL50_TABLE_NAME_PREFIX_LENGTH 9