MySQL 5.6.14 Source Code Document
|
Public Types | |
enum | trans_res { RES_OK, RES_REDUCE, RES_ERROR } |
enum | subs_type { UNKNOWN_SUBS, SINGLEROW_SUBS, EXISTS_SUBS, IN_SUBS, ALL_SUBS, ANY_SUBS } |
Public Member Functions | |
const subselect_engine * | get_engine_for_explain () const |
EXPLAIN needs read-only access to the engine. | |
virtual subs_type | substype () |
virtual void | init (st_select_lex *select_lex, select_result_interceptor *result) |
virtual void | cleanup () |
virtual void | reset () |
virtual trans_res | select_transformer (JOIN *join) |
bool | assigned () const |
void | assigned (bool a) |
enum Type | type () const |
bool | is_null () |
bool | fix_fields (THD *thd, Item **ref) |
void | fix_after_pullout (st_select_lex *parent_select, st_select_lex *removed_select) |
virtual bool | exec () |
virtual void | fix_length_and_dec () |
table_map | used_tables () const |
table_map | not_null_tables () const |
bool | const_item () const |
table_map | get_used_tables_cache () |
bool | get_const_item_cache () |
Item * | get_tmp_table_item (THD *thd) |
void | update_used_tables () |
virtual void | print (String *str, enum_query_type query_type) |
virtual bool | have_guarded_conds () |
bool | change_engine (subselect_engine *eng) |
bool | is_evaluated () const |
bool | is_uncacheable () const |
virtual void | reset_value_registration () |
enum_parsing_place | place () |
bool | walk_join_condition (List< TABLE_LIST > *tables, Item_processor processor, bool walk_subquery, uchar *argument) |
bool | walk_body (Item_processor processor, bool walk_subquery, uchar *arg) |
bool | walk (Item_processor processor, bool walk_subquery, uchar *arg) |
virtual bool | explain_subquery_checker (uchar **arg) |
bool | inform_item_in_cond_of_tab (uchar *join_tab_index) |
virtual bool | clean_up_after_removal (uchar *arg) |
const char * | func_name () const |
Public Member Functions inherited from Item_result_field | |
Item_result_field (THD *thd, Item_result_field *item) | |
Field * | get_tmp_table_field () |
Field * | tmp_table_field (TABLE *t_arg) |
void | set_result_field (Field *field) |
bool | is_result_field () |
void | save_in_result_field (bool no_conversions) |
Public Member Functions inherited from Item | |
Item (THD *thd, Item *item) | |
void | rename (char *new_name) |
void | init_make_field (Send_field *tmp_field, enum enum_field_types type) |
virtual void | make_field (Send_field *field) |
virtual Field * | make_string_field (TABLE *table) |
void | quick_fix_field () |
type_conversion_status | save_in_field_no_warnings (Field *field, bool no_conversions) |
virtual type_conversion_status | save_in_field (Field *field, bool no_conversions) |
virtual void | save_org_in_field (Field *field) |
virtual type_conversion_status | save_safe_in_field (Field *field) |
virtual bool | send (Protocol *protocol, String *str) |
virtual bool | eq (const Item *, bool binary_cmp) const |
virtual Item_result | result_type () const |
virtual enum Item_result | numeric_context_result_type () const |
enum Item_result | temporal_with_date_as_number_result_type () const |
virtual Item_result | cast_to_int_type () const |
virtual enum_field_types | string_field_type () const |
virtual enum_field_types | field_type () const |
virtual enum_monotonicity_info | get_monotonicity_info () const |
virtual longlong | val_int_endpoint (bool left_endp, bool *incl_endp) |
virtual double | val_real ()=0 |
virtual longlong | val_int ()=0 |
virtual longlong | val_date_temporal () |
virtual longlong | val_time_temporal () |
longlong | val_temporal_by_field_type () |
longlong | val_temporal_with_round (enum_field_types type, uint8 dec) |
ulonglong | val_uint () |
virtual String * | val_str (String *str)=0 |
virtual String * | val_str_ascii (String *str) |
virtual my_decimal * | val_decimal (my_decimal *decimal_buffer)=0 |
virtual bool | val_bool () |
virtual String * | val_nodeset (String *) |
type_conversion_status | save_time_in_field (Field *field) |
type_conversion_status | save_date_in_field (Field *field) |
type_conversion_status | save_str_value_in_field (Field *field, String *result) |
virtual const char * | full_name () const |
virtual double | val_result () |
virtual longlong | val_int_result () |
virtual longlong | val_time_temporal_result () |
virtual longlong | val_date_temporal_result () |
virtual String * | str_result (String *tmp) |
virtual my_decimal * | val_decimal_result (my_decimal *val) |
virtual bool | val_bool_result () |
virtual bool | is_null_result () |
virtual table_map | resolved_used_tables () const |
virtual bool | basic_const_item () const |
virtual Item * | clone_item () |
virtual cond_result | eq_cmp_result () const |
uint | float_length (uint decimals_par) const |
virtual uint | decimal_precision () const |
int | decimal_int_part () const |
virtual uint | time_precision () |
virtual uint | datetime_precision () |
virtual bool | const_during_execution () const |
void | print_item_w_name (String *, enum_query_type query_type) |
void | print_for_order (String *str, enum_query_type query_type, bool used_alias) |
virtual void | split_sum_func (THD *thd, Ref_ptr_array ref_pointer_array, List< Item > &fields) |
void | split_sum_func2 (THD *thd, Ref_ptr_array ref_pointer_array, List< Item > &fields, Item **ref, bool skip_registered) |
virtual bool | get_date (MYSQL_TIME *ltime, uint fuzzydate)=0 |
virtual bool | get_time (MYSQL_TIME *ltime)=0 |
virtual bool | get_timeval (struct timeval *tm, int *warnings) |
virtual bool | get_date_result (MYSQL_TIME *ltime, uint fuzzydate) |
virtual void | update_null_value () |
virtual void | top_level_item () |
virtual bool | is_bool_func () |
virtual void | no_rows_in_result () |
virtual Item * | copy_or_same (THD *thd) |
virtual Item * | copy_andor_structure (THD *thd, bool real_items=false) |
virtual Item * | real_item () |
virtual const CHARSET_INFO * | compare_collation () |
virtual const CHARSET_INFO * | charset_for_protocol (void) const |
virtual Item * | transform (Item_transformer transformer, uchar *arg) |
virtual Item * | compile (Item_analyzer analyzer, uchar **arg_p, Item_transformer transformer, uchar *arg_t) |
virtual void | traverse_cond (Cond_traverser traverser, void *arg, traverse_order order) |
virtual bool | intro_version (uchar *int_arg) |
virtual bool | remove_dependence_processor (uchar *arg) |
virtual bool | remove_fixed (uchar *arg) |
virtual bool | cleanup_processor (uchar *arg) |
virtual bool | collect_item_field_processor (uchar *arg) |
virtual bool | add_field_to_set_processor (uchar *arg) |
virtual bool | remove_column_from_bitmap (uchar *arg) |
virtual bool | find_item_in_field_list_processor (uchar *arg) |
virtual bool | change_context_processor (uchar *context) |
virtual bool | reset_query_id_processor (uchar *query_id_arg) |
virtual bool | find_item_processor (uchar *arg) |
virtual bool | register_field_in_read_map (uchar *arg) |
virtual bool | cache_const_expr_analyzer (uchar **arg) |
virtual Item * | cache_const_expr_transformer (uchar *arg) |
virtual bool | item_field_by_name_analyzer (uchar **arg) |
virtual Item * | item_field_by_name_transformer (uchar *arg) |
virtual bool | equality_substitution_analyzer (uchar **arg) |
virtual Item * | equality_substitution_transformer (uchar *arg) |
virtual bool | check_partition_func_processor (uchar *bool_arg) |
virtual bool | subst_argument_checker (uchar **arg) |
virtual Item * | explain_subquery_propagator (uchar *arg) |
virtual Item * | equal_fields_propagator (uchar *arg) |
virtual bool | set_no_const_sub (uchar *arg) |
virtual Item * | replace_equal_field (uchar *arg) |
virtual bool | check_valid_arguments_processor (uchar *bool_arg) |
virtual bool | find_function_processor (uchar *arg) |
virtual Item * | this_item () |
virtual const Item * | this_item () const |
virtual Item ** | this_item_addr (THD *thd, Item **addr_arg) |
virtual uint | cols () |
virtual Item * | element_index (uint i) |
virtual Item ** | addr (uint i) |
virtual bool | check_cols (uint c) |
virtual bool | null_inside () |
virtual void | bring_value () |
Field * | tmp_table_field_from_field_type (TABLE *table, bool fixed_length) |
virtual Item_field * | field_for_view_update () |
virtual Item * | neg_transformer (THD *thd) |
virtual Item * | update_value_transformer (uchar *select_arg) |
virtual Item * | safe_charset_converter (const CHARSET_INFO *tocs) |
void | delete_self () |
virtual bool | is_splocal () |
virtual Settable_routine_parameter * | get_settable_routine_parameter () |
bool | is_temporal_with_date () const |
bool | is_temporal_with_date_and_time () const |
bool | is_temporal_with_time () const |
bool | is_temporal () const |
bool | has_compatible_context (Item *item) const |
virtual Field::geometry_type | get_geometry_type () const |
String * | check_well_formed_result (String *str, bool send_error=0) |
bool | eq_by_collation (Item *item, bool binary_cmp, const CHARSET_INFO *cs) |
virtual bool | is_expensive () |
virtual bool | can_be_evaluated_now () const |
uint32 | max_char_length () const |
void | fix_length_and_charset (uint32 max_char_length_arg, const CHARSET_INFO *cs) |
void | fix_char_length (uint32 max_char_length_arg) |
void | fix_char_length_ulonglong (ulonglong max_char_length_arg) |
void | fix_length_and_charset_datetime (uint32 max_char_length_arg) |
void | fix_length_and_dec_and_charset_datetime (uint32 max_char_length_arg, uint8 dec_arg) |
virtual bool | is_outer_field () const |
bool | is_blob_field () const |
virtual bool | has_subquery () const |
virtual bool | has_stored_program () const |
virtual bool | created_by_in2exists () const |
Whether this Item was created by the IN->EXISTS subquery transformation. |
Public Attributes | |
Item * | substitution |
st_select_lex_unit * | unit |
int | in_cond_of_tab |
bool | engine_changed |
bool | changed |
Public Attributes inherited from Item_result_field | |
Field * | result_field |
Public Attributes inherited from Item | |
uint | rsize |
String | str_value |
Item_name_string | item_name |
Item_name_string | orig_name |
Item * | next |
uint32 | max_length |
int | marker |
uint8 | decimals |
my_bool | maybe_null |
my_bool | null_value |
my_bool | unsigned_flag |
my_bool | with_sum_func |
my_bool | fixed |
DTCollation | collation |
Item_result | cmp_context |
Protected Attributes | |
subselect_engine * | engine |
subselect_engine * | old_engine |
table_map | used_tables_cache |
uint | max_columns |
enum_parsing_place | parsing_place |
bool | have_to_be_excluded |
bool | const_item_cache |
Friends | |
class | select_result_interceptor |
class | Item_in_optimizer |
bool | Item_field::fix_fields (THD *, Item **) |
int | Item_field::fix_outer_field (THD *, Field **, Item **) |
bool | Item_ref::fix_fields (THD *, Item **) |
void | Item_ident::fix_after_pullout (st_select_lex *parent_select, st_select_lex *removed_selec) |
void | mark_select_range_as_dependent (THD *, st_select_lex *, st_select_lex *, Field *, Item *, Item_ident *) |
Additional Inherited Members | |
Static Public Member Functions inherited from Item | |
static void * | operator new (size_t size) throw () |
static void * | operator new (size_t size, MEM_ROOT *mem_root) throw () |
static void | operator delete (void *ptr, size_t size) |
static void | operator delete (void *ptr, MEM_ROOT *mem_root) |
static const CHARSET_INFO * | default_charset () |
Protected Member Functions inherited from Item | |
String * | val_string_from_real (String *str) |
String * | val_string_from_int (String *str) |
String * | val_string_from_decimal (String *str) |
String * | val_string_from_date (String *str) |
String * | val_string_from_datetime (String *str) |
String * | val_string_from_time (String *str) |
my_decimal * | val_decimal_from_real (my_decimal *decimal_value) |
my_decimal * | val_decimal_from_int (my_decimal *decimal_value) |
my_decimal * | val_decimal_from_string (my_decimal *decimal_value) |
my_decimal * | val_decimal_from_date (my_decimal *decimal_value) |
my_decimal * | val_decimal_from_time (my_decimal *decimal_value) |
longlong | val_int_from_decimal () |
longlong | val_int_from_date () |
longlong | val_int_from_time () |
longlong | val_int_from_datetime () |
double | val_real_from_decimal () |
bool | get_date_from_string (MYSQL_TIME *ltime, uint flags) |
bool | get_date_from_real (MYSQL_TIME *ltime, uint flags) |
bool | get_date_from_decimal (MYSQL_TIME *ltime, uint flags) |
bool | get_date_from_int (MYSQL_TIME *ltime, uint flags) |
bool | get_date_from_time (MYSQL_TIME *ltime) |
bool | get_date_from_numeric (MYSQL_TIME *ltime, uint fuzzydate) |
bool | get_date_from_non_temporal (MYSQL_TIME *ltime, uint fuzzydate) |
bool | get_time_from_string (MYSQL_TIME *ltime) |
bool | get_time_from_real (MYSQL_TIME *ltime) |
bool | get_time_from_decimal (MYSQL_TIME *ltime) |
bool | get_time_from_int (MYSQL_TIME *ltime) |
bool | get_time_from_date (MYSQL_TIME *ltime) |
bool | get_time_from_datetime (MYSQL_TIME *ltime) |
bool | get_time_from_numeric (MYSQL_TIME *ltime) |
bool | get_time_from_non_temporal (MYSQL_TIME *ltime) |
Definition at line 41 of file item_subselect.h.
|
virtual |
Clean up after removing the subquery from the item tree.
Call st_select_lex_unit::exclude_tree() to unlink it from its master and to unlink direct st_select_lex children from all_selects_list.
Don't unlink subqueries that are not descendants of the starting point (root) of the removal and cleanup.
Reimplemented from Item.
Definition at line 2486 of file item_subselect.cc.
|
virtual |
Mark a subquery unit with information provided
A subquery may belong to WHERE, HAVING, ORDER BY or GROUP BY item trees. This "processor" qualifies subqueries by outer clause type.
arg | Explain_subquery_marker structure |
false |
Reimplemented from Item.
Definition at line 537 of file item_subselect.cc.
|
virtual |
Fix used tables information for a subquery after query transformations. Common actions for all predicates involving subqueries. Most actions here involve re-resolving information for conditions and items belonging to the subquery. Notice that the usage information from underlying expressions is not propagated to the subquery predicate, as it belongs to inner layers of the query operator structure. However, when underlying expressions contain outer references into a select_lex on this level, the relevant information must be updated when these expressions are resolved.
Reimplemented from Item.
Reimplemented in Item_in_subselect.
Definition at line 666 of file item_subselect.cc.
|
virtual |
|
virtual |
This method is used for to:
For more information about view definition query, INFORMATION_SCHEMA query and why they should be generated from the Item-tree,
Reimplemented from Item.
Reimplemented in Item_allany_subselect, Item_in_subselect, Item_exists_subselect, and Item_maxmin_subselect.
Definition at line 817 of file item_subselect.cc.
bool Item_subselect::walk_body | ( | Item_processor | processor, |
bool | walk_subquery, | ||
uchar * | argument | ||
) |
Workaround for bug in gcc 4.1. Item_in_subselect::walk()
Definition at line 469 of file item_subselect.cc.
bool Item_subselect::walk_join_condition | ( | List< TABLE_LIST > * | tables, |
Item_processor | processor, | ||
bool | walk_subquery, | ||
uchar * | argument | ||
) |
Apply walk() processor to join conditions.
JOINs may be nested. Walk nested joins recursively to apply the processor.
Definition at line 443 of file item_subselect.cc.
int Item_subselect::in_cond_of_tab |
If !=INT_MIN: this Item is in the condition attached to the JOIN_TAB having this index in the parent JOIN.
Definition at line 73 of file item_subselect.h.