polardbxengine/mysql-test/suite/secondary_engine/t/load.test

152 lines
4.0 KiB
Plaintext

--disable_query_log
eval INSTALL PLUGIN mock SONAME '$MOCK_PLUGIN';
--enable_query_log
--echo #
--echo # Load into and unload from secondary engine.
--echo #
CREATE TABLE t1 (a INT) SECONDARY_ENGINE MOCK;
ALTER TABLE t1 SECONDARY_LOAD;
ALTER TABLE t1 SECONDARY_UNLOAD;
SHOW CREATE TABLE t1;
DROP TABLE t1;
--echo #
--echo # Attempt to load and unload table with no secondary engine.
--echo #
CREATE TABLE t1 (a INT);
--error ER_SECONDARY_ENGINE
ALTER TABLE t1 SECONDARY_LOAD;
--error ER_SECONDARY_ENGINE
ALTER TABLE t1 SECONDARY_UNLOAD;
ALTER TABLE t1 SECONDARY_ENGINE NULL;
DROP TABLE t1;
--echo #
--echo # Attempt to unload temporary table with no secondary engine.
--echo #
CREATE TEMPORARY TABLE t1 (a INT);
--error ER_SECONDARY_ENGINE
ALTER TABLE t1 SECONDARY_LOAD;
--error ER_SECONDARY_ENGINE
ALTER TABLE t1 SECONDARY_UNLOAD;
ALTER TABLE t1 SECONDARY_ENGINE NULL;
DROP TABLE t1;
--echo #
--echo # Attempt to load into secondary engine in conjunction with other DDL
--echo # operations.
--echo #
CREATE TABLE t1 (a INT) SECONDARY_ENGINE MOCK;
--error ER_PARSE_ERROR
ALTER TABLE t1 SECONDARY_LOAD, FORCE;
DROP TABLE t1;
--echo #
--echo # Perform alterations related to secondary engine using differing
--echo # algorithms.
--echo #
CREATE TABLE t1 (a INT) SECONDARY_ENGINE MOCK;
--error ER_PARSE_ERROR
ALTER TABLE t1 SECONDARY_LOAD, ALGORITHM=INPLACE;
--error ER_PARSE_ERROR
ALTER TABLE t1 SECONDARY_UNLOAD, ALGORITHM=INPLACE;
--error ER_PARSE_ERROR
ALTER TABLE t1 SECONDARY_LOAD, ALGORITHM=COPY;
--error ER_PARSE_ERROR
ALTER TABLE t1 SECONDARY_UNLOAD, ALGORITHM=COPY;
ALTER TABLE t1 SECONDARY_ENGINE NULL, ALGORITHM=INPLACE;
ALTER TABLE t1 SECONDARY_ENGINE MOCK, ALGORITHM=INPLACE;
ALTER TABLE t1 SECONDARY_ENGINE NULL, ALGORITHM=COPY;
ALTER TABLE t1 SECONDARY_ENGINE MOCK, ALGORITHM=COPY;
SHOW CREATE TABLE t1;
DROP TABLE t1;
--echo #
--echo # Load and unload a table in one session while another session
--echo # accesses the table concurrently.
--echo #
CREATE TABLE t1 (a INT) SECONDARY_ENGINE MOCK;
--disable_query_log
--disable_result_log
connect(con1, localhost, root);
let $i = 0;
while ($i < 10) {
inc $i;
connection con1;
--send ALTER TABLE t1 SECONDARY_LOAD; ALTER TABLE t1 SECONDARY_UNLOAD
connection default;
SELECT * FROM t1;
SELECT * FROM t1;
SELECT * FROM t1;
SELECT * FROM t1;
SELECT * FROM t1;
connection con1;
reap;
}
disconnect con1;
connection default;
--enable_query_log
--enable_result_log
DROP TABLE t1;
--echo #
--echo # Attempt to LOCK TABLE before loading a table into secondary engine.
--echo #
CREATE TABLE t1 (a INT) SECONDARY_ENGINE MOCK;
LOCK TABLES t1 WRITE;
ALTER TABLE t1 SECONDARY_LOAD;
ALTER TABLE t1 SECONDARY_UNLOAD;
UNLOCK TABLES;
LOCK TABLES t1 READ;
--error ER_TABLE_NOT_LOCKED_FOR_WRITE
ALTER TABLE t1 SECONDARY_LOAD;
--error ER_TABLE_NOT_LOCKED_FOR_WRITE
ALTER TABLE t1 SECONDARY_UNLOAD;
LOCK TABLES t1 WRITE;
ALTER TABLE t1 SECONDARY_LOAD;
ALTER TABLE t1 SECONDARY_UNLOAD;
UNLOCK TABLES;
ALTER TABLE t1 SECONDARY_LOAD;
ALTER TABLE t1 SECONDARY_UNLOAD;
DROP TABLE t1;
--echo #
--echo # Bug#28835066: Table not unloaded with SECONDARY_ENGINE = NULL
--echo #
CREATE TABLE t1 (a INT) SECONDARY_ENGINE MOCK;
ALTER TABLE t1 SECONDARY_LOAD;
ALTER TABLE t1 SECONDARY_ENGINE NULL;
ALTER TABLE t1 SECONDARY_ENGINE MOCK;
FLUSH STATUS;
SELECT * FROM t1;
SHOW SESSION STATUS LIKE 'Secondary_engine_execution_count';
DROP TABLE t1;
--echo #
--echo # Exclude some columns from secondary engine.
--echo #
CREATE TABLE t1 (
a INT,
b INT NOT SECONDARY,
c INT,
d INT NOT SECONDARY
) SECONDARY_ENGINE MOCK;
ALTER TABLE t1 SECONDARY_LOAD;
DROP TABLE t1;
--echo #
--echo # Attempt to exclude all columns from secondary engine.
--echo #
CREATE TABLE t1 (a INT NOT SECONDARY, b INT NOT SECONDARY) SECONDARY_ENGINE MOCK;
CREATE TABLE t2 (a INT NOT SECONDARY, KEY i ((a < 10))) SECONDARY_ENGINE MOCK;
--error ER_SECONDARY_ENGINE
ALTER TABLE t1 SECONDARY_LOAD;
--error ER_SECONDARY_ENGINE
ALTER TABLE t2 SECONDARY_LOAD;
DROP TABLE t1, t2;
--disable_query_log
UNINSTALL PLUGIN mock;
--enable_query_log