MySQL 5.6.14 Source Code Document
|
Public Member Functions | |
enum Type | type () const |
virtual enum Functype | functype () const |
Item_func (Item *a) | |
Item_func (Item *a, Item *b) | |
Item_func (Item *a, Item *b, Item *c) | |
Item_func (Item *a, Item *b, Item *c, Item *d) | |
Item_func (Item *a, Item *b, Item *c, Item *d, Item *e) | |
Item_func (List< Item > &list) | |
Item_func (THD *thd, Item_func *item) | |
bool | fix_fields (THD *, Item **ref) |
void | fix_after_pullout (st_select_lex *parent_select, st_select_lex *removed_select) |
table_map | used_tables () const |
virtual table_map | get_initial_pseudo_tables () const |
table_map | not_null_tables () const |
void | update_used_tables () |
void | set_used_tables (table_map map) |
void | set_not_null_tables (table_map map) |
bool | eq (const Item *item, bool binary_cmp) const |
virtual optimize_type | select_optimize () const |
virtual bool | have_rev_func () const |
virtual Item * | key_item () const |
virtual bool | const_item () const |
Item ** | arguments () const |
void | set_arguments (List< Item > &list) |
uint | argument_count () const |
void | remove_arguments () |
void | split_sum_func (THD *thd, Ref_ptr_array ref_pointer_array, List< Item > &fields) |
virtual void | print (String *str, enum_query_type query_type) |
void | print_op (String *str, enum_query_type query_type) |
void | print_args (String *str, uint from, enum_query_type query_type) |
virtual void | fix_num_length_and_dec () |
void | count_only_length (Item **item, uint nitems) |
void | count_real_length () |
void | count_decimal_length () |
void | count_datetime_length (Item **item, uint nitems) |
bool | count_string_result_length (enum_field_types field_type, Item **item, uint nitems) |
bool | get_arg0_date (MYSQL_TIME *ltime, uint fuzzy_date) |
bool | get_arg0_time (MYSQL_TIME *ltime) |
bool | is_null () |
void | signal_divide_by_null () |
Field * | tmp_table_field () |
Field * | tmp_table_field (TABLE *t_arg) |
Item * | get_tmp_table_item (THD *thd) |
my_decimal * | val_decimal (my_decimal *) |
bool | agg_arg_charsets (DTCollation &c, Item **items, uint nitems, uint flags, int item_sep) |
bool | agg_arg_charsets_for_string_result (DTCollation &c, Item **items, uint nitems, int item_sep=1) |
bool | agg_arg_charsets_for_comparison (DTCollation &c, Item **items, uint nitems, int item_sep=1) |
bool | agg_arg_charsets_for_string_result_with_comparison (DTCollation &c, Item **items, uint nitems, int item_sep=1) |
bool | walk (Item_processor processor, bool walk_subquery, uchar *arg) |
Item * | transform (Item_transformer transformer, uchar *arg) |
Item * | compile (Item_analyzer analyzer, uchar **arg_p, Item_transformer transformer, uchar *arg_t) |
void | traverse_cond (Cond_traverser traverser, void *arg, traverse_order order) |
double | fix_result (double value) |
void | raise_numeric_overflow (const char *type_name) |
double | raise_float_overflow () |
longlong | raise_integer_overflow () |
int | raise_decimal_overflow () |
double | check_float_overflow (double value) |
longlong | check_integer_overflow (longlong value, bool val_unsigned) |
int | check_decimal_overflow (int error) |
bool | has_timestamp_args () |
bool | has_date_args () |
bool | has_time_args () |
bool | has_datetime_args () |
virtual bool | check_valid_arguments_processor (uchar *bool_arg) |
virtual bool | find_function_processor (uchar *arg) |
Public Member Functions inherited from Item_result_field | |
Item_result_field (THD *thd, Item_result_field *item) | |
Field * | get_tmp_table_field () |
virtual void | fix_length_and_dec ()=0 |
void | set_result_field (Field *field) |
bool | is_result_field () |
void | save_in_result_field (bool no_conversions) |
void | cleanup () |
virtual const char * | func_name () const =0 |
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 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 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) |
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 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 | inform_item_in_cond_of_tab (uchar *join_tab_index) |
virtual bool | clean_up_after_removal (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 bool | explain_subquery_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 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 | |
uint | arg_count |
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 | |
Item ** | args |
Item * | tmp_arg [2] |
bool | const_item_cache |
Value used in calculation of result of const_item() | |
uint | allowed_arg_cols |
table_map | used_tables_cache |
Value used in calculation of result of used_tables() | |
table_map | not_null_tables_cache |
Value used in calculation of result of not_null_tables() |
Friends | |
class | udf_handler |
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 29 of file item_func.h.
|
inline |
Throw an error if the error code of a DECIMAL operation is E_DEC_OVERFLOW.
Definition at line 283 of file item_func.h.
|
inline |
Throw an error if the input double number is not finite, i.e. is either +/-INF or NAN.
Definition at line 263 of file item_func.h.
|
inline |
Throw an error if the input BIGINT value represented by the (longlong value, bool unsigned flag) pair cannot be returned by the function, i.e. is not compatible with this Item's unsigned_flag.
Definition at line 272 of file item_func.h.
|
virtual |
Compile Item_func object with a processor and a transformer callback functions.
First the function applies the analyzer to the root node of the Item_func object. Then if the analizer succeeeds (returns TRUE) the function recursively applies the compile method to each argument of the Item_func node. If the call of the method for an argument item returns a new item the old item is substituted for a new one. After this the transformer is applied to the root node of the Item_func object.
analyzer | the analyzer callback function to be applied to the nodes of the tree of the object | |
[in,out] | arg_p | parameter to be passed to the processor |
transformer | the transformer callback function to be applied to the nodes of the tree of the object | |
arg_t | parameter to be passed to the transformer |
Reimplemented from Item.
Reimplemented in Item_cond.
Definition at line 375 of file item_func.cc.
void Item_func::count_datetime_length | ( | Item ** | item, |
uint | nitems | ||
) |
Count max_length and decimals for temporal functions.
item | Argument array |
nitems | Number of arguments in the array. |
False | on success, true on error. |
Definition at line 599 of file item_func.cc.
void Item_func::count_decimal_length | ( | ) |
Set max_length/decimals of function if function is fixed point and result length/precision depends on argument ones.
Definition at line 636 of file item_func.cc.
void Item_func::count_only_length | ( | Item ** | item, |
uint | nitems | ||
) |
Set max_length of if it is maximum length of its arguments.
Definition at line 658 of file item_func.cc.
void Item_func::count_real_length | ( | ) |
Set max_length/decimals of function if function is floating point and result length/precision depends on argument ones.
Definition at line 676 of file item_func.cc.
bool Item_func::count_string_result_length | ( | enum_field_types | field_type, |
Item ** | items, | ||
uint | nitems | ||
) |
Calculate max_length and decimals for STRING_RESULT functions.
False | on success, true on error. |
Definition at line 711 of file item_func.cc.
|
virtual |
This function is called when:
Reimplemented from Item.
Reimplemented in Item_func_match, Item_func_get_system_var, Item_extract, Item_date_add_interval, Item_func_date_format, Item_datetime_literal, Item_time_literal, Item_date_literal, Item_func_set_collation, Item_char_typecast, and Item_func_opt_neg.
Definition at line 477 of file item_func.cc.
|
inlinevirtual |
Find a function of a given type
arg | the function type to search (enum Item_func::Functype) |
TRUE | the function type we're searching for is found |
FALSE | the function type wasn't found |
This function can be used (together with Item::walk()) to find functions in an item tree fragment.
Reimplemented from Item.
Definition at line 351 of file item_func.h.
|
virtual |
Fix after tables have been moved from one select_lex level to the parent level, e.g by semijoin conversion. Basically re-calculate all attributes dependent on the tables.
parent_select | select_lex that tables are moved to. |
removed_select | select_lex that tables are moved away from, child of parent_select. |
Reimplemented from Item.
Reimplemented in Item_cond, and Item_in_optimizer.
Definition at line 239 of file item_func.cc.
|
inlinevirtual |
Returns the pseudo tables depended upon in order to evaluate this function expression. The default implementation returns the empty set.
Reimplemented in Item_func_sp, Item_is_not_null_test, Item_func_sleep, Item_func_sysdate_local, and Item_func_rand.
Definition at line 132 of file item_func.h.
|
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_func_match, Item_func_get_system_var, Item_equal, Item_func_set_user_var, Item_cond, Item_func_regex, Item_func_isnotnull, Item_func_get_format, Item_func_timestamp_diff, Item_func_add_time, Item_func_in, Item_datetime_typecast, Item_time_typecast, Item_date_typecast, Item_func_case, Item_extract, Item_date_add_interval, Item_func_benchmark, Item_func_bit_neg, Item_func_bit, Item_func_locate, Item_datetime_literal, Item_time_literal, Item_func_set_collation, Item_func_nullif, Item_func_conv_charset, Item_date_literal, Item_func_binary, Item_char_typecast, Item_func_strcmp, Item_func_between, Item_func_int_div, Item_func_format, Item_decimal_typecast, Item_func_make_set, Item_func_unsigned, Item_func_not_all, Item_func_signed, Item_func_trig_cond, Item_num_op, Item_func_not, Item_bool_func2, Item_func_trim, and Item_func_truth.
Definition at line 442 of file item_func.cc.
|
virtual |
See comments in Item_cmp_func::split_sum_func()
Reimplemented from Item.
Reimplemented in Item_cond, and Item_func_make_set.
Definition at line 404 of file item_func.cc.
|
virtual |
Transform an Item_func object with a transformer callback function.
The function recursively applies the transform method to each argument of the Item_func node. If the call of the method for an argument item returns a new item the old item is substituted for a new one. After this the transformer is applied to the root node of the Item_func object.
transformer | the transformer callback function to be applied to the nodes of the tree of the object |
argument | parameter to be passed to the transformer |
Reimplemented from Item.
Reimplemented in Item_equal, Item_cond, Item_func_make_set, and Item_in_optimizer.
Definition at line 323 of file item_func.cc.