WL#5073: Create SQL command classes for transaction statements

Status: In-Progress   —   Priority: Medium

Create classes derived from Sql_cmd that represent all supported 
transaction commands. This is a subtask of WL#5047.

The functionality is partly covered by sp_trans.test, xa.test and 
consistent_snapshot.test. A new test file transactions.test that performs 
comprehensive syntax check of all transactional commands (except XA commands) 
will be added.
1. Classes used to represent transaction commands

These classes will be created as derived from Sql_cmd.

The classes are defined in sql_cmd_transaction.h and implemented in 
sql_cmd_transaction.cc.

1.1 Class Sql_cmd_start

Command: START TRANSACTION and BEGIN

Member: m_options - specification for the new transaction
                    (WITH CONISTENT SNAPSHOT).

1.2 Class Sql_cmd_commit

Command: COMMIT WORK

Member: m_chain - Whether to start new transaction immediately
Member: m_release - Whether to release session after commit

1.3 Class Sql_cmd_rollback

Command: ROLLBACK WORK

Member: m_chain - Whether to start new transaction immediately
Member: m_release - Whether to release session after rollback

1.4 Class Sql_cmd_set_savepoint

Command: SAVEPOINT

Member: m_savepoint - Name of savepoint

1.5 Class Sql_cmd_rollback_savepoint

Command: ROLLBACK SAVEPOINT

Member: m_savepoint - Name of savepoint

1.6 Class Sql_cmd_release_savepoint

Command: RELEASE SAVEPOINT

Member: m_savepoint - Name of savepoint

1.7 Class Sql_cmd_xa_start

Command: XA START and XA BEGIN

Member: m_xid: Reference to XID to start
Member: m_options: Options, whether to JOIN or RESUME

1.8 Class Sql_cmd_xa_end

Command: XA END

Member: m_xid: Reference to XID to end
Member: m_options: Options, whether to SUSPEND

1.9 Class Sql_cmd_xa_prepare

Command: XA PREPARE

Member: m_xid: Reference to XID to prepare

1.10 Class Sql_cmd_xa_commit

Command: XA COMMIT

Member: m_xid: Reference to XID to commit
Member: m_options: Options, whether to commit in one phase

1.11 Class Sql_cmd_xa_rollback

Command: XA ROLLBACK

Member: m_xid: Reference to XID to rollback

1.12 Class Sql_cmd_xa_recover

Command: XA RECOVER

2. Support classes

These are additional classes used by transaction classes.

2.1 Class Xa_options

Wrapper class for enum used to enumerate options specified to XA commands.
No LLD required in this task.