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