Public Member Functions | |
Join (Session *session_arg, List< Item > &fields_arg, uint64_t select_options_arg, select_result *result_arg) | |
void | reset (Session *session_arg, List< Item > &fields_arg, uint64_t select_options_arg, select_result *result_arg) |
int | prepare (Item ***rref_pointer_array, TableList *tables, uint32_t wind_num, COND *conds, uint32_t og_num, Order *order, Order *group, Item *having, Select_Lex *select, Select_Lex_Unit *unit) |
int | optimize () |
int | reinit () |
void | exec () |
int | destroy () |
void | restore_tmp () |
bool | alloc_func_list () |
bool | setup_subquery_materialization () |
bool | make_sum_func_list (List< Item > &all_fields, List< Item > &send_fields, bool before_group_by, bool recompute=false) |
void | set_items_ref_array (Item **ptr) |
void | init_items_ref_array () |
bool | rollup_init () |
bool | rollup_make_fields (List< Item > &all_fields, List< Item > &fields, Item_sum ***func) |
int | rollup_send_data (uint32_t idx) |
int | rollup_write_data (uint32_t idx, Table *table) |
void | remove_subq_pushed_predicates (Item **where) |
void | join_free () |
void | cleanup (bool full) |
void | clear () |
bool | save_join_tab () |
bool | init_save_join_tab () |
Save the original join layout. | |
bool | send_row_on_empty_set () |
bool | change_result (select_result *result) |
bool | is_top_level_join () const |
void | copyPartialPlanIntoOptimalPlan (uint32_t size) |
void | cache_const_exprs () |
optimizer::Position & | getPosFromOptimalPlan (uint32_t index) |
optimizer::Position & | getPosFromPartialPlan (uint32_t index) |
void | setPosInPartialPlan (uint32_t index, optimizer::Position &in_pos) |
optimizer::Position * | getFirstPosInPartialPlan () |
optimizer::Position * | getSpecificPosInPartialPlan (int32_t index) |
Static Public Member Functions | |
static void * | operator new (size_t size) |
static void * | operator new (size_t size, Root *mem_root) |
static void * | operator new[] (size_t size) |
static void * | operator new[] (size_t size, Root *mem_root) |
static void | operator delete (void *, size_t) |
static void | operator delete (void *, Root *) |
static void | operator delete[] (void *, Root *) |
static void | operator delete[] (void *, size_t) |
Public Attributes | |
JoinTable * | join_tab |
JoinTable ** | best_ref |
JoinTable ** | map2table |
JoinTable * | join_tab_save |
Table ** | table |
Table ** | all_tables |
Table * | sort_by_table |
uint32_t | tables |
uint32_t | outer_tables |
uint32_t | const_tables |
uint32_t | send_group_parts |
bool | sort_and_group |
bool | first_record |
bool | full_join |
bool | group |
bool | no_field_update |
bool | do_send_rows |
bool | resume_nested_loop |
bool | no_const_tables |
bool | select_distinct |
bool | group_optimized_away |
bool | simple_order |
bool | simple_group |
bool | no_order |
bool | skip_sort_order |
bool | union_part |
bool | optimized |
bool | need_tmp |
bool | hidden_group_fields |
table_map | const_table_map |
table_map | found_const_table_map |
table_map | outer_join |
ha_rows | send_records |
ha_rows | found_records |
ha_rows | examined_rows |
ha_rows | row_limit |
ha_rows | select_limit |
ha_rows | fetch_limit |
Session * | session |
List< Item > * | fields |
List< Item > & | fields_list |
List< TableList > * | join_list |
Select_Lex_Unit * | unit |
Select_Lex * | select_lex |
optimizer::SqlSelect * | select |
std::bitset< 64 > | cur_embedding_map |
double | best_read |
List< Cached_item > | group_fields |
List< Cached_item > | group_fields_cache |
Table * | tmp_table |
Table * | exec_tmp_table1 |
Table * | exec_tmp_table2 |
Item_sum ** | sum_funcs |
Item_sum *** | sum_funcs_end |
Item_sum ** | sum_funcs2 |
Item_sum *** | sum_funcs_end2 |
Item * | having |
Item * | tmp_having |
Item * | having_history |
uint64_t | select_options |
select_result * | result |
Tmp_Table_Param | tmp_table_param |
DrizzleLock * | lock |
Join * | tmp_join |
Rollup | rollup |
DYNAMIC_ARRAY | keyuse |
Item::cond_result | cond_value |
Item::cond_result | having_value |
List< Item > | all_fields |
List< Item > | tmp_all_fields1 |
List< Item > | tmp_all_fields2 |
List< Item > | tmp_all_fields3 |
List< Item > | tmp_fields_list1 |
List< Item > | tmp_fields_list2 |
List< Item > | tmp_fields_list3 |
int | error |
Order * | order |
Order * | group_list |
COND * | conds |
Item * | conds_history |
TableList * | tables_list |
COND_EQUAL * | cond_equal |
JoinTable * | return_tab |
Item ** | ref_pointer_array |
Item ** | items0 |
Item ** | items1 |
Item ** | items2 |
Item ** | items3 |
Item ** | current_ref_pointer_array |
uint32_t | ref_pointer_array_size |
size of above in bytes | |
const char * | zero_result_cause |
not 0 if exec must return zero result | |
SortField * | sortorder |
Table ** | table_reexec |
JoinTable * | join_tab_reexec |
Private Member Functions | |
Join (const Join &rhs) | |
Join & | operator= (const Join &rhs) |
Private Attributes | |
optimizer::Position | positions [MAX_TABLES+1] |
optimizer::Position | best_positions [MAX_TABLES+1] |
drizzled::Join::Join | ( | const Join & | rhs | ) | [private] |
not implemented
void drizzled::Join::copyPartialPlanIntoOptimalPlan | ( | uint32_t | size | ) | [inline] |
Copy the partial query plan into the optimal query plan.
[in] | size | the size of the plan which is to be copied |
Definition at line 316 of file join.h.
References best_positions, and positions.
Referenced by drizzled::best_extension_by_limited_search(), drizzled::make_join_statistics(), and drizzled::optimize_straight_join().
optimizer::Position* drizzled::Join::getFirstPosInPartialPlan | ( | ) | [inline] |
Definition at line 356 of file join.h.
References positions.
Referenced by drizzled::make_join_statistics().
optimizer::Position& drizzled::Join::getPosFromOptimalPlan | ( | uint32_t | index | ) | [inline] |
[in] | index | the index of the position to retrieve |
Definition at line 329 of file join.h.
References best_positions.
Referenced by drizzled::get_best_combination(), drizzled::greedy_search(), and drizzled::test_if_skip_sort_order().
optimizer::Position& drizzled::Join::getPosFromPartialPlan | ( | uint32_t | index | ) | [inline] |
[in] | index | the index of the position to retrieve |
Definition at line 339 of file join.h.
References positions.
Referenced by drizzled::best_extension_by_limited_search(), drizzled::greedy_search(), and drizzled::optimize_straight_join().
optimizer::Position* drizzled::Join::getSpecificPosInPartialPlan | ( | int32_t | index | ) | [inline] |
[in] | index | the index of the operator to retrieve from the partial query plan |
Definition at line 366 of file join.h.
References positions.
Referenced by drizzled::make_join_statistics().
void drizzled::Join::setPosInPartialPlan | ( | uint32_t | index, |
optimizer::Position & | in_pos | ||
) | [inline] |
[in] | index | the index of the position to set |
[in] | in_pos | the value to set the position to |
Definition at line 348 of file join.h.
References positions.
Referenced by drizzled::best_access_path(), drizzled::greedy_search(), and drizzled::set_position().
to store all fields that used in query
Definition at line 192 of file join.h.
Referenced by exec(), optimize(), prepare(), reset(), and rollup_init().
optimizer::Position drizzled::Join::best_positions[MAX_TABLES+1] [private] |
Contains the optimal query execution plan after cost-based optimization has taken place.
Definition at line 57 of file join.h.
Referenced by copyPartialPlanIntoOptimalPlan(), and getPosFromOptimalPlan().
double drizzled::Join::best_read |
The cost for the final query execution plan chosen after optimization has completed. The QEP is stored in the best_positions variable.
Definition at line 167 of file join.h.
Referenced by drizzled::best_extension_by_limited_search(), drizzled::choose_plan(), drizzled::greedy_search(), drizzled::make_join_statistics(), optimize(), and drizzled::optimize_straight_join().
store WHERE for explain
Definition at line 206 of file join.h.
Referenced by drizzled::select_query().
std::bitset<64> drizzled::Join::cur_embedding_map |
Bitmap of nested joins embedding the position at the end of the current partial join (valid only during join optimizer run).
Definition at line 161 of file join.h.
Referenced by drizzled::check_interleaving_with_nj(), drizzled::choose_plan(), and drizzled::restore_prev_nj_state().
ha_rows drizzled::Join::fetch_limit |
Used to fetch no more than given amount of rows per one fetch operation of server side cursor. The value is checked in end_send and end_send_group in fashion, similar to offset_limit_cnt:
Definition at line 145 of file join.h.
Referenced by reset().
hold field list passed to select_query
Definition at line 149 of file join.h.
Referenced by drizzled::add_group_and_distinct_keys(), alloc_func_list(), change_result(), exec(), Join(), optimize(), prepare(), reset(), and rollup_init().
hold parameters of select_query
Definition at line 204 of file join.h.
Referenced by drizzled::add_group_and_distinct_keys(), exec(), drizzled::make_group_fields(), optimize(), prepare(), rollup_init(), rollup_make_fields(), and drizzled::test_if_skip_sort_order().
If we have the GROUP BY statement in the query, but the group_list was emptied by optimizer, this flag is true. It happens when fields in the GROUP BY are from constant table
Definition at line 106 of file join.h.
Referenced by optimize(), and reset().
Store having for explain
Definition at line 181 of file join.h.
Referenced by reset(), and drizzled::select_query().
list of joined tables in reverse order
Definition at line 150 of file join.h.
Referenced by drizzled::choose_plan(), optimize(), prepare(), reset(), and drizzled::update_ref_and_keys().
mapping between table indexes and JoinTables
Definition at line 62 of file join.h.
Referenced by drizzled::get_best_combination(), drizzled::make_join_statistics(), optimize(), reset(), and drizzled::update_depend_map().
true <=> optimizer must not mark any table as a constant table. This is needed for subqueries in form "a IN (SELECT .. UNION SELECT ..): when we optimize the select that reads the results of the union from a temporary table, we must not mark the temp. table as constant because the number of rows in it may vary from one subquery execution to another.
Definition at line 97 of file join.h.
Referenced by drizzled::make_join_statistics(), and reset().
Is set only in case if we have a GROUP BY clause and no ORDER BY after constant elimination of 'order'.
Definition at line 119 of file join.h.
Referenced by exec(), optimize(), and reset().
flag to avoid double optimization in EXPLAIN
Definition at line 123 of file join.h.
Referenced by optimize(), prepare(), and reset().
uint32_t drizzled::Join::outer_tables |
optimizer::Position drizzled::Join::positions[MAX_TABLES+1] [private] |
Contains a partial query execution plan which is extended during cost-based optimization.
Definition at line 51 of file join.h.
Referenced by copyPartialPlanIntoOptimalPlan(), getFirstPosInPartialPlan(), getPosFromPartialPlan(), getSpecificPosInPartialPlan(), and setPosInPartialPlan().
used pointer reference for this select
Definition at line 210 of file join.h.
Referenced by exec(), prepare(), reset(), rollup_send_data(), and rollup_write_data().
true when we want to resume nested loop iterations when fetching data from a cursor
Definition at line 89 of file join.h.
Referenced by reset(), and drizzled::sub_select().
used only for outer joins
Definition at line 209 of file join.h.
Referenced by drizzled::evaluate_join_record(), drizzled::evaluate_null_complemented_join_record(), reset(), and drizzled::sub_select().
Used with rollup
Definition at line 188 of file join.h.
Referenced by alloc_func_list(), Join(), make_sum_func_list(), optimize(), reset(), rollup_init(), rollup_make_fields(), rollup_send_data(), and rollup_write_data().
created in optimization phase
Definition at line 155 of file join.h.
Referenced by destroy(), optimize(), and reset().
Set if SELECT DISTINCT
Definition at line 98 of file join.h.
Referenced by drizzled::add_group_and_distinct_keys(), alloc_func_list(), exec(), Join(), optimize(), and reset().
select that processed
Definition at line 154 of file join.h.
Referenced by change_result(), destroy(), exec(), join_free(), drizzled::make_join_statistics(), make_sum_func_list(), optimize(), prepare(), reset(), rollup_make_fields(), drizzled::Item_in_subselect::row_value_in_to_exists_transformer(), drizzled::Item_singlerow_subselect::select_transformer(), setup_subquery_materialization(), and drizzled::Item_in_subselect::single_value_in_to_exists_transformer().
Is set if we have a GROUP BY and we have ORDER BY on a constant.
Definition at line 121 of file join.h.
Referenced by exec(), optimize(), and reset().
The table which has an index that allows to produce the requried ordering. A special value of 0x1 means that the ordering will be produced by passing 1st non-const table to filesort(). NULL means no such table exists.
Definition at line 72 of file join.h.
Referenced by drizzled::best_access_path(), drizzled::best_extension_by_limited_search(), optimize(), drizzled::optimize_straight_join(), and reset().
uint32_t drizzled::Join::tables |
Number of tables in the join
Definition at line 74 of file join.h.
Referenced by cache_const_exprs(), drizzled::choose_plan(), cleanup(), destroy(), drizzled::determine_search_depth(), drizzled::do_select(), exec(), drizzled::get_best_combination(), drizzled::Item_in_subselect::init_left_expr_cache(), drizzled::make_join_readinfo(), drizzled::make_join_statistics(), optimize(), prepare(), drizzled::remove_constants(), reset(), drizzled::sub_select(), drizzled::test_if_skip_sort_order(), and drizzled::update_depend_map().
hold 'tables' parameter of select_query
Definition at line 207 of file join.h.
Referenced by exec(), optimize(), and prepare().
To store having when processed temporary table
Definition at line 180 of file join.h.
Referenced by exec(), optimize(), reset(), and drizzled::select_query().
copy of this Join to be used with temporary tables
Definition at line 187 of file join.h.
Referenced by cleanup(), destroy(), exec(), init_save_join_tab(), reset(), and restore_tmp().
unit structure (with global parameters) for this select
Definition at line 152 of file join.h.
Referenced by drizzled::best_access_path(), exec(), optimize(), prepare(), reset(), and drizzled::test_if_skip_sort_order().