24#ifndef SQL_JOIN_OPTIMIZER_RELATIONAL_EXPRESSION_H
25#define SQL_JOIN_OPTIMIZER_RELATIONAL_EXPRESSION_H
bool IsSubset(uint64_t x, uint64_t y)
Definition: bit_utils.h:229
bool Overlaps(uint64_t x, uint64_t y)
Definition: bit_utils.h:237
Base class for the equality comparison operators = and <=>.
Definition: item_cmpfunc.h:983
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:426
Definition: overflow_bitset.h:77
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:34
static MEM_ROOT mem_root
Definition: client_plugin.cc:110
uint64_t table_map
Definition: my_table_map.h:30
uint64_t NodeMap
Since our graphs can never have more than 61 tables, node sets and edge lists are implemented using 6...
Definition: node_map.h:40
OverflowBitset is a fixed-size (once allocated) bitmap that is optimized for the common case of few e...
void ForEachOperator(RelationalExpression *expr, Func &&func)
Definition: relational_expression.h:210
void ForEachJoinOperator(RelationalExpression *expr, Func &&func)
Definition: relational_expression.h:200
bool PassesConflictRules(hypergraph::NodeMap joined_tables, const RelationalExpression *expr)
Definition: relational_expression.h:179
bool OperatorIsCommutative(const RelationalExpression &expr)
Definition: relational_expression.h:192
Access paths are a query planning structure that correspond 1:1 to iterators, in that an access path ...
Definition: access_path.h:193
Definition: relational_expression.h:43
double selectivity
Definition: relational_expression.h:45
Mem_root_array< ContainedSubquery > contained_subqueries
Definition: relational_expression.h:44
OverflowBitset redundant_against_sargable_predicates
Definition: relational_expression.h:53
Definition: relational_expression.h:61
hypergraph::NodeMap required_nodes
Definition: relational_expression.h:63
hypergraph::NodeMap needed_to_activate_rule
Definition: relational_expression.h:62
Represents an expression tree in the relational algebra of joins.
Definition: relational_expression.h:81
int join_predicate_last
Definition: relational_expression.h:169
Mem_root_array< CachedPropertiesForPredicate > properties_for_equijoin_conditions
Definition: relational_expression.h:157
Mem_root_array< Item_eq_base * > equijoin_conditions
Definition: relational_expression.h:144
int join_predicate_first
Definition: relational_expression.h:169
Mem_root_array< ConflictRule > conflict_rules
Definition: relational_expression.h:174
enum RelationalExpression::Type type
RelationalExpression(THD *thd)
Definition: relational_expression.h:82
table_map tables_in_subtree
Definition: relational_expression.h:116
const Table_ref * table
Definition: relational_expression.h:124
hypergraph::NodeMap nodes_in_subtree
Definition: relational_expression.h:121
Mem_root_array< RelationalExpression * > multi_children
Definition: relational_expression.h:142
Mem_root_array< Item * > join_conditions_pushable_to_this
Definition: relational_expression.h:125
table_map conditions_used_tables
Definition: relational_expression.h:162
Mem_root_array< Item * > join_conditions
Definition: relational_expression.h:143
Type
Definition: relational_expression.h:89
@ SEMIJOIN
Definition: relational_expression.h:92
@ MULTI_INNER_JOIN
Definition: relational_expression.h:112
@ STRAIGHT_INNER_JOIN
Definition: relational_expression.h:98
@ ANTIJOIN
Definition: relational_expression.h:93
@ INNER_JOIN
Definition: relational_expression.h:90
@ FULL_OUTER_JOIN
Definition: relational_expression.h:105
@ TABLE
Definition: relational_expression.h:114
@ LEFT_JOIN
Definition: relational_expression.h:91
bool join_conditions_reject_all_rows
Definition: relational_expression.h:161
Mem_root_array< CachedPropertiesForPredicate > properties_for_join_conditions
Definition: relational_expression.h:155
RelationalExpression * left
Definition: relational_expression.h:140
RelationalExpression * right
Definition: relational_expression.h:140
int companion_set
Definition: relational_expression.h:135