MySQL 8.4.9
Source Code Documentation
keyring_log_builtins_definition.h
Go to the documentation of this file.
1/* Copyright (c) 2021, 2026, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is designed to work with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have either included with
13 the program or referenced in the documentation.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License, version 2.0, for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24#ifndef KEYRING_LOG_BUILTINS_DEFINITION_INCLUDED
25#define KEYRING_LOG_BUILTINS_DEFINITION_INCLUDED
26
29
31
32namespace keyring_common {
33namespace service_definition {
34
36 public:
37 /* ================ DUMMY ================ */
38 /* log_builtins */
41 }
42 static DEFINE_METHOD(int, wellknown_by_name, (const char *, size_t)) {
44 }
46 return LOG_ITEM_END;
47 }
48 static DEFINE_METHOD(const char *, wellknown_get_name, (uint)) {
49 return "--ERROR--";
50 }
51 static DEFINE_METHOD(int, item_inconsistent, (log_item *)) { return -2; }
53 return true;
54 }
56 return false;
57 }
59 return false;
60 }
61
63 (log_item *, log_item_type, const char *, uint32)) {
64 return nullptr;
65 }
67 return nullptr;
68 }
69 static DEFINE_METHOD(bool, item_set_float, (log_item_data *, double)) {
70 return false;
71 }
72
73 static DEFINE_METHOD(int, line_item_count, (log_line *)) { return 0; }
75 return nullptr;
76 }
78 return nullptr;
79 }
81 return;
82 }
84 return nullptr;
85 }
87 return nullptr;
88 }
90 return nullptr;
91 }
92 static DEFINE_METHOD(int, sanitize, (log_item *)) { return -1; }
94 (const char *, size_t)) {
95 return 0;
96 }
97 static DEFINE_METHOD(const char *, label_from_prio, (int)) { return "Error"; }
99 (const char *, void **)) {
101 }
103 (void *, const char *, size_t)) {
105 }
106 static DEFINE_METHOD(int, dedicated_errstream, (void *)) { return -1; }
109 }
111 (const char *, void **)) {
113 }
114 static DEFINE_METHOD(int, message, (int, ...)) { return 0; }
115 static DEFINE_METHOD(void, line_set_flag,
117 }
118
119 /* log_builtins_string */
120 static DEFINE_METHOD(char *, find_first, (const char *, int)) {
121 return nullptr;
122 }
123 static DEFINE_METHOD(char *, find_last, (const char *, int)) {
124 return nullptr;
125 }
126 static DEFINE_METHOD(int, compare,
127 (const char *, const char *, size_t, bool)) {
128 return 0;
129 }
130 static DEFINE_METHOD(size_t, substitute,
131 (char *, size_t, const char *, ...)) {
132 return -1;
133 }
134 static DEFINE_METHOD(longlong, errcode_by_errsymbol, (const char *)) {
135 return 0;
136 }
137
138 /* ================ REQUIRED ================ */
139 /* log_builtins */
141 (log_line * ll, log_item_type t, const char *key,
142 uint32 alloc));
144 (log_line * ll, log_item_type t));
145 static DEFINE_METHOD(log_line *, line_init, ());
146 static DEFINE_METHOD(void, line_exit, (log_line * ll));
148 (log_line * ll, log_item_type_mask m));
149 static DEFINE_METHOD(bool, item_set_int, (log_item_data * lid, longlong i));
151 (log_item_data * lid, const char *s, size_t s_len));
152 static DEFINE_METHOD(bool, item_set_cstring,
153 (log_item_data * lid, const char *s));
154 static DEFINE_METHOD(int, line_submit, (log_line * ll));
155 static DEFINE_METHOD(const char *, errmsg_by_errcode, (int mysql_errcode));
156
157 /* log_builtins_string */
158 static DEFINE_METHOD(void *, malloc, (size_t len));
159 static DEFINE_METHOD(char *, strndup, (const char *fm, size_t len));
160 static DEFINE_METHOD(void, free, (void *ptr));
161 static DEFINE_METHOD(size_t, length, (const char *s));
162 static DEFINE_METHOD(size_t, substitutev,
163 (char *to, size_t n, const char *fmt, va_list ap))
164 MY_ATTRIBUTE((format(printf, 3, 0)));
165};
166
167} // namespace service_definition
168} // namespace keyring_common
169
170#define KEYRING_LOG_BUILTINS_IMPLEMENTOR(component_name) \
171 BEGIN_SERVICE_IMPLEMENTATION(component_name, log_builtins) \
172 keyring_common::service_definition::Log_builtins_keyring::wellknown_by_type, \
173 keyring_common::service_definition::Log_builtins_keyring:: \
174 wellknown_by_name, \
175 keyring_common::service_definition::Log_builtins_keyring:: \
176 wellknown_get_type, \
177 keyring_common::service_definition::Log_builtins_keyring:: \
178 wellknown_get_name, \
179 keyring_common::service_definition::Log_builtins_keyring:: \
180 item_inconsistent, \
181 keyring_common::service_definition::Log_builtins_keyring:: \
182 item_generic_type, \
183 keyring_common::service_definition::Log_builtins_keyring:: \
184 item_string_class, \
185 keyring_common::service_definition::Log_builtins_keyring:: \
186 item_numeric_class, \
187 keyring_common::service_definition::Log_builtins_keyring::item_set_int, \
188 keyring_common::service_definition::Log_builtins_keyring:: \
189 item_set_float, \
190 keyring_common::service_definition::Log_builtins_keyring:: \
191 item_set_lexstring, \
192 keyring_common::service_definition::Log_builtins_keyring:: \
193 item_set_cstring, \
194 keyring_common::service_definition::Log_builtins_keyring::line_set_flag, \
195 keyring_common::service_definition::Log_builtins_keyring:: \
196 item_set_with_key, \
197 keyring_common::service_definition::Log_builtins_keyring::item_set, \
198 keyring_common::service_definition::Log_builtins_keyring:: \
199 line_item_set_with_key, \
200 keyring_common::service_definition::Log_builtins_keyring::line_item_set, \
201 keyring_common::service_definition::Log_builtins_keyring::line_init, \
202 keyring_common::service_definition::Log_builtins_keyring::line_exit, \
203 keyring_common::service_definition::Log_builtins_keyring:: \
204 line_item_count, \
205 keyring_common::service_definition::Log_builtins_keyring:: \
206 line_item_types_seen, \
207 keyring_common::service_definition::Log_builtins_keyring:: \
208 line_get_output_buffer, \
209 keyring_common::service_definition::Log_builtins_keyring:: \
210 line_item_iter_acquire, \
211 keyring_common::service_definition::Log_builtins_keyring:: \
212 line_item_iter_release, \
213 keyring_common::service_definition::Log_builtins_keyring:: \
214 line_item_iter_first, \
215 keyring_common::service_definition::Log_builtins_keyring:: \
216 line_item_iter_next, \
217 keyring_common::service_definition::Log_builtins_keyring:: \
218 line_item_iter_current, \
219 keyring_common::service_definition::Log_builtins_keyring::line_submit, \
220 keyring_common::service_definition::Log_builtins_keyring::message, \
221 keyring_common::service_definition::Log_builtins_keyring::sanitize, \
222 keyring_common::service_definition::Log_builtins_keyring:: \
223 errmsg_by_errcode, \
224 keyring_common::service_definition::Log_builtins_keyring:: \
225 errcode_by_errsymbol, \
226 keyring_common::service_definition::Log_builtins_keyring:: \
227 label_from_prio, \
228 keyring_common::service_definition::Log_builtins_keyring:: \
229 parse_iso8601_timestamp, \
230 keyring_common::service_definition::Log_builtins_keyring:: \
231 open_errstream, \
232 keyring_common::service_definition::Log_builtins_keyring:: \
233 write_errstream, \
234 keyring_common::service_definition::Log_builtins_keyring:: \
235 dedicated_errstream, \
236 keyring_common::service_definition::Log_builtins_keyring:: \
237 close_errstream, \
238 keyring_common::service_definition::Log_builtins_keyring:: \
239 reopen_errstream \
240 END_SERVICE_IMPLEMENTATION()
241
242#define KEYRING_LOG_BUILTINS_STRING_IMPLEMENTOR(component_name) \
243 BEGIN_SERVICE_IMPLEMENTATION(component_name, log_builtins_string) \
244 keyring_common::service_definition::Log_builtins_keyring::malloc, \
245 keyring_common::service_definition::Log_builtins_keyring::strndup, \
246 keyring_common::service_definition::Log_builtins_keyring::free, \
247 keyring_common::service_definition::Log_builtins_keyring::length, \
248 keyring_common::service_definition::Log_builtins_keyring::find_first, \
249 keyring_common::service_definition::Log_builtins_keyring::find_last, \
250 keyring_common::service_definition::Log_builtins_keyring::compare, \
251 keyring_common::service_definition::Log_builtins_keyring::substitutev, \
252 keyring_common::service_definition::Log_builtins_keyring::substitute \
253 END_SERVICE_IMPLEMENTATION()
254
255#endif /* KEYRING_LOG_BUILTINS_DEFINITION_INCLUDED */
Definition: keyring_log_builtins_definition.h:35
static bool item_set_int(log_item_data *lid, longlong i) noexcept
Definition: keyring_log_builtins_definition.cc:221
static char * find_first(const char *, int) noexcept
Definition: keyring_log_builtins_definition.h:120
static size_t substitutev(char *to, size_t n, const char *fmt, va_list ap) noexcept
Definition: keyring_log_builtins_definition.cc:375
static log_item * line_item_iter_next(log_item_iter *) noexcept
Definition: keyring_log_builtins_definition.h:86
static void * malloc(size_t len) noexcept
Definition: keyring_log_builtins_definition.cc:349
static const char * errmsg_by_errcode(int mysql_errcode) noexcept
Definition: keyring_log_builtins_definition.cc:332
static log_item * line_item_iter_first(log_item_iter *) noexcept
Definition: keyring_log_builtins_definition.h:83
static void line_exit(log_line *ll) noexcept
Definition: keyring_log_builtins_definition.cc:211
static bool item_numeric_class(log_item_class) noexcept
Definition: keyring_log_builtins_definition.h:58
static log_item_data * item_set(log_item *, log_item_type) noexcept
Definition: keyring_log_builtins_definition.h:66
static log_line * line_init() noexcept
Definition: keyring_log_builtins_definition.cc:205
static int sanitize(log_item *) noexcept
Definition: keyring_log_builtins_definition.h:92
static void line_item_iter_release(log_item_iter *) noexcept
Definition: keyring_log_builtins_definition.h:80
static size_t substitute(char *, size_t, const char *,...) noexcept
Definition: keyring_log_builtins_definition.h:131
static char * find_last(const char *, int) noexcept
Definition: keyring_log_builtins_definition.h:123
static log_service_error reopen_errstream(const char *, void **) noexcept
Definition: keyring_log_builtins_definition.h:111
static longlong errcode_by_errsymbol(const char *) noexcept
Definition: keyring_log_builtins_definition.h:134
static bool item_set_cstring(log_item_data *lid, const char *s) noexcept
Definition: keyring_log_builtins_definition.cc:240
static log_item_type_mask line_item_types_seen(log_line *ll, log_item_type_mask m) noexcept
Definition: keyring_log_builtins_definition.cc:216
static log_item * line_get_output_buffer(log_line *) noexcept
Definition: keyring_log_builtins_definition.h:74
static ulonglong parse_iso8601_timestamp(const char *, size_t) noexcept
Definition: keyring_log_builtins_definition.h:94
static void line_set_flag(log_line *, log_line_flags_mask, log_line_flags_mask) noexcept
Definition: keyring_log_builtins_definition.h:116
static int line_submit(log_line *ll) noexcept
Definition: keyring_log_builtins_definition.cc:249
static int wellknown_by_type(log_item_type) noexcept
Definition: keyring_log_builtins_definition.h:39
static bool item_set_float(log_item_data *, double) noexcept
Definition: keyring_log_builtins_definition.h:69
static int wellknown_by_name(const char *, size_t) noexcept
Definition: keyring_log_builtins_definition.h:42
static int compare(const char *, const char *, size_t, bool) noexcept
Definition: keyring_log_builtins_definition.h:127
static log_item_data * line_item_set(log_line *ll, log_item_type t) noexcept
Definition: keyring_log_builtins_definition.cc:201
static log_service_error close_errstream(void **) noexcept
Definition: keyring_log_builtins_definition.h:107
static log_service_error open_errstream(const char *, void **) noexcept
Definition: keyring_log_builtins_definition.h:99
static log_item_iter * line_item_iter_acquire(log_line *) noexcept
Definition: keyring_log_builtins_definition.h:77
static bool item_generic_type(log_item_type) noexcept
Definition: keyring_log_builtins_definition.h:52
static const char * wellknown_get_name(uint) noexcept
Definition: keyring_log_builtins_definition.h:48
static size_t length(const char *s) noexcept
Definition: keyring_log_builtins_definition.cc:370
static void free(void *ptr) noexcept
Definition: keyring_log_builtins_definition.cc:363
static log_item_data * line_item_set_with_key(log_line *ll, log_item_type t, const char *key, uint32 alloc) noexcept
Definition: keyring_log_builtins_definition.cc:196
static int line_item_count(log_line *) noexcept
Definition: keyring_log_builtins_definition.h:73
static char * strndup(const char *fm, size_t len) noexcept
Definition: keyring_log_builtins_definition.cc:354
static log_service_error write_errstream(void *, const char *, size_t) noexcept
Definition: keyring_log_builtins_definition.h:103
static const char * label_from_prio(int) noexcept
Definition: keyring_log_builtins_definition.h:97
static int dedicated_errstream(void *) noexcept
Definition: keyring_log_builtins_definition.h:106
static int message(int,...) noexcept
Definition: keyring_log_builtins_definition.h:114
static log_item * line_item_iter_current(log_item_iter *) noexcept
Definition: keyring_log_builtins_definition.h:89
static bool item_set_lexstring(log_item_data *lid, const char *s, size_t s_len) noexcept
Definition: keyring_log_builtins_definition.cc:230
static bool item_string_class(log_item_class) noexcept
Definition: keyring_log_builtins_definition.h:55
static int item_inconsistent(log_item *) noexcept
Definition: keyring_log_builtins_definition.h:51
static log_item_type wellknown_get_type(uint) noexcept
Definition: keyring_log_builtins_definition.h:45
static log_item_data * item_set_with_key(log_item *, log_item_type, const char *, uint32) noexcept
Definition: keyring_log_builtins_definition.h:63
Specifies macros to define Components.
enum enum_log_service_error log_service_error
Error codes.
@ LOG_SERVICE_COULD_NOT_MAKE_LOG_NAME
could not make log name
Definition: log_service.h:138
@ LOG_SERVICE_NOTHING_DONE
no error, but no effect either
Definition: log_service.h:102
@ LOG_ITEM_TYPE_NOT_FOUND
Definition: log_shared.h:212
uint64 log_line_flags_mask
a bit mask with flags describing a log line
Definition: log_shared.h:230
enum enum_log_item_class log_item_class
@ LOG_ITEM_END
end of list, see above
Definition: log_shared.h:125
enum enum_log_item_type log_item_type
item_type – what to log
uint64 log_item_type_mask
a bit mask of log_types.
Definition: log_shared.h:221
unsigned long long int ulonglong
Definition: my_inttypes.h:56
long long int longlong
Definition: my_inttypes.h:55
uint32_t uint32
Definition: my_inttypes.h:67
Definition: keyring_encryption_service_definition.h:32
required string key
Definition: replication_asynchronous_connection_failover.proto:60
Specifies macros to define Service Implementations.
#define DEFINE_METHOD(retval, name, args)
A macro to ensure method implementation has required properties, that is it does not throw exceptions...
Definition: service_implementation.h:79
Iterator over the key/value pairs of a log_line.
Definition: keyring_log_builtins_definition.cc:64
Definition: log_shared.h:201
log_line ("log event")
Definition: keyring_log_builtins_definition.cc:72
Definition: log_shared.h:190
int n
Definition: xcom_base.cc:509