MySQL 9.1.0
Source Code Documentation
Item_func Class Referenceabstract

#include <item_func.h>

Inheritance diagram for Item_func:
[legend]

Public Types

enum  Functype {
  UNKNOWN_FUNC , EQ_FUNC , EQUAL_FUNC , NE_FUNC ,
  LT_FUNC , LE_FUNC , GE_FUNC , GT_FUNC ,
  FT_FUNC , MATCH_FUNC , LIKE_FUNC , ISNULL_FUNC ,
  ISNOTNULL_FUNC , ISTRUTH_FUNC , COND_AND_FUNC , COND_OR_FUNC ,
  XOR_FUNC , BETWEEN , IN_FUNC , MULTI_EQ_FUNC ,
  INTERVAL_FUNC , ISNOTNULLTEST_FUNC , SP_EQUALS_FUNC , SP_DISJOINT_FUNC ,
  SP_DISTANCE_FUNC , SP_INTERSECTS_FUNC , SP_TOUCHES_FUNC , SP_CROSSES_FUNC ,
  SP_WITHIN_FUNC , SP_CONTAINS_FUNC , SP_COVEREDBY_FUNC , SP_COVERS_FUNC ,
  SP_OVERLAPS_FUNC , SP_STARTPOINT , SP_ENDPOINT , SP_EXTERIORRING ,
  SP_POINTN , SP_GEOMETRYN , SP_INTERIORRINGN , NOT_FUNC ,
  NOT_ALL_FUNC , NOW_FUNC , FROM_DAYS_FUNC , TRIG_COND_FUNC ,
  SUSERVAR_FUNC , GUSERVAR_FUNC , COLLATE_FUNC , EXTRACT_FUNC ,
  TYPECAST_FUNC , FUNC_SP , UDF_FUNC , NEG_FUNC ,
  GSYSVAR_FUNC , GROUPING_FUNC , ROLLUP_GROUP_ITEM_FUNC , TABLE_FUNC ,
  DD_INTERNAL_FUNC , PLUS_FUNC , MINUS_FUNC , MUL_FUNC ,
  DIV_FUNC , CEILING_FUNC , ROUND_FUNC , TRUNCATE_FUNC ,
  SQRT_FUNC , ABS_FUNC , POW_FUNC , SIGN_FUNC ,
  FLOOR_FUNC , LOG_FUNC , LN_FUNC , LOG10_FUNC ,
  SIN_FUNC , TAN_FUNC , COS_FUNC , COT_FUNC ,
  DEGREES_FUNC , RADIANS_FUNC , EXP_FUNC , ASIN_FUNC ,
  ATAN_FUNC , ACOS_FUNC , MOD_FUNC , IF_FUNC ,
  NULLIF_FUNC , CASE_FUNC , YEAR_FUNC , YEARWEEK_FUNC ,
  MAKEDATE_FUNC , MAKETIME_FUNC , MONTH_FUNC , MONTHNAME_FUNC ,
  DAY_FUNC , DAYNAME_FUNC , TO_DAYS_FUNC , TO_SECONDS_FUNC ,
  DATE_FUNC , HOUR_FUNC , MINUTE_FUNC , SECOND_FUNC ,
  MICROSECOND_FUNC , DAYOFYEAR_FUNC , ADDTIME_FUNC , QUARTER_FUNC ,
  WEEK_FUNC , WEEKDAY_FUNC , DATEADD_FUNC , FROM_UNIXTIME_FUNC ,
  CONVERT_TZ_FUNC , LAST_DAY_FUNC , UNIX_TIMESTAMP_FUNC , TIME_TO_SEC_FUNC ,
  TIMESTAMPDIFF_FUNC , DATETIME_LITERAL , GREATEST_FUNC , COALESCE_FUNC ,
  LEAST_FUNC , JSON_CONTAINS , JSON_OVERLAPS , JSON_UNQUOTE_FUNC ,
  MEMBER_OF_FUNC , STRCMP_FUNC , TRUE_FUNC , FALSE_FUNC ,
  SYSDATE_FUNC , TIMEDIFF_FUNC , PERIODADD_FUNC , PERIODDIFF_FUNC ,
  SEC_TO_TIME_FUNC , GET_FORMAT_FUNC , ANY_VALUE_FUNC , JSON_LENGTH_FUNC ,
  JSON_DEPTH_FUNC , JSON_EXTRACT_FUNC , JSON_OBJECT_FUNC , JSON_ARRAY_FUNC ,
  JSON_VALID_FUNC , JSON_TYPE_FUNC , JSON_PRETTY_FUNC , JSON_QUOTE_FUNC ,
  JSON_CONTAINS_PATH_FUNC , JSON_STORAGE_SIZE_FUNC , JSON_STORAGE_FREE_FUNC , JSON_VALUE_FUNC ,
  JSON_SEARCH_FUNC , JSON_SCHEMA_VALIDATION_REPORT_FUNC , JSON_SCHEMA_VALID_FUNC
}
 
enum  optimize_type {
  OPTIMIZE_NONE , OPTIMIZE_KEY , OPTIMIZE_OP , OPTIMIZE_NULL ,
  OPTIMIZE_EQUAL
}
 
- Public Types inherited from Item
enum  Type {
  INVALID_ITEM , FIELD_ITEM , FUNC_ITEM , SUM_FUNC_ITEM ,
  AGGR_FIELD_ITEM , STRING_ITEM , INT_ITEM , DECIMAL_ITEM ,
  REAL_ITEM , NULL_ITEM , HEX_BIN_ITEM , DEFAULT_VALUE_ITEM ,
  COND_ITEM , REF_ITEM , INSERT_VALUE_ITEM , SUBQUERY_ITEM ,
  ROW_ITEM , CACHE_ITEM , TYPE_HOLDER_ITEM , PARAM_ITEM ,
  ROUTINE_FIELD_ITEM , TRIGGER_FIELD_ITEM , XPATH_NODESET_ITEM , VALUES_COLUMN_ITEM ,
  NAME_CONST_ITEM
}
 
enum  cond_result { COND_UNDEF , COND_OK , COND_TRUE , COND_FALSE }
 
enum  traverse_order { POSTFIX , PREFIX }
 
enum  enum_const_item_cache { CACHE_NONE = 0 , CACHE_JSON_VALUE , CACHE_JSON_ATOM }
 How to cache constant JSON data. More...
 
enum  Bool_test {
  BOOL_IS_TRUE = 0x00 , BOOL_IS_FALSE = 0x01 , BOOL_IS_UNKNOWN = 0x02 , BOOL_NOT_TRUE = 0x03 ,
  BOOL_NOT_FALSE = 0x04 , BOOL_NOT_UNKNOWN = 0x05 , BOOL_IDENTITY = 0x06 , BOOL_NEGATED = 0x07 ,
  BOOL_ALWAYS_TRUE = 0x08 , BOOL_ALWAYS_FALSE = 0x09
}
 < Modifier for result transformation More...
 
enum  item_marker {
  MARKER_NONE = 0 , MARKER_IMPLICIT_NE_ZERO = 1 , MARKER_CONST_PROPAG = 2 , MARKER_BIT = 4 ,
  MARKER_FUNC_DEP_NOT_NULL = 5 , MARKER_DISTINCT_GROUP = 6 , MARKER_COND_DERIVED_TABLE = 7 , MARKER_TRAVERSAL = 8 ,
  MARKER_ICP_COND_USES_INDEX_ONLY = 10
}
 < Values for member 'marker' More...
 
- Public Types inherited from Parse_tree_node_tmpl< Context >
typedef Context context_t
 

Public Member Functions

virtual uint argument_count () const
 
Item ** arguments () const
 
virtual const char * func_name () const =0
 
bool reject_vector_args ()
 
uint num_vector_args ()
 
bool reject_geometry_args ()
 
bool is_null_on_null () const
 
enum Type type () const override
 
virtual enum Functype functype () const
 
 Item_func ()
 
 Item_func (const POS &pos)
 
 Item_func (Item *a)
 
 Item_func (const POS &pos, Item *a)
 
 Item_func (Item *a, Item *b)
 
 Item_func (const POS &pos, Item *a, Item *b)
 
 Item_func (Item *a, Item *b, Item *c)
 
 Item_func (const POS &pos, Item *a, Item *b, Item *c)
 
 Item_func (Item *a, Item *b, Item *c, Item *d)
 
 Item_func (const POS &pos, Item *a, Item *b, Item *c, Item *d)
 
 Item_func (Item *a, Item *b, Item *c, Item *d, Item *e)
 
 Item_func (const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e)
 
 Item_func (Item *a, Item *b, Item *c, Item *d, Item *e, Item *f)
 
 Item_func (const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e, Item *f)
 
 Item_func (mem_root_deque< Item * > *list)
 
 Item_func (const POS &pos, PT_item_list *opt_list)
 
 Item_func (THD *thd, const Item_func *item)
 
virtual Itemget_arg (uint i)
 Get the i'th argument of the function that this object represents. More...
 
virtual const Itemget_arg (uint i) const
 Get the i'th argument of the function that this object represents. More...
 
virtual Itemset_arg (THD *, uint, Item *)
 
bool do_itemize (Parse_context *pc, Item **res) override
 The core function that does the actual itemization. More...
 
bool fix_fields (THD *, Item **ref) override
 
bool fix_func_arg (THD *, Item **arg)
 
void fix_after_pullout (Query_block *parent_query_block, Query_block *removed_query_block) override
 Fix after tables have been moved from one query_block level to the parent level, e.g by semijoin conversion. More...
 
virtual bool resolve_type_inner (THD *)
 Resolve type of function after all arguments have had their data types resolved. More...
 
bool propagate_type (THD *thd, const Type_properties &type) override
 Default implementation for all functions: Propagate base_item's type into all arguments. More...
 
virtual table_map get_initial_pseudo_tables () const
 Returns the pseudo tables depended upon in order to evaluate this function expression. More...
 
table_map used_tables () const override
 
table_map not_null_tables () const override
 Return table map of tables that can't be NULL tables (tables that are used in a context where if they would contain a NULL row generated by a LEFT or RIGHT join, the item would not be true). More...
 
void update_used_tables () override
 Updates used tables, not null tables information and accumulates properties up the item tree, cf. More...
 
void set_used_tables (table_map map)
 
bool eq (const Item *item) const override
 Compare this item with another item for equality. More...
 
virtual bool eq_specific (const Item *) const
 Provide a more specific equality check for a function. More...
 
virtual optimize_type select_optimize (const THD *)
 
virtual bool have_rev_func () const
 
virtual Itemkey_item () const
 
bool set_arguments (mem_root_deque< Item * > *list, bool context_free)
 Copy arguments from list to args array. More...
 
bool split_sum_func (THD *thd, Ref_item_array ref_item_array, mem_root_deque< Item * > *fields) override
 See comments in Item_cmp_func::split_sum_func() More...
 
void print (const THD *thd, String *str, enum_query_type query_type) const override
 This method is used for to: More...
 
void print_op (const THD *thd, String *str, enum_query_type query_type) const
 
void print_args (const THD *thd, String *str, uint from, enum_query_type query_type) const
 
virtual void fix_num_length_and_dec ()
 
virtual bool is_deprecated () const
 
bool get_arg0_date (MYSQL_TIME *ltime, my_time_flags_t fuzzy_date)
 
bool get_arg0_time (MYSQL_TIME *ltime)
 
bool is_null () override
 The method allows to determine nullness of a complex expression without fully evaluating it, instead of calling val*() then checking null_value. More...
 
void signal_divide_by_null ()
 
void signal_invalid_argument_for_log ()
 
Fieldtmp_table_field (TABLE *t_arg) override
 
Itemget_tmp_table_item (THD *thd) override
 If an Item is materialized in a temporary table, a different Item may have to be used in the part of the query that runs after the materialization. More...
 
my_decimalval_decimal (my_decimal *) override
 
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)
 
Itemreplace_func_call (uchar *) override
 
bool walk (Item_processor processor, enum_walk walk, uchar *arg) override
 Traverses a tree of Items in prefix and/or postfix order. More...
 
Itemtransform (Item_transformer transformer, uchar *arg) override
 Transform an Item_func object with a transformer callback function. More...
 
Itemcompile (Item_analyzer analyzer, uchar **arg_p, Item_transformer transformer, uchar *arg_t) override
 Compile Item_func object with a processor and a transformer callback functions. More...
 
void traverse_cond (Cond_traverser traverser, void *arg, traverse_order order) override
 
bool replace_equal_field_checker (uchar **arg) override
 
Itemreplace_equal_field (uchar *arg) override
 
virtual bool allow_replacement (Item_field *const original, Item *const subst)
 Check whether a function allows replacement of a field with another item: In particular, a replacement that changes the metadata of some Item from non-nullable to nullable is not allowed. More...
 
