Drizzled Public API Documentation

sql_select.cc File Reference

select_query and join optimization More...

#include <config.h>
#include <string>
#include <iostream>
#include <algorithm>
#include <vector>
#include <drizzled/sql_select.h>
#include <drizzled/error.h>
#include <drizzled/gettext.h>
#include <drizzled/util/test.h>
#include <drizzled/name_resolution_context_state.h>
#include <drizzled/nested_join.h>
#include <drizzled/probes.h>
#include <drizzled/show.h>
#include <drizzled/item/cache.h>
#include <drizzled/item/cmpfunc.h>
#include <drizzled/item/copy_string.h>
#include <drizzled/item/uint.h>
#include <drizzled/cached_item.h>
#include <drizzled/sql_base.h>
#include <drizzled/field/blob.h>
#include <drizzled/check_stack_overrun.h>
#include <drizzled/lock.h>
#include <drizzled/item/outer_ref.h>
#include <drizzled/index_hint.h>
#include <drizzled/records.h>
#include <drizzled/internal/iocache.h>
#include <drizzled/drizzled.h>
#include <drizzled/plugin/storage_engine.h>
#include <drizzled/sql_union.h>
#include <drizzled/optimizer/key_field.h>
#include <drizzled/optimizer/position.h>
#include <drizzled/optimizer/sargable_param.h>
#include <drizzled/optimizer/key_use.h>
#include <drizzled/optimizer/range.h>
#include <drizzled/optimizer/quick_range_select.h>
#include <drizzled/optimizer/quick_ror_intersect_select.h>
#include <drizzled/filesort.h>
#include <drizzled/sql_lex.h>
#include <drizzled/session.h>
#include <drizzled/sort_field.h>
#include <drizzled/select_result.h>
#include <drizzled/key.h>
#include <drizzled/my_hash.h>

Go to the source code of this file.

Namespaces

 drizzled
 TODO: Rename this file - func.h is stupid.
 

Constant Groups

 drizzled
 TODO: Rename this file - func.h is stupid.
 

Functions

static int drizzled::sort_keyuse (optimizer::KeyUse *a, optimizer::KeyUse *b)
 
static COND * drizzled::build_equal_items (Session *session, COND *cond, COND_EQUAL *inherited, List< TableList > *join_list, COND_EQUAL **cond_equal_ref)
 
static Item * drizzled::part_of_refkey (Table *form, Field *field)
 
static bool drizzled::cmp_buffer_with_ref (JoinTable *tab)
 
static void drizzled::change_cond_ref_to_const (Session *session, list< COND_CMP > &save_list, Item *and_father, Item *cond, Item *field, Item *value)
 
static void drizzled::copy_blobs (Field **ptr)
 
static bool drizzled::eval_const_cond (COND *cond)
 
bool drizzled::handle_select (Session *session, LEX *lex, select_result *result, uint64_t setup_tables_done_option)
 
bool drizzled::fix_inner_refs (Session *session, List< Item > &all_fields, Select_Lex *select, Item **ref_pointer_array)
 
void drizzled::save_index_subquery_explain_info (JoinTable *join_tab, Item *where)
 
bool drizzled::select_query (Session *session, Item ***rref_pointer_array, TableList *tables, uint32_t wild_num, List< Item > &fields, COND *conds, uint32_t og_num, Order *order, Order *group, Item *having, uint64_t select_options, select_result *result, Select_Lex_Unit *unit, Select_Lex *select_lex)
 
Item * drizzled::and_items (Item *cond, Item *item)
 
ha_rows drizzled::get_quick_record_count (Session *session, optimizer::SqlSelect *select, Table *table, const key_map *keys, ha_rows limit)
 
uint32_t drizzled::max_part_bit (key_part_map bits)
 
void drizzled::update_ref_and_keys (Session *session, DYNAMIC_ARRAY *keyuse, JoinTable *join_tab, uint32_t tables, COND *cond, COND_EQUAL *, table_map normal_tables, Select_Lex *select_lex, vector< optimizer::SargableParam > &sargables)
 
void drizzled::optimize_keyuse (Join *join, DYNAMIC_ARRAY *keyuse_array)
 
void drizzled::add_group_and_distinct_keys (Join *join, JoinTable *join_tab)
 
int drizzled::join_tab_cmp (const void *ptr1, const void *ptr2)
 
int drizzled::join_tab_cmp_straight (const void *ptr1, const void *ptr2)
 
void drizzled::calc_used_field_length (Session *, JoinTable *join_tab)
 
