Currently no true LOCK=NONE exists on slave.
Alter table is first committed on master then it is replicated on slaves.
The purpose of this task is to create a true LOCK=NONE
Master will write BEGIN_DDL_EVENT in binlog after it hits ha_prepare_inplace_alter_table.
Then master will write QUERY_EVENT on binlog with actual alter query .
On commit/rollback master will write COMMIT_DDL_EVENT/ROLLBACK_DDL_EVENT.
On slave there will be pool of threads(configurable global variable), which
will apply these DDLs. On reciving BEGIN_DDL_EVENT slave thread will pass the
QUERY_EVENT to one of the worker thread. Worker thread will execute untill
ha_inplace_alter_table. Actual commit_inplace_alter will be called by sql thread.
If sql thread recieve some kind of rollback event , then it will somehow signal
worker thread to stop executing alter. If none of the worker threads are avaliable
then event will be enqueued, then If we recieved rollback event the we will simply
discard event from queue, If we recieved commit event then SQL thread will syncrolysly
process DDL event.