MySQL  8.0.27
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, 2021, 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 <sys/types.h>
33 
34 #include "lex_string.h"
35 #include "my_alloc.h" // MEM_ROOT
36 #include "my_inttypes.h"
37 #include "my_psi_config.h"
38 #include "my_time.h" // interval_type
40 
41 class String;
42 class THD;
43 class Time_zone;
44 
46 namespace dd {
47 class Event;
48 }
49 
50 void init_scheduler_psi_keys(void);
51 
53  public:
56 
58 
61  bool dropped;
62  THD *thd;
63 
64  void claim_memory_ownership(bool claim);
65 
66  /* Prevent use of these */
69 
70 #ifdef HAVE_PSI_INTERFACE
72 
74 #endif
75 };
76 
77 class Event_basic {
78  protected:
80 
81  public:
85 
87  Event_basic();
88  virtual ~Event_basic();
89  virtual bool fill_event_info(THD *thd, const dd::Event &ev_obj,
90  const char *dbname) = 0;
91 };
92 
94  public:
96  int m_status;
98 
106 
109 
110  bool m_dropped;
111 
113 
116  bool fill_event_info(THD *thd, const dd::Event &event,
117  const char *dbname) override;
118 
119  bool compute_next_execution_time(THD *thd);
120 
121  void mark_last_executed(THD *thd);
122 };
123 
125  public:
127 
130 
132 
135 
137 
140  Event_timed();
141  ~Event_timed() override;
142 
143  void init();
144 
145  bool fill_event_info(THD *thd, const dd::Event &event,
146  const char *schema_name) override;
147 
148  int get_create_event(const THD *thd, String *buf);
149 
150  Event_timed(const Event_timed &) = delete;
151  void operator=(Event_timed &) = delete;
152 };
153 
154 class Event_job_data : public Event_basic {
155  public:
159 
161 
163 
164  Event_job_data();
165 
166  bool execute(THD *thd, bool drop);
167 
168  Event_job_data(const Event_job_data &) = delete;
169  void operator=(Event_job_data &) = delete;
170 
171  private:
172  bool fill_event_info(THD *thd, const dd::Event &event,
173  const char *schema_name) override;
174  bool construct_sp_sql(THD *thd, String *sp_sql);
175 };
176 
177 /**
178  Build an SQL drop event string.
179 
180  @param[in] thd Thread handle
181  @param[in,out] sp_sql Pointer to String object where the SQL query will
182  be stored
183  @param[in] db_name The schema name
184  @param[in] event_name The event name
185 
186  @retval false The drop event SQL query is built
187  @retval true Otherwise
188 */
190  LEX_CSTRING event_name);
191 
192 /* Compares only the schema part of the identifier */
194 
195 /* Compares the whole identifier*/
197  Event_basic *b);
198 
199 /**
200  @} (End of group Event_Scheduler)
201 */
202 
203 #endif /* _EVENT_DATA_OBJECTS_H_ */
Definition: event_data_objects.h:77
LEX_CSTRING m_event_name
Definition: event_data_objects.h:83
Time_zone * m_time_zone
Definition: event_data_objects.h:86
MEM_ROOT mem_root
Definition: event_data_objects.h:79
LEX_CSTRING m_definer
Definition: event_data_objects.h:84
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:82
Definition: event_data_objects.h:154
sql_mode_t m_sql_mode
Definition: event_data_objects.h:160
Event_job_data(const Event_job_data &)=delete
LEX_CSTRING m_definer_host
Definition: event_data_objects.h:158
class Stored_program_creation_ctx * m_creation_ctx
Definition: event_data_objects.h:162
void operator=(Event_job_data &)=delete
LEX_STRING m_definition
Definition: event_data_objects.h:156
LEX_CSTRING m_definer_user
Definition: event_data_objects.h:157
Definition: event_data_objects.h:52
LEX_CSTRING dbname
Definition: event_data_objects.h:59
Event_queue_element_for_exec(const Event_queue_element_for_exec &)=delete
THD * thd
Definition: event_data_objects.h:62
LEX_CSTRING name
Definition: event_data_objects.h:60
void operator=(Event_queue_element_for_exec &)=delete
bool dropped
Definition: event_data_objects.h:61
PSI_statement_info * get_psi_info()
Definition: event_data_objects.h:71
Definition: event_data_objects.h:93
bool m_starts_null
Definition: event_data_objects.h:103
my_time_t m_ends
Definition: event_data_objects.h:102
longlong m_originator
Definition: event_data_objects.h:97
my_time_t m_execute_at
Definition: event_data_objects.h:100
uint m_execution_count
Definition: event_data_objects.h:112
bool m_execute_at_null
Definition: event_data_objects.h:105
my_time_t m_last_executed
Definition: event_data_objects.h:99
my_time_t m_starts
Definition: event_data_objects.h:101
int m_on_completion
Definition: event_data_objects.h:95
bool m_ends_null
Definition: event_data_objects.h:104
int m_status
Definition: event_data_objects.h:96
interval_type m_interval
Definition: event_data_objects.h:108
longlong m_expression
Definition: event_data_objects.h:107
bool m_dropped
Definition: event_data_objects.h:110
Definition: event_data_objects.h:124
sql_mode_t m_sql_mode
Definition: event_data_objects.h:136
ulonglong m_modified
Definition: event_data_objects.h:134
LEX_CSTRING m_definer_host
Definition: event_data_objects.h:129
LEX_STRING m_definition
Definition: event_data_objects.h:126
class Stored_program_creation_ctx * m_creation_ctx
Definition: event_data_objects.h:138
void operator=(Event_timed &)=delete
ulonglong m_created
Definition: event_data_objects.h:133
LEX_STRING m_definition_utf8
Definition: event_data_objects.h:139
Event_timed(const Event_timed &)=delete
LEX_CSTRING m_definer_user
Definition: event_data_objects.h:128
LEX_STRING m_comment
Definition: event_data_objects.h:131
libevent global state managment
Definition: http_common.h:58
Stored_program_creation_ctx – base class for creation context of stored programs (stored routines,...
Definition: sp_head.h:88
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:165
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_class.h:821
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
ulonglong sql_mode_t
Definition: dd_event.h:36
bool event_basic_identifier_equal(LEX_CSTRING db, LEX_CSTRING name, Event_basic *b)
Definition: event_data_objects.cc:1257
void init()
Definition: event_data_objects.cc:307
ulonglong sql_mode_t
Definition: event_data_objects.h:43
Event_queue_element()
Definition: event_data_objects.cc:248
bool event_basic_db_equal(LEX_CSTRING db, Event_basic *et)
Definition: event_data_objects.cc:1239
bool compute_next_execution_time(THD *thd)
Definition: event_data_objects.cc:673
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:1201
void init_scheduler_psi_keys()
Definition: event_data_objects.cc:82
~Event_timed() override
static PSI_statement_info psi_info
Definition: event_data_objects.h:73
bool fill_event_info(THD *thd, const dd::Event &event, const char *schema_name) override
Definition: event_data_objects.cc:405
~Event_queue_element_for_exec()
Definition: event_data_objects.cc:210
Event_job_data()
Definition: event_data_objects.cc:298
void claim_memory_ownership(bool claim)
Definition: event_data_objects.cc:198
bool init(LEX_CSTRING dbname, LEX_CSTRING name)
Definition: event_data_objects.cc:185
void mark_last_executed(THD *thd)
Set last execution time.
Definition: event_data_objects.cc:867
Event_timed()
Definition: event_data_objects.cc:277
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:962
bool fill_event_info(THD *thd, const dd::Event &event, const char *dbname) override
Definition: event_data_objects.cc:350
~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:319
Event_basic()
Definition: event_data_objects.cc:222
bool execute(THD *thd, bool drop)
Compiles and executes the event (the underlying sp_head object)
Definition: event_data_objects.cc:1008
int get_create_event(const THD *thd, String *buf)
Get SHOW CREATE EVENT as string.
Definition: event_data_objects.cc:901
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.
[] long int my_time_t
Portable time_t replacement.
interval_type
Available interval types used in any statement.
Definition: my_time.h:403
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:78
Definition: mysql_lex_string.h:39
Definition: mysql_lex_string.h:34
Statement instrument information.
Definition: psi_statement_bits.h:110
unsigned int uint
Definition: uca-dump.cc:29