MySQL 8.4.2
Source Code Documentation
|
The collection of CompanionSet objects for a given JoinHypergraph. More...
#include <relational_expression.h>
Public Member Functions | |
CompanionSetCollection (THD *thd, struct RelationalExpression *root) | |
CompanionSetCollection (const CompanionSetCollection &)=delete | |
No copying. More... | |
CompanionSetCollection & | operator= (const CompanionSetCollection &)=delete |
CompanionSet * | Find (table_map tables) |
const CompanionSet * | Find (table_map tables) const |
std::string | ToString () const |
For trace and debugging. More... | |
Private Member Functions | |
void | Compute (THD *thd, RelationalExpression *expr, CompanionSet *current_set) |
Compute the CompanionSet of 'expr' and all of its descendants. More... | |
CompanionSet * | FindInternal (table_map tables) const |
For a given set of tables, find the CompanionSet they are part of Returns nullptr if the tables are in different (i.e., incompatible) CompanionSet instances. More... | |
Private Attributes | |
std::array< CompanionSet *, MAX_TABLES > | m_table_num_to_companion_set {nullptr} |
A mapping from table number to CompanionSet. More... | |
The collection of CompanionSet objects for a given JoinHypergraph.
|
inline |
|
delete |
No copying.
|
private |
Compute the CompanionSet of 'expr' and all of its descendants.
thd | The current thread. |
expr | Compute CompanionSet of this and all of its descendants. |
current_set | The CompanionSet to which 'expr' will belong, or nullptr if 'expr' is the root of a new set. |
|
inline |
|
inline |
|
private |
For a given set of tables, find the CompanionSet they are part of Returns nullptr if the tables are in different (i.e., incompatible) CompanionSet instances.
If so, a condition using this set of tables can not induce a new (cycle) edge in the hypergraph, as there are non-inner joins in the way.
|
delete |
std::string CompanionSetCollection::ToString | ( | ) | const |
For trace and debugging.
|
private |
A mapping from table number to CompanionSet.