MySQL  8.0.20
Source Code Documentation
Item_trigger_field Class Referencefinal

Represents NEW/OLD version of field of row which is changed/read in trigger. More...

#include <item.h>

Inheritance diagram for Item_trigger_field:
Item_field Settable_routine_parameter Item_ident Item Parse_tree_node_tmpl< Context >

Public Member Functions

 Item_trigger_field (Name_resolution_context *context_arg, enum_trigger_variable_type trigger_var_type_arg, const char *field_name_arg, ulong priv, const bool ro)
 Item_trigger_field (const POS &pos, enum_trigger_variable_type trigger_var_type_arg, const char *field_name_arg, ulong priv, const bool ro)
void setup_field (Table_trigger_field_support *table_triggers, GRANT_INFO *table_grant_info)
 Find index of Field object which will be appropriate for item representing field of row being changed in trigger. More...
enum Type type () const override
bool eq (const Item *item, bool binary_cmp) const override
bool fix_fields (THD *, Item **) override
 Resolve the name of a column reference. More...
void print (const THD *thd, String *str, enum_query_type query_type) const override
 This method is used for to: More...
table_map used_tables () const override
Fieldget_tmp_table_field () override
Itemcopy_or_same (THD *) override
Itemget_tmp_table_item (THD *thd) override
void cleanup () override
void set_required_privilege (bool rw) override
bool check_function_as_value_generator (uchar *args) override
 Check if this item is allowed for a virtual column or inside a default expression. More...
Settable_routine_parameterget_settable_routine_parameter () override
bool set_value (THD *thd, Item **it)
- Public Member Functions inherited from Item_field
void set_item_equal_all_join_nests (Item_equal *item_equal)
 Item_field (Name_resolution_context *context_arg, const char *db_arg, const char *table_name_arg, const char *field_name_arg)
 Item_field (const POS &pos, const char *db_arg, const char *table_name_arg, const char *field_name_arg)
 Item_field (THD *thd, Item_field *item)
 Constructor need to process subselect with temporary tables (see Item) More...
 Item_field (THD *thd, Name_resolution_context *context_arg, Field *field)
 Constructor used inside setup_wild(). More...
 Item_field (Field *field)
bool itemize (Parse_context *pc, Item **res) override
 The same as contextualize() but with additional parameter. More...
double val_real () override
longlong val_int () override
longlong val_time_temporal () override
 Return time value of item in packed longlong format. More...
longlong val_date_temporal () override
 Return date value of item in packed longlong format. More...
my_decimalval_decimal (my_decimal *) override
Stringval_str (String *) override
bool val_json (Json_wrapper *result) override
 Get a JSON value from an Item. More...
bool send (Protocol *protocol, String *str_arg) override
 This is only called from items that is not of type item_field. More...
void reset_field (Field *f)
 Reset this item to point to a field from the new temporary table. More...
void make_field (Send_field *tmp_field) override
void save_org_in_field (Field *field) override
 Set a field's value from a item. More...
enum Item_result result_type () const override
enum Item_result numeric_context_result_type () const override
 Result type when an item appear in a numeric context. More...
