MySQL  8.0.19
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
 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 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...
 
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...
 
bool change_context_processor (uchar *cntx) 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 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)
 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...
 
bool is_null_value ()
 For template-compatibility with Field. 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 ()
 
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 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 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)
 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...
 
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
 
Item_trigger_fieldnext_trg_field
 
SQL_I_List< Item_trigger_field > * next_trig_field_list
 
uint field_idx
 
Table_trigger_field_supporttriggers
 
- Public Attributes inherited from Item_field
TABLE_LISTtable_ref
 Table containing this resolved field. More...
 
Fieldfield
 Source field. More...
 
Item_equalitem_equal
 
bool no_const_subst
 
uint have_privileges
 
bool any_privileges
 
bool can_use_prefix_key {false}
 
- Public Attributes inherited from Item_ident
Name_resolution_contextcontext
 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
 
TABLE_LISTcached_table
 
SELECT_LEXdepended_from
 
- 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 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
 
GRANT_INFOtable_grants
 
bool read_only
 

Additional Inherited Members

- Public Types inherited from Item
enum  Type {
  INVALID_ITEM = 0, FIELD_ITEM, FUNC_ITEM, SUM_FUNC_ITEM,
  STRING_ITEM, INT_ITEM, REAL_ITEM, NULL_ITEM,
  VARBIN_ITEM, COPY_STR_ITEM, FIELD_AVG_ITEM, DEFAULT_VALUE_ITEM,
  PROC_ITEM, COND_ITEM, REF_ITEM, FIELD_STD_ITEM,
  FIELD_VARIANCE_ITEM, INSERT_VALUE_ITEM, SUBSELECT_ITEM, ROW_ITEM,
  CACHE_ITEM, TYPE_HOLDER, PARAM_ITEM, TRIGGER_FIELD_ITEM,
  DECIMAL_ITEM, XPATH_NODESET, XPATH_NODESET_CMP, VIEW_FIXER_ITEM,
  FIELD_BIT_ITEM, NULL_RESULT_ITEM, VALUES_COLUMN_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_CONST_PROPAG = 1, MARKER_BIT = 4, MARKER_FUNC_DEP_NOT_NULL = 5,
  MARKER_DISTINCT_GROUP = 6, 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
 
- 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 
)
inline

◆ 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 
)
inline

Member Function Documentation

◆ check_function_as_value_generator()

bool Item_trigger_field::check_function_as_value_generator ( uchar args)
inlineoverridevirtual

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

◆ cleanup()

void Item_trigger_field::cleanup ( )
overridevirtual

Reimplemented from Item_field.

◆ copy_or_same()

Item* Item_trigger_field::copy_or_same ( THD )
inlineoverridevirtual

Reimplemented from Item.

◆ eq()

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

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

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

resolve_column_reference([T_j].col_ref_i)
{
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.

Parameters
[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 ( )
inlineoverridevirtual

Reimplemented from Item.

◆ get_tmp_table_field()

Field* Item_trigger_field::get_tmp_table_field ( )
inlineoverridevirtual

Reimplemented from Item_field.

◆ get_tmp_table_item()

Item* Item_trigger_field::get_tmp_table_item ( THD thd)
inlineoverridevirtual

Reimplemented from Item_field.

◆ print()

void Item_trigger_field::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_field.

◆ set_required_privilege()

void Item_trigger_field::set_required_privilege ( bool  rw)
overridevirtual

Reimplemented from Settable_routine_parameter.

◆ set_value() [1/2]

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

◆ set_value() [2/2]

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

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

Parameters
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
Note
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
inlineoverridevirtual

Reimplemented from Item_field.

◆ used_tables()

table_map Item_trigger_field::used_tables ( ) const
inlineoverridevirtual

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
private

◆ read_only

bool Item_trigger_field::read_only
private

◆ table_grants

GRANT_INFO* Item_trigger_field::table_grants
private

◆ 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
private

The documentation for this class was generated from the following files:
query
static char * query
Definition: myisam_ftdump.cc:44
consts::SELECT
const std::string SELECT("SELECT")
Name of the static privileges.