https://dev.mysql.com/doc/internals/en/algorithms.html
https://dev.mysql.com/doc/internals/en/select-structure.html
/**
MySQL standard memory allocator class. You have to inherit the class
in order to use it.
*/
class Sql_alloc

/// Owner of a QEP_shared; parent of JOIN_TAB and QEP_TAB.
class QEP_shared_owner

/**
Query optimization plan node.

Specifies:

  • a table access operation on the table specified by this node, and

  • a join between the result of the set of previous plan nodes and
    this plan node.
    */
    class JOIN_TAB : public Sql_alloc, public QEP_shared_owner

/**
Base class for parse tree nodes
*/
class Parse_tree_node

class Item : public Parse_tree_node

class QEP_TAB : public Sql_alloc, public QEP_shared_owner

/**
@class THD
For each client connection we create a separate thread with THD serving as
a thread/connection descriptor
*/

class THD :public MDL_context_owner,
public Query_arena,
public Open_tables_state
/**
Class that holds information about tables which were opened and locked
by the thread. It is also used to save/restore this information in
push_open_tables_state()/pop_open_tables_state().
*/

class Open_tables_state