MySQL 8.0.40
Source Code Documentation
|
Represents an expression tree in the relational algebra of joins. More...
#include <relational_expression.h>
Public Types | |
enum | Type { INNER_JOIN = static_cast<int>(JoinType::INNER) , LEFT_JOIN = static_cast<int>(JoinType::OUTER) , SEMIJOIN = static_cast<int>(JoinType::SEMI) , ANTIJOIN = static_cast<int>(JoinType::ANTI) , STRAIGHT_INNER_JOIN = 101 , FULL_OUTER_JOIN = static_cast<int>(JoinType::FULL_OUTER) , MULTI_INNER_JOIN = 102 , TABLE = 100 } |
Public Member Functions | |
RelationalExpression (THD *thd) | |
Represents an expression tree in the relational algebra of joins.
Expressions are either tables, or joins of two expressions. (Joins can have join conditions, but more general filters are not represented in this structure.)
These are used as an abstract precursor to the join hypergraph; they represent the joins in the query block more or less directly, without any reordering. (The parser should largely have output a structure like this instead of Table_ref, but we are not there yet.) The only real manipulation we do on them is pushing down conditions, identifying equijoin conditions from other join conditions, and identifying join conditions that touch given tables (also a form of pushdown).
|
inlineexplicit |
int RelationalExpression::companion_set {-1} |
table_map RelationalExpression::conditions_used_tables {0} |
Mem_root_array<ConflictRule> RelationalExpression::conflict_rules |
Mem_root_array<Item_eq_base *> RelationalExpression::equijoin_conditions |
Mem_root_array<Item *> RelationalExpression::join_conditions |
Mem_root_array<Item *> RelationalExpression::join_conditions_pushable_to_this |
bool RelationalExpression::join_conditions_reject_all_rows {false} |
int RelationalExpression::join_predicate_first {0} |
int RelationalExpression::join_predicate_last {0} |
RelationalExpression* RelationalExpression::left |
Mem_root_array<RelationalExpression *> RelationalExpression::multi_children |
hypergraph::NodeMap RelationalExpression::nodes_in_subtree |
Mem_root_array<CachedPropertiesForPredicate> RelationalExpression::properties_for_equijoin_conditions |
Mem_root_array<CachedPropertiesForPredicate> RelationalExpression::properties_for_join_conditions |
RelationalExpression * RelationalExpression::right |
const Table_ref* RelationalExpression::table |
table_map RelationalExpression::tables_in_subtree |
enum RelationalExpression::Type RelationalExpression::type |