StoredKey * drizzled::get_store_key (Session *session, optimizer::KeyUse *keyuse, table_map used_tables, KeyPartInfo *key_part, unsigned char *key_buff, uint32_t maybe_null)
 
bool drizzled::store_val_in_field (Field *field, Item *item, enum_check_fields check_flag)
 
void drizzled::add_cond_and_fix (Item **e1, Item *e2)
 
bool drizzled::create_ref_for_key (Join *join, JoinTable *j, optimizer::KeyUse *org_keyuse, table_map used_tables)
 
bool drizzled::eq_ref_table (Join *join, Order *start_order, JoinTable *tab)
 
static Item_equal * drizzled::find_item_equal (COND_EQUAL *cond_equal, Field *field, bool *inherited_fl)
 
static bool drizzled::check_simple_equality (Item *left_item, Item *right_item, Item *item, COND_EQUAL *cond_equal)
 
static bool drizzled::check_row_equality (Session *session, Item *left_row, Item_row *right_row, COND_EQUAL *cond_equal, List< Item > *eq_list)
 
static bool drizzled::check_equality (Session *session, Item *item, COND_EQUAL *cond_equal, List< Item > *eq_list)
 
static COND * drizzled::build_equal_items_for_cond (Session *session, COND *cond, COND_EQUAL *inherited)
 
static int drizzled::compare_fields_by_table_order (Item_field *field1, Item_field *field2, void *table_join_idx)
 
static Item * drizzled::eliminate_item_equal (COND *cond, COND_EQUAL *upper_levels, Item_equal *item_equal)
 
COND * drizzled::substitute_for_best_equal_field (COND *cond, COND_EQUAL *cond_equal, void *table_join_idx)
 
void drizzled::update_const_equal_items (COND *cond, JoinTable *tab)
 
Item * drizzled::remove_additional_cond (Item *conds)
 
static void drizzled::propagate_cond_constants (Session *session, list< COND_CMP > &save_list, COND *and_father, COND *cond)
 
bool drizzled::check_interleaving_with_nj (JoinTable *next_tab)
 
COND * drizzled::optimize_cond (Join *join, COND *conds, List< TableList > *join_list, Item::cond_result *cond_value)
 
COND * drizzled::remove_eq_conds (Session *session, COND *cond, Item::cond_result *cond_value)
 
static bool drizzled::test_if_equality_guarantees_uniqueness (Item *l, Item *r)
 
bool drizzled::const_expression_in_where (COND *cond, Item *comp_item, Item **const_item)
 
Next_select_func drizzled::setup_end_select_func (Join *join)
 
int drizzled::do_select (Join *join, List< Item > *fields, Table *table)
 
enum_nested_loop_state drizzled::sub_select_cache (Join *join, JoinTable *join_tab, bool end_of_records)
 
enum_nested_loop_state drizzled::sub_select (Join *join, JoinTable *join_tab, bool end_of_records)
 
int drizzled::safe_index_read (JoinTable *tab)
 
int drizzled::join_read_const (JoinTable *tab)
 
int drizzled::join_read_key (JoinTable *tab)
 
int drizzled::join_read_always_key (JoinTable *tab)
 
int drizzled::join_read_last_key (JoinTable *tab)
 
int drizzled::join_no_more_records (ReadRecord *)
 
int drizzled::join_read_next_same_diff (ReadRecord *info)
 
int drizzled::join_read_next_same (ReadRecord *info)
 
int drizzled::join_read_prev_same (ReadRecord *info)
 
int drizzled::join_init_quick_read_record (JoinTable *tab)
 
int drizzled::init_read_record_seq (JoinTable *tab)
 
int drizzled::test_if_quick_select (JoinTable *tab)
 
int drizzled::join_init_read_record (JoinTable *tab)
 
int drizzled::join_read_first (JoinTable *tab)
 
int drizzled::join_read_next_different (ReadRecord *info)
 
int drizzled::join_read_next (ReadRecord *info)
 
int drizzled::join_read_last (JoinTable *tab)
 
int drizzled::join_read_prev (ReadRecord *info)
 
int drizzled::join_read_always_key_or_null (JoinTable *tab)
 
int drizzled::join_read_next_same_or_null (ReadRecord *info)
 
enum_nested_loop_state drizzled::end_send_group (Join *join, JoinTable *, bool end_of_records)
 
enum_nested_loop_state drizzled::end_write_group (Join *join, JoinTable *, bool end_of_records)
 
bool drizzled::test_if_ref (Item_field *left_item, Item *right_item)
 
