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 () |
void | save_join_tab () |
void | init_save_join_tab () |
Save the original join layout. More... | |
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) |
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 Attributes | |
optimizer::Position | positions [MAX_TABLES+1] |
optimizer::Position | best_positions [MAX_TABLES+1] |
|
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 308 of file join.h.
Referenced by drizzled::best_extension_by_limited_search(), drizzled::make_join_statistics(), and drizzled::optimize_straight_join().
|
inline |
Definition at line 348 of file join.h.
References positions.
Referenced by drizzled::make_join_statistics().
|
inline |
[in] | index | the index of the position to retrieve |
Definition at line 321 of file join.h.
Referenced by drizzled::get_best_combination(), drizzled::greedy_search(), and drizzled::test_if_skip_sort_order().
|
inline |
[in] | index | the index of the position to retrieve |
Definition at line 331 of file join.h.
Referenced by drizzled::best_extension_by_limited_search(), drizzled::greedy_search(), and drizzled::optimize_straight_join().
|
inline |
[in] | index | the index of the operator to retrieve from the partial query plan |
Definition at line 358 of file join.h.
Referenced by drizzled::make_join_statistics().
|
inline |
[in] | index | the index of the position to set |
[in] | in_pos | the value to set the position to |
Definition at line 340 of file join.h.
Referenced by drizzled::best_access_path(), drizzled::greedy_search(), and drizzled::set_position().
to store all fields that used in query
Definition at line 184 of file join.h.
Referenced by exec(), optimize(), prepare(), reset(), and rollup_init().
|
private |
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 159 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().
Item* drizzled::Join::conds_history |
store WHERE for explain
Definition at line 198 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 153 of file join.h.
Referenced by drizzled::check_interleaving_with_nj(), drizzled::choose_plan(), and drizzled::restore_prev_nj_state().
Table* drizzled::Join::exec_tmp_table1 |
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 137 of file join.h.
Referenced by reset().
hold field list passed to select_query
Definition at line 141 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().
Order* drizzled::Join::group_list |
hold parameters of select_query
Definition at line 196 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().
bool drizzled::Join::group_optimized_away |
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 98 of file join.h.
Referenced by optimize(), and reset().
Item* drizzled::Join::having_history |
Store having for explain
Definition at line 173 of file join.h.
Referenced by reset(), and drizzled::select_query().
Item** drizzled::Join::items0 |
list of joined tables in reverse order
Definition at line 142 of file join.h.
Referenced by drizzled::choose_plan(), optimize(), prepare(), reset(), and drizzled::update_ref_and_keys().
JoinTable* drizzled::Join::join_tab_save |
JoinTable** drizzled::Join::map2table |
mapping between table indexes and JoinTables
Definition at line 54 of file join.h.
Referenced by drizzled::get_best_combination(), drizzled::make_join_statistics(), optimize(), reset(), and drizzled::update_depend_map().
bool drizzled::Join::no_const_tables |
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 89 of file join.h.
Referenced by drizzled::make_join_statistics(), and reset().
bool drizzled::Join::no_order |
Is set only in case if we have a GROUP BY clause and no ORDER BY after constant elimination of 'order'.
Definition at line 111 of file join.h.
Referenced by exec(), optimize(), and reset().
bool drizzled::Join::optimized |
flag to avoid double optimization in EXPLAIN
Definition at line 115 of file join.h.
Referenced by optimize(), prepare(), and reset().
uint32_t drizzled::Join::outer_tables |
|
private |
Contains a partial query execution plan which is extended during cost-based optimization.
Definition at line 43 of file join.h.
Referenced by getFirstPosInPartialPlan().
Item** drizzled::Join::ref_pointer_array |
used pointer reference for this select
Definition at line 202 of file join.h.
Referenced by exec(), prepare(), reset(), rollup_send_data(), and rollup_write_data().
bool drizzled::Join::resume_nested_loop |
true when we want to resume nested loop iterations when fetching data from a cursor
Definition at line 81 of file join.h.
Referenced by reset(), and drizzled::sub_select().
JoinTable* drizzled::Join::return_tab |
used only for outer joins
Definition at line 201 of file join.h.
Referenced by drizzled::evaluate_join_record(), drizzled::evaluate_null_complemented_join_record(), reset(), and drizzled::sub_select().
Rollup drizzled::Join::rollup |
Used with rollup
Definition at line 180 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().
optimizer::SqlSelect* drizzled::Join::select |
created in optimization phase
Definition at line 147 of file join.h.
Referenced by destroy(), optimize(), and reset().
bool drizzled::Join::select_distinct |
Set if SELECT DISTINCT
Definition at line 90 of file join.h.
Referenced by drizzled::add_group_and_distinct_keys(), alloc_func_list(), exec(), Join(), optimize(), and reset().
Select_Lex* drizzled::Join::select_lex |
select that processed
Definition at line 146 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().
bool drizzled::Join::skip_sort_order |
Is set if we have a GROUP BY and we have ORDER BY on a constant.
Definition at line 113 of file join.h.
Referenced by exec(), optimize(), and reset().
Table* drizzled::Join::sort_by_table |
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 64 of file join.h.
Referenced by drizzled::best_access_path(), drizzled::best_extension_by_limited_search(), optimize(), drizzled::optimize_straight_join(), and reset().
Item_sum** drizzled::Join::sum_funcs2 |
uint32_t drizzled::Join::tables |
Number of tables in the join
Definition at line 66 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_statistics(), optimize(), prepare(), drizzled::remove_constants(), reset(), drizzled::sub_select(), drizzled::test_if_skip_sort_order(), and drizzled::update_depend_map().
TableList* drizzled::Join::tables_list |
hold 'tables' parameter of select_query
Definition at line 199 of file join.h.
Referenced by exec(), optimize(), and prepare().
Item* drizzled::Join::tmp_having |
To store having when processed temporary table
Definition at line 172 of file join.h.
Referenced by exec(), optimize(), reset(), and drizzled::select_query().
Join* drizzled::Join::tmp_join |
copy of this Join to be used with temporary tables
Definition at line 179 of file join.h.
Referenced by cleanup(), destroy(), exec(), init_save_join_tab(), reset(), and restore_tmp().
bool drizzled::Join::union_part |
Select_Lex_Unit* drizzled::Join::unit |
unit structure (with global parameters) for this select
Definition at line 144 of file join.h.
Referenced by drizzled::best_access_path(), exec(), optimize(), prepare(), reset(), and drizzled::test_if_skip_sort_order().