MySQL 9.1.0
Source Code Documentation
sql_parse.h
Go to the documentation of this file.
1/* Copyright (c) 2006, 2024, 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 SQL_PARSE_INCLUDED
25#define SQL_PARSE_INCLUDED
26
27#include <stddef.h>
28#include <sys/types.h>
29
30#include "lex_string.h"
31#include "my_command.h"
32#include "my_sqlcommand.h"
34#include "mysql_com.h" // enum_server_command
35#include "sql/handler.h" // enum_schema_tables
36#include "sql/system_variables.h" // System_variables
38
39struct mysql_rwlock_t;
40template <typename T>
41class SQL_I_List;
42
43/**
44 @addtogroup GROUP_PARSER
45 @{
46*/
47
48class Comp_creator;
49class Item;
51class Parser_state;
52class THD;
53class Table_ident;
54struct LEX;
55struct LEX_USER;
56struct ORDER;
57struct Parse_context;
58class Table_ref;
59union COM_DATA;
60
61extern "C" int test_if_data_home_dir(const char *dir);
62
63bool stmt_causes_implicit_commit(const THD *thd, uint mask);
64
65#ifndef NDEBUG
67#endif
68
69bool parse_sql(THD *thd, Parser_state *parser_state,
70 Object_creation_ctx *creation_ctx);
71
72void free_items(Item *item);
73void cleanup_items(Item *item);
74void bind_fields(Item *first);
75
76Comp_creator *comp_eq_creator(bool invert);
78Comp_creator *comp_ge_creator(bool invert);
79Comp_creator *comp_gt_creator(bool invert);
80Comp_creator *comp_le_creator(bool invert);
81Comp_creator *comp_lt_creator(bool invert);
82Comp_creator *comp_ne_creator(bool invert);
83
84int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident,
85 enum enum_schema_tables schema_table_idx);
86void get_default_definer(THD *thd, LEX_USER *definer);
89bool check_string_char_length(const LEX_CSTRING &str, const char *err_msg,
90 size_t max_char_length, const CHARSET_INFO *cs,
91 bool no_error);
94 const CHARSET_INFO **to);
97 const CHARSET_INFO **to);
103bool alloc_query(THD *thd, const char *packet, size_t packet_length);
104void dispatch_sql_command(THD *thd, Parser_state *parser_state,
105 bool is_retry = false);
108int mysql_execute_command(THD *thd, bool first_level = false);
109bool do_command(THD *thd);
110bool dispatch_command(THD *thd, const COM_DATA *com_data,
112bool prepare_index_and_data_dir_path(THD *thd, const char **data_file_name,
113 const char **index_file_name,
114 const char *table_name);
115int append_file_to_dir(THD *thd, const char **filename_ptr,
116 const char *table_name);
117void execute_init_command(THD *thd, LEX_STRING *init_command,
118 mysql_rwlock_t *var_lock);
120void add_join_on(Table_ref *b, Item *expr);
122 Table_ref *right_op);
123void init_sql_command_flags(void);
126bool shutdown(THD *thd, enum mysql_enum_shutdown_level level);
127bool show_precheck(THD *thd, LEX *lex, bool lock);
129
130/* Variables */
131
132extern uint sql_command_flags[];
133
134/**
135 Map from enumeration values of type enum_server_command to
136 descriptions of type std::string.
137
138 In this context, a "command" is a type code for a remote procedure
139 call in the client-server protocol; for instance, a "connect" or a
140 "ping" or a "query".
141
142 The getter functions use @@terminology_use_previous to
143 decide which version of the name to use, for names that depend on
144 it.
145*/
147 private:
148 /**
149 Array indexed by enum_server_command, where each element is a
150 description string.
151 */
152 static const std::string m_names[];
153 /**
154 Command whose name depends on @@terminology_use_previous.
155
156 Currently, there is only one such command, so we use a single
157 member variable. In case we ever change any other command name
158 and control the use of the old or new name using
159 @@terminology_use_previous, we need to change the
160 following three members into some collection type, e.g.,
161 std::unordered_set.
162 */
164 /**
165 Name to use when compatibility is enabled.
166 */
167 static const std::string m_replace_str;
168 /**
169 The version when the name was changed.
170 */
173 /**
174 Given a system_variable object, returns the string to use for
175 m_replace_com, according to the setting of
176 terminology_use_previous stored in the object.
177
178 @param sysvars The System_variables object holding the
179 configuration that should be considered when doing the translation.
180
181 @return The instrumentation name that was in use in the configured
182 version, for m_replace_com.
183 */
184 static const std::string &translate(const System_variables &sysvars);
185 /**
186 Cast an integer to enum_server_command, and assert it is in range.
187
188 @param cmd The integer value
189 @return The enum_server_command
190 */
192 assert(cmd >= 0);
193 assert(cmd <= COM_END);
194 return static_cast<enum_server_command>(cmd);
195 }
196
197 public:
198 /**
199 Return a description string for a given enum_server_command.
200
201 This bypasses @@terminology_use_previous and acts as if
202 it was set to NONE.
203
204 @param cmd The enum_server_command
205 @retval The description string
206 */
207 static const std::string &str_notranslate(enum_server_command cmd) {
208 return m_names[cmd];
209 }
210 /**
211 Return a description string for an integer that is the numeric
212 value of an enum_server_command.
213
214 This bypasses @@terminology_use_previous and acts as if
215 it was set to NONE.
216
217 @param cmd The integer value
218 @retval The description string
219 */
220 static const std::string &str_notranslate(int cmd) {
221 return str_notranslate(int_to_cmd(cmd));
222 }
223 /**
224 Return a description string for a given enum_server_command.
225
226 This takes @@session.terminology_use_previous into
227 account, and returns an old name if one has been defined and the
228 option is enabled.
229
230 @param cmd The enum_server_command
231 @retval The description string
232 */
233 static const std::string &str_session(enum_server_command cmd);
234 /**
235 Return a description string for a given enum_server_command.
236
237 This takes @@global.terminology_use_previous into
238 account, and returns an old name if one has been defined and the
239 option is enabled.
240
241 @param cmd The enum_server_command
242 @retval The description string
243 */
244 static const std::string &str_global(enum_server_command cmd);
245 /**
246 Return a description string for an integer that is the numeric
247 value of an enum_server_command.
248
249 This takes @@session.terminology_use_previous into
250 account, and returns an old name if one has been defined and the
251 option is enabled.
252
253 @param cmd The integer value
254 @retval The description string
255 */
256 static const std::string &str_session(int cmd) {
257 return str_session(int_to_cmd(cmd));
258 }
259};
260
262
263/**
264 @brief This function checks if the sql_command is one that identifies the
265 boundaries (begin, end or savepoint) of a transaction.
266
267 @note this is used for replication purposes.
268
269 @param command The parsed SQL_COMM to check.
270 @return true if this is either a BEGIN, COMMIT, SAVEPOINT, ROLLBACK,
271 ROLLBACK_TO_SAVEPOINT.
272 @return false any other SQL command.
273 */
275
276/**
277 @brief This function checks if the sql_command is one that identifies the
278 boundaries (begin, end or savepoint) of an XA transaction. It does not
279 consider PREPARE statements.
280
281 @note this is used for replication purposes.
282
283 @param command The parsed SQL_COMM to check.
284 @return true if this is either a XA_START, XA_END, XA_COMMIT, XA_ROLLBACK.
285 @return false any other SQL command.
286 */
288
289bool all_tables_not_ok(THD *thd, Table_ref *tables);
291
292// TODO: remove after refactoring of ALTER DATABASE:
293bool set_default_charset(HA_CREATE_INFO *create_info,
294 const CHARSET_INFO *value);
295// TODO: remove after refactoring of ALTER DATABASE:
296bool set_default_collation(HA_CREATE_INFO *create_info,
297 const CHARSET_INFO *value);
298
299bool sp_process_definer(THD *);
300
301/* Bits in sql_command_flags */
302
303#define CF_CHANGES_DATA (1U << 0)
304/* The 2nd bit is unused -- it used to be CF_HAS_ROW_COUNT. */
305#define CF_STATUS_COMMAND (1U << 2)
306#define CF_SHOW_TABLE_COMMAND (1U << 3)
307#define CF_WRITE_LOGS_COMMAND (1U << 4)
308/**
309 Must be set for SQL statements that may contain
310 Item expressions and/or use joins and tables.
311 Indicates that the parse tree of such statement may
312 contain rule-based optimizations that depend on metadata
313 (i.e. number of columns in a table), and consequently
314 that the statement must be re-prepared whenever
315 referenced metadata changes. Must not be set for
316 statements that themselves change metadata, e.g. RENAME,
317 ALTER and other DDL, since otherwise will trigger constant
318 reprepare. Consequently, complex item expressions and
319 joins are currently prohibited in these statements.
320*/
321#define CF_REEXECUTION_FRAGILE (1U << 5)
322/**
323 Implicitly commit before the SQL statement is executed.
324
325 Statements marked with this flag will cause any active
326 transaction to end (commit) before proceeding with the
327 command execution.
328
329 This flag should be set for statements that probably can't
330 be rolled back or that do not expect any previously metadata
331 locked tables.
332*/
333#define CF_IMPLICIT_COMMIT_BEGIN (1U << 6)
334/**
335 Implicitly commit after the SQL statement.
336
337 Statements marked with this flag are automatically committed
338 at the end of the statement.
339
340 This flag should be set for statements that will implicitly
341 open and take metadata locks on system tables that should not
342 be carried for the whole duration of a active transaction.
343*/
344#define CF_IMPLICIT_COMMIT_END (1U << 7)
345/**
346 CF_IMPLICIT_COMMIT_BEGIN and CF_IMPLICIT_COMMIT_END are used
347 to ensure that the active transaction is implicitly committed
348 before and after every DDL statement and any statement that
349 modifies our currently non-transactional system tables.
350*/
351#define CF_AUTO_COMMIT_TRANS (CF_IMPLICIT_COMMIT_BEGIN | CF_IMPLICIT_COMMIT_END)
352
353/**
354 Diagnostic statement.
355 Diagnostic statements:
356 - SHOW WARNING
357 - SHOW ERROR
358 - GET DIAGNOSTICS (WL#2111)
359 do not modify the Diagnostics Area during execution.
360*/
361#define CF_DIAGNOSTIC_STMT (1U << 8)
362
363/**
364 Identifies statements that may generate row events
365 and that may end up in the binary log.
366*/
367#define CF_CAN_GENERATE_ROW_EVENTS (1U << 9)
368
369/**
370 Identifies statements which may deal with temporary tables and for which
371 temporary tables should be pre-opened to simplify privilege checks.
372*/
373#define CF_PREOPEN_TMP_TABLES (1U << 10)
374
375/**
376 Identifies statements for which open handlers should be closed in the
377 beginning of the statement.
378*/
379#define CF_HA_CLOSE (1U << 11)
380
381/**
382 Identifies statements that can be explained with EXPLAIN.
383*/
384#define CF_CAN_BE_EXPLAINED (1U << 12)
385
386/** Identifies statements which may generate an optimizer trace */
387#define CF_OPTIMIZER_TRACE (1U << 14)
388
389/**
390 Identifies statements that should always be disallowed in
391 read only transactions.
392*/
393#define CF_DISALLOW_IN_RO_TRANS (1U << 15)
394
395/**
396 Identifies statements and commands that can be used with Protocol Plugin
397*/
398#define CF_ALLOW_PROTOCOL_PLUGIN (1U << 16)
399
400/**
401 Identifies statements (typically DDL) which needs auto-commit mode
402 temporarily turned off.
403
404 @note This is necessary to prevent InnoDB from automatically committing
405 InnoDB transaction each time data-dictionary tables are closed
406 after being updated.
407
408 @note This is also necessary for ACL DDL, so the code which
409 saves GTID state or slave state in the system tables at the
410 commit time works correctly. This code does statement commit
411 on low-level (see System_table_access:: close_table()) and
412 thus can pre-maturely commit DDL if @@autocommit=1.
413*/
414#define CF_NEEDS_AUTOCOMMIT_OFF (1U << 17)
415
416/**
417 Identifies statements which can return rows of data columns (SELECT, SHOW ...)
418*/
419#define CF_HAS_RESULT_SET (1U << 18)
420
421/**
422 Identifies DDL statements which can be atomic.
423 Having the bit ON does not yet define an atomic.
424 The property is used both on the master and slave.
425 On the master atomicity infers the binlog and gtid_executed system table.
426 On the slave it more involves the slave info table.
427
428 @note At the momemnt of declaration the covered DDL subset coincides
429 with the of CF_NEEDS_AUTOCOMMIT_OFF.
430*/
431#define CF_POTENTIAL_ATOMIC_DDL (1U << 19)
432
433/**
434 Statement is depending on the ACL cache, which can be disabled by the
435 --skip-grant-tables server option.
436*/
437#define CF_REQUIRE_ACL_CACHE (1U << 20)
438
439/**
440 Identifies statements as SHOW commands using INFORMATION_SCHEMA system views.
441*/
442#define CF_SHOW_USES_SYSTEM_VIEW (1U << 21)
443
444/* Bits in server_command_flags */
445
446/**
447 Skip the increase of the global query id counter. Commonly set for
448 commands that are stateless (won't cause any change on the server
449 internal states). This is made obsolete as query id is incremented
450 for ping and statistics commands as well because of race condition
451 (Bug#58785).
452*/
453#define CF_SKIP_QUERY_ID (1U << 0)
454
455/**
456 Skip the increase of the number of statements that clients have
457 sent to the server. Commonly used for commands that will cause
458 a statement to be executed but the statement might have not been
459 sent by the user (ie: stored procedure).
460*/
461#define CF_SKIP_QUESTIONS (1U << 1)
462
463/**
464 1U << 16 is reserved for Protocol Plugin statements and commands
465*/
466
467/**
468 @} (end of group GROUP_PARSER)
469*/
470
471#endif /* SQL_PARSE_INCLUDED */
Map from enumeration values of type enum_server_command to descriptions of type std::string.
Definition: sql_parse.h:146
static constexpr terminology_use_previous::enum_compatibility_version m_replace_version
The version when the name was changed.
Definition: sql_parse.h:172
static enum_server_command int_to_cmd(int cmd)
Cast an integer to enum_server_command, and assert it is in range.
Definition: sql_parse.h:191
static constexpr enum_server_command m_replace_com
Command whose name depends on @terminology_use_previous.
Definition: sql_parse.h:163
static const std::string & str_notranslate(int cmd)
Return a description string for an integer that is the numeric value of an enum_server_command.
Definition: sql_parse.h:220
static const std::string & str_notranslate(enum_server_command cmd)
Return a description string for a given enum_server_command.
Definition: sql_parse.h:207
static const std::string & str_session(int cmd)
Return a description string for an integer that is the numeric value of an enum_server_command.
Definition: sql_parse.h:256
Abstract factory interface for creating comparison predicates.
Definition: item_cmpfunc.h:524
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:930
Object_creation_ctx – interface for creation context of database objects (views, stored routines,...
Definition: table.h:204
Internal state of the parser.
Definition: sql_lexer_parser_state.h:44
Simple intrusive linked list.
Definition: sql_list.h:48
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
Definition: sql_lex.h:297
Definition: table.h:2900
int test_if_data_home_dir(const char *dir)
Definition: sql_parse.cc:6890
bool check_host_name(const LEX_CSTRING &str)
Check that host name string is valid.
Definition: sql_parse.cc:6929
int mysql_execute_command(THD *thd, bool first_level=false)
Execute command saved in thd and lex->sql_command.
Definition: sql_parse.cc:2893
void execute_init_command(THD *thd, LEX_STRING *init_command, mysql_rwlock_t *var_lock)
Definition: sql_parse.cc:1217
void statement_id_to_session(THD *thd)
Definition: sql_parse.cc:5172
void add_to_list(SQL_I_List< ORDER > &list, ORDER *order)
save order by and tables in own lists.
Definition: sql_parse.cc:5606
bool is_log_table_write_query(enum enum_sql_command command)
Check if a sql command is allowed to write to log tables.
Definition: sql_parse.cc:1197
bool mysql_test_parse_for_slave(THD *thd)
Usable by the replication SQL thread only: just parse a query to know if it can be ignored because of...
Definition: sql_parse.cc:5396
bool all_tables_not_ok(THD *thd, Table_ref *tables)
Returns true if all tables should be ignored.
Definition: sql_parse.cc:295
bool prepare_index_and_data_dir_path(THD *thd, const char **data_file_name, const char **index_file_name, const char *table_name)
prepares the index and data directory path.
Definition: sql_parse.cc:6554
bool shutdown(THD *thd, enum mysql_enum_shutdown_level level)
Shutdown the mysqld server.
Definition: sql_parse.cc:2523
Comp_creator * comp_equal_creator(bool invert)
Definition: sql_parse.cc:6628
bool do_command(THD *thd)
Read one command from connection and execute it (query or simple command).
Definition: sql_parse.cc:1322
Comp_creator * comp_le_creator(bool invert)
Definition: sql_parse.cc:6641
bool is_normal_transaction_boundary_stmt(enum enum_sql_command command)
This function checks if the sql_command is one that identifies the boundaries (begin,...
Definition: sql_parse.cc:302
Comp_creator * comp_eq_creator(bool invert)
Definition: sql_parse.cc:6624
bool is_xa_transaction_boundary_stmt(enum enum_sql_command command)
This function checks if the sql_command is one that identifies the boundaries (begin,...
Definition: sql_parse.cc:317
bool is_explainable_query(enum enum_sql_command command)
Definition: sql_parse.cc:1187
bool show_precheck(THD *thd, LEX *lex, bool lock)
Do special checking for SHOW statements.
Definition: sql_parse.cc:5022
bool stmt_causes_implicit_commit(const THD *thd, uint mask)
Returns whether the command in thd->lex->sql_command should cause an implicit commit.
Definition: sql_parse.cc:405
const CHARSET_INFO * get_bin_collation(const CHARSET_INFO *cs)
Definition: sql_parse.cc:6386
bool sqlcom_can_generate_row_events(enum enum_sql_command command)
Definition: sql_parse.cc:1178
bool set_default_charset(HA_CREATE_INFO *create_info, const CHARSET_INFO *value)
Definition: parse_tree_nodes.cc:2213
bool some_non_temp_table_to_be_updated(THD *thd, Table_ref *tables)
Definition: sql_parse.cc:380
bool merge_sp_var_charset_and_collation(const CHARSET_INFO *charset, const CHARSET_INFO *collation, const CHARSET_INFO **to)
Definition: sql_parse.cc:7233
int append_file_to_dir(THD *thd, const char **filename_ptr, const char *table_name)
If pointer is not a null pointer, append filename to it.
Definition: sql_parse.cc:6594
LEX_USER * create_default_definer(THD *thd)
Create default definer for the specified THD.
Definition: sql_parse.cc:6760
Comp_creator * comp_gt_creator(bool invert)
Definition: sql_parse.cc:6637
bool alloc_query(THD *thd, const char *packet, size_t packet_length)
Read query from packet and store in thd->query.
Definition: sql_parse.cc:2642
void bind_fields(Item *first)
Bind Item fields to Field objects.
Definition: sql_parse.cc:1306
void create_table_set_open_action_and_adjust_tables(LEX *lex)
Set proper open mode and table type for element representing target table of CREATE TABLE statement,...
Definition: sql_parse.cc:6689
Comp_creator * comp_ne_creator(bool invert)
Definition: sql_parse.cc:6649
void turn_parser_debug_on()
bool sp_process_definer(THD *)
Definition: sql_parse.cc:2667
int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident, enum enum_schema_tables schema_table_idx)
Create a Table_ref object for an INFORMATION_SCHEMA table.
Definition: sql_parse.cc:2580
void add_join_on(Table_ref *b, Item *expr)
Add an ON condition to the second operand of a JOIN ... ON.
Definition: sql_parse.cc:6369
Comp_creator * comp_lt_creator(bool invert)
Definition: sql_parse.cc:6645
void mysql_reset_thd_for_next_command(THD *thd)
Reset the part of THD responsible for the state of command processing.
Definition: sql_parse.cc:5085
void killall_non_super_threads(THD *thd)
Definition: sql_parse.cc:6535
bool parse_sql(THD *thd, Parser_state *parser_state, Object_creation_ctx *creation_ctx)
Transform an SQL statement into an AST that is ready for resolving, using the supplied parser state a...
Definition: sql_parse.cc:7030
bool dispatch_command(THD *thd, const COM_DATA *com_data, enum enum_server_command command)
Perform one connection-level (COM_XXXX) command.
Definition: sql_parse.cc:1727
LEX_USER * get_current_user(THD *thd, LEX_USER *user)
Returns information about user or current user.
Definition: sql_parse.cc:6782
bool is_update_query(enum enum_sql_command command)
Definition: sql_parse.cc:1182
Comp_creator * comp_ge_creator(bool invert)
Definition: sql_parse.cc:6633
uint sql_command_flags[]
Mark all commands that somehow changes a table.
Definition: sql_parse.cc:511
void init_sql_command_flags(void)
Definition: sql_parse.cc:514
void get_default_definer(THD *thd, LEX_USER *definer)
Set the specified definer to the default value, which is the current user in the thread.
Definition: sql_parse.cc:6717
bool set_default_collation(HA_CREATE_INFO *create_info, const CHARSET_INFO *value)
Definition: parse_tree_nodes.cc:2237
bool merge_charset_and_collation(const CHARSET_INFO *charset, const CHARSET_INFO *collation, const CHARSET_INFO **to)
(end of group Runtime_Environment)
Definition: sql_parse.cc:7219
void free_items(Item *item)
Definition: sql_parse.cc:1283
void dispatch_sql_command(THD *thd, Parser_state *parser_state, bool is_retry=false)
Parse an SQL command from a text string and pass the resulting AST to the query executor.
Definition: sql_parse.cc:5197
void cleanup_items(Item *item)
This works because items are allocated with (*THR_MALLOC)->Alloc().
Definition: sql_parse.cc:1296
bool push_new_name_resolution_context(Parse_context *pc, Table_ref *left_op, Table_ref *right_op)
Push a new name resolution context for a JOIN ... ON clause to the context stack of a query block.
Definition: sql_parse.cc:6341
bool check_string_char_length(const LEX_CSTRING &str, const char *err_msg, size_t max_char_length, const CHARSET_INFO *cs, bool no_error)
Definition: sql_parse.cc:6861
static const std::string & str_session(enum_server_command cmd)
Return a description string for a given enum_server_command.
Definition: sql_parse.cc:272
static const std::string & str_global(enum_server_command cmd)
Return a description string for a given enum_server_command.
Definition: sql_parse.cc:278
static const std::string m_replace_str
Name to use when compatibility is enabled.
Definition: sql_parse.h:167
static const std::string & translate(const System_variables &sysvars)
Given a system_variable object, returns the string to use for m_replace_com, according to the setting...
Definition: sql_parse.cc:263
static const std::string m_names[]
Array indexed by enum_server_command, where each element is a description string.
Definition: sql_parse.h:152
mysql_enum_shutdown_level
We want levels to be in growing order of hardness (because we use number comparisons).
Definition: mysql_com.h:1005
A better implementation of the UNIX ctype(3) library.
static mi_bit_type mask[]
Definition: mi_packrec.cc:141
enum_server_command
A list of all MySQL protocol commands.
Definition: my_command.h:48
@ COM_END
Not a real command.
Definition: my_command.h:102
@ COM_REGISTER_SLAVE
Definition: my_command.h:74
enum_sql_command
Definition: my_sqlcommand.h:46
Common definition between mysql server & client.
char * user
Definition: mysqladmin.cc:66
const char * collation
Definition: audit_api_message_emit.cc:184
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1105
const std::string charset("charset")
Definition: commit_order_queue.h:34
std::string dir
Double write files location.
Definition: buf0dblwr.cc:77
Provides atomic access in shared-exclusive modes.
Definition: shared_spin_lock.h:79
const char * table_name
Definition: rules_table_service.cc:56
enum_compatibility_version
Enumeration holding the possible values for @terminology_use_previous.
Definition: terminology_use_previous_enum.h:48
@ BEFORE_8_0_26
Use names that were in use up to 8.0.25, inclusive.
Definition: terminology_use_previous_enum.h:52
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2880
enum_schema_tables
Definition: handler.h:922
Definition: m_ctype.h:421
Struct to hold information about the table that should be created.
Definition: handler.h:3210
Definition: table.h:2767
The LEX object currently serves three different purposes:
Definition: sql_lex.h:3844
Definition: mysql_lex_string.h:40
Definition: mysql_lex_string.h:35
Definition: table.h:289
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:420
Definition: system_variables.h:203
An instrumented rwlock structure.
Definition: mysql_rwlock_bits.h:51
Definition: com_data.h:104
command
Definition: version_token.cc:280