# # Test that applying a DDL plays well with FLUSH TABLE table_name WITH READ LOCK. The applier # thread should block until UNLOCK TABLEs. # --source include/galera_cluster.inc --source include/have_innodb.inc --connection node_1 SET SESSION wsrep_sync_wait = 0; # Those values are valid only for connection node_1. The global values from the -master.opt file apply to applier threads. SET SESSION lock_wait_timeout = 60; SET SESSION innodb_lock_wait_timeout=60; SET SESSION wait_timeout=60; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; FLUSH TABLE t1 WITH READ LOCK; --connection node_2 --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1' --source include/wait_condition.inc ALTER TABLE t1 ADD COLUMN f2 INTEGER; --connection node_1 SELECT 1 FROM DUAL; # Wait --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE = 'Waiting for table metadata lock'; --source include/wait_condition.inc SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE = 'Waiting for table metadata lock'; UNLOCK TABLES; SET SESSION wsrep_sync_wait = 15; SHOW CREATE TABLE t1; SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE = 'Waiting for table metadata lock'; DROP TABLE t1;