Comment 6 for bug 1265656

Revision history for this message
Raghavendra D Prabhu (raghavendra-prabhu) wrote :

Rather than galera this should be fixed in mysqld for following
reasons:

a) Only the connection/thread which issued FTWRL should be prevented from
issuing other DDL/DML and not other threads. I am not sure if
Galera can make that distinction.

b) To conform to vanilla mysql behavior:

MySQL [test]> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

MySQL [test]> CREATE TABLE IF NOT EXISTS test.mytest (a INT) ENGINE=INNODB;
ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lock

So, I have fixed this in wsrep_to_isolation_begin.

After the fix:

MySQL [test]> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

MySQL [test]> CREATE TABLE IF NOT EXISTS test.mytest (a INT) ENGINE=INNODB;
ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lock
MySQL [test]> unlock tables;
Query OK, 0 rows affected (0.00 sec)