WL#5563: MTS: Prototype for Slave parallelized by db name

Affects: Server-Prototype Only   —   Status: Complete

OBJECTIVE
---------

To deliver a prototype implementation of Slave executing events in
parallel with specifics of the events logical partitioning per
database.
To demonstrate improved performance.
The work is a necessary part of WL#5569.

FEATURES
--------

a. full support for Query_log_event and Rows_log_event
b. no commit coordination between transactions belonging to different databases
c. no limits to the engine type
d. a transaction does not touch more than one database (a conceptual limitation
   of the parent WL);

Technical limitations
---------------------

The prototype simplifies few routines that will be addressed in the production
WL.

a. recovery after crash is even less "supported" as it is currently w/o WL#2775;
b. show-slave-status to display last executed positions will be inaccurate -
optimistic -
   may not always (eventually yes) correspond to the low-water-mark;
c. error handling will be simplified in not to have retries for
   temporary failing transactions;
d. event skipping via sql_slave_skip_counter won't work;
e. static number of workers in the worker pool;
f. temporary tables are not supported in the query log event;
g. no fall-back to the sequential applying if some conflict (like temp table)
   is discovered.
h. neither transaction nor DDL can modify more than one db;


Architecture description
------------------------

Can be found in WL#5569.