double check_float_overflow (double value)
 Throw an error if the input double number is not finite, i.e. More...
 
longlong check_integer_overflow (longlong value, bool val_unsigned)
 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. More...
 
int check_decimal_overflow (int error)
 Throw an error if the error code of a DECIMAL operation is E_DEC_OVERFLOW. More...
 
bool has_timestamp_args ()
 
bool has_date_args ()
 
bool has_time_args ()
 
bool has_datetime_args ()
 
bool check_valid_arguments_processor (uchar *) override
 
Itemgc_subst_transformer (uchar *arg) override
 Transformer function for GC substitution. More...
 
bool resolve_type (THD *thd) override
 Resolve type-related information for this item, such as result field type, maximum size, precision, signedness, character set and collation. More...
 
virtual enum_const_item_cache can_cache_json_arg (Item *arg)
 Whether an arg of a JSON function can be cached to avoid repetitive string->JSON conversion. More...
 
virtual bool contains_only_equi_join_condition () const
 Whether this Item is an equi-join condition. More...
 
- Public Member Functions inherited from Item_result_field
 Item_result_field ()=default
 
 Item_result_field (const POS &pos)
 
 Item_result_field (THD *thd, const Item_result_field *item)
 
Fieldget_tmp_table_field () override
 If this Item is being materialized into a temporary table, returns the field that is being materialized into. More...
 
void set_result_field (Field *field) override
 
bool is_result_field () const override
 
Fieldget_result_field () const override
 
void cleanup () override
 Called for every Item after use (preparation and execution). More...
 
bool mark_field_in_map (uchar *arg) override
 Mark underlying field in read or write map of a table. More...
 
longlong llrint_with_overflow_check (double realval)
 
void raise_numeric_overflow (const char *type_name)
 
double raise_float_overflow ()
 
longlong raise_integer_overflow ()
 
int raise_decimal_overflow ()
 
- Public Member Functions inherited from Item
 Item (const Item &)=delete
 
void operator= (Item &)=delete
 
 Item ()
 Item constructor for general use. More...
 
 Item (THD *thd, const Item *item)
 Constructor used by Item_field, Item_ref & aggregate functions. More...
 
 Item (const POS &)
 Parse-time context-independent constructor. More...
 
 ~Item () override=default
 
virtual bool itemize (Parse_context *pc, Item **res) final
 The same as contextualize() but with additional parameter. More...
 
void rename (char *new_name)
 rename item (used for views, cleanup() return original name). More...
 
void init_make_field (Send_field *tmp_field, enum enum_field_types type)
 
virtual void notify_removal ()
 Called when an item has been removed, can be used to notify external objects about the removal, e.g subquery predicates that are part of the sj_candidates container. More...
 
virtual void make_field (Send_field *field)
 
virtual Fieldmake_string_field (TABLE *table) const
 Create a field to hold a string value from an item. More...
 
void quick_fix_field ()
 
virtual void set_can_use_prefix_key ()
 
bool propagate_type (THD *thd, enum_field_types def=MYSQL_TYPE_VARCHAR, bool pin=false, bool inherit=false)
 Wrapper for easier calling of propagate_type(const Type_properties &). More...
 
virtual void mark_json_as_scalar ()
 For Items with data type JSON, mark that a string argument is treated as a scalar JSON value. More...
 
virtual std::optional< ContainedSubqueryget_contained_subquery (const Query_block *outer_query_block)
 If this item represents a IN/ALL/ANY/comparison_operator subquery, return that (along with data on how it will be executed). More...
 
type_conversion_status save_in_field_no_warnings (Field *field, bool no_conversions)
 Save the item into a field but do not emit any warnings. More...
 
type_conversion_status save_in_field (Field *field, bool no_conversions)
 Save a temporal value in packed longlong format into a Field. More...
 
void save_in_field_no_error_check (Field *field, bool no_conversions)
 A slightly faster value of save_in_field() that returns no error value (you will need to check thd->is_error() yourself), and does not support saving into hidden fields for functional indexes. More...
 
virtual void save_org_in_field (Field *field)
 
virtual bool send (Protocol *protocol, String *str)
 This is only called from items that is not of type item_field. More...
 
bool evaluate (THD *thd, String *str)
 Evaluate scalar item, possibly using the supplied buffer. More...
 
const Itemunwrap_for_eq () const
 Unwrap an Item argument so that Item::eq() can see the "real" item, and not just the wrapper. More...
 
virtual Item_result result_type () const
 
virtual Item_result numeric_context_result_type () const
 Result type when an item appear in a numeric context. More...
 
Item_result temporal_with_date_as_number_result_type () const
 Similar to result_type() but makes DATE, DATETIME, TIMESTAMP pretend to be numbers rather than strings. More...
 
virtual void set_data_type_inherited ()
 Set data type for item as inherited. More...
 
virtual void pin_data_type ()
 Pin the data type for the item. More...
 
enum_field_types data_type () const
 Retrieve the derived data type of the Item. More...
 
virtual enum_field_types actual_data_type () const
 Retrieve actual data type for an item. More...
 
virtual enum_field_types default_data_type () const
 Get the default data (output) type for the specific item. More...
 
void set_data_type (enum_field_types data_type)
 Set the data type of the current Item. More...
 
void set_data_type_null ()
 
void set_data_type_bool ()
 
void set_data_type_int (enum_field_types type, bool unsigned_prop, uint32 max_width)
 Set the data type of the Item to be a specific integer type. More...
 
void set_data_type_longlong ()
 Set the data type of the Item to be longlong. More...
 
void set_data_type_decimal (uint8 precision, uint8 scale)
 Set the data type of the Item to be decimal. More...
 
void set_data_type_double ()
 Set the data type of the Item to be double precision floating point. More...
 
void set_data_type_float ()
 Set the data type of the Item to be single precision floating point. More...
 
void set_data_type_string (uint32 max_l)
 Set the Item to be variable length string. More...
 
void set_data_type_string (ulonglong max_char_length_arg)
 Set the Item to be variable length string. More...
 
void set_data_type_string (uint32 max_l, const CHARSET_INFO *cs)
 Set the Item to be variable length string. More...
 
void set_data_type_string (uint32 max_l, const DTCollation &coll)
 Set the Item to be variable length string. More...
 
void set_data_type_char (uint32 max_l)
 Set the Item to be fixed length string. More...
 
void set_data_type_char (uint32 max_l, const CHARSET_INFO *cs)
 Set the Item to be fixed length string. More...
 
void set_data_type_blob (enum_field_types type, uint32 max_l)
 Set the Item to be of BLOB type. More...
 
void set_data_type_date ()
 Set all type properties for Item of DATE type. More...
 
void set_data_type_time (uint8 fsp)
 Set all type properties for Item of TIME type. More...
 
void set_data_type_datetime (uint8 fsp)
 Set all properties for Item of DATETIME type. More...
 
void set_data_type_timestamp (uint8 fsp)
 Set all properties for Item of TIMESTAMP type. More...
 
void set_data_type_vector (uint32 max_l)
 Set the data type of the Item to be VECTOR. More...
 
void set_data_type_geometry ()
 Set the data type of the Item to be GEOMETRY. More...
 
void set_data_type_json ()
 Set the data type of the Item to be JSON. More...
 
void set_data_type_year ()
 Set the data type of the Item to be YEAR. More...
 
void set_data_type_bit (uint32 max_bits)
 Set the data type of the Item to be bit. More...
 
void set_data_type_from_item (const Item *item)
 Set data type properties of the item from the properties of another item. More...
 
virtual TYPELIBget_typelib () const
 Get the typelib information for an item of type set or enum. More...
 
virtual Item_result cast_to_int_type () const
 
bool aggregate_type (const char *name, Item **items, uint count)
 Aggregates data types from array of items into current item. More...
 
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 ()
 Return date value of item in packed longlong format. More...
 
virtual longlong val_time_temporal ()
 Return time value of item in packed longlong format. More...
 
longlong val_temporal_by_field_type ()
 Return date or time value of item in packed longlong format, depending on item field type. More...
 
longlong int_sort_key ()
 Produces a key suitable for filesort. More...
 
longlong val_temporal_with_round (enum_field_types type, uint8 dec)
 Get date or time value in packed longlong format. More...
 
ulonglong val_uint ()
 
virtual Stringval_str (String *str)=0
 
virtual Stringval_str_ascii (String *str)
 
virtual bool val_bool ()
 
virtual bool val_json (Json_wrapper *result)
 Get a JSON value from an Item. More...
 
virtual float get_filtering_effect (THD *thd, table_map filter_for_table, table_map read_tables, const MY_BITMAP *fields_to_ignore, double rows_in_table)
 Calculate the filter contribution that is relevant for table 'filter_for_table' for this item. More...
 
bool error_json ()
 Get the value to return from val_json() in case of errors. More...
 
bool get_date_from_non_temporal (MYSQL_TIME *ltime, my_time_flags_t fuzzydate)
 Convert a non-temporal type to date. More...
 
bool get_time_from_non_temporal (MYSQL_TIME *ltime)
 Convert a non-temporal type to time. More...
 
my_decimalerror_decimal (my_decimal *decimal_value)
 Get the value to return from val_decimal() in case of errors. More...
 
Stringerror_str ()
 Get the value to return from val_str() in case of errors. More...
 
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 bool basic_const_item () const
 Returns true if this is a simple constant item like an integer, not a constant expression. More...
 
bool may_eval_const_item (const THD *thd) const
 
virtual Itemclone_item () const
 
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 ()
 TIME precision of the item: 0..6. More...
 
virtual uint datetime_precision ()
 DATETIME precision of the item: 0..6. More...
 
bool const_item () const
 Returns true if item is constant, regardless of query evaluation state. More...
 
bool const_for_execution () const
 Returns true if item is constant during one query execution. More...
 
bool may_evaluate_const (const THD *thd) const
 Return true if this is a const item that may be evaluated in the current phase of statement processing. More...
 
bool is_non_deterministic () const
 
bool is_outer_reference () const
 
void print_item_w_name (const THD *thd, String *, enum_query_type query_type) const
 
void print_for_order (const THD *thd, String *str, enum_query_type query_type, const char *used_alias) const
 Prints the item when it's part of ORDER BY and GROUP BY. More...
 
bool split_sum_func2 (THD *thd, Ref_item_array ref_item_array, mem_root_deque< Item * > *fields, Item **ref, bool skip_registered)
 
virtual bool get_date (MYSQL_TIME *ltime, my_time_flags_t fuzzydate)=0
 
virtual bool get_time (MYSQL_TIME *ltime)=0
 
virtual bool get_timeval (my_timeval *tm, int *warnings)
 Get timestamp in "struct timeval" format. More...
 
bool update_null_value ()
 Make sure the null_value member has a correct value. More...
 
virtual void apply_is_true ()
 Apply the IS TRUE truth property, meaning that an UNKNOWN result and a FALSE result are treated the same. More...
 
virtual bool is_bool_func () const
 
virtual void no_rows_in_result ()
 
virtual Itemcopy_or_same (THD *)
 
virtual Itemcopy_andor_structure (THD *)
 
virtual Itemreal_item ()
 
virtual const Itemreal_item () const
 
virtual const CHARSET_INFOcompare_collation () const
 
virtual const CHARSET_INFOcharset_for_protocol ()
 
template<class T >
auto walk_helper_thunk (uchar *arg)
 
template<class T >
auto analyze_helper_thunk (uchar **arg)
 See CompileItem. More...
 
virtual bool intro_version (uchar *)
 
bool cleanup_processor (uchar *)
 cleanup() item if it is resolved ('fixed'). More...
 
virtual bool collect_item_field_processor (uchar *)
 
virtual bool collect_item_field_or_ref_processor (uchar *)
 
virtual bool collect_outer_field_processor (uchar *)
 
virtual bool collect_item_field_or_view_ref_processor (uchar *)
 Collects fields and view references that have the qualifying table in the specified query block. More...
 
virtual bool add_field_to_set_processor (uchar *)
 Item::walk function. More...
 
virtual bool visitor_processor (uchar *arg)
 A processor to handle the select lex visitor framework. More...
 
virtual bool add_field_to_cond_set_processor (uchar *)
 Item::walk function. More...
 
virtual bool remove_column_from_bitmap (uchar *arg)
 Visitor interface for removing all column expressions (Item_field) in this expression tree from a bitmap. More...
 
virtual bool find_item_in_field_list_processor (uchar *)
 
virtual bool change_context_processor (uchar *)
 
virtual bool find_item_processor (uchar *arg)
 
virtual bool find_field_processor (uchar *)
 Is this an Item_field which references the given Field argument? More...
 
virtual bool cast_incompatible_args (uchar *)
 Wrap incompatible arguments in CAST nodes to the expected data types. More...
 