Item_result cast_to_int_type () const override
enum_monotonicity_info get_monotonicity_info () const override
longlong val_int_endpoint (bool left_endp, bool *incl_endp) override
void set_result_field (Field *field_arg) override
Fieldtmp_table_field (TABLE *) override
bool get_date (MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
bool get_time (MYSQL_TIME *ltime) override
bool get_timeval (struct timeval *tm, int *warnings) override
 Get timestamp in "struct timeval" format. More...
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...
bool collect_item_field_processor (uchar *arg) override
 Store the pointer to this item field into a list if not already there. More...
bool collect_item_field_or_view_ref_processor (uchar *arg) override
bool add_field_to_set_processor (uchar *arg) override
 Item::walk function. More...
bool add_field_to_cond_set_processor (uchar *) override
 Item::walk function. More...
bool remove_column_from_bitmap (uchar *arg) override
 Visitor interface for removing all column expressions (Item_field) in this expression tree from a bitmap. More...
bool find_item_in_field_list_processor (uchar *arg) override
 Check if an Item_field references some field from a list of fields. More...
bool find_field_processor (uchar *arg) override
 Is this an Item_field which references the given Field argument? More...
bool mark_field_in_map (uchar *arg) override
 Mark underlying field in read or write map of a table. More...
bool used_tables_for_level (uchar *arg) override
 Return used table information for the specified query block (level). More...
bool check_column_privileges (uchar *arg) override
 Check privileges of base table column. More...
bool check_partition_func_processor (uchar *) override
 Check if a partition function is allowed. More...
Item_equalfind_item_equal (COND_EQUAL *cond_equal) const
 Find a field among specified multiple equalities. More...
bool subst_argument_checker (uchar **arg) override
 Check whether a field can be substituted by an equal item. More...
Itemequal_fields_propagator (uchar *arg) override
 Set a pointer to the multiple equality the field reference belongs to (if any). More...
Itemreplace_item_field (uchar *) override
 If this field is the target is the target of replacement, replace it with the info object's item or, if the item is found inside a subquery, the target is an outer reference, so we create a new Item_field, mark it accordingly and replace with that instead. More...
bool update_context (uchar *) override
 Update the name resolution context for the field if its existing context stems from Context_info::old_block to that of Context_info::new_block. More...
bool set_no_const_sub (uchar *) override
 Mark the item to not be part of substitution if it's not a binary item. More...
Itemreplace_equal_field (uchar *) override
 Replace an Item_field for an equal Item_field that evaluated earlier (if any). More...
uint32 max_disp_length ()
Item_fieldfield_for_view_update () override
Itemsafe_charset_converter (THD *thd, const CHARSET_INFO *tocs) override
int fix_outer_field (THD *thd, Field **field, Item **reference)
 Resolve the name of an outer select column reference. More...
Itemupdate_value_transformer (uchar *select_arg) override
bool is_outer_field () const override
Field::geometry_type get_geometry_type () const override
const CHARSET_INFOcharset_for_protocol (void) const override
void dbug_print () const
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) override
 Calculate condition filtering effect for "WHERE field", which implicitly means "WHERE field <> 0". More...
float get_cond_filter_default_probability (double max_distinct_values, float default_filter) const
 Returns the probability for the predicate "col OP <val>" to be true for a row in the case where no index statistics or range estimates are available for 'col'. More...
bool alias_name_used () const override
bool repoint_const_outer_ref (uchar *arg) override
 If this object is the real_item of an Item_ref, repoint the result_field to field. More...
const Fieldget_orig_field () override
void set_orig_field (const Field *orig_field_arg) override
bool returns_array () const override
 Whether the item returns array of its data type. More...
void set_can_use_prefix_key () override
bool replace_field_processor (uchar *arg) override
 A processor that replaces any Fields with a Create_field_wrapper. More...
bool strip_db_table_name_processor (uchar *) override
 Generated fields don't need db/table names. More...
- Public Member Functions inherited from Item_ident
 Item_ident (Name_resolution_context *context_arg, const char *db_name_arg, const char *table_name_arg, const char *field_name_arg)
 Item_ident (const POS &pos, const char *db_name_arg, const char *table_name_arg, const char *field_name_arg)
 Item_ident (THD *thd, Item_ident *item)
 Constructor used by Item_field & Item_*_ref (see Item comment) More...
const char * full_name () const override
void fix_after_pullout (SELECT_LEX *parent_select, SELECT_LEX *removed_select) override
 Fix after tables have been moved from one select_lex level to the parent level, e.g by semijoin conversion. More...
bool aggregate_check_distinct (uchar *arg) override
bool aggregate_check_group (uchar *arg) override
Bool3 local_column (const SELECT_LEX *sl) const override
 Tells if this is a column of a table whose qualifying query block is 'sl'. More...
bool set_table_name (uchar *tn) override final
 Assign the argument to table_name. More...
void set_orig_names ()
bool change_context_processor (uchar *arg) override
bool is_alias_of_expr () const
void set_alias_of_expr ()
 Marks that this Item's name is alias of SELECT expression. More...
bool walk (Item_processor processor, enum_walk walk, uchar *arg) override
 Traverses a tree of Items in prefix and/or postfix order. More...
bool update_depended_from (uchar *) override
bool is_strong_side_column_not_in_fd (uchar *arg) override
bool is_column_not_in_fd (uchar *arg) override
- 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...
virtual ~Item () override
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 Fieldmake_string_field (TABLE *table) const
 Create a field to hold a string value from an item. More...
void quick_fix_field ()
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...
bool evaluate (THD *thd, String *str)
 Evaluate item, possibly using the supplied buffer. More...
enum 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...
enum_field_types data_type () const
 Retrieve the derived data type of the Item. More...
void set_data_type (enum_field_types data_type)
 Set the data type of the current Item. More...
void set_data_type_bool ()
void set_data_type_longlong ()
 Set the data type of the Item to be longlong. More...
