25#ifndef TRIGGER_H_INCLUDED
26#define TRIGGER_H_INCLUDED
78 String *binlog_create_trigger_stmt);
134 bool parse(
THD *thd,
bool is_upgrade);
218 String *full_trigger_definition)
const;
Definition: sql_lex.h:2597
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:75
sp_head * m_sp
Pointer to the sp_head corresponding to the trigger.
Definition: trigger.h:345
GRANT_INFO * get_subject_table_grant()
Definition: trigger.h:199
bool has_parse_error() const
Definition: trigger.h:201
enum_trigger_event_type m_event
Trigger event.
Definition: trigger.h:307
LEX_CSTRING m_client_cs_name
Character set context, used for parsing and executing trigger.
Definition: trigger.h:298
ulonglong get_action_order() const
Definition: trigger.h:191
LEX_CSTRING m_db_name
Database name.
Definition: trigger.h:274
LEX_CSTRING m_connection_cl_name
Collation name of the connection within one a trigger are created.
Definition: trigger.h:301
enum_trigger_action_time_type get_action_time() const
Definition: trigger.h:178
const LEX_CSTRING & get_definer_user() const
Definition: trigger.h:162
~Trigger()
Destroy associated SP (if any).
Definition: trigger.cc:362
LEX_CSTRING m_definition_utf8
Trigger definition in UTF8 to save in DD.
Definition: trigger.h:283
my_timeval m_created_timestamp
Current time when the trigger was created (measured in milliseconds since since 0 hours,...
Definition: trigger.h:319
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:193
bool m_has_parse_error
This flags specifies whether the trigger has parse error or not.
Definition: trigger.h:348
bool parse(THD *thd, bool is_upgrade)
Parse CREATE TRIGGER statement.
Definition: trigger.cc:434
char m_parse_error_message[MYSQL_ERRMSG_SIZE]
This error will be displayed when the user tries to manipulate or invoke triggers on a table that has...
Definition: trigger.h:356
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:399
ulonglong m_action_order
Action_order value for the trigger.
Definition: trigger.h:326
my_timeval get_created_timestamp() const
Definition: trigger.h:189
const LEX_CSTRING & get_trigger_name() const
Definition: trigger.h:152
const char * get_parse_error_message() const
Definition: trigger.h:203
const LEX_CSTRING & get_definition_utf8() const
Definition: trigger.h:156
LEX_CSTRING m_trigger_name
Trigger name.
Definition: trigger.h:334
LEX_CSTRING m_db_cl_name
Default database collation.
Definition: trigger.h:304
const LEX_CSTRING & get_definer() const
Definition: trigger.h:160
sql_mode_t m_sql_mode
Trigger sql-mode.
Definition: trigger.h:286
LEX_CSTRING m_definition
Trigger definition to save in DD.
Definition: trigger.h:280
bool execute(THD *thd)
Execute trigger's body.
Definition: trigger.cc:374
MEM_ROOT * m_mem_root
Memory root to store all data of this Trigger object.
Definition: trigger.h:259
const LEX_CSTRING & get_db_cl_name() const
Definition: trigger.h:172
enum_trigger_event_type get_event() const
Definition: trigger.h:174
void set_trigger_def_utf8(const LEX_CSTRING &trigger_def_utf8)
Definition: trigger.h:243
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:625
LEX_CSTRING m_definer
Trigger definer.
Definition: trigger.h:289
const LEX_CSTRING & get_definition() const
Definition: trigger.h:154
bool is_created_timestamp_null() const
Definition: trigger.h:184
LEX_CSTRING m_subject_table_name
Table name.
Definition: trigger.h:277
void set_parse_error_message(const char *error_message)
Definition: trigger.h:247
sql_mode_t get_sql_mode() const
Definition: trigger.h:158
LEX_CSTRING m_definer_user
Trigger definer (user part).
Definition: trigger.h:292
const LEX_CSTRING & get_connection_cl_name() const
Definition: trigger.h:168
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:326
LEX_CSTRING m_definer_host
Trigger definer (host part).
Definition: trigger.h:295
void set_trigger_def(const LEX_CSTRING &trigger_def)
Definition: trigger.h:239
GRANT_INFO m_subject_table_grant
Grant information for the trigger.
Definition: trigger.h:342
const LEX_CSTRING & get_subject_table_name() const
Definition: trigger.h:148
const LEX_CSTRING & get_event_as_string() const
Definition: trigger.cc:158
const LEX_CSTRING & get_db_name() const
Definition: trigger.h:146
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:164
const LEX_CSTRING & get_client_cs_name() const
Definition: trigger.h:166
void print_upgrade_warning(THD *thd)
Print upgrade warnings (if any).
Definition: trigger.cc:668
LEX_CSTRING m_full_trigger_definition
Full trigger definition reconstructed from a data loaded from the table mysql.trigger.
Definition: trigger.h:265
enum_trigger_action_time_type m_action_time
Trigger action time.
Definition: trigger.h:310
sp_head * get_sp()
Definition: trigger.h:197
void set_trigger_name(const LEX_CSTRING &trigger_name)
Definition: trigger.h:235
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.
#define MYSQL_ERRMSG_SIZE
Max length of a error message.
Definition: mysql_com.h:881
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:369
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