MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Item_exists_subselect Class Reference
Inheritance diagram for Item_exists_subselect:
Collaboration diagram for Item_exists_subselect:

Public Types

enum  enum_exec_method {
  EXEC_UNSPECIFIED, EXEC_SEMI_JOIN, EXEC_EXISTS, EXEC_EXISTS_OR_MAT,
  EXEC_MATERIALIZATION
}
- Public Types inherited from Item_subselect
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

 Item_exists_subselect (st_select_lex *select_lex)
virtual trans_res select_transformer (JOIN *join)
subs_type substype ()
virtual void reset ()
enum Item_result result_type () const
longlong val_int ()
double val_real ()
Stringval_str (String *)
my_decimalval_decimal (my_decimal *)
bool val_bool ()
bool get_date (MYSQL_TIME *ltime, uint fuzzydate)
bool get_time (MYSQL_TIME *ltime)
void fix_length_and_dec ()
virtual void print (String *str, enum_query_type query_type)
- Public Member Functions inherited from Item_subselect
const subselect_engineget_engine_for_explain () const
 EXPLAIN needs read-only access to the engine.
virtual void init (st_select_lex *select_lex, select_result_interceptor *result)
virtual void cleanup ()
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 ()
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 ()
Itemget_tmp_table_item (THD *thd)
void update_used_tables ()
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)
Fieldget_tmp_table_field ()
Fieldtmp_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 Fieldmake_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 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 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 Stringval_str_ascii (String *str)
virtual Stringval_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 Stringstr_result (String *tmp)
virtual my_decimalval_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 Itemclone_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_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 Itemcopy_or_same (THD *thd)
virtual Itemcopy_andor_structure (THD *thd, bool real_items=false)
virtual Itemreal_item ()
virtual const CHARSET_INFOcompare_collation ()
virtual const CHARSET_INFOcharset_for_protocol (void) const
virtual Itemtransform (Item_transformer transformer, uchar *arg)
virtual Itemcompile (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 Itemcache_const_expr_transformer (uchar *arg)
virtual bool item_field_by_name_analyzer (uchar **arg)
virtual Itemitem_field_by_name_transformer (uchar *arg)
virtual bool equality_substitution_analyzer (uchar **arg)
virtual Itemequality_substitution_transformer (uchar *arg)
virtual bool check_partition_func_processor (uchar *bool_arg)
virtual bool subst_argument_checker (uchar **arg)
virtual Itemexplain_subquery_propagator (uchar *arg)
virtual Itemequal_fields_propagator (uchar *arg)
virtual bool set_no_const_sub (uchar *arg)
virtual Itemreplace_equal_field (uchar *arg)
virtual bool check_valid_arguments_processor (uchar *bool_arg)
virtual bool find_function_processor (uchar *arg)
virtual Itemthis_item ()
virtual const Itemthis_item () const
virtual Item ** this_item_addr (THD *thd, Item **addr_arg)
virtual uint cols ()
virtual Itemelement_index (uint i)
virtual Item ** addr (uint i)
virtual bool check_cols (uint c)
virtual bool null_inside ()
virtual void bring_value ()
Fieldtmp_table_field_from_field_type (TABLE *table, bool fixed_length)
virtual Item_fieldfield_for_view_update ()
virtual Itemneg_transformer (THD *thd)
virtual Itemupdate_value_transformer (uchar *select_arg)
virtual Itemsafe_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
Stringcheck_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

enum_exec_method exec_method
int sj_convert_priority
 Priority of this predicate in the convert-to-semi-join-nest process.
bool sj_chosen
 True if this predicate is chosen for semi-join transformation.
TABLE_LISTembedding_join_nest
- Public Attributes inherited from Item_subselect
Itemsubstitution
st_select_lex_unit * unit
int in_cond_of_tab
bool engine_changed
bool changed
- Public Attributes inherited from Item_result_field
Fieldresult_field
- Public Attributes inherited from Item
uint rsize
String str_value
Item_name_string item_name
Item_name_string orig_name
Itemnext
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

bool value
- Protected Attributes inherited from Item_subselect
subselect_engineengine
subselect_engineold_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_exists_subselect
class subselect_indexsubquery_engine

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_INFOdefault_charset ()
- Protected Member Functions inherited from Item
Stringval_string_from_real (String *str)
Stringval_string_from_int (String *str)
Stringval_string_from_decimal (String *str)
Stringval_string_from_date (String *str)
Stringval_string_from_datetime (String *str)
Stringval_string_from_time (String *str)
my_decimalval_decimal_from_real (my_decimal *decimal_value)
my_decimalval_decimal_from_int (my_decimal *decimal_value)
my_decimalval_decimal_from_string (my_decimal *decimal_value)
my_decimalval_decimal_from_date (my_decimal *decimal_value)
my_decimalval_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)

