MySQL 8.3.0
Source Code Documentation
event_data_objects.h
Go to the documentation of this file.
1#ifndef _EVENT_DATA_OBJECTS_H_
2#define _EVENT_DATA_OBJECTS_H_
3/* Copyright (c) 2004, 2023, Oracle and/or its affiliates.
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License, version 2.0,
7 as published by the Free Software Foundation.
8
9 This program is also distributed with certain software (including
10 but not limited to OpenSSL) that is licensed under separate terms,
11 as designated in a particular file or component or in included license
12 documentation. The authors of MySQL hereby grant you an additional
13 permission to link the program and your derivative works with the
14 separately licensed software that they have included with MySQL.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License, version 2.0, for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software
23 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
24
25/**
26 @addtogroup Event_Scheduler
27 @{
28
29 @file event_data_objects.h
30*/
31
32#include <stdint.h>
33#include <sys/types.h>
34
35#include "lex_string.h"
36#include "my_alloc.h" // MEM_ROOT
37#include "my_inttypes.h"
38#include "my_psi_config.h"
39#include "my_time.h" // interval_type
41#include "sql/psi_memory_key.h"
42
43class String;
44class THD;
45class Time_zone;
46
47using sql_mode_t = uint64_t;
48namespace dd {
49class Event;
50}
51
53
55 public:
58
60
63 bool dropped;
65
66 void claim_memory_ownership(bool claim);
67
68 /* Prevent use of these */
71
72#ifdef HAVE_PSI_INTERFACE
74
76#endif
77};
78
80 protected:
82
83 public:
87
90 virtual ~Event_basic();
91 virtual bool fill_event_info(THD *thd, const dd::Event &ev_obj,
92 const char *dbname) = 0;
93};
94
96 public:
100
108
111
113
115
118 bool fill_event_info(THD *thd, const dd::Event &event,
119 const char *dbname) override;
120
122
123 void mark_last_executed(THD *thd);
124};
125
127 public:
129
132
134
137
139
142 Event_timed();
143 ~Event_timed() override;
144
145 void init();
146
147 bool fill_event_info(THD *thd, const dd::Event &event,
148 const char *schema_name) override;
149
150 int get_create_event(const THD *thd, String *buf);
151
152 Event_timed(const Event_timed &) = delete;
153 void operator=(Event_timed &) = delete;
154};
155
157 public:
161
163
165
167
168 bool execute(THD *thd, bool drop);
169
171 void operator=(Event_job_data &) = delete;
172
173 private:
174 bool fill_event_info(THD *thd, const dd::Event &event,
175 const char *schema_name) override;
176 bool construct_sp_sql(THD *thd, String *sp_sql);
177};
178
179/**
180 Build an SQL drop event string.
181
182 @param[in] thd Thread handle
183 @param[in,out] sp_sql Pointer to String object where the SQL query will
184 be stored
185 @param[in] db_name The schema name
186 @param[in] event_name The event name
187
188 @retval false The drop event SQL query is built
189 @retval true Otherwise
190*/
192 LEX_CSTRING event_name);
193
194/* Compares only the schema part of the identifier */
196
197/* Compares the whole identifier*/
199 Event_basic *b);
200
201/**
202 @} (End of group Event_Scheduler)
203*/
204
205#endif /* _EVENT_DATA_OBJECTS_H_ */
Definition: event_data_objects.h:79
LEX_CSTRING m_event_name
Definition: event_data_objects.h:85
Time_zone * m_time_zone
Definition: event_data_objects.h:88
MEM_ROOT mem_root
Definition: event_data_objects.h:81
LEX_CSTRING m_definer
Definition: event_data_objects.h:86
virtual bool fill_event_info(THD *thd, const dd::Event &ev_obj, const char *dbname)=0
LEX_CSTRING m_schema_name
Definition: event_data_objects.h:84
Definition: event_data_objects.h:156
sql_mode_t m_sql_mode
Definition: event_data_objects.h:162
Event_job_data(const Event_job_data &)=delete
LEX_CSTRING m_definer_host
Definition: event_data_objects.h:160
class Stored_program_creation_ctx * m_creation_ctx
Definition: event_data_objects.h:164
void operator=(Event_job_data &)=delete
LEX_STRING m_definition
Definition: event_data_objects.h:158
LEX_CSTRING m_definer_user
Definition: event_data_objects.h:159
Definition: event_data_objects.h:54
LEX_CSTRING dbname
Definition: event_data_objects.h:61
Event_queue_element_for_exec(const Event_queue_element_for_exec &)=delete
THD * thd
Definition: event_data_objects.h:64
LEX_CSTRING name
Definition: event_data_objects.h:62
void operator=(Event_queue_element_for_exec &)=delete
PSI_statement_info * get_psi_info()
Definition: event_data_objects.h:73
bool dropped
Definition: event_data_objects.h:63
Definition: event_data_objects.h:95
bool m_starts_null
Definition: event_data_objects.h:105
my_time_t m_ends
Definition: event_data_objects.h:104
longlong m_originator
Definition: event_data_objects.h:99
my_time_t m_execute_at
Definition: event_data_objects.h:102
uint m_execution_count
Definition: event_data_objects.h:114
bool m_execute_at_null
Definition: event_data_objects.h:107
my_time_t m_last_executed
Definition: event_data_objects.h:101
my_time_t m_starts
Definition: event_data_objects.h:103
int m_on_completion
Definition: event_data_objects.h:97
bool m_ends_null
Definition: event_data_objects.h:106
int m_status
Definition: event_data_objects.h:98
interval_type m_interval
Definition: event_data_objects.h:110
longlong m_expression
Definition: event_data_objects.h:109
bool m_dropped
Definition: event_data_objects.h:112
Definition: event_data_objects.h:126
sql_mode_t m_sql_mode
Definition: event_data_objects.h:138
ulonglong m_modified
Definition: event_data_objects.h:136
LEX_CSTRING m_definer_host
Definition: event_data_objects.h:131
LEX_STRING m_definition
Definition: event_data_objects.h:128
class Stored_program_creation_ctx * m_creation_ctx
Definition: event_data_objects.h:140
void operator=(Event_timed &)=delete
ulonglong m_created
Definition: event_data_objects.h:135
LEX_STRING m_definition_utf8
Definition: event_data_objects.h:141
Event_timed(const Event_timed &)=delete
LEX_CSTRING m_definer_user
Definition: event_data_objects.h:130
LEX_STRING m_comment
Definition: event_data_objects.h:133
libevent global state management
Definition: http_common.h:59
Stored_program_creation_ctx – base class for creation context of stored programs (stored routines,...
Definition: sp_head.h:91
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:166
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:35
This class represents abstract time zone and provides basic interface for MYSQL_TIME <-> my_time_t co...
Definition: tztime.h:48
Definition: event.h:47
uint64_t sql_mode_t
Definition: dd_event.h:38
bool event_basic_identifier_equal(LEX_CSTRING db, LEX_CSTRING name, Event_basic *b)
Definition: event_data_objects.cc:1293
void init()
Definition: event_data_objects.cc:304
Event_queue_element()
Definition: event_data_objects.cc:245
bool event_basic_db_equal(LEX_CSTRING db, Event_basic *et)
Definition: event_data_objects.cc:1275
bool compute_next_execution_time(THD *thd)
Definition: event_data_objects.cc:671
bool construct_drop_event_sql(THD *thd, String *sp_sql, LEX_CSTRING schema_name, LEX_CSTRING event_name)
Get DROP EVENT statement to binlog the drop of ON COMPLETION NOT PRESERVE event.
Definition: event_data_objects.cc:1237
void init_scheduler_psi_keys()
Definition: event_data_objects.cc:84
~Event_timed() override
static PSI_statement_info psi_info
Definition: event_data_objects.h:75
bool fill_event_info(THD *thd, const dd::Event &event, const char *schema_name) override
Definition: event_data_objects.cc:402
~Event_queue_element_for_exec()
Definition: event_data_objects.cc:212
Event_job_data()
Definition: event_data_objects.cc:295
void claim_memory_ownership(bool claim)
Definition: event_data_objects.cc:200
bool init(LEX_CSTRING dbname, LEX_CSTRING name)
Definition: event_data_objects.cc:187
void mark_last_executed(THD *thd)
Set last execution time.
Definition: event_data_objects.cc:865
Event_timed()
Definition: event_data_objects.cc:274
bool construct_sp_sql(THD *thd, String *sp_sql)
Get an artificial stored procedure to parse as an event definition.
Definition: event_data_objects.cc:967
bool fill_event_info(THD *thd, const dd::Event &event, const char *dbname) override
Definition: event_data_objects.cc:347
~Event_queue_element() override
virtual ~Event_basic()
Definition: event_data_objects.cc:236
bool fill_event_info(THD *thd, const dd::Event &event, const char *schema_name) override
Definition: event_data_objects.cc:316
Event_basic()
Definition: event_data_objects.cc:224
bool execute(THD *thd, bool drop)
Compiles and executes the event (the underlying sp_head object)
Definition: event_data_objects.cc:1013
int get_create_event(const THD *thd, String *buf)
Get SHOW CREATE EVENT as string.
Definition: event_data_objects.cc:899
PSI_memory_key key_memory_event_basic_root
Definition: events.cc:1041
bool drop(THD *thd, const Table *tp)
Remove SDI for a table.
Definition: sdi.cc:638
This file follows Google coding style, except for the name MEM_ROOT (which is kept for historical rea...
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:55
long long int longlong
Definition: my_inttypes.h:54
Defines various enable/disable and HAVE_ macros related to the performance schema instrumentation sys...
Interface for low level time utilities.
interval_type
Available interval types used in any statement.
Definition: my_time.h:454
int64_t my_time_t
Portable time_t replacement.
Definition: my_time_t.h:31
Definition: buf0block_hint.cc:29
The version of the current data dictionary table definitions.
Definition: dictionary_client.h:42
const char * db_name
Definition: rules_table_service.cc:54
Performance schema instrumentation interface.
required string event
Definition: replication_group_member_actions.proto:31
case opt name
Definition: sslopt-case.h:32
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:82
Definition: mysql_lex_string.h:39
Definition: mysql_lex_string.h:34
Statement instrument information.
Definition: psi_statement_bits.h:132