120 lines
3.8 KiB
Plaintext
120 lines
3.8 KiB
Plaintext
--source include/have_innodb.inc
|
|
#
|
|
# Check if partitioning is already active
|
|
#
|
|
if (`SELECT COUNT(*) != 0 FROM INFORMATION_SCHEMA.PLUGINS WHERE plugin_name = 'partition' AND plugin_status = 'ACTIVE'`) {
|
|
--skip The generic partitioning engine is already active!
|
|
}
|
|
|
|
#
|
|
# Check if server has support for loading plugins
|
|
#
|
|
if (`SELECT @@have_dynamic_loading != 'YES'`) {
|
|
--skip plugin requires dynamic loading
|
|
}
|
|
|
|
#
|
|
# Check if the variable PARTITION_PLUGIN is set
|
|
#
|
|
if (!$PARTITION_PLUGIN) {
|
|
--skip Could not find library for partition plugin, see the file plugin.defs
|
|
}
|
|
|
|
#
|
|
# Check if --plugin-dir was setup for partition.
|
|
#
|
|
if (`SELECT CONCAT('--plugin-dir=', REPLACE(@@plugin_dir, '\\\\', '/')) != '$PARTITION_PLUGIN_OPT/'`) {
|
|
--skip Partition plugin requires that --plugin-dir is set to the partition plugin dir
|
|
}
|
|
|
|
# Save the initial number of concurrent sessions
|
|
--source include/count_sessions.inc
|
|
|
|
let $have_innodb_native_partitioning= 1;
|
|
if ($have_innodb_native_partitioning)
|
|
{
|
|
--echo # InnoDB supports native partitioning and is required by the test.
|
|
CREATE TABLE t1 (a int)
|
|
ENGINE = InnoDB
|
|
PARTITION BY HASH (a) PARTITIONS 2;
|
|
INSERT INTO t1 VALUES (1);
|
|
SELECT * FROM t1;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
}
|
|
|
|
--echo # MyISAM requires ha_partition to support partitioning.
|
|
--error ER_FEATURE_NOT_AVAILABLE
|
|
CREATE TABLE t1 (a int)
|
|
ENGINE = MyISAM
|
|
PARTITION BY HASH (a) PARTITIONS 2;
|
|
|
|
--replace_regex /\.dll/.so/
|
|
eval INSTALL PLUGIN `partition` SONAME '$PARTITION_PLUGIN';
|
|
--replace_regex /\.dll/.so/
|
|
SELECT 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';
|
|
|
|
--replace_regex /\.dll/.so/
|
|
--error ER_UDF_EXISTS
|
|
eval INSTALL PLUGIN `PARTITION` SONAME '$PARTITION_PLUGIN';
|
|
|
|
CREATE TABLE t1 (a int)
|
|
ENGINE = MyISAM
|
|
PARTITION BY HASH (a) PARTITIONS 2;
|
|
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
|
|
|
|
--echo # UNINSTALL will give a warning since an open table is in the table cache
|
|
UNINSTALL PLUGIN `partition`;
|
|
|
|
--echo # Still working due to UNINSTALL not yet completed
|
|
SHOW CREATE TABLE t1;
|
|
SELECT COUNT(*) FROM t1;
|
|
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'PARTITION';
|
|
SELECT COUNT(*) FROM mysql.plugin;
|
|
--echo # FLUSH TABLES will close all tables and allow the UNINSTALL to complete
|
|
FLUSH TABLES;
|
|
SELECT COUNT(*) FROM INFORMATION_SCHEMA.PLUGINS WHERE plugin_name = 'partition';
|
|
SELECT COUNT(*) FROM mysql.plugin;
|
|
--error ER_FEATURE_NOT_AVAILABLE
|
|
SHOW CREATE TABLE t1;
|
|
--error ER_FEATURE_NOT_AVAILABLE
|
|
SELECT COUNT(*) FROM t1;
|
|
--error ER_FEATURE_NOT_AVAILABLE
|
|
CREATE TABLE t2 (a int)
|
|
ENGINE = MyISAM
|
|
PARTITION BY HASH (a) PARTITIONS 2;
|
|
--error ER_STORAGE_ENGINE_NOT_LOADED
|
|
DROP TABLE t1;
|
|
|
|
--replace_regex /\.dll/.so/
|
|
eval INSTALL PLUGIN `PARTITION` SONAME '$PARTITION_PLUGIN';
|
|
--replace_regex /\.dll/.so/
|
|
SELECT 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';
|
|
|
|
--replace_regex /\.dll/.so/
|
|
--error ER_UDF_EXISTS
|
|
eval INSTALL PLUGIN `partition` SONAME '$PARTITION_PLUGIN';
|
|
|
|
DROP TABLE t1;
|
|
|
|
--echo # Simple partitioned table test
|
|
CREATE TABLE t1(a int) PARTITION BY HASH (a) PARTITIONS 2;
|
|
SHOW CREATE TABLE t1;
|
|
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
|
|
ALTER TABLE t1 ADD PARTITION PARTITIONS 1;
|
|
INSERT INTO t1 VALUES (6), (7), (8);
|
|
SELECT COUNT(*) FROM t1;
|
|
|
|
--echo # Cannot drop a partition from a HASH partitioned table
|
|
--error ER_ONLY_ON_RANGE_LIST_PARTITION
|
|
ALTER TABLE t1 DROP PARTITION p0;
|
|
ALTER TABLE t1 COALESCE PARTITION 2;
|
|
--error ER_DROP_LAST_PARTITION
|
|
ALTER TABLE t1 COALESCE PARTITION 1;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
UNINSTALL PLUGIN `partition`;
|
|
--error ER_SP_DOES_NOT_EXIST
|
|
UNINSTALL PLUGIN `PARTITION`;
|