MySQL 9.1.0
Source Code Documentation
relational_expression.h File Reference
#include <stdint.h>
#include <type_traits>
#include "sql/item.h"
#include "sql/join_optimizer/bit_utils.h"
#include "sql/join_optimizer/estimate_selectivity.h"
#include "sql/join_optimizer/node_map.h"
#include "sql/join_optimizer/overflow_bitset.h"
#include "sql/join_type.h"
#include "sql/mem_root_array.h"
#include "sql/nested_join.h"
#include "sql/sql_class.h"

Go to the source code of this file.

Classes

struct  CachedPropertiesForPredicate
 
struct  ConflictRule
 
class  CompanionSet
 RelationalExpression objects in the same companion set are those that are inner-joined against each other; we use this to see in what parts of the graph we allow cycles. More...
 
struct  CompanionSet::EqualTerm
 This represents equality between a set of fields, i.e. More...
 
struct  RelationalExpression
 Represents an expression tree in the relational algebra of joins. More...
 
class  CompanionSetCollection
 The collection of CompanionSet objects for a given JoinHypergraph. More...
 

Functions

bool PassesConflictRules (hypergraph::NodeMap joined_tables, const RelationalExpression *expr)
 
bool OperatorIsCommutative (const RelationalExpression &expr)
 
template<class Func >
requires std::is_invocable_v<Func, RelationalExpression *>
void ForEachJoinOperator (RelationalExpression *expr, Func &&func)
 
template<class Func >
void ForEachOperator (RelationalExpression *expr, Func &&func)
 

Function Documentation

◆ ForEachJoinOperator()

template<class Func >
requires std::is_invocable_v<Func, RelationalExpression *>
void ForEachJoinOperator ( RelationalExpression expr,
Func &&  func 
)

◆ ForEachOperator()

template<class Func >
void ForEachOperator ( RelationalExpression expr,
Func &&  func 
)

◆ OperatorIsCommutative()

bool OperatorIsCommutative ( const RelationalExpression expr)
inline

◆ PassesConflictRules()

bool PassesConflictRules ( hypergraph::NodeMap  joined_tables,
const RelationalExpression expr 
)
inline