Detailed Description

Definition at line 268 of file item_subselect.h.

Member Enumeration Documentation

The method chosen to execute the predicate, currently used for IN, =ANY and EXISTS predicates.

Enumerator:
EXEC_UNSPECIFIED 

No execution method specified yet.

EXEC_SEMI_JOIN 

Predicate is converted to semi-join nest.

EXEC_EXISTS 

IN was converted to correlated EXISTS, and this is a final decision.

EXEC_EXISTS_OR_MAT 

Decision between EXEC_EXISTS and EXEC_MATERIALIZATION is not yet taken. IN was temporarily converted to correlated EXISTS. All descendants of Item_in_subselect must go through this method before they can reach EXEC_EXISTS.

EXEC_MATERIALIZATION 

Predicate executed via materialization, and this is a final decision.

Definition at line 278 of file item_subselect.h.

Member Function Documentation

void Item_exists_subselect::print ( String str,
enum_query_type  query_type 
)
virtual

This method is used for to:

  • to generate a view definition query (SELECT-statement);
  • to generate a SQL-query for EXPLAIN EXTENDED;
  • to generate a SQL-query to be shown in INFORMATION_SCHEMA;
  • debug.

For more information about view definition query, INFORMATION_SCHEMA query and why they should be generated from the Item-tree,

See Also
mysql_register_view().

Reimplemented from Item_subselect.

Reimplemented in Item_allany_subselect, and Item_in_subselect.

Definition at line 1180 of file item_subselect.cc.

bool Item_exists_subselect::val_bool ( )
virtual
Todo:
Make this functions class dependent

Reimplemented from Item.

Reimplemented in Item_in_subselect.

Definition at line 1323 of file item_subselect.cc.

my_decimal * Item_exists_subselect::val_decimal ( my_decimal decimal_value)
virtual

Return the result of EXISTS as a decimal value

Converts the true/false result into a decimal value. Note that currently this cannot be NULL, so if the query exection fails it will return 0.

Parameters
decimal_value[out]Buffer to hold the resulting decimal value
Return values
Pointerto the converted decimal. Can't be a NULL pointer, as currently EXISTS cannot return NULL.

Implements Item.

Reimplemented in Item_in_subselect.

Definition at line 1313 of file item_subselect.cc.

String * Item_exists_subselect::val_str ( String str)
virtual

Return the result of EXISTS as a string value

Converts the true/false result into a string value. Note that currently this cannot be NULL, so if the query exection fails it will return 0.

Parameters
decimal_value[out]buffer to hold the resulting string value
Return values
Pointerto the converted string. Can't be a NULL pointer, as currently EXISTS cannot return NULL.

Implements Item.

Reimplemented in Item_in_subselect.

Definition at line 1290 of file item_subselect.cc.

Member Data Documentation

TABLE_LIST* Item_exists_subselect::embedding_join_nest

Used by subquery optimizations to keep track about where this subquery predicate is located, and whether it is a candidate for transformation. (TABLE_LIST*) 1 - the predicate is an AND-part of the WHERE join nest pointer - the predicate is an AND-part of ON expression of a join nest NULL - for all other locations. It also means that the predicate is not a candidate for transformation. See also THD::emb_on_expr_nest.

Definition at line 308 of file item_subselect.h.


The documentation for this class was generated from the following files: