diff options
author | Mattias Jonsson <mattiasj@mysql.com> | 2008-08-12 12:26:23 +0200 |
---|---|---|
committer | Mattias Jonsson <mattiasj@mysql.com> | 2008-08-12 12:26:23 +0200 |
commit | 642bf9022ab6f3a053908e8e5bbfc7597331a91a (patch) | |
tree | c37997f38ab924c9706f08ded9e966d08e391773 | |
parent | bdab488391500e052d53fa312cbec46c5921d45a (diff) | |
parent | c1e54765dafc87d1d244e91dbc0bd37062017d46 (diff) | |
download | mariadb-git-642bf9022ab6f3a053908e8e5bbfc7597331a91a.tar.gz |
manual merge of bug#37402
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 |