void set_data_type_decimal (uint8 precision, uint8 dec)
 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_init ()
 Initialize an Item to be of VARCHAR type, other properties undetermined. 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 (ulonglong 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 (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_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_geometry ()
 Set the Item to be of GEOMETRY type. More...
void set_data_type_from_result (Item_result result, uint32 length)
 Set type information of Item from "result" information. More...
void set_data_type_from_item (Item *item)
 Set data type properties of the item from the properties of another item. More...
void aggregate_type (Bounds_checked_array< Item *> items)
 Aggregates data types from array of items into current item. 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 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_ascii (String *str)
virtual bool val_bool ()
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...
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 table_map not_null_tables () const
virtual bool basic_const_item () const
 Returns true if this is a simple constant item like an integer, not a constant expression. More...
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...
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, bool used_alias) const
 Prints the item when it's part of ORDER BY and GROUP BY. More...
virtual void update_used_tables ()
 Updates used tables, not null tables information and accumulates properties up the item tree, cf. More...
virtual void split_sum_func (THD *, Ref_item_array, List< Item > &)
void split_sum_func2 (THD *thd, Ref_item_array ref_item_array, List< Item > &fields, Item **ref, bool skip_registered)
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_result_field () const
virtual Fieldget_result_field () const
virtual bool is_bool_func () const
virtual void no_rows_in_result ()
virtual Itemcopy_andor_structure (THD *)
virtual Itemreal_item ()
virtual Itemsubstitutional_item ()
virtual void set_runtime_created ()
virtual const CHARSET_INFOcompare_collation () const
template<class T >
bool walk_helper_thunk (uchar *arg)
virtual Itemtransform (Item_transformer transformer, uchar *arg)
 Perform a generic transformation of the Item tree, by adding zero or more additional Item objects to it. More...
virtual Itemcompile (Item_analyzer analyzer, uchar **arg_p, Item_transformer transformer, uchar *arg_t)
 Perform a generic "compilation" of the Item tree, ie transform the Item tree by adding zero or more Item objects to it. More...
virtual void traverse_cond (Cond_traverser traverser, void *arg, traverse_order)
virtual bool intro_version (uchar *)
bool cleanup_processor (uchar *)
 cleanup() item if it is resolved ('fixed'). More...
virtual bool visitor_processor (uchar *arg)
 A processor to handle the select lex visitor framework. More...
virtual bool find_item_processor (uchar *arg)
virtual bool is_non_const_over_literals (uchar *)
virtual bool cast_incompatible_args (uchar *)
 Wrap incompatible arguments in CAST nodes to the expected data types. More...
virtual bool references_select_expr_of (uchar *arg)
virtual bool ensure_multi_equality_fields_are_available_walker (uchar *)
 Traverse the item tree and replace fields that are outside of reach with fields that are within reach. More...
virtual bool reset_wf_state (uchar *arg)
 Reset execution state for such window function types as determined by arg. More...
virtual bool inform_item_in_cond_of_tab (uchar *)
virtual bool clean_up_after_removal (uchar *arg)
 Clean up after removing the item from the item tree. More...
bool propagate_derived_used (uchar *)
 Propagate components that use referenced columns from derived tables. More...
bool propagate_set_derived_used (uchar *)
 Called by Item::walk() to set all the referenced items' derived_used flag. More...
virtual bool collect_scalar_subqueries (uchar *)
virtual bool collect_grouped_aggregates (uchar *)
virtual bool collect_subqueries (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...
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 explain_subquery_checker (uchar **)
virtual Itemexplain_subquery_propagator (uchar *)
virtual bool check_valid_arguments_processor (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 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 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 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_view_ref (uchar *)
virtual Itemreplace_aggregate (uchar *)
virtual bool update_aggr_refs (uchar *)
 A walker processor overridden by Item_aggregate_ref, q.v. More...
void delete_self ()
virtual bool is_splocal () const
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...
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, bool binary_cmp, const CHARSET_INFO *cs)
virtual bool is_expensive ()
uint32 max_char_length () const
void fix_char_length (uint32 max_char_length_arg)
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...
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_rollup_expr () const
void set_rollup_expr ()
 Set the property: this item (tree) contains a reference to a ROLLUP expr. 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...
bool is_derived_used () const
void mark_subqueries_optimized_away ()
virtual bool gc_subst_analyzer (uchar **)
 Analyzer function for GC substitution. More...
virtual Itemgc_subst_transformer (uchar *)
 Transformer function for GC substitution. More...
bool can_be_substituted_for_gc () const
 Check if this item is of a type that is eligible for GC substitution. More...
void aggregate_decimal_properties (Item **item, uint nitems)
 Set precision and decimals of function when this depends on arguments' values for these quantities. More...
void aggregate_float_properties (Item **item, 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_char_length (Item **args, uint nitems)
 Set the maximum number of characters required by any of the items in args. More...
void aggregate_temporal_properties (Item **item, uint nitems)
 Set fractional seconds precision for temporal functions. More...
bool aggregate_string_properties (const char *name, Item **item, uint nitems)
 Aggregate string properties (character set, collation and maximum length) for string function. More...
void aggregate_num_type (Item_result result_type, Item **item, uint nitems)
 This function is used to resolve type for numeric result type of CASE, COALESCE, IF and LEAD/LAG. More...
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 void allow_array_cast ()
 A helper funciton to ensure proper usage of CAST(. More...
- Public Member Functions inherited from Parse_tree_node_tmpl< Context >
virtual ~Parse_tree_node_tmpl ()
bool is_contextualized () const
virtual bool contextualize (Context *pc)
 Do all context-sensitive things and mark the node as contextualized. More...
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

enum_trigger_variable_type trigger_var_type
SQL_I_List< Item_trigger_field > * next_trig_field_list
uint field_idx
- Public Attributes inherited from Item_field
 Table containing this resolved field. More...
 Source field. More...
Item_equalitem_equal_all_join_nests {nullptr}
bool no_const_subst
uint have_privileges
bool any_privileges
bool can_use_prefix_key {false}
- Public Attributes inherited from Item_ident
 For regularly resolved column references, 'context' points to a name resolution context object belonging to the query block which simply contains the reference. More...
const char * db_name
const char * table_name
const char * field_name
uint cached_field_index
- Public Attributes inherited from Item
 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 maybe_null
 True if this item may be null. 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 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...

Private Member Functions

bool set_value (THD *thd, sp_rcontext *ctx, Item **it) override
- Private Member Functions inherited from Settable_routine_parameter
 Settable_routine_parameter ()
virtual ~Settable_routine_parameter ()
virtual void set_out_param_info (Send_field *info)
virtual const Send_fieldget_out_param_info () const

Private Attributes

ulong original_privilege
ulong want_privilege
bool read_only

Additional Inherited Members

- Public Types inherited from Item
enum  Type {
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,
 < Modifier for result transformation More...
enum  item_marker {
 < Values for member 'marker' More...
- Public Types inherited from Parse_tree_node_tmpl< Context >
typedef Context context_t
- 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 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
- Protected Member Functions inherited from Item_field
void set_field (Field *field)
type_conversion_status save_in_field_inner (Field *field, bool no_conversions) override
 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...
- Protected Member Functions inherited from Item_ident
void print (const THD *thd, String *str, enum_query_type query_type, const char *db_name_arg, const char *table_name_arg) const
 Function to print column name for a table. More...
- 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...
Stringval_string_from_real (String *str)
Stringval_string_from_int (String *str)
Stringval_string_from_decimal (String *str)
Stringval_string_from_date (String *str)
Stringval_string_from_datetime (String *str)
Stringval_string_from_time (String *str)
my_decimalval_decimal_from_real (my_decimal *decimal_value)
my_decimalval_decimal_from_int (my_decimal *decimal_value)
my_decimalval_decimal_from_string (my_decimal *decimal_value)
my_decimalval_decimal_from_date (my_decimal *decimal_value)
my_decimalval_decimal_from_time (my_decimal *decimal_value)
longlong val_int_from_decimal ()
longlong val_int_from_date ()
longlong val_int_from_time ()
longlong val_int_from_datetime ()
double val_real_from_decimal ()
bool 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...
Stringerror_str ()
 Get the value to return from val_str() 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...
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 ()
- 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...
- Protected Attributes inherited from Item_ident
const char * orig_db_name
const char * orig_table_name
const char * orig_field_name
bool m_alias_of_expr
 if this Item's name is alias of SELECT expression More...
- 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
- 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_ROLLUP_EXPR = 0x10
 Set if the item or one or more of the underlying items contains a ROLLUP expression. 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...

Detailed Description

Represents NEW/OLD version of field of row which is changed/read in trigger.

Note: For this item main part of actual binding to Field object happens not during fix_fields() call (like for Item_field) but right after parsing of trigger definition, when table is opened, with special setup_field() call. On fix_fields() stage we simply choose one of two Field instances representing either OLD or NEW version of this field.

Constructor & Destructor Documentation

◆ Item_trigger_field() [1/2]

Item_trigger_field::Item_trigger_field ( Name_resolution_context context_arg,
enum_trigger_variable_type  trigger_var_type_arg,
const char *  field_name_arg,
ulong  priv,
const bool  ro 

◆ Item_trigger_field() [2/2]

Item_trigger_field::Item_trigger_field ( const POS pos,
enum_trigger_variable_type  trigger_var_type_arg,
const char *  field_name_arg,
ulong  priv,
const bool  ro 

Member Function Documentation

◆ check_function_as_value_generator()

bool Item_trigger_field::check_function_as_value_generator ( uchar args)

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

Should be overridden in child classes.

[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.
true if function is not accepted

Reimplemented from Item_field.

◆ cleanup()

void Item_trigger_field::cleanup ( )

Reimplemented from Item_field.

◆ copy_or_same()

Item* Item_trigger_field::copy_or_same ( THD )

Reimplemented from Item.

◆ eq()

bool Item_trigger_field::eq ( const Item item,
bool  binary_cmp 
) const

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_equal)

Reimplemented from Item_field.

◆ fix_fields()

bool Item_trigger_field::fix_fields ( THD thd,
Item **  reference 

Resolve the name of a column reference.

The method resolves the column reference represented by 'this' as a column present in one of: FROM clause, SELECT clause, GROUP BY clause of a query Q, or in outer queries that contain Q.

The name resolution algorithm used is (where [T_j] is an optional table name that qualifies the column name):

search for a column or derived column named col_ref_i
[in table T_j] in the FROM clause of Q;
if such a column is NOT found AND // Lookup in outer queries.
there are outer queries
for each outer query Q_k beginning from the inner-most one
search for a column or derived column named col_ref_i
[in table T_j] in the FROM clause of Q_k;
if such a column is not found
Search for a column or derived column named col_ref_i
[in table T_j] in the SELECT and GROUP clauses of Q_k.

Notice that compared to Item_ref::fix_fields, here we first search the FROM clause, and then we search the SELECT and GROUP BY clauses.

[in]thdcurrent thread
[in,out]referenceview column if this item was resolved to a view column
Return values
trueif error
falseon success

Reimplemented from Item_field.

◆ get_settable_routine_parameter()

Settable_routine_parameter* Item_trigger_field::get_settable_routine_parameter ( )

Reimplemented from Item.

◆ get_tmp_table_field()

Field* Item_trigger_field::get_tmp_table_field ( )

Reimplemented from Item_field.

◆ get_tmp_table_item()

Item* Item_trigger_field::get_tmp_table_item ( THD thd)

Reimplemented from Item_field.

◆ print()

void Item_trigger_field::print ( const THD ,
String str,
) const

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

Reimplemented from Item_field.

◆ set_required_privilege()

void Item_trigger_field::set_required_privilege ( bool  rw)

Reimplemented from Settable_routine_parameter.

◆ set_value() [1/2]

bool Item_trigger_field::set_value ( THD thd,
sp_rcontext ctx,
Item **  it 

◆ set_value() [2/2]

bool Item_trigger_field::set_value ( THD thd,
Item **  it 

◆ setup_field()

void Item_trigger_field::setup_field ( Table_trigger_field_support table_triggers,
GRANT_INFO table_grant_info 

Find index of Field object which will be appropriate for item representing field of row being changed in trigger.

table_triggersTable_trigger_field_support instance. Do not use TABLE::triggers as it might be not initialized at the moment.
table_grant_infoGRANT_INFO of the subject table
This function does almost the same as fix_fields() for Item_field but is invoked right after trigger definition parsing. Since at this stage we can't say exactly what Field object (corresponding to TABLE::record[0] or TABLE::record[1]) should be bound to this Item, we only find out index of the Field and then select concrete Field object in fix_fields() (by that time Table_trigger_dispatcher::old_field/ new_field should point to proper array of Fields). It also binds Item_trigger_field to Table_trigger_field_support object for table of trigger which uses this item. Another difference is that the field is not marked in read_set/write_set.

◆ type()

enum Type Item_trigger_field::type ( ) const

Reimplemented from Item_field.

◆ used_tables()

table_map Item_trigger_field::used_tables ( ) const

Reimplemented from Item_field.

Member Data Documentation

◆ field_idx

uint Item_trigger_field::field_idx

◆ next_trg_field

Item_trigger_field* Item_trigger_field::next_trg_field

◆ next_trig_field_list

SQL_I_List<Item_trigger_field>* Item_trigger_field::next_trig_field_list

◆ original_privilege

ulong Item_trigger_field::original_privilege

◆ read_only

bool Item_trigger_field::read_only

◆ table_grants

GRANT_INFO* Item_trigger_field::table_grants

◆ trigger_var_type

enum_trigger_variable_type Item_trigger_field::trigger_var_type

◆ triggers

Table_trigger_field_support* Item_trigger_field::triggers

◆ want_privilege

ulong Item_trigger_field::want_privilege

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