virtual bool reset_wf_state (uchar *arg)
 Reset execution state for such window function types as determined by arg. More...
 
virtual bool used_tables_for_level (uchar *arg)
 Return used table information for the specified query block (level). More...
 
virtual bool check_column_privileges (uchar *thd)
 Check privileges. More...
 
virtual bool inform_item_in_cond_of_tab (uchar *)
 
virtual void bind_fields ()
 Bind objects from the current execution context to field objects in item trees. More...
 
virtual bool clean_up_after_removal (uchar *arg)
 Clean up after removing the item from the item tree. More...
 
virtual bool aggregate_check_distinct (uchar *)
 
virtual bool aggregate_check_group (uchar *)
 
virtual bool is_strong_side_column_not_in_fd (uchar *)
 
virtual bool is_column_not_in_fd (uchar *)
 
virtual Bool3 local_column (const Query_block *) const
 
virtual bool collect_scalar_subqueries (uchar *)
 
virtual bool collect_grouped_aggregates (uchar *)
 
virtual bool collect_subqueries (uchar *)
 
virtual bool update_depended_from (uchar *)
 
virtual bool has_aggregate_ref_in_group_by (uchar *)
 Check if an aggregate is referenced from within the GROUP BY clause of the query block in which it is aggregated. More...
 
bool visit_all_analyzer (uchar **)
 
virtual bool cache_const_expr_analyzer (uchar **cache_item)
 Check if an item is a constant one and can be cached. More...
 
Itemcache_const_expr_transformer (uchar *item)
 Cache item if needed. More...
 
virtual bool equality_substitution_analyzer (uchar **)
 
virtual Itemequality_substitution_transformer (uchar *)
 
virtual bool check_partition_func_processor (uchar *)
 Check if a partition function is allowed. More...
 
virtual bool subst_argument_checker (uchar **arg)
 
virtual bool explain_subquery_checker (uchar **)
 
virtual Itemexplain_subquery_propagator (uchar *)
 
virtual Itemequal_fields_propagator (uchar *)
 
virtual bool disable_constant_propagation (uchar *)
 
virtual bool check_gcol_depend_default_processor (uchar *args)
 Check if a generated expression depends on DEFAULT function with specific column name as argument. More...
 
virtual Itemreplace_with_derived_expr (uchar *arg)
 Assuming this expression is part of a condition that would be pushed to the WHERE clause of a materialized derived table, replace, in this expression, each derived table's column with a clone of the expression lying under it in the derived table's definition. More...
 
virtual Itemreplace_with_derived_expr_ref (uchar *arg)
 Assuming this expression is part of a condition that would be pushed to the HAVING clause of a materialized derived table, replace, in this expression, each derived table's column with a reference to the expression lying under it in the derived table's definition. More...
 
virtual Itemreplace_view_refs_with_clone (uchar *arg)
 Assuming this expression is part of a condition that would be pushed to a materialized derived table, replace, in this expression, each view reference with a clone of the expression in merged derived table's definition. More...
 
virtual Itemthis_item ()
 
virtual const Itemthis_item () const
 
virtual Item ** this_item_addr (THD *, Item **addr_arg)
 
virtual uint cols () const
 
virtual Itemelement_index (uint)
 
virtual Item ** addr (uint)
 
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) const
 Create a field based on field_type of argument. More...
 
virtual Item_fieldfield_for_view_update ()
 
virtual Itemtruth_transformer (THD *thd, Bool_test test)
 Informs an item that it is wrapped in a truth test, in case it wants to transforms itself to implement this test by itself. More...
 
virtual Itemupdate_value_transformer (uchar *)
 
virtual Itemreplace_scalar_subquery (uchar *)
 When walking the item tree seeing an Item_singlerow_subselect matching a target, replace it with a substitute field used when transforming scalar subqueries into derived tables. More...
 
virtual Itemreplace_item_field (uchar *)
 Transform processor used by Query_block::transform_grouped_to_derived to replace fields which used to be at the transformed query block with corresponding fields in the new derived table containing the grouping operation of the original transformed query block. More...
 
virtual Itemreplace_item_view_ref (uchar *)
 
virtual Itemreplace_aggregate (uchar *)
 
virtual Itemreplace_outer_ref (uchar *)
 
virtual bool update_aggr_refs (uchar *)
 A walker processor overridden by Item_aggregate_ref, q.v. More...
 
Itemconvert_charset (THD *thd, const CHARSET_INFO *tocs, bool ignore_errors=false)
 Convert constant string in this object into the specified character set. More...
 
void delete_self ()
 Delete this item. More...
 
virtual bool is_splocal () const
 
virtual Settable_routine_parameterget_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
 Check whether this and the given item has compatible comparison context. More...
 
virtual Field::geometry_type get_geometry_type () const
 
Stringcheck_well_formed_result (String *str, bool send_error, bool truncate)
 Verifies that the input string is well-formed according to its character set. More...
 
bool eq_by_collation (Item *item, const CHARSET_INFO *cs)
 Compare two items using a given collation. More...
 
CostOfItem cost () const
 
uint32 max_char_length () const
 
uint32 max_char_length (const CHARSET_INFO *cs) const
 
void fix_char_length (uint32 max_char_length_arg)
 
virtual bool is_outer_field () const
 
bool is_blob_field () const
 Check if an item either is a blob field, or will be represented as a BLOB field if a field is created based on this item. More...
 
uint reference_count () const
 
void increment_ref_count ()
 Increment reference count. More...
 
uint decrement_ref_count ()
 Decrement reference count. More...
 
bool has_subquery () const
 
bool has_stored_program () const
 
bool has_aggregation () const
 
void set_aggregation ()
 Set the "has aggregation" property. More...
 
void reset_aggregation ()
 Reset the "has aggregation" property. More...
 
bool has_wf () const
 
void set_wf ()
 Set the "has window function" property. More...
 
bool has_grouping_set_dep () const
 
void set_group_by_modifier ()
 Set the property: this item (tree) contains a reference to a GROUP BY modifier (such as ROLLUP) More...
 
bool has_grouping_func () const
 
void set_grouping_func ()
 Set the property: this item is a call to GROUPING. More...
 
virtual bool created_by_in2exists () const
 Whether this Item was created by the IN->EXISTS subquery transformation. More...
 
void mark_subqueries_optimized_away ()
 
virtual bool gc_subst_analyzer (uchar **)
 Analyzer function for GC substitution. More...
 
virtual bool replace_field_processor (uchar *)
 A processor that replaces any Fields with a Create_field_wrapper. More...
 
bool can_be_substituted_for_gc (bool array=false) const
 Check if this item is of a type that is eligible for GC substitution. More...
 
void aggregate_float_properties (enum_field_types type, Item **items, uint nitems)
 Set max_length and decimals of function if function is floating point and result length/precision depends on argument ones. More...
 
void aggregate_decimal_properties (Item **items, uint nitems)
 Set data type, precision and scale of item of type decimal from list of items. More...
 
void aggregate_temporal_properties (enum_field_types type, Item **items, uint nitems)
 Set data type and fractional seconds precision for temporal functions. More...
 
bool aggregate_string_properties (enum_field_types type, const char *name, Item **items, uint nitems)
 Aggregate string properties (character set, collation and maximum length) for string function. More...
 
void aggregate_bit_properties (Item **items, uint nitems)
 Set data type and properties of a BIT column. More...
 
virtual bool repoint_const_outer_ref (uchar *arg)
 This function applies only to Item_field objects referred to by an Item_ref object that has been marked as a const_item. More...
 
virtual bool strip_db_table_name_processor (uchar *)
 
virtual void compute_cost (CostOfItem *root_cost) const
 Compute the cost of evaluating this Item. More...
 
bool is_abandoned () const
 
bool is_nullable () const
 
void set_nullable (bool nullable)
 
virtual bool supports_partial_update (const Field_json *field) const
 Check if this expression can be used for partial update of a given JSON column. More...
 
virtual bool returns_array () const
 Whether the item returns array of its data type. More...
 
