25#ifndef TRIGGER_H_INCLUDED 
   26#define TRIGGER_H_INCLUDED 
   93                                     String *binlog_create_trigger_stmt);
 
  151  bool parse(
THD *thd, 
bool is_upgrade);
 
  235                                      String *full_trigger_definition) 
const;
 
Definition: sql_lex.h:2763
 
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:169
 
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
 
This class represents a trigger object.
Definition: trigger.h:90
 
sp_head * m_sp
Pointer to the sp_head corresponding to the trigger.
Definition: trigger.h:362
 
GRANT_INFO * get_subject_table_grant()
Definition: trigger.h:216
 
bool has_parse_error() const
Definition: trigger.h:218
 
enum_trigger_event_type m_event
Trigger event.
Definition: trigger.h:324
 
LEX_CSTRING m_client_cs_name
Character set context, used for parsing and executing trigger.
Definition: trigger.h:315
 
ulonglong get_action_order() const
Definition: trigger.h:208
 
LEX_CSTRING m_db_name
Database name.
Definition: trigger.h:291
 
LEX_CSTRING m_connection_cl_name
Collation name of the connection within one a trigger are created.
Definition: trigger.h:318
 
enum_trigger_action_time_type get_action_time() const
Definition: trigger.h:195
 
const LEX_CSTRING & get_definer_user() const
Definition: trigger.h:179
 
~Trigger()
Destroy associated SP (if any).
Definition: trigger.cc:376
 
LEX_CSTRING m_definition_utf8
Trigger definition in UTF8 to save in DD.
Definition: trigger.h:300
 
