polardbxengine/mysql-test/suite/clone/t/error_ddl_lock.test

123 lines
4.2 KiB
Plaintext

# Test clone error with concurrent DDL
--source include/have_debug_sync.inc
--source include/count_sessions.inc
connect (con1,localhost,root,,);
--echo # In connection CON1
--let $CLONE_DATADIR = $MYSQL_TMP_DIR/data_new
--let $CLONE_DATADIR2 = $MYSQL_TMP_DIR/data_new2
--let $MYSQLD_DATADIR= `select @@datadir;`
--replace_result $CLONE_PLUGIN CLONE_PLUGIN
--eval INSTALL PLUGIN clone SONAME '$CLONE_PLUGIN'
SHOW VARIABLES LIKE 'clone_ddl_timeout';
--echo # Set backup lock timeout to 1 sec
SET GLOBAL clone_ddl_timeout = 1;
SHOW VARIABLES LIKE 'clone_ddl_timeout';
SHOW VARIABLES LIKE "lock_wait_timeout";
connection default;
--echo # In connection DEFAULT
--echo # 1A. Clone while CREATE TABLE in progress
--let $ddl_text = CREATE TABLE t1 (col1 INT PRIMARY KEY)
--source ../include/ddl_lock_clone_wait.inc
SHOW CREATE TABLE t1;
--echo # 1B. CREATE TABLE while clone in progress
--let $ddl_text = CREATE TABLE t2 (col1 INT PRIMARY KEY)
--source ../include/ddl_lock_ddl_wait.inc
--echo # 2A. Clone while ALTER TABLE ADD COLUMN [COPY] in progress
INSERT INTO t1 values(10), (20), (30);
SELECT * FROM t1 ORDER BY col1;
--let $ddl_text = ALTER TABLE t1 ADD COLUMN col2 int, ALGORITHM=COPY
--source ../include/ddl_lock_clone_wait.inc
SHOW CREATE TABLE t1;
SELECT * FROM t1 ORDER BY col1;
UPDATE t1 SET col2 = col1 + 1000;
--echo # 2B. ALTER TABLE ADD COLUMN [COPY] while clone in progress
--let $ddl_text = ALTER TABLE t1 ADD COLUMN col3 int, ALGORITHM=COPY
--source ../include/ddl_lock_ddl_wait.inc
--echo # 2C. Clone while ALTER TABLE ADD COLUMN [INPLACE] in progress
SELECT * FROM t1 ORDER BY col1;
--let $ddl_text = ALTER TABLE t1 ADD COLUMN col3 int, ALGORITHM=INPLACE
--source ../include/ddl_lock_clone_wait.inc
SHOW CREATE TABLE t1;
SELECT * FROM t1 ORDER BY col1;
UPDATE t1 SET col3 = col2 + 1000;
--echo # 2D. ALTER TABLE ADD COLUMN [INPLACE] while clone in progress
--let $ddl_text = ALTER TABLE t1 ADD COLUMN col4 int, ALGORITHM=INPLACE
--source ../include/ddl_lock_ddl_wait.inc
--echo # 3A. Clone while ADD INDEX [COPY] in progress
SHOW CREATE TABLE t1;
--let $ddl_text = ALTER TABLE t1 ADD INDEX col2_idx(col2), ALGORITHM=COPY
--source ../include/ddl_lock_clone_wait.inc
SHOW CREATE TABLE t1;
--echo # 3B. ADD INDEX [COPY] while clone in progress
--let $ddl_text = ALTER TABLE t1 ADD INDEX col3_idx(col3), ALGORITHM=COPY
--source ../include/ddl_lock_ddl_wait.inc
--echo # 3C. Clone while ADD INDEX [INPLACE] in progress
SHOW CREATE TABLE t1;
--let $ddl_text = ALTER TABLE t1 ADD INDEX col3_idx(col3), ALGORITHM=INPLACE
--source ../include/ddl_lock_clone_wait.inc
SHOW CREATE TABLE t1;
--echo # 3D. ADD INDEX [INPLACE] while clone in progress
--let $ddl_text = ALTER TABLE t1 ADD INDEX col1_idx(col1), ALGORITHM=COPY
--source ../include/ddl_lock_ddl_wait.inc
--echo # 4A. DROP INDEX [COPY] while clone in progress
--let $ddl_text = ALTER TABLE t1 DROP INDEX col3_idx, ALGORITHM=COPY
--source ../include/ddl_lock_ddl_wait.inc
--echo # 4B. Clone while DROP INDEX [COPY] in progress
SHOW CREATE TABLE t1;
--let $ddl_text = ALTER TABLE t1 DROP INDEX col3_idx, ALGORITHM=COPY
--source ../include/ddl_lock_clone_wait.inc
SHOW CREATE TABLE t1;
--echo # 4C. DROP INDEX [INPLACE] while clone in progress
--let $ddl_text = ALTER TABLE t1 DROP INDEX col2_idx, ALGORITHM=INPLACE
--source ../include/ddl_lock_ddl_wait.inc
--echo # 4D. Clone while DROP INDEX [INPLACE] in progress
SHOW CREATE TABLE t1;
--let $ddl_text = ALTER TABLE t1 DROP INDEX col2_idx, ALGORITHM=INPLACE
--source ../include/ddl_lock_clone_wait.inc
SHOW CREATE TABLE t1;
--echo # 5A. TRUNCATE TABLE while clone in progress
--let $ddl_text = TRUNCATE TABLE t1
--source ../include/ddl_lock_ddl_wait.inc
--echo # 5B. Clone while TRUNCATE TABLE in progress
SELECT * FROM t1 ORDER BY col1;
--let $ddl_text = TRUNCATE TABLE t1
--source ../include/ddl_lock_clone_wait.inc
SELECT * FROM t1 ORDER BY col1;
--echo # 6A. DROP TABLE while clone in progress
--let $ddl_text = DROP TABLE t1
--source ../include/ddl_lock_ddl_wait.inc
SHOW CREATE TABLE t1;
--echo # 6B. Clone while DROP TABLE in progress
--let $ddl_text = DROP TABLE t1
--source ../include/ddl_lock_clone_wait.inc
--echo #Cleanup
disconnect con1;
SET DEBUG_SYNC = 'RESET';
UNINSTALL PLUGIN clone;
--source include/wait_until_count_sessions.inc