1--source include/have_innodb.inc 2# 3# Check if partitioning is already active 4# 5if (`SELECT COUNT(*) != 0 FROM INFORMATION_SCHEMA.PLUGINS WHERE plugin_name = 'partition' AND plugin_status = 'ACTIVE'`) { 6 --skip The generic partitioning engine is already active! 7} 8 9# 10# Check if server has support for loading plugins 11# 12if (`SELECT @@have_dynamic_loading != 'YES'`) { 13 --skip plugin requires dynamic loading 14} 15 16# 17# Check if the variable PARTITION_PLUGIN is set 18# 19if (!$PARTITION_PLUGIN) { 20 --skip Could not find library for partition plugin, see the file plugin.defs 21} 22 23# 24# Check if --plugin-dir was setup for partition. 25# 26if (`SELECT CONCAT('--plugin-dir=', REPLACE(@@plugin_dir, '\\\\', '/')) != '$PARTITION_PLUGIN_OPT/'`) { 27 --skip Partition plugin requires that --plugin-dir is set to the partition plugin dir 28} 29 30# Save the initial number of concurrent sessions 31--source include/count_sessions.inc 32 33let $have_innodb_native_partitioning= 1; 34if ($have_innodb_native_partitioning) 35{ 36 --echo # InnoDB supports native partitioning and is required by the test. 37 CREATE TABLE t1 (a int) 38 ENGINE = InnoDB 39 PARTITION BY HASH (a) PARTITIONS 2; 40 INSERT INTO t1 VALUES (1); 41 SELECT * FROM t1; 42 SHOW CREATE TABLE t1; 43 DROP TABLE t1; 44} 45 46--echo # MyISAM requires ha_partition to support partitioning. 47--error ER_FEATURE_NOT_AVAILABLE 48CREATE TABLE t1 (a int) 49ENGINE = MyISAM 50PARTITION BY HASH (a) PARTITIONS 2; 51 52--replace_regex /\.dll/.so/ 53eval INSTALL PLUGIN `partition` SONAME '$PARTITION_PLUGIN'; 54--replace_regex /\.dll/.so/ 55SELECT PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_STATUS, PLUGIN_TYPE, PLUGIN_LIBRARY, PLUGIN_AUTHOR, PLUGIN_DESCRIPTION, PLUGIN_LICENSE, LOAD_OPTION FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'PARTITION'; 56 57--replace_regex /\.dll/.so/ 58--error ER_UDF_EXISTS 59eval INSTALL PLUGIN `PARTITION` SONAME '$PARTITION_PLUGIN'; 60 61CREATE TABLE t1 (a int) 62ENGINE = MyISAM 63PARTITION BY HASH (a) PARTITIONS 2; 64INSERT INTO t1 VALUES (1), (2), (3), (4), (5); 65 66--echo # UNINSTALL will give a warning since an open table is in the table cache 67UNINSTALL PLUGIN `partition`; 68 69--echo # Still working due to UNINSTALL not yet completed 70SHOW CREATE TABLE t1; 71SELECT COUNT(*) FROM t1; 72SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'PARTITION'; 73SELECT COUNT(*) FROM mysql.plugin; 74--echo # FLUSH TABLES will close all tables and allow the UNINSTALL to complete 75FLUSH TABLES; 76SELECT COUNT(*) FROM INFORMATION_SCHEMA.PLUGINS WHERE plugin_name = 'partition'; 77SELECT COUNT(*) FROM mysql.plugin; 78--error ER_FEATURE_NOT_AVAILABLE 79SHOW CREATE TABLE t1; 80--error ER_FEATURE_NOT_AVAILABLE 81SELECT COUNT(*) FROM t1; 82--error ER_FEATURE_NOT_AVAILABLE 83CREATE TABLE t2 (a int) 84ENGINE = MyISAM 85PARTITION BY HASH (a) PARTITIONS 2; 86--error ER_STORAGE_ENGINE_NOT_LOADED 87DROP TABLE t1; 88 89--replace_regex /\.dll/.so/ 90eval INSTALL PLUGIN `PARTITION` SONAME '$PARTITION_PLUGIN'; 91--replace_regex /\.dll/.so/ 92SELECT PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_STATUS, PLUGIN_TYPE, PLUGIN_LIBRARY, PLUGIN_AUTHOR, PLUGIN_DESCRIPTION, PLUGIN_LICENSE, LOAD_OPTION FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'PARTITION'; 93 94--replace_regex /\.dll/.so/ 95--error ER_UDF_EXISTS 96eval INSTALL PLUGIN `partition` SONAME '$PARTITION_PLUGIN'; 97 98DROP TABLE t1; 99 100--echo # Simple partitioned table test 101CREATE TABLE t1(a int) PARTITION BY HASH (a) PARTITIONS 2; 102SHOW CREATE TABLE t1; 103INSERT INTO t1 VALUES (1), (2), (3), (4), (5); 104ALTER TABLE t1 ADD PARTITION PARTITIONS 1; 105INSERT INTO t1 VALUES (6), (7), (8); 106SELECT COUNT(*) FROM t1; 107 108--echo # Cannot drop a partition from a HASH partitioned table 109--error ER_ONLY_ON_RANGE_LIST_PARTITION 110ALTER TABLE t1 DROP PARTITION p0; 111ALTER TABLE t1 COALESCE PARTITION 2; 112--error ER_DROP_LAST_PARTITION 113ALTER TABLE t1 COALESCE PARTITION 1; 114SHOW CREATE TABLE t1; 115DROP TABLE t1; 116 117UNINSTALL PLUGIN `partition`; 118--error ER_SP_DOES_NOT_EXIST 119UNINSTALL PLUGIN `PARTITION`; 120