virtual void allow_array_cast ()
 A helper function to ensure proper usage of CAST(. More...
 
- Public Member Functions inherited from Parse_tree_node_tmpl< Context >
virtual ~Parse_tree_node_tmpl ()=default
 
bool is_contextualized () const
 
virtual bool contextualize (Context *pc) final
 
void error (Context *pc, const POS &pos) const
 syntax_error() function replacement for deferred reporting of syntax errors More...
 
void error (Context *pc, const POS &pos, const char *msg) const
 syntax_error() function replacement for deferred reporting of syntax errors More...
 
void errorf (Context *pc, const POS &pos, const char *format,...) const
 syntax_error() function replacement for deferred reporting of syntax errors More...
 

Public Attributes

uint arg_count
 How many arguments in 'args'. More...
 
- Public Attributes inherited from Item
Itemnext_free
 Intrusive list pointer for free list. More...
 
DTCollation collation
 Character set and collation properties assigned for this Item. More...
 
Item_name_string item_name
 Name from query. More...
 
Item_name_string orig_name
 Original item name (if it was renamed) More...
 
uint32 max_length
 Maximum length of result of evaluating this item, in number of bytes. More...
 
item_marker marker
 This member has several successive meanings, depending on the phase we're in (. More...
 
Item_result cmp_context
 Comparison context. More...
 
bool fixed
 True if item has been resolved. More...
 
uint8 decimals
 Number of decimals in result when evaluating this item. More...
 
bool null_value
 True if item is null. More...
 
bool unsigned_flag
 
bool m_is_window_function
 True if item represents window func. More...
 
bool hidden {false}
 If the item is in a SELECT list (Query_block::fields) and hidden is true, the item wasn't actually in the list as given by the user (it was added by the optimizer, to e.g. More...
 
bool m_in_check_constraint_exec_ctx {false}
 True if item is a top most element in the expression being evaluated for a check constraint. More...
 
- Public Attributes inherited from Parse_tree_node_tmpl< Context >
POS m_pos
 

Protected Member Functions

bool param_type_uses_non_param (THD *thd, enum_field_types def=MYSQL_TYPE_VARCHAR)
 
bool param_type_is_default (THD *thd, uint start, uint end, uint step, enum_field_types def)
 For arguments of this Item_func ("args" array), in range [start, start+step, start+2*step,...,end[ : if they're a PS parameter with invalid (not known) type, give them default type "def". More...
 
bool param_type_is_default (THD *thd, uint start, uint end, enum_field_types def=MYSQL_TYPE_VARCHAR)
 
bool param_type_is_rejected (uint start, uint end)
 For arguments of this Item_func ("args" array), in range [start,end[ : sends error if they're a dynamic parameter. More...
 
const Item_fieldcontributes_to_filter (THD *thd, table_map read_tables, table_map filter_for_table, const MY_BITMAP *fields_to_ignore) const
 Whether or not an item should contribute to the filtering effect (. More...
 
virtual bool may_have_named_parameters () const
 Named parameters are allowed in a parameter list. More...
 
bool is_non_const_over_literals (uchar *) override
 
bool check_function_as_value_generator (uchar *checker_args) override
 Check if this item is allowed for a virtual column or inside a default expression. More...
 
bool is_valid_for_pushdown (uchar *arg) override
 Check if all the columns present in this expression are from the derived table. More...
 
bool check_column_in_window_functions (uchar *arg) override
 Check if all the columns present in this expression are present in PARTITION clause of window functions of the derived table. More...
 
bool check_column_in_group_by (uchar *arg) override
 Check if all the columns present in this expression are present in GROUP BY clause of the derived table. More...
 
longlong val_int_from_real ()
 
- Protected Member Functions inherited from Item
Stringmake_empty_result ()
 Sets the result value of the function an empty string, using the current character set. More...
 
bool skip_itemize (Item **res)
 Helper function to skip itemize() for grammar-allocated items. More...
 
virtual type_conversion_status save_in_field_inner (Field *field, bool no_conversions)
 Helper function which does all of the work for save_in_field(Field*, bool), except some error checking common to all subclasses, which is performed by save_in_field() itself. More...
 
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 ()
 
longlong val_int_from_string ()
 
double val_real_from_decimal ()
 
double val_real_from_string ()
 
bool error_bool ()
 Get the value to return from val_bool() in case of errors. More...
 
int error_int ()
 Get the value to return from val_int() in case of errors. More...
 
double error_real ()
 Get the value to return from val_real() in case of errors. More...
 
bool error_date ()
 Get the value to return from get_date() in case of errors. More...
 
bool error_time ()
 Get the value to return from get_time() in case of errors. More...
 
Stringnull_return_str ()
 Gets the value to return from val_str() when returning a NULL value. More...
 
bool get_date_from_string (MYSQL_TIME *ltime, my_time_flags_t flags)
 Convert val_str() to date in MYSQL_TIME. More...
 
bool get_date_from_real (MYSQL_TIME *ltime, my_time_flags_t flags)
 Convert val_real() to date in MYSQL_TIME. More...
 
bool get_date_from_decimal (MYSQL_TIME *ltime, my_time_flags_t flags)
 Convert val_decimal() to date in MYSQL_TIME. More...
 
bool get_date_from_int (MYSQL_TIME *ltime, my_time_flags_t flags)
 Convert val_int() to date in MYSQL_TIME. More...
 
bool get_date_from_time (MYSQL_TIME *ltime)
 Convert get_time() from time to date in MYSQL_TIME. More...
 
bool get_date_from_numeric (MYSQL_TIME *ltime, my_time_flags_t fuzzydate)
 Convert a numeric type to date. More...
 
bool get_time_from_string (MYSQL_TIME *ltime)
 Convert val_str() to time in MYSQL_TIME. More...
 
bool get_time_from_real (MYSQL_TIME *ltime)
 Convert val_real() to time in MYSQL_TIME. More...
 
bool get_time_from_decimal (MYSQL_TIME *ltime)
 Convert val_decimal() to time in MYSQL_TIME. More...
 
bool get_time_from_int (MYSQL_TIME *ltime)
 Convert val_int() to time in MYSQL_TIME. More...
 
bool get_time_from_date (MYSQL_TIME *ltime)
 Convert date to time. More...
 
bool get_time_from_datetime (MYSQL_TIME *ltime)
 Convert datetime to time. More...
 
bool get_time_from_numeric (MYSQL_TIME *ltime)
 Convert a numeric type to time. More...
 
virtual longlong val_date_temporal_at_utc ()
 
virtual longlong val_time_temporal_at_utc ()
 
void set_accum_properties (const Item *item)
 Set accumulated properties for an Item. More...
 
void add_accum_properties (const Item *item)
 Add more accumulated properties to an Item. More...
 
void set_subquery ()
 Set the "has subquery" property. More...
 
void set_stored_program ()
 Set the "has stored program" property. More...
 
- Protected Member Functions inherited from Parse_tree_node_tmpl< Context >
 Parse_tree_node_tmpl ()=delete
 
 Parse_tree_node_tmpl (const POS &pos)
 
 Parse_tree_node_tmpl (const POS &start_pos, const POS &end_pos)
 
bool begin_parse_tree (Show_parse_tree *tree)
 
bool end_parse_tree (Show_parse_tree *tree)
 
virtual bool do_contextualize (Context *pc)
 Do all context-sensitive things and mark the node as contextualized. More...
 
virtual void add_json_info (Json_object *json_obj)
 Add all the node-specific json fields. More...
 

Protected Attributes

Item ** args
 Array of pointers to arguments. More...
 
bool null_on_null {true}
 Affects how to determine that NULL argument implies a NULL function return. More...
 
uint allowed_arg_cols {1}
 
table_map used_tables_cache {0}
 Value used in calculation of result of used_tables() More...
 
table_map not_null_tables_cache {0}
 Value used in calculation of result of not_null_tables() More...
 
- Protected Attributes inherited from Item_result_field
Fieldresult_field {nullptr}
 
- Protected Attributes inherited from Item
String str_value
 str_values's main purpose is to cache the value in save_in_field More...
 
uint8 m_accum_properties
 

Private Member Functions

bool alloc_args (MEM_ROOT *mem_root, unsigned num_args)
 Allocates space for the given number of arguments, if needed. More...
 

Private Attributes

Itemm_embedded_arguments [2]
 

Friends

class udf_handler
 

Additional Inherited Members

- Static Public Member Functions inherited from Item
static void * operator new (size_t size) noexcept
 
static void * operator new (size_t size, MEM_ROOT *mem_root, const std::nothrow_t &arg=std::nothrow) noexcept
 
static void operator delete (void *ptr, size_t size)
 
static void operator delete (void *, MEM_ROOT *, const std::nothrow_t &) noexcept
 
static enum_field_types result_to_type (Item_result result)
 
static Item_result type_to_result (enum_field_types type)
 
static enum_field_types type_for_variable (enum_field_types src_type)
 Provide data type for a user or system variable, based on the type of the item that is assigned to the variable. More...
 
static enum_field_types string_field_type (uint32 max_bytes)
 Determine correct string field type, based on string length. More...
 
static const CHARSET_INFOdefault_charset ()
 
- Static Public Member Functions inherited from Parse_tree_node_tmpl< Context >
static void * operator new (size_t size, MEM_ROOT *mem_root, const std::nothrow_t &arg=std::nothrow) noexcept
 
static void operator delete (void *ptr, size_t size)
 
static void operator delete (void *, MEM_ROOT *, const std::nothrow_t &) noexcept
 
- Static Protected Member Functions inherited from Item
static bool bit_func_returns_binary (const Item *a, const Item *b)
 
static bool mark_field_in_map (Mark_field *mark_field, Field *field)
 Helper function for mark_field_in_map(uchar *arg). More...
 
- Static Protected Attributes inherited from Item
static constexpr uint8 PROP_SUBQUERY = 0x01
 Set of properties that are calculated by accumulation from underlying items. More...
 
static constexpr uint8 PROP_STORED_PROGRAM = 0x02
 
static constexpr uint8 PROP_AGGREGATION = 0x04
 
static constexpr uint8 PROP_WINDOW_FUNCTION = 0x08
 
static constexpr uint8 PROP_HAS_GROUPING_SET_DEP = 0x10
 Set if the item or one or more of the underlying items contains a GROUP BY modifier (such as ROLLUP). More...
 
static constexpr uint8 PROP_GROUPING_FUNC = 0x20
 Set if the item or one or more of the underlying items is a GROUPING function. More...
 

Member Enumeration Documentation

◆ Functype

Enumerator
UNKNOWN_FUNC 
EQ_FUNC 
EQUAL_FUNC 
NE_FUNC 
LT_FUNC 
LE_FUNC 
GE_FUNC 
GT_FUNC 
FT_FUNC 
MATCH_FUNC 
LIKE_FUNC 
ISNULL_FUNC 
ISNOTNULL_FUNC 
ISTRUTH_FUNC 
COND_AND_FUNC 
COND_OR_FUNC 
XOR_FUNC 
BETWEEN 
IN_FUNC 
MULTI_EQ_FUNC 
INTERVAL_FUNC 
ISNOTNULLTEST_FUNC 
SP_EQUALS_FUNC 
SP_DISJOINT_FUNC 
SP_DISTANCE_FUNC 
SP_INTERSECTS_FUNC 
SP_TOUCHES_FUNC 
SP_CROSSES_FUNC 
SP_WITHIN_FUNC 
SP_CONTAINS_FUNC 
SP_COVEREDBY_FUNC 
SP_COVERS_FUNC 
SP_OVERLAPS_FUNC 
SP_STARTPOINT 
SP_ENDPOINT 
SP_EXTERIORRING 
SP_POINTN 
SP_GEOMETRYN 
SP_INTERIORRINGN 
NOT_FUNC 
NOT_ALL_FUNC 
NOW_FUNC 
FROM_DAYS_FUNC 
TRIG_COND_FUNC 
SUSERVAR_FUNC 
GUSERVAR_FUNC 
COLLATE_FUNC 
EXTRACT_FUNC 
TYPECAST_FUNC 
FUNC_SP 
UDF_FUNC 
NEG_FUNC 
GSYSVAR_FUNC 
GROUPING_FUNC 
ROLLUP_GROUP_ITEM_FUNC 
TABLE_FUNC 
DD_INTERNAL_FUNC 
PLUS_FUNC 
MINUS_FUNC 
MUL_FUNC 
DIV_FUNC 
CEILING_FUNC 
ROUND_FUNC 
TRUNCATE_FUNC 
SQRT_FUNC 
ABS_FUNC 
POW_FUNC 
SIGN_FUNC 
FLOOR_FUNC 
LOG_FUNC 
LN_FUNC 
LOG10_FUNC 
SIN_FUNC 
TAN_FUNC 
COS_FUNC 
COT_FUNC 
DEGREES_FUNC 
RADIANS_FUNC 
EXP_FUNC 
ASIN_FUNC 
ATAN_FUNC 
ACOS_FUNC 
MOD_FUNC 
IF_FUNC 
NULLIF_FUNC 
CASE_FUNC 
YEAR_FUNC 
YEARWEEK_FUNC 
MAKEDATE_FUNC 
MAKETIME_FUNC 
MONTH_FUNC 
MONTHNAME_FUNC 
DAY_FUNC 
DAYNAME_FUNC 
TO_DAYS_FUNC 
TO_SECONDS_FUNC 
DATE_FUNC 
HOUR_FUNC 
MINUTE_FUNC 
SECOND_FUNC 
MICROSECOND_FUNC 
DAYOFYEAR_FUNC 
ADDTIME_FUNC 
QUARTER_FUNC 
WEEK_FUNC 
WEEKDAY_FUNC 
DATEADD_FUNC 
FROM_UNIXTIME_FUNC 
CONVERT_TZ_FUNC 
LAST_DAY_FUNC 
UNIX_TIMESTAMP_FUNC 
TIME_TO_SEC_FUNC 
TIMESTAMPDIFF_FUNC 
DATETIME_LITERAL 
GREATEST_FUNC 
COALESCE_FUNC 
LEAST_FUNC 
JSON_CONTAINS 
JSON_OVERLAPS 
JSON_UNQUOTE_FUNC 
MEMBER_OF_FUNC 
STRCMP_FUNC 
TRUE_FUNC 
FALSE_FUNC 
SYSDATE_FUNC 
TIMEDIFF_FUNC 
PERIODADD_FUNC 
PERIODDIFF_FUNC 
SEC_TO_TIME_FUNC 
GET_FORMAT_FUNC 
ANY_VALUE_FUNC 
JSON_LENGTH_FUNC 
JSON_DEPTH_FUNC 
JSON_EXTRACT_FUNC 
JSON_OBJECT_FUNC 
JSON_ARRAY_FUNC 
JSON_VALID_FUNC 
JSON_TYPE_FUNC 
JSON_PRETTY_FUNC 
JSON_QUOTE_FUNC 
JSON_CONTAINS_PATH_FUNC 
JSON_STORAGE_SIZE_FUNC 
JSON_STORAGE_FREE_FUNC 
JSON_VALUE_FUNC 
JSON_SEARCH_FUNC 
JSON_SCHEMA_VALIDATION_REPORT_FUNC 
JSON_SCHEMA_VALID_FUNC 

◆ optimize_type

Enumerator
OPTIMIZE_NONE 
OPTIMIZE_KEY 
OPTIMIZE_OP 
OPTIMIZE_NULL 
OPTIMIZE_EQUAL 

Constructor & Destructor Documentation

◆ Item_func() [1/17]

Item_func::Item_func ( )
inline

◆ Item_func() [2/17]

Item_func::Item_func ( const POS pos)
inlineexplicit

◆ Item_func() [3/17]

Item_func::Item_func ( Item a)
inline

◆ Item_func() [4/17]

Item_func::Item_func ( const POS pos,
Item a 
)
inline

◆ Item_func() [5/17]

Item_func::Item_func ( Item a,
Item b 
)
inline

◆ Item_func() [6/17]

Item_func::Item_func ( const POS pos,
Item a,
Item b 
)
inline

◆ Item_func() [7/17]

Item_func::Item_func ( Item a,
Item b,
Item c 
)
inline

◆ Item_func() [8/17]

Item_func::Item_func ( const POS pos,
Item a,
Item b,
Item c 
)
inline

◆ Item_func() [9/17]

Item_func::Item_func ( Item a,
Item b,
Item c,
Item d 
)
inline

◆ Item_func() [10/17]

Item_func::Item_func ( const POS pos,
Item a,
Item b,
Item c,
Item d 
)
inline

◆ Item_func() [11/17]

Item_func::Item_func ( Item a,
Item b,
Item c,
Item d,
Item e 
)
inline

◆ Item_func() [12/17]

Item_func::Item_func ( const POS pos,
Item a,
Item b,
Item c,
Item d,
Item e 
)
inline

◆ Item_func() [13/17]

Item_func::Item_func ( Item a,
Item b,
Item c,
Item d,
Item e,
Item f 
)
inline

◆ Item_func() [14/17]

Item_func::Item_func ( const POS pos,
Item a,
Item b,
Item c,
Item d,
Item e,
Item f 
)
inline

◆ Item_func() [15/17]

Item_func::Item_func ( mem_root_deque< Item * > *  list)
inlineexplicit

◆ Item_func() [16/17]

Item_func::Item_func ( const POS pos,
PT_item_list opt_list 
)

◆ Item_func() [17/17]

Item_func::Item_func ( THD thd,
const Item_func item 
)

Member Function Documentation

◆ agg_arg_charsets()

bool Item_func::agg_arg_charsets ( DTCollation c,
Item **  items,
uint  nitems,
uint  flags,
int  item_sep 
)
inline

◆ agg_arg_charsets_for_comparison()

bool Item_func::agg_arg_charsets_for_comparison ( DTCollation c,
Item **  items,
uint  nitems,
int  item_sep = 1 
)
inline

◆ agg_arg_charsets_for_string_result()

bool Item_func::agg_arg_charsets_for_string_result ( DTCollation c,
Item **  items,
uint  nitems,
int  item_sep = 1 
)
inline

◆ alloc_args()

bool Item_func::alloc_args ( MEM_ROOT mem_root,
unsigned  num_args 
)
inlineprivate

Allocates space for the given number of arguments, if needed.

Uses m_embedded_arguments if it's big enough.

◆ allow_replacement()

virtual bool Item_func::allow_replacement ( Item_field *const  original,
Item *const  subst 
)
inlinevirtual

Check whether a function allows replacement of a field with another item: In particular, a replacement that changes the metadata of some Item from non-nullable to nullable is not allowed.

Notice that e.g. changing the nullability of an operand of a comparison operator in a WHERE clause that ignores UNKNOWN values is allowed, according to this criterion.

Parameters
originalthe field that could be replaced
substthe item that could be the replacement
Returns
true if replacement is allowed, false otherwise

Reimplemented in Item_bool_func2, and Item_func_opt_neg.

◆ argument_count()

virtual uint Item_func::argument_count ( ) const
inlinevirtual

Reimplemented in Item_rollup_sum_switcher.

◆ arguments()

Item ** Item_func::arguments ( ) const
inline

◆ can_cache_json_arg()

virtual enum_const_item_cache Item_func::can_cache_json_arg ( Item arg)
inlinevirtual

Whether an arg of a JSON function can be cached to avoid repetitive string->JSON conversion.

This function returns true only for those args, which are the source of JSON data. JSON path args are cached independently and for them this function returns false. Same as for all other type of args.

Parameters
argthe arg to cache
Return values
truearg can be cached
falseotherwise

Reimplemented in Item_func_json_contains, Item_func_json_contains_path, Item_func_json_overlaps, and Item_func_member_of.

◆ check_column_in_group_by()

bool Item_func::check_column_in_group_by ( uchar arg)
overrideprotectedvirtual

Check if all the columns present in this expression are present in GROUP BY clause of the derived table.

Used in checking if a condition can be pushed down to derived table.

Reimplemented from Item.

◆ check_column_in_window_functions()

bool Item_func::check_column_in_window_functions ( uchar arg)
overrideprotectedvirtual

Check if all the columns present in this expression are present in PARTITION clause of window functions of the derived table.

Used in checking if a condition can be pushed down to derived table.

Reimplemented from Item.

◆ check_decimal_overflow()

int Item_func::check_decimal_overflow ( int  error)
inline

Throw an error if the error code of a DECIMAL operation is E_DEC_OVERFLOW.

◆ check_float_overflow()

double Item_func::check_float_overflow ( double  value)
inline

Throw an error if the input double number is not finite, i.e.

is either +/-INF or NAN.

◆ check_function_as_value_generator()

bool Item_func::check_function_as_value_generator ( uchar args)
inlineoverrideprotectedvirtual

Check if this item is allowed for a virtual column or inside a default expression.

Should be overridden in child classes.

Parameters
[in,out]argsDue to the limitation of Item::walk() it is declared as a pointer to uchar, underneath there's a actually a structure of type Check_function_as_value_generator_parameters. It is used mainly in Item_field.
Returns
true if function is not accepted

Reimplemented from Item_result_field.

Reimplemented in Item_func_additive_op, Item_func_mul, Item_func_div_int, Item_func_mod, Item_func_neg, Item_func_abs, Item_func_ceiling, Item_func_floor, Item_xml_str_func, Item_func_connection_id, Item_func_rand, Item_func_last_insert_id, Item_func_benchmark, Item_func_sleep, Item_udf_func, Item_func_get_lock, Item_func_release_lock, Item_func_release_all_locks, Item_source_pos_wait, Item_var_func, Item_func_match, Item_func_is_free_lock, Item_func_is_used_lock, Item_func_row_count, Item_func_sp, Item_func_found_rows, Item_func_uuid_short, Item_func_statement_digest, Item_func_statement_digest_text, Item_func_sysconst, Item_func_user, Item_load_file, Item_func_uuid, Item_func_curtime, Item_func_curdate, Item_func_now, Item_nodeset_func, Item_nodeset_to_const_comparator, Item_func_xml_update, and Item_func_unix_timestamp.

◆ check_integer_overflow()

longlong Item_func::check_integer_overflow ( longlong  value,
bool  val_unsigned 
)
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.

◆ check_valid_arguments_processor()

◆ compile()

Item * Item_func::compile ( Item_analyzer  analyzer,
uchar **  arg_p,
Item_transformer  transformer,
uchar arg_t 
)
overridevirtual

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 analyzer 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.

Reimplemented from Item.

◆ contains_only_equi_join_condition()

virtual bool Item_func::contains_only_equi_join_condition ( ) const
inlinevirtual

Whether this Item is an equi-join condition.

If this Item is a compound item (i.e. multiple condition AND'ed together), it will only return true if the Item contains only equi-join conditions AND'ed together. This is used to determine whether the condition can be used as a join condition for hash join (join conditions in hash join must be equi-join conditions), or if it should be placed as a filter after the join.

Reimplemented in Item_eq_base, Item_func_trig_cond, Item_multi_eq, and Item_cond_and.

◆ contributes_to_filter()

const Item_field * Item_func::contributes_to_filter ( THD thd,
table_map  read_tables,
table_map  filter_for_table,
const MY_BITMAP fields_to_ignore 
) const
protected

Whether or not an item should contribute to the filtering effect (.

See also
get_filtering_effect()). First it verifies that table requirements are satisfied as follows:

1) The item must refer to a field in 'filter_for_table' in some way. This reference may be indirect through any number of intermediate items. For example, this item may be an Item_cond_and which refers to an Item_func_eq which refers to the field. 2) The item must not refer to other tables than those already read and the table in 'filter_for_table'

Then it contines to other properties as follows:

Item_funcs represent "<operand1> OP <operand2> [OP ...]". If the Item_func is to contribute to the filtering effect, then

1) one of the operands must be a field from 'filter_for_table' that is not in 'fields_to_ignore', and 2) depending on the Item_func type filtering effect is calculated for, one or all [1] of the other operand(s) must be an available value, i.e.:

  • a constant, or
  • a constant subquery, or
  • a field value read from a table in 'read_tables', or
  • a second field in 'filter_for_table', or
  • a function that only refers to constants or tables in 'read_tables', or
  • special case: an implicit value like NULL in the case of "field IS NULL". Such Item_funcs have arg_count==1.

[1] "At least one" for multiple equality (X = Y = Z = ...), "all" for the rest (e.g. BETWEEN)

Parameters
thdThe current thread.
read_tablesTables earlier in the join sequence. Predicates for table 'filter_for_table' that rely on values from these tables can be part of the filter effect.
filter_for_tableThe table we are calculating filter effect for
fields_to_ignoreColumns that should be ignored.
Returns
Item_field that participates in the predicate if none of the requirements are broken, NULL otherwise
Note
: This function only applies to items doing comparison, i.e. boolean predicates. Unfortunately, some of those items do not inherit from Item_bool_func so the member function has to be placed in Item_func.

◆ do_itemize()

◆ eq()

bool Item_func::eq ( const Item item) const
overridevirtual

Compare this item with another item for equality.

If both pointers are the same, the items are equal. Both items must be of same type. For literal values, metadata must be the same and the values must be equal. Strings are compared with the embedded collation. For column references, table references and column names must be the same. For functions, the function type, function properties and arguments must be equal. Otherwise, see specific implementations.

This function is called when:

  • Comparing items in the WHERE clause (when doing where optimization)
  • When trying to find an ORDER BY/GROUP BY item in the SELECT part
  • When matching fields in multiple equality objects (Item_multi_eq)

Reimplemented from Item.

Reimplemented in Item_func_json_extract, and Item_sum.

◆ eq_specific()

virtual bool Item_func::eq_specific ( const Item ) const
inlinevirtual

◆ fix_after_pullout()

void Item_func::fix_after_pullout ( Query_block parent_query_block,
Query_block removed_query_block 
)
overridevirtual

Fix after tables have been moved from one query_block level to the parent level, e.g by semijoin conversion.

Basically re-calculate all attributes dependent on the tables.

Parameters
parent_query_blockquery_block that tables are moved to.
removed_query_blockquery_block that tables are moved away from, child of parent_query_block.

Reimplemented from Item.

Reimplemented in Item_func_sp, and Item_sum.

◆ fix_fields()

◆ fix_func_arg()

bool Item_func::fix_func_arg ( THD thd,
Item **  arg 
)

◆ fix_num_length_and_dec()

void Item_func::fix_num_length_and_dec ( )
virtual

◆ func_name()

virtual const char * Item_func::func_name ( ) const
pure virtual

Implemented in Item_func_true, Item_func_false, Item_func_truth, Item_in_optimizer, Item_func_xor, Item_func_not, Item_func_match_predicate, Item_func_trig_cond, Item_func_not_all, Item_func_nop_all, Item_func_eq, Item_func_equal, Item_func_ge, Item_func_gt, Item_func_le, Item_func_reject_if, Item_func_lt, Item_func_ne, Item_func_between, Item_func_strcmp, Item_func_interval, Item_func_coalesce, Item_func_ifnull, Item_func_any_value, Item_func_if, Item_func_nullif, Item_func_case, Item_func_in, Item_func_isnull, Item_is_not_null_test, Item_func_isnotnull, Item_func_like, Item_multi_eq, Item_cond_and, Item_cond_or, Item_func_connection_id, Item_typecast_signed, Item_typecast_unsigned, Item_typecast_decimal, Item_typecast_real, Item_func_plus, Item_func_minus, Item_func_mul, Item_func_div, Item_func_div_int, Item_func_mod, Item_func_neg, Item_func_abs, Item_func_exp, Item_func_ln, Item_func_log, Item_func_log2, Item_func_log10, Item_func_sqrt, Item_func_pow, Item_func_acos, Item_func_asin, Item_func_atan, Item_func_cos, Item_func_sin, Item_func_tan, Item_func_cot, Item_func_ceiling, Item_func_floor, Item_func_round, Item_func_rand, Item_func_sign, Item_func_degrees, Item_func_radians, Item_func_min, Item_func_max, Item_rollup_group_item, Item_func_length, Item_func_vector_dim, Item_func_bit_length, Item_func_char_length, Item_func_coercibility, Item_func_locate, Item_func_instr, Item_func_validate_password_strength, Item_func_field, Item_func_ascii, Item_func_ord, Item_func_find_in_set, Item_func_bit_or, Item_func_bit_and, Item_func_bit_xor, Item_func_bit_count, Item_func_shift_left, Item_func_shift_right, Item_func_bit_neg, Item_func_last_insert_id, Item_func_benchmark, Item_func_sleep, Item_udf_func, Item_func_get_lock, Item_func_release_lock, Item_func_release_all_locks, Item_source_pos_wait, Item_func_can_access_database, Item_func_can_access_table, Item_func_can_access_user, Item_func_can_access_trigger, Item_func_can_access_routine, Item_func_can_access_event, Item_func_can_access_resource_group, Item_func_can_access_view, Item_func_can_access_column, Item_func_is_visible_dd_object, Item_func_internal_table_rows, Item_func_internal_avg_row_length, Item_func_internal_data_length, Item_func_internal_max_data_length, Item_func_internal_index_length, Item_func_internal_data_free, Item_func_internal_auto_increment, Item_func_internal_checksum, Item_func_internal_keys_disabled, Item_func_internal_index_column_cardinality, Item_func_internal_dd_char_length, Item_func_internal_get_view_warning_or_error, Item_func_get_dd_index_sub_part_length, Item_func_internal_tablespace_id, Item_func_internal_tablespace_logfile_group_number, Item_func_internal_tablespace_free_extents, Item_func_internal_tablespace_total_extents, Item_func_internal_tablespace_extent_size, Item_func_internal_tablespace_initial_size, Item_func_internal_tablespace_maximum_size, Item_func_internal_tablespace_autoextend_size, Item_func_internal_tablespace_version, Item_func_internal_tablespace_data_free, Item_func_set_user_var, Item_func_get_user_var, Item_func_get_system_var, Item_func_match, Item_func_is_free_lock, Item_func_is_used_lock, Item_func_row_count, Item_func_sp, Item_func_found_rows, Item_func_uuid_short, Item_func_internal_is_mandatory_role, Item_func_internal_use_terminology_previous, Item_func_internal_is_enabled_role, Item_func_geometry_from_text, Item_func_geometry_from_wkb, Item_func_as_wkt, Item_func_as_wkb, Item_func_geometry_type, Item_func_geomfromgeojson, Item_func_as_geojson, Item_func_geohash, Item_func_latfromgeohash, Item_func_longfromgeohash, Item_func_centroid, Item_func_convex_hull, Item_func_envelope, Item_func_make_envelope, Item_func_validate, Item_func_st_simplify, Item_func_point, Item_func_pointfromgeohash, Item_func_spatial_decomp, Item_func_spatial_decomp_n, Item_func_spatial_collection, Item_func_spatial_mbr_rel, Item_func_st_contains, Item_func_st_crosses, Item_func_st_disjoint, Item_func_st_equals, Item_func_st_intersects, Item_func_mbrcontains, Item_func_mbrcoveredby, Item_func_mbrcovers, Item_func_mbrdisjoint, Item_func_mbrequals, Item_func_mbrintersects, Item_func_mbroverlaps, Item_func_mbrtouches, Item_func_mbrwithin, Item_func_st_overlaps, Item_func_st_touches, Item_func_st_within, Item_func_st_difference, Item_func_st_intersection, Item_func_st_symdifference, Item_func_st_union, Item_func_buffer_strategy, Item_func_isempty, Item_func_st_issimple, Item_func_isclosed, Item_func_isvalid, Item_func_dimension, Item_func_st_latitude_mutator, Item_func_st_latitude_observer, Item_func_st_longitude_mutator, Item_func_st_longitude_observer, Item_func_st_x_mutator, Item_func_st_x_observer, Item_func_st_y_mutator, Item_func_st_y_observer, Item_func_swap_xy, Item_func_numgeometries, Item_func_numinteriorring, Item_func_numpoints, Item_func_st_area, Item_func_st_buffer, Item_func_st_length, Item_func_st_srid_mutator, Item_func_st_srid_observer, Item_func_distance, Item_func_st_frechet_distance, Item_func_st_hausdorff_distance, Item_func_st_distance_sphere, Item_func_lineinterpolatepoint, Item_func_lineinterpolatepoints, Item_func_st_pointatdistance, Item_func_st_transform, Item_typecast_point, Item_typecast_linestring, Item_typecast_polygon, Item_typecast_multipoint, Item_typecast_multilinestring, Item_typecast_multipolygon, Item_typecast_geometrycollection, Item_wait_for_executed_gtid_set, Item_func_gtid_subset, Item_func_gtid_subtract, Item_func_inet_aton, Item_func_inet_ntoa, Item_func_inet6_aton, Item_func_inet6_ntoa, Item_func_is_ipv4, Item_func_is_ipv6, Item_func_is_ipv4_compat, Item_func_is_ipv4_mapped, Item_func_json_valid, Item_func_json_schema_valid, Item_func_json_schema_validation_report, Item_func_json_contains, Item_func_json_contains_path, Item_func_json_type, Item_typecast_json, Item_func_json_length, Item_func_json_depth, Item_func_json_keys, Item_func_json_extract, Item_func_json_array_append, Item_func_json_insert, Item_func_json_array_insert, Item_func_json_set, Item_func_json_replace, Item_func_json_array, Item_func_json_row_object, Item_func_json_search, Item_func_json_remove, Item_func_json_merge_preserve, Item_func_json_merge_patch, Item_func_json_quote, Item_func_json_unquote, Item_func_json_pretty, Item_func_json_storage_size, Item_func_json_storage_free, Item_func_array_cast, Item_func_json_overlaps, Item_func_member_of, Item_func_json_value, Item_func_pfs_current_thread_id, Item_func_pfs_thread_id, Item_func_pfs_format_bytes, Item_func_pfs_format_pico_time, Item_func_regexp_instr, Item_func_regexp_like, Item_func_regexp_replace, Item_func_regexp_substr, Item_func_md5, Item_func_sha, Item_func_sha2, Item_func_to_base64, Item_func_statement_digest, Item_func_statement_digest_text, Item_func_from_base64, Item_func_aes_encrypt, Item_func_aes_decrypt, Item_func_random_bytes, Item_func_concat, Item_func_concat_ws, Item_func_reverse, Item_func_replace, Item_func_insert, Item_func_lower, Item_func_upper, Item_func_left, Item_func_right, Item_func_substr, Item_func_substr_index, Item_func_trim, Item_func_database, Item_func_user, Item_func_current_user, Item_func_soundex, Item_func_elt, Item_func_make_set, Item_func_format, Item_func_char, Item_func_repeat, Item_func_space, Item_func_rpad, Item_func_lpad, Item_func_uuid_to_bin, Item_func_bin_to_uuid, Item_func_is_uuid, Item_func_conv, Item_func_hex, Item_func_unhex, Item_func_like_range_min, Item_func_like_range_max, Item_typecast_char, Item_load_file, Item_func_export_set, Item_func_quote, Item_func_conv_charset, Item_func_set_collation, Item_func_charset, Item_func_collation, Item_func_weight_string, Item_func_crc32, Item_func_uncompressed_length, Item_func_compress, Item_func_to_vector, Item_func_from_vector, Item_func_uncompress, Item_func_uuid, Item_func_current_role, Item_func_roles_graphml, Item_func_get_dd_column_privileges, Item_func_get_dd_create_options, Item_func_get_dd_schema_options, Item_func_internal_get_comment_or_error, Item_func_get_dd_tablespace_private_data, Item_func_get_dd_index_private_data, Item_func_get_partition_nodegroup, Item_func_internal_tablespace_type, Item_func_internal_tablespace_logfile_group_name, Item_func_internal_tablespace_status, Item_func_internal_tablespace_row_format, Item_func_internal_tablespace_extra, Item_func_convert_cpu_id_mask, Item_func_get_dd_property_key_value, Item_func_remove_dd_property_key, Item_func_convert_interval_to_user_interval, Item_func_internal_get_username, Item_func_internal_get_hostname, Item_func_internal_get_enabled_role_json, Item_func_internal_get_mandatory_roles_json, Item_func_internal_get_dd_column_extra, Item_sum_sum, Item_sum_count, Item_sum_json_array, Item_sum_json_object, Item_sum_avg, Item_sum_variance, Item_sum_std, Item_sum_min, Item_sum_max, Item_sum_or, Item_sum_and, Item_sum_xor, Item_udf_sum, Item_func_group_concat, Item_row_number, Item_rank, Item_cume_dist, Item_percent_rank, Item_ntile, Item_lead_lag, Item_first_last_value, Item_nth_value, Item_func_grouping, Item_rollup_sum_switcher, Item_sum_collect, Item_func_period_add, Item_func_period_diff, Item_func_to_days, Item_func_to_seconds, Item_func_dayofmonth, Item_func_month, Item_func_monthname, Item_func_dayofyear, Item_func_hour, Item_func_minute, Item_func_quarter, Item_func_second, Item_func_week, Item_func_yearweek, Item_func_year, Item_typecast_year, Item_func_weekday, Item_func_dayname, Item_func_unix_timestamp, Item_func_time_to_sec, Item_date_func, Item_date_literal, Item_time_literal, Item_datetime_literal, Item_func_at_time_zone, Item_func_curtime_local, Item_func_curtime_utc, Item_func_curdate_local, Item_func_curdate_utc, Item_func_now_local, Item_func_now_utc, Item_func_sysdate_local, Item_func_from_days, Item_func_date_format, Item_func_from_unixtime, Item_func_convert_tz, Item_func_sec_to_time, Item_date_add_interval, Item_extract, Item_typecast_date, Item_typecast_time, Item_typecast_datetime, Item_func_makedate, Item_func_add_time, Item_func_timediff, Item_func_maketime, Item_func_microsecond, Item_func_timestamp_diff, Item_func_get_format, Item_func_str_to_date, Item_func_last_day, Item_func_internal_update_time, Item_func_internal_check_time, Item_nodeset_func, Item_nodeset_func_rootelement, Item_nodeset_func_union, Item_nodeset_func_axisbyname, Item_nodeset_func_selfbyname, Item_nodeset_func_childbyname, Item_nodeset_func_descendantbyname, Item_nodeset_func_ancestorbyname, Item_nodeset_func_parentbyname, Item_nodeset_func_attributebyname, Item_nodeset_func_predicate, Item_nodeset_func_elementbyindex, Item_xpath_cast_bool, Item_xpath_cast_number, Item_func_xpath_position, Item_func_xpath_count, Item_func_xpath_sum, Item_nodeset_to_const_comparator, Item_func_xml_extractvalue, Item_func_xml_update, Item_func_coordinate_mutator, Item_func_coordinate_observer, and Item_typecast_geometry.

◆ functype()

virtual enum Functype Item_func::functype ( ) const
inlinevirtual

Reimplemented in Item_func_true, Item_func_false, Item_func_truth, Item_func_xor, Item_func_not, Item_func_match_predicate, Item_func_trig_cond, Item_func_not_all, Item_func_eq, Item_func_equal, Item_func_ge, Item_func_gt, Item_func_le, Item_func_lt, Item_func_ne, Item_func_between, Item_func_strcmp, Item_func_coalesce, Item_func_if, Item_func_nullif, Item_func_case, Item_func_in, Item_func_isnull, Item_is_not_null_test, Item_func_isnotnull, Item_func_like, Item_multi_eq, Item_cond_and, Item_cond_or, Item_typecast_signed, Item_typecast_unsigned, Item_typecast_decimal, Item_typecast_real, Item_func_plus, Item_func_minus, Item_func_mul, Item_func_div_base, Item_func_mod, Item_func_neg, Item_func_abs, Item_func_exp, Item_func_ln, Item_func_log, Item_func_log10, Item_func_sqrt, Item_func_pow, Item_func_acos, Item_func_asin, Item_func_atan, Item_func_cos, Item_func_sin, Item_func_tan, Item_func_cot, Item_func_ceiling, Item_func_floor, Item_func_round, Item_func_sign, Item_func_degrees, Item_func_radians, Item_func_min, Item_func_max, Item_rollup_group_item, Item_udf_func, Item_func_internal_table_rows, Item_func_internal_avg_row_length, Item_func_internal_data_length, Item_func_internal_max_data_length, Item_func_internal_index_length, Item_func_internal_data_free, Item_func_internal_auto_increment, Item_func_internal_checksum, Item_func_internal_index_column_cardinality, Item_func_internal_tablespace_id, Item_func_internal_tablespace_logfile_group_number, Item_func_internal_tablespace_free_extents, Item_func_internal_tablespace_total_extents, Item_func_internal_tablespace_extent_size, Item_func_internal_tablespace_initial_size, Item_func_internal_tablespace_maximum_size, Item_func_internal_tablespace_autoextend_size, Item_func_internal_tablespace_version, Item_func_internal_tablespace_data_free, Item_func_set_user_var, Item_func_get_user_var, Item_func_get_system_var, Item_func_match, Item_func_sp, Item_func_internal_is_mandatory_role, Item_func_internal_use_terminology_previous, Item_func_internal_is_enabled_role, Item_func_spatial_mbr_rel, Item_func_st_contains, Item_func_st_crosses, Item_func_st_disjoint, Item_func_st_equals, Item_func_st_intersects, Item_func_mbrcontains, Item_func_mbrcoveredby, Item_func_mbrcovers, Item_func_mbrdisjoint, Item_func_mbrequals, Item_func_mbrintersects, Item_func_mbroverlaps, Item_func_mbrtouches, Item_func_mbrwithin, Item_func_st_overlaps, Item_func_st_touches, Item_func_st_within, Item_func_distance, Item_typecast_geometry, Item_func_json_valid, Item_func_json_schema_valid, Item_func_json_schema_validation_report, Item_func_json_contains, Item_func_json_contains_path, Item_func_json_type, Item_func_json_length, Item_func_json_depth, Item_func_json_extract, Item_func_json_array, Item_func_json_row_object, Item_func_json_search, Item_func_json_quote, Item_func_json_unquote, Item_func_json_pretty, Item_func_json_storage_size, Item_func_json_storage_free, Item_func_array_cast, Item_func_json_overlaps, Item_func_member_of, Item_func_json_value, Item_typecast_char, Item_func_set_collation, Item_func_get_dd_column_privileges, Item_func_get_dd_create_options, Item_func_get_dd_schema_options, Item_func_internal_get_comment_or_error, Item_func_get_dd_tablespace_private_data, Item_func_get_dd_index_private_data, Item_func_get_partition_nodegroup, Item_func_internal_tablespace_type, Item_func_internal_tablespace_logfile_group_name, Item_func_internal_tablespace_status, Item_func_internal_tablespace_row_format, Item_func_internal_tablespace_extra, Item_func_get_dd_property_key_value, Item_func_remove_dd_property_key, Item_func_convert_interval_to_user_interval, Item_func_internal_get_username, Item_func_internal_get_hostname, Item_func_internal_get_enabled_role_json, Item_func_internal_get_mandatory_roles_json, Item_func_internal_get_dd_column_extra, Item_func_grouping, Item_func_period_add, Item_func_period_diff, Item_func_to_days, Item_func_to_seconds, Item_func_dayofmonth, Item_func_month, Item_func_monthname, Item_func_dayofyear, Item_func_hour, Item_func_minute, Item_func_quarter, Item_func_second, Item_func_week, Item_func_yearweek, Item_func_year, Item_typecast_year, Item_func_weekday, Item_func_dayname, Item_func_unix_timestamp, Item_func_time_to_sec, Item_date_func, Item_datetime_literal, Item_func_now_local, Item_func_sysdate_local, Item_func_from_days, Item_func_from_unixtime, Item_func_convert_tz, Item_func_sec_to_time, Item_date_add_interval, Item_extract, Item_typecast_date, Item_typecast_time, Item_typecast_datetime, Item_func_makedate, Item_func_add_time, Item_func_timediff, Item_func_maketime, Item_func_microsecond, Item_func_timestamp_diff, Item_func_get_format, Item_func_last_day, Item_func_internal_update_time, and Item_func_internal_check_time.

◆ gc_subst_transformer()

Item * Item_func::gc_subst_transformer ( uchar arg)
overridevirtual

Transformer function for GC substitution.

Parameters
argList of indexed GC field
Returns
this item on successful execution, nullptr on error

This function transforms a search condition. It doesn't change 'this' item but rather changes its arguments. It takes list of GC fields and checks whether arguments of 'this' item matches them and index over the GC field isn't disabled with hints. If so, it replaces the argument with newly created Item_field which uses the matched GC field. The following predicates' arguments could be transformed:

  • EQ_FUNC, LT_FUNC, LE_FUNC, GE_FUNC, GT_FUNC, JSON_OVERLAPS
    • Left or right argument if the opposite argument is a constant.
  • IN_FUNC, BETWEEN
    • Left argument if all other arguments are constant and of the same type.
  • MEMBER OF
    • Right argument if left argument is constant.
  • JSON_CONTAINS
    • First argument if the second argument is constant.

After transformation comparators are updated to take into account the new field.

Note: Range optimizer is used with multi-value indexes and it prefers constants. Outer references are not considered as constants in JSON functions. However, range optimizer supports dynamic ranges, where ranges are re-optimized for each row. But the range optimizer is currently not able to handle multi-valued indexes with dynamic ranges, hence we use only constants in these cases.

Reimplemented from Item.

◆ get_arg() [1/2]

virtual Item * Item_func::get_arg ( uint  i)
inlinevirtual

Get the i'th argument of the function that this object represents.

Reimplemented in Item_rollup_sum_switcher.

◆ get_arg() [2/2]

virtual const Item * Item_func::get_arg ( uint  i) const
inlinevirtual

Get the i'th argument of the function that this object represents.

Reimplemented in Item_rollup_sum_switcher.

◆ get_arg0_date()

bool Item_func::get_arg0_date ( MYSQL_TIME ltime,
my_time_flags_t  fuzzy_date 
)
inline

◆ get_arg0_time()

bool Item_func::get_arg0_time ( MYSQL_TIME ltime)
inline

◆ get_initial_pseudo_tables()

◆ get_tmp_table_item()

Item * Item_func::get_tmp_table_item ( THD thd)
overridevirtual

If an Item is materialized in a temporary table, a different Item may have to be used in the part of the query that runs after the materialization.

For instance, if the Item was an Item_field, the new Item_field needs to point into the temporary table instead of the original one, but if, on the other hand, the Item was a literal constant, it can be reused as-is. This function encapsulates these policies for the different kinds of Items. See also get_tmp_table_field().

TODO: Document how aggregate functions (Item_sum) are handled.

Reimplemented from Item.

◆ has_date_args()

bool Item_func::has_date_args ( )
inline

◆ has_datetime_args()

bool Item_func::has_datetime_args ( )
inline

◆ has_time_args()

bool Item_func::has_time_args ( )
inline

◆ has_timestamp_args()

bool Item_func::has_timestamp_args ( )
inline

◆ have_rev_func()

virtual bool Item_func::have_rev_func ( ) const
inlinevirtual

Reimplemented in Item_bool_func2.

◆ is_deprecated()

virtual bool Item_func::is_deprecated ( ) const
inlinevirtual

Reimplemented in Item_func_json_merge.

◆ is_non_const_over_literals()

bool Item_func::is_non_const_over_literals ( uchar )
inlineoverrideprotectedvirtual

◆ is_null()

bool Item_func::is_null ( )
inlineoverridevirtual

The method allows to determine nullness of a complex expression without fully evaluating it, instead of calling val*() then checking null_value.

Used in Item_func_isnull/Item_func_isnotnull and Item_sum_count/Item_sum_count_distinct. Any item which can be NULL must implement this method.

Return values
falseif the expression is not NULL.
trueif the expression is NULL, or evaluation caused an error. The null_value member is set according to the return value.

Reimplemented from Item.

Reimplemented in Item_func_numhybrid, Item_func_spatial_mbr_rel, Item_func_spatial_relation, Item_sum, and Item_rollup_sum_switcher.

◆ is_null_on_null()

bool Item_func::is_null_on_null ( ) const
inline

◆ is_valid_for_pushdown()

bool Item_func::is_valid_for_pushdown ( uchar arg)
overrideprotectedvirtual

Check if all the columns present in this expression are from the derived table.

Used in determining if a condition can be pushed down to derived table.

Reimplemented from Item.

Reimplemented in Item_func_get_system_var.

◆ key_item()

virtual Item * Item_func::key_item ( ) const
inlinevirtual

◆ may_have_named_parameters()

virtual bool Item_func::may_have_named_parameters ( ) const
inlineprotectedvirtual

Named parameters are allowed in a parameter list.

The syntax to name parameters in a function call is as follow: foo(expr AS named, expr named, expr AS "named", expr "named") where "AS" is optional. Only UDF function support that syntax.

Returns
true if the function item can have named parameters

Reimplemented in Item_udf_func.

◆ not_null_tables()

table_map Item_func::not_null_tables ( ) const
inlineoverridevirtual

Return table map of tables that can't be NULL tables (tables that are used in a context where if they would contain a NULL row generated by a LEFT or RIGHT join, the item would not be true).

This expression is used on WHERE item to determinate if a LEFT JOIN can be converted to a normal join. Generally this function should return used_tables() if the function would return null if any of the arguments are null As this is only used in the beginning of optimization, the value don't have to be updated in update_used_tables()

Reimplemented from Item.

Reimplemented in Item_sum, Item_date_literal, Item_time_literal, and Item_datetime_literal.

◆ num_vector_args()

uint Item_func::num_vector_args ( )

◆ param_type_is_default() [1/2]

bool Item_func::param_type_is_default ( THD thd,
uint  start,
uint  end,
enum_field_types  def = MYSQL_TYPE_VARCHAR 
)
inlineprotected

◆ param_type_is_default() [2/2]

bool Item_func::param_type_is_default ( THD thd,
uint  start,
uint  end,
uint  step,
enum_field_types  def 
)
protected

For arguments of this Item_func ("args" array), in range [start, start+step, start+2*step,...,end[ : if they're a PS parameter with invalid (not known) type, give them default type "def".

Parameters
thdthread handler
startrange's start (included)
endrange's end (excluded)
steprange's step
defdefault type
Returns
false if success, true if error

◆ param_type_is_rejected()

bool Item_func::param_type_is_rejected ( uint  start,
uint  end 
)
protected

For arguments of this Item_func ("args" array), in range [start,end[ : sends error if they're a dynamic parameter.

Parameters
startrange's start (included)
endrange's end (excluded)
Returns
true if error.

◆ param_type_uses_non_param()

bool Item_func::param_type_uses_non_param ( THD thd,
enum_field_types  def = MYSQL_TYPE_VARCHAR 
)
protected

◆ print()

void Item_func::print ( const THD ,
String str,
enum_query_type   
) const
overridevirtual

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;
  • to generate a SQL-query that looks like a prepared statement for query_rewrite
  • 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.

Reimplemented in Item_num_op, Item_typecast_signed, Item_typecast_unsigned, Item_typecast_decimal, Item_typecast_real, Item_rollup_group_item, Item_func_locate, Item_func_bit, Item_func_bit_neg, Item_func_benchmark, Item_udf_func, Item_func_set_user_var, Item_func_get_user_var, Item_func_get_system_var, Item_func_match, Item_func_spatial_mbr_rel, Item_func_spatial_relation, Item_typecast_point, Item_typecast_linestring, Item_typecast_polygon, Item_typecast_multipoint, Item_typecast_multilinestring, Item_typecast_multipolygon, Item_typecast_geometrycollection, Item_typecast_json, Item_func_array_cast, Item_func_member_of, Item_func_json_value, Item_func_trim, Item_func_make_set, Item_func_format, Item_typecast_char, Item_func_conv_charset, Item_func_set_collation, Item_func_weight_string, Item_sum, Item_udf_sum, Item_func_group_concat, Item_rollup_sum_switcher, Item_typecast_year, Item_temporal_func, Item_date_literal, Item_time_literal, Item_datetime_literal, Item_func_at_time_zone, Item_date_add_interval, Item_extract, Item_typecast_date, Item_typecast_time, Item_typecast_datetime, Item_func_add_time, Item_func_timestamp_diff, Item_func_get_format, and Item_typecast_geometry.

◆ print_args()

void Item_func::print_args ( const THD thd,
String str,
uint  from,
enum_query_type  query_type 
) const

◆ print_op()

void Item_func::print_op ( const THD thd,
String str,
enum_query_type  query_type 
) const

◆ propagate_type()

bool Item_func::propagate_type ( THD thd,
const Type_properties type 
)
overridevirtual

Default implementation for all functions: Propagate base_item's type into all arguments.

The functions that have context-aware parameter type detection must implement Item::default_data_type() and Item::resolve_type_inner().

If an SQL function or operator F embeds another SQL function or operator G: F::fix_fields() runs and calls G::fix_fields() which calls G::resolve_type(); assuming that G is outer-context dependent and has only dynamic parameters as arguments, G misses type information and thus does a no-op resolve_type(); then F::fix_fields() continues and calls F::resolve_type() which sees that G::data_type() == MYSQL_TYPE_INVALID; F thus calls G::propagate_type() to send it the necessary type information (i.e. provide the outer context); this then assigns the type to dynamic parameters of G and finishes the job of G::resolve_type() by calling G::resolve_type_inner().

Reimplemented from Item.

Reimplemented in Item_func_get_user_var.

◆ reject_geometry_args()

bool Item_func::reject_geometry_args ( )

◆ reject_vector_args()

bool Item_func::reject_vector_args ( )

◆ replace_equal_field()

Item * Item_func::replace_equal_field ( uchar arg)
inlineoverridevirtual

Reimplemented from Item.

◆ replace_equal_field_checker()

bool Item_func::replace_equal_field_checker ( uchar **  arg)
inlineoverridevirtual

Reimplemented from Item.

◆ replace_func_call()

Item * Item_func::replace_func_call ( uchar arg)
overridevirtual

Reimplemented from Item.

◆ resolve_type()

bool Item_func::resolve_type ( THD thd)
inlineoverridevirtual

Resolve type-related information for this item, such as result field type, maximum size, precision, signedness, character set and collation.

Also check compatibility of argument types and return error when applicable. Also adjust nullability when applicable.

Parameters
thdthread handler
Returns
false if success, true if error

Implements Item_result_field.

Reimplemented in Item_func_regexp_instr, Item_func_regexp_like, Item_func_regexp_replace, Item_func_regexp_substr, Item_func_abs, Item_func_round, Item_rollup_group_item, Item_func_find_in_set, Item_func_bit, Item_func_udf_float, Item_func_udf_int, Item_func_release_all_locks, Item_func_can_access_database, Item_func_can_access_table, Item_func_can_access_user, Item_func_can_access_trigger, Item_func_can_access_routine, Item_func_can_access_event, Item_func_can_access_resource_group, Item_func_can_access_view, Item_func_can_access_column, Item_func_is_visible_dd_object, Item_func_internal_table_rows, Item_func_internal_avg_row_length, Item_func_internal_data_length, Item_func_internal_max_data_length, Item_func_internal_index_length, Item_func_internal_data_free, Item_func_internal_auto_increment, Item_func_internal_checksum, Item_func_internal_keys_disabled, Item_func_internal_index_column_cardinality, Item_func_internal_dd_char_length, Item_func_internal_get_view_warning_or_error, Item_func_get_dd_index_sub_part_length, Item_func_internal_tablespace_id, Item_func_internal_tablespace_logfile_group_number, Item_func_internal_tablespace_free_extents, Item_func_internal_tablespace_total_extents, Item_func_internal_tablespace_extent_size, Item_func_internal_tablespace_initial_size, Item_func_internal_tablespace_maximum_size, Item_func_internal_tablespace_autoextend_size, Item_func_internal_tablespace_version, Item_func_internal_tablespace_data_free, Item_func_set_user_var, Item_func_get_user_var, Item_func_get_system_var, Item_func_row_count, Item_func_found_rows, Item_func_uuid_short, Item_func_internal_is_mandatory_role, Item_func_internal_use_terminology_previous, Item_func_internal_is_enabled_role, Item_geometry_func, Item_func_as_wkt, Item_func_geohash, Item_func_spatial_mbr_rel, Item_func_gtid_subtract, Item_json_func, Item_func_json_type, Item_func_array_cast, Item_func_json_value, Item_func_pfs_current_thread_id, Item_func_pfs_thread_id, Item_func_pfs_format_bytes, Item_func_pfs_format_pico_time, Item_func_regexp, Item_func_to_base64, Item_func_aes_encrypt, Item_func_lower, Item_func_upper, Item_func_substr_index, Item_func_trim, Item_func_database, Item_func_user, Item_func_current_user, Item_func_make_set, Item_func_space, Item_func_rpad, Item_func_lpad, Item_func_uuid_to_bin, Item_func_conv, Item_func_export_set, Item_func_set_collation, Item_func_weight_string, Item_func_uuid, Item_func_current_role, Item_func_roles_graphml, Item_func_get_dd_column_privileges, Item_func_get_dd_create_options, Item_func_get_dd_schema_options, Item_func_internal_get_comment_or_error, Item_func_get_dd_tablespace_private_data, Item_func_get_dd_index_private_data, Item_func_get_partition_nodegroup, Item_func_internal_tablespace_type, Item_func_internal_tablespace_logfile_group_name, Item_func_internal_tablespace_status, Item_func_internal_tablespace_row_format, Item_func_internal_tablespace_extra, Item_func_convert_cpu_id_mask, Item_func_get_dd_property_key_value, Item_func_remove_dd_property_key, Item_func_convert_interval_to_user_interval, Item_func_internal_get_username, Item_func_internal_get_hostname, Item_func_internal_get_enabled_role_json, Item_func_internal_get_mandatory_roles_json, Item_func_internal_get_dd_column_extra, Item_sum, Item_sum_variance, Item_sum_bit, Item_sum_udf_float, Item_sum_udf_int, Item_sum_udf_str, Item_sum_udf_decimal, Item_rollup_sum_switcher, Item_date_func, Item_date_literal, Item_time_literal, Item_datetime_literal, Item_func_at_time_zone, Item_func_curdate, Item_func_now, Item_func_sysdate_local, Item_func_convert_tz, Item_date_add_interval, Item_extract, Item_func_add_time, Item_func_str_to_date, Item_nodeset_func, Item_func_xpath_position, Item_func_xpath_count, Item_func_modify_json_in_path, Item_func_numhybrid, Item_func_connection_id, Item_typecast_signed, Item_typecast_unsigned, Item_typecast_decimal, Item_typecast_real, Item_func_minus, Item_func_div, Item_func_div_int, Item_func_mod, Item_func_neg, Item_dec_func, Item_func_rand, Item_func_sign, Item_func_units, Item_func_min_max, Item_func_length, Item_func_vector_dim, Item_func_char_length, Item_func_coercibility, Item_func_locate, Item_func_validate_password_strength, Item_func_field, Item_func_ascii, Item_func_bit_count, Item_func_last_insert_id, Item_func_benchmark, Item_func_sleep, Item_func_udf_decimal, Item_func_udf_str, Item_func_get_lock, Item_func_release_lock, Item_source_pos_wait, Item_func_is_free_lock, Item_func_is_used_lock, Item_func_sp, Item_func_geometry_from_text, Item_func_geometry_from_wkb, Item_func_as_wkb, Item_func_geometry_type, Item_func_latlongfromgeohash, Item_func_centroid, Item_func_convex_hull, Item_func_envelope, Item_func_make_envelope, Item_func_validate, Item_func_st_simplify, Item_func_point, Item_func_pointfromgeohash, Item_func_spatial_decomp, Item_func_spatial_decomp_n, Item_func_spatial_collection, Item_func_spatial_relation, Item_func_spatial_operation, Item_func_buffer_strategy, Item_func_isempty, Item_func_st_issimple, Item_func_isclosed, Item_func_isvalid, Item_func_dimension, Item_func_coordinate_mutator, Item_func_coordinate_observer, Item_func_swap_xy, Item_func_numgeometries, Item_func_numinteriorring, Item_func_numpoints, Item_func_st_area, Item_func_st_buffer, Item_func_st_length, Item_func_st_srid_mutator, Item_func_st_srid_observer, Item_func_distance, Item_func_st_frechet_distance, Item_func_st_hausdorff_distance, Item_func_st_distance_sphere, Item_func_lineinterpolate, Item_typecast_geometry, Item_wait_for_executed_gtid_set, Item_func_gtid_subset, Item_func_inet_aton, Item_func_inet_ntoa, Item_func_inet6_aton, Item_func_inet6_ntoa, Item_func_json_valid, Item_func_json_schema_validation_report, Item_func_json_contains, Item_func_json_contains_path, Item_typecast_json, Item_func_json_length, Item_func_json_depth, Item_func_json_keys, Item_func_json_extract, Item_func_json_array, Item_func_json_row_object, Item_func_json_search, Item_func_json_remove, Item_func_json_merge_preserve, Item_func_json_merge_patch, Item_func_json_quote, Item_func_json_unquote, Item_func_json_pretty, Item_func_json_storage_size, Item_func_json_storage_free, Item_func_member_of, Item_str_func, Item_func_md5, Item_func_sha, Item_func_sha2, Item_func_statement_digest, Item_func_statement_digest_text, Item_func_from_base64, Item_func_aes_decrypt, Item_func_random_bytes, Item_func_concat, Item_func_concat_ws, Item_func_reverse, Item_func_replace, Item_func_insert, Item_func_left, Item_func_right, Item_func_substr, Item_func_soundex, Item_func_elt, Item_func_format, Item_func_char, Item_func_repeat, Item_func_bin_to_uuid, Item_func_is_uuid, Item_func_hex, Item_func_unhex, Item_func_like_range, Item_charset_conversion, Item_load_file, Item_func_quote, Item_func_charset, Item_func_collation, Item_func_crc32, Item_func_uncompressed_length, Item_func_compress, Item_func_to_vector, Item_func_from_vector, Item_func_uncompress, Item_sum_sum, Item_sum_count, Item_sum_avg, Item_row_number, Item_rank, Item_cume_dist, Item_percent_rank, Item_ntile, Item_lead_lag, Item_first_last_value, Item_nth_value, Item_func_period_add, Item_func_period_diff, Item_func_to_days, Item_func_to_seconds, Item_func_dayofmonth, Item_func_month, Item_func_monthname, Item_func_dayofyear, Item_func_hour, Item_func_minute, Item_func_quarter, Item_func_second, Item_func_week, Item_func_yearweek, Item_func_year, Item_typecast_year, Item_func_weekday, Item_func_dayname, Item_func_unix_timestamp, Item_func_time_to_sec, Item_func_curtime, Item_func_from_days, Item_func_date_format, Item_func_from_unixtime, Item_func_sec_to_time, Item_typecast_date, Item_typecast_time, Item_typecast_datetime, Item_func_makedate, Item_func_timediff, Item_func_maketime, Item_func_microsecond, Item_func_timestamp_diff, Item_func_get_format, Item_func_last_day, Item_func_internal_update_time, Item_func_internal_check_time, and Item_xml_str_func.

◆ resolve_type_inner()

virtual bool Item_func::resolve_type_inner ( THD )
inlinevirtual

Resolve type of function after all arguments have had their data types resolved.

Called from resolve_type() when no dynamic parameters are used and from propagate_type() otherwise.

Reimplemented in Item_func_coalesce, Item_func_if, Item_func_nullif, Item_func_case, Item_func_numhybrid, Item_func_int_val, and Item_func_min_max.

◆ select_optimize()

◆ set_arg()

virtual Item * Item_func::set_arg ( THD ,
uint  ,
Item  
)
inlinevirtual

Reimplemented in Item_sum, and Item_rollup_sum_switcher.

◆ set_arguments()

bool Item_func::set_arguments ( mem_root_deque< Item * > *  list,
bool  context_free 
)

Copy arguments from list to args array.

Parameters
listfunction argument list
context_freetrue: for use in context-independent constructors (Item_func(POS,...)) i.e. for use in the parser
Returns
true on OOM, false otherwise

◆ set_used_tables()

void Item_func::set_used_tables ( table_map  map)
inline

◆ signal_divide_by_null()

void Item_func::signal_divide_by_null ( )

◆ signal_invalid_argument_for_log()

void Item_func::signal_invalid_argument_for_log ( )

◆ split_sum_func()

bool Item_func::split_sum_func ( THD thd,
Ref_item_array  ref_item_array,
mem_root_deque< Item * > *  fields 
)
overridevirtual

See comments in Item_cmp_func::split_sum_func()

Reimplemented from Item.

Reimplemented in Item_sum, Item_sum_hybrid, Item_lead_lag, Item_first_last_value, and Item_nth_value.

◆ tmp_table_field()

Field * Item_func::tmp_table_field ( TABLE t_arg)
overridevirtual

◆ transform()

Item * Item_func::transform ( Item_transformer  transformer,
uchar argument 
)
overridevirtual

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.

Reimplemented from Item.

◆ traverse_cond()

void Item_func::traverse_cond ( Cond_traverser  traverser,
void *  arg,
traverse_order  order 
)
overridevirtual

Reimplemented from Item.

◆ type()

enum Type Item_func::type ( ) const
inlineoverridevirtual

Implements Item.

Reimplemented in Item_sum, and Item_nodeset_func.

◆ update_used_tables()

void Item_func::update_used_tables ( )
overridevirtual

Updates used tables, not null tables information and accumulates properties up the item tree, cf.

used_tables_cache, not_null_tables_cache and m_accum_properties.

TODO(sgunders): Consider just removing these caches; it causes a lot of bugs (cache invalidation is known to be a complex problem), and the performance benefits are dubious.

Reimplemented from Item.

Reimplemented in Item_func_modify_json_in_path, Item_rollup_group_item, Item_func_get_user_var, Item_func_match, Item_func_sp, Item_sum, and Item_func_grouping.

◆ used_tables()

table_map Item_func::used_tables ( ) const
inlineoverridevirtual

◆ val_decimal()

◆ val_int_from_real()

longlong Item_func::val_int_from_real ( )
protected

◆ walk()

bool Item_func::walk ( Item_processor  processor,
enum_walk  walk,
uchar arg 
)
overridevirtual

Traverses a tree of Items in prefix and/or postfix order.

Optionally walks into subqueries.

Parameters
processorprocessor function to be invoked per item returns true to abort traversal, false to continue
walkcontrols how to traverse the item tree enum_walk::PREFIX: call processor before invoking children enum_walk::POSTFIX: call processor after invoking children enum_walk::SUBQUERY go down into subqueries walk values are bit-coded and may be combined. Omitting both enum_walk::PREFIX and enum_walk::POSTFIX is undefined behaviour.
argOptional pointer to a walk-specific object
Return values
falsewalk succeeded
truewalk aborted by agreement, an error may have been reported

Reimplemented from Item.

Friends And Related Function Documentation

◆ udf_handler

friend class udf_handler
friend

Member Data Documentation

◆ allowed_arg_cols

uint Item_func::allowed_arg_cols {1}
protected

◆ arg_count

uint Item_func::arg_count

How many arguments in 'args'.

◆ args

Item** Item_func::args
protected

Array of pointers to arguments.

If there are max 2 arguments, this array is often just m_embedded_arguments; otherwise it's explicitly allocated in the constructor.

◆ m_embedded_arguments

Item* Item_func::m_embedded_arguments[2]
private

◆ not_null_tables_cache

table_map Item_func::not_null_tables_cache {0}
protected

Value used in calculation of result of not_null_tables()

◆ null_on_null

bool Item_func::null_on_null {true}
protected

Affects how to determine that NULL argument implies a NULL function return.

Default behaviour in this class is:

  • if true, any NULL argument means the function returns NULL.
  • if false, no such assumption is made and not_null_tables_cache is thus set to 0. null_on_null is true for all Item_func derived classes, except Item_func_sp, all CASE derived functions and a few other functions. RETURNS NULL ON NULL INPUT can be implemented for stored functions by modifying this member in class Item_func_sp.

◆ used_tables_cache

table_map Item_func::used_tables_cache {0}
protected

Value used in calculation of result of used_tables()


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