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:2618
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:167
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:448
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:413
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:639
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:695
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:682
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:383
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:199
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:372
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