--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