COND * drizzled::make_cond_for_table (COND *cond, table_map tables, table_map used_table, bool exclude_expensive_cond)
 
static int drizzled::test_if_order_by_key (Order *order, Table *table, uint32_t idx, uint32_t *used_key_parts)
 
bool drizzled::is_subkey (KeyPartInfo *key_part, KeyPartInfo *ref_key_part, KeyPartInfo *ref_key_part_end)
 
static uint32_t drizzled::test_if_subkey (Order *order, Table *table, uint32_t ref, uint32_t ref_key_parts, const key_map *usable_keys)
 
bool drizzled::list_contains_unique_index (Table *table, bool(*find_func)(Field *, void *), void *data)
 
bool drizzled::find_field_in_order_list (Field *field, void *data)
 
bool drizzled::find_field_in_item_list (Field *field, void *data)
 
bool drizzled::test_if_skip_sort_order (JoinTable *tab, Order *order, ha_rows select_limit, bool no_changes, const key_map *map)
 
int drizzled::create_sort_index (Session *session, Join *join, Order *order, ha_rows filesort_limit, ha_rows select_limit, bool is_order_by)
 
int drizzled::remove_dup_with_compare (Session *session, Table *table, Field **first_field, uint32_t offset, Item *having)
 
int drizzled::remove_dup_with_hash_index (Session *session, Table *table, uint32_t field_count, Field **first_field, uint32_t key_length, Item *having)
 
SortField * drizzled::make_unireg_sortorder (Order *order, uint32_t *length, SortField *sortorder)
 
bool drizzled::cp_buffer_from_ref (Session *session, table_reference_st *ref)
 
static bool drizzled::find_order_in_list (Session *session, Item **ref_pointer_array, TableList *tables, Order *order, List< Item > &fields, List< Item > &all_fields, bool is_group_field)
 
int drizzled::setup_order (Session *session, Item **ref_pointer_array, TableList *tables, List< Item > &fields, List< Item > &all_fields, Order *order)
 
int drizzled::setup_group (Session *session, Item **ref_pointer_array, TableList *tables, List< Item > &fields, List< Item > &all_fields, Order *order, bool *hidden_group_fields)
 
Order * drizzled::create_distinct_group (Session *session, Item **ref_pointer_array, Order *order_list, List< Item > &fields, List< Item > &, bool *all_order_by_fields_used)
 
void drizzled::count_field_types (Select_Lex *select_lex, Tmp_Table_Param *param, List< Item > &fields, bool reset_with_sum_func)
 
int drizzled::test_if_item_cache_changed (List< Cached_item > &list)
 
bool drizzled::setup_copy_fields (Session *session, Tmp_Table_Param *param, Item **ref_pointer_array, List< Item > &res_selected_fields, List< Item > &res_all_fields, uint32_t elements, List< Item > &all_fields)
 
void drizzled::copy_fields (Tmp_Table_Param *param)
 
bool drizzled::change_to_use_tmp_fields (Session *session, Item **ref_pointer_array, List< Item > &res_selected_fields, List< Item > &res_all_fields, uint32_t elements, List< Item > &all_fields)
 
bool drizzled::change_refs_to_tmp_fields (Session *session, Item **ref_pointer_array, List< Item > &res_selected_fields, List< Item > &res_all_fields, uint32_t elements, List< Item > &all_fields)
 
bool drizzled::setup_sum_funcs (Session *session, Item_sum **func_ptr)
 
void drizzled::init_tmptable_sum_functions (Item_sum **func_ptr)
 
void drizzled::update_tmptable_sum_func (Item_sum **func_ptr, Table *)
 
void drizzled::copy_sum_funcs (Item_sum **func_ptr, Item_sum **end_ptr)
 
bool drizzled::init_sum_functions (Item_sum **func_ptr, Item_sum **end_ptr)
 
bool drizzled::update_sum_func (Item_sum **func_ptr)
 
bool drizzled::copy_funcs (Item **func_ptr, const Session *session)
 
void drizzled::free_underlaid_joins (Session *session, Select_Lex *select)
 
bool drizzled::change_group_ref (Session *session, Item_func *expr, Order *group_list, bool *changed)
 
static void drizzled::print_table_array (Session *session, String *str, TableList **table, TableList **end)
 
void drizzled::print_join (Session *session, String *str, List< TableList > *tables)
 

Variables

const char * drizzled::subq_sj_cond_name = "0123456789ABCDEF0123456789abcdef0123456789ABCDEF0123456789abcdef-sj-cond"
 

Detailed Description

select_query and join optimization

Definition in file sql_select.cc.