my_timeval m_created_timestamp
Current time when the trigger was created (measured in milliseconds since since 0 hours,...
Definition: trigger.h:336
 
static Trigger * create_from_dd(MEM_ROOT *mem_root, const LEX_CSTRING &trigger_name, const LEX_CSTRING &db_name, const LEX_CSTRING &subject_table_name, const LEX_CSTRING &definition, const LEX_CSTRING &definition_utf8, sql_mode_t sql_mode, const LEX_CSTRING &definer_user, const LEX_CSTRING &definer_host, const LEX_CSTRING &client_cs_name, const LEX_CSTRING &connection_cl_name, const LEX_CSTRING &db_cl_name, enum_trigger_event_type trg_event_type, enum_trigger_action_time_type trg_time_type, uint action_order, my_timeval created_timestamp)
Creates a new Trigger-instance with the state loaded from the Data Dictionary.
Definition: trigger.cc:306
 
const LEX_CSTRING & get_action_time_as_string() const
Definition: trigger.cc:154
 
void set_action_order(ulonglong action_order)
Definition: trigger.h:210
 
bool parse(THD *thd, bool is_upgrade)
Parse CREATE TRIGGER statement.
Definition: trigger.cc:456
 
bool create_full_trigger_definition(const THD *thd, String *full_trigger_definition) const
Construct a full CREATE TRIGGER statement from Trigger's data members.
Definition: trigger.cc:421
 
ulonglong m_action_order
Action_order value for the trigger.
Definition: trigger.h:343
 
my_timeval get_created_timestamp() const
Definition: trigger.h:206
 
const char * m_parse_error_message
Parse error message for trigger if it has one, nullptr otherwise.
Definition: trigger.h:372
 
const LEX_CSTRING & get_trigger_name() const
Definition: trigger.h:169
 
const char * get_parse_error_message() const
Definition: trigger.h:220
 
const LEX_CSTRING & get_definition_utf8() const
Definition: trigger.h:173
 
LEX_CSTRING m_trigger_name
Trigger name.
Definition: trigger.h:351
 
LEX_CSTRING m_db_cl_name
Default database collation.
Definition: trigger.h:321
 
const LEX_CSTRING & get_definer() const
Definition: trigger.h:177
 
sql_mode_t m_sql_mode
Trigger sql-mode.
Definition: trigger.h:303
 
LEX_CSTRING m_definition
Trigger definition to save in DD.
Definition: trigger.h:297
 
bool execute(THD *thd)
Execute trigger's body.
Definition: trigger.cc:388
 
MEM_ROOT * m_mem_root
Memory root to store all data of this Trigger object.
Definition: trigger.h:274
 
const LEX_CSTRING & get_db_cl_name() const
Definition: trigger.h:189
 
enum_trigger_event_type get_event() const
Definition: trigger.h:191
 
void set_trigger_def_utf8(const LEX_CSTRING &trigger_def_utf8)
Definition: trigger.h:260
 
void add_tables_and_routines(THD *thd, Query_tables_list *prelocking_ctx, Table_ref *table_list)
Add tables and routines used by trigger to the set of elements used by statement.
Definition: trigger.cc:647
 
LEX_CSTRING m_definer
Trigger definer.
Definition: trigger.h:306
 
const LEX_CSTRING & get_definition() const
Definition: trigger.h:171
 
bool is_created_timestamp_null() const
Definition: trigger.h:201
 
LEX_CSTRING m_subject_table_name
Table name.
Definition: trigger.h:294
 
void set_parse_error_message(const char *error_message)
Mark trigger as having a parse error and remember the message for future use.
Definition: trigger.cc:703
 
sql_mode_t get_sql_mode() const
Definition: trigger.h:175
 
LEX_CSTRING m_definer_user
Trigger definer (user part).
Definition: trigger.h:309
 
const LEX_CSTRING & get_connection_cl_name() const
Definition: trigger.h:185
 
Trigger(const LEX_CSTRING &trigger_name, MEM_ROOT *mem_root, const LEX_CSTRING &db_name, const LEX_CSTRING &table_name, const LEX_CSTRING &definition, const LEX_CSTRING &definition_utf8, sql_mode_t sql_mode, const LEX_CSTRING &definer_user, const LEX_CSTRING &definer_host, const LEX_CSTRING &client_cs_name, const LEX_CSTRING &connection_cl_name, const LEX_CSTRING &db_cl_name, enum_trigger_event_type event_type, enum_trigger_action_time_type action_time, uint action_order, my_timeval created_timestamp)
Trigger constructor.
Definition: trigger.cc:342
 
Trigger * clone_shallow(MEM_ROOT *mem_root) const
Create a new Trigger object as a shallow clone of existing Trigger object.
Definition: trigger.cc:329
 
LEX_CSTRING m_definer_host
Trigger definer (host part).
Definition: trigger.h:312
 
void set_trigger_def(const LEX_CSTRING &trigger_def)
Definition: trigger.h:256
 
GRANT_INFO m_subject_table_grant
Grant information for the trigger.
Definition: trigger.h:359
 
const LEX_CSTRING & get_subject_table_name() const
Definition: trigger.h:165
 
const LEX_CSTRING & get_event_as_string() const
Definition: trigger.cc:158
 
const LEX_CSTRING & get_db_name() const
Definition: trigger.h:163
 
static bool construct_create_trigger_stmt_with_definer(THD *thd, String *binlog_query, const LEX_CSTRING &def_user, const LEX_CSTRING &def_host)
Constructs CREATE TRIGGER statement taking into account a value of the DEFINER clause.
Definition: trigger.cc:128
 
const LEX_CSTRING & get_definer_host() const
Definition: trigger.h:181
 
const LEX_CSTRING & get_client_cs_name() const
Definition: trigger.h:183
 
void print_upgrade_warning(THD *thd)
Print upgrade warnings (if any).
Definition: trigger.cc:690
 
LEX_CSTRING m_full_trigger_definition
Full trigger definition reconstructed from a data loaded from the table mysql.trigger.
Definition: trigger.h:280
 
enum_trigger_action_time_type m_action_time
Trigger action time.
Definition: trigger.h:327
 
sp_head * get_sp()
Definition: trigger.h:214
 
void set_trigger_name(const LEX_CSTRING &trigger_name)
Definition: trigger.h:252
 
static Trigger * create_from_parser(THD *thd, TABLE *subject_table, String *binlog_create_trigger_stmt)
Creates a new Trigger-instance with the state from the parser.
Definition: trigger.cc:182
 
sp_head represents one instance of a stored program.
Definition: sp_head.h:389
 
static MEM_ROOT mem_root
Definition: client_plugin.cc:114
 
uint64_t sql_mode_t
Definition: dd_event.h:39
 
Some integer typedefs for easier portability.
 
unsigned long long int ulonglong
Definition: my_inttypes.h:56
 
Common definition between mysql server & client.
 
static const char * sql_mode
Definition: mysqlslap.cc:200
 
const char * table_name
Definition: rules_table_service.cc:56
 
const char * db_name
Definition: rules_table_service.cc:55
 
The current state of the privilege checking process for the current user, SQL statement and SQL objec...
Definition: table.h:384
 
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83
 
Definition: mysql_lex_string.h:40
 
Replacement of system's struct timeval to ensure we can carry 64 bit values even on a platform which ...
Definition: my_time_t.h:45
 
int64_t m_tv_sec
Definition: my_time_t.h:46
 
int64_t m_tv_usec
Definition: my_time_t.h:47
 
Include file for Sun RPC to compile out of the box.
 
This file defines all base public constants related to triggers in MySQL.
 
enum_trigger_event_type
Constants to enumerate possible event types on which triggers can be fired.
Definition: trigger_def.h:42
 
enum_trigger_action_time_type
Constants to enumerate possible timings when triggers can be fired.
Definition: trigger_def.h:52