24#ifndef SQL_NESTED_JOIN_INCLUDED
25#define SQL_NESTED_JOIN_INCLUDED
Used to store optimizer cost estimates.
Definition: handler.h:3877
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:930
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:111
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
uint64_t table_map
Definition: my_table_map.h:30
thread_local MEM_ROOT ** THR_MALLOC
Definition: mysqld.cc:1569
ulonglong nested_join_map
Definition: nested_join.h:37
Common types of the Optimizer, used by optimization and execution.
int plan_idx
This represents the index of a JOIN_TAB/QEP_TAB in an array.
Definition: sql_opt_exec_shared.h:54
Struct NESTED_JOIN is used to represent how tables are connected through outer join operations and se...
Definition: nested_join.h:78
mem_root_deque< Item * > sj_inner_exprs
Definition: nested_join.h:142
mem_root_deque< Table_ref * > m_tables
list of tables referenced in the nested join
Definition: nested_join.h:85
uint sj_enabled_strategies
Bitmap of which strategies are enabled for this semi-join nest.
Definition: nested_join.h:136
Semijoin_mat_optimize sjm
Definition: nested_join.h:143
bool natural_join_processed
Set to true when natural join or using information has been processed.
Definition: nested_join.h:96
nested_join_map nj_map
Bit identifying this nested join.
Definition: nested_join.h:116
table_map sj_corr_tables
Outer non-trivially correlated tables, a true subset of sj_depends_on.
Definition: nested_join.h:129
table_map used_tables
Definition: nested_join.h:86
uint nj_total
Number of tables and outer join nests administered by this nested join object for the sake of cost an...
Definition: nested_join.h:103
uint query_block_id
Query block id if this struct is generated from a subquery transform.
Definition: nested_join.h:133
NESTED_JOIN()
Definition: nested_join.h:79
table_map sj_depends_on
Tables outside the semi-join that are used within the semi-join's ON condition (ie.
Definition: nested_join.h:123
table_map not_null_tables
Definition: nested_join.h:87
uint nj_counter
Used to count tables in the nested join in 2 isolated places:
Definition: nested_join.h:111
plan_idx first_nested
Used for pointing out the first table in the plan being covered by this join nest.
Definition: nested_join.h:92
mem_root_deque< Item * > sj_outer_exprs
Definition: nested_join.h:142
A position of table within a join order.
Definition: sql_select.h:355
Semijoin_mat_optimize collects data used when calculating the cost of executing a semijoin operation ...
Definition: nested_join.h:51
bool scan_allowed
True if data types allow the MaterializeScan semijoin strategy.
Definition: nested_join.h:57
bool lookup_allowed
True if data types allow the MaterializeLookup semijoin strategy.
Definition: nested_join.h:55
POSITION * positions
Optimal join order calculated for inner tables of this semijoin op.
Definition: nested_join.h:53
double expected_rowcount
Expected number of rows in the materialized table.
Definition: nested_join.h:59
Cost_estimate materialization_cost
Materialization cost - execute sub-join and write rows to temp.table.
Definition: nested_join.h:61
Cost_estimate lookup_cost
Cost to make one lookup in the temptable.
Definition: nested_join.h:63
Cost_estimate scan_cost
Cost of scanning the materialized table.
Definition: nested_join.h:65
Item_field ** mat_fields
Array of pointers to fields in the materialized table.
Definition: